From 201d7978eff99852920a1ab2bb627acf9155f819 Mon Sep 17 00:00:00 2001 From: Kevin Cristiano <kcristiano@kcristiano.com> Date: Thu, 5 Oct 2023 09:20:12 -0400 Subject: [PATCH] civicrm release-5.66.0 --- civicrm.php | 8 +- civicrm/CRM/ACL/BAO/ACL.php | 122 +- civicrm/CRM/ACL/DAO/ACL.php | 4 +- civicrm/CRM/ACL/Form/ACL.php | 2 +- civicrm/CRM/ACL/Page/ACL.php | 3 + civicrm/CRM/Activity/ActionMapping.php | 37 +- civicrm/CRM/Activity/BAO/Activity.php | 4 +- civicrm/CRM/Activity/DAO/Activity.php | 4 +- civicrm/CRM/Activity/Selector/Activity.php | 1 + civicrm/CRM/Activity/Tokens.php | 2 +- civicrm/CRM/Admin/Form.php | 25 +- civicrm/CRM/Admin/Form/Job.php | 27 +- civicrm/CRM/Admin/Form/MailSettings.php | 40 +- civicrm/CRM/Admin/Form/PaymentProcessor.php | 4 - civicrm/CRM/Admin/Form/RelationshipType.php | 4 +- civicrm/CRM/Admin/Form/ScheduleReminders.php | 716 +- civicrm/CRM/Admin/Page/AJAX.php | 56 - civicrm/CRM/Admin/Page/APIExplorer.php | 78 - civicrm/CRM/Admin/Page/ContactType.php | 1 + civicrm/CRM/Admin/Page/EventTemplate.php | 2 + civicrm/CRM/Admin/Page/Extensions.php | 5 + civicrm/CRM/Admin/Page/Job.php | 7 + civicrm/CRM/Admin/Page/MailSettings.php | 8 +- civicrm/CRM/Admin/Page/MessageTemplates.php | 7 + civicrm/CRM/Admin/Page/Options.php | 7 +- civicrm/CRM/Admin/Page/ScheduleReminders.php | 8 +- civicrm/CRM/Api4/Page/AJAX.php | 4 +- civicrm/CRM/Api4/Page/Api4Explorer.php | 1 + civicrm/CRM/Badge/Page/Layout.php | 4 + civicrm/CRM/Campaign/BAO/Campaign.php | 2 +- civicrm/CRM/Campaign/BAO/Query.php | 20 +- civicrm/CRM/Campaign/BAO/Survey.php | 4 +- civicrm/CRM/Campaign/DAO/CampaignGroup.php | 4 +- civicrm/CRM/Campaign/DAO/Survey.php | 36 +- .../CRM/Campaign/Form/Petition/Signature.php | 7 + civicrm/CRM/Campaign/Form/Survey/Main.php | 12 - civicrm/CRM/Campaign/Form/Survey/Results.php | 9 +- .../CRM/Campaign/Form/Survey/TabHeader.php | 4 +- civicrm/CRM/Campaign/Page/AJAX.php | 25 +- civicrm/CRM/Case/BAO/Case.php | 4 +- civicrm/CRM/Case/DAO/Case.php | 3 +- civicrm/CRM/Case/Form/DeleteClient.php | 130 + civicrm/CRM/Case/Info.php | 14 - civicrm/CRM/Case/xml/Menu/Case.xml | 5 + civicrm/CRM/Contact/ActionMapping.php | 52 +- civicrm/CRM/Contact/BAO/Contact.php | 2 +- civicrm/CRM/Contact/BAO/Contact/Utils.php | 4 +- civicrm/CRM/Contact/BAO/Group.php | 26 +- civicrm/CRM/Contact/BAO/GroupContactCache.php | 4 +- civicrm/CRM/Contact/BAO/Query.php | 5 - civicrm/CRM/Contact/BAO/Relationship.php | 23 +- civicrm/CRM/Contact/DAO/Contact.php | 3 +- civicrm/CRM/Contact/DAO/Group.php | 6 +- civicrm/CRM/Contact/Form/Contact.php | 126 +- civicrm/CRM/Contact/Form/Domain.php | 2 +- civicrm/CRM/Contact/Form/Edit/CustomData.php | 5 +- civicrm/CRM/Contact/Form/Location.php | 41 +- civicrm/CRM/Contact/Form/Search/Builder.php | 6 +- civicrm/CRM/Contact/Form/Task/EmailTrait.php | 2 +- civicrm/CRM/Contact/Form/Task/SaveSearch.php | 9 + civicrm/CRM/Contact/Page/View/Note.php | 28 +- civicrm/CRM/Contact/Page/View/Summary.php | 2 + civicrm/CRM/Contact/Tokens.php | 4 + civicrm/CRM/Contribute/ActionMapping.php | 11 +- .../CRM/Contribute/ActionMapping/ByPage.php | 13 +- .../CRM/Contribute/ActionMapping/ByType.php | 23 +- civicrm/CRM/Contribute/BAO/Contribution.php | 47 +- .../CRM/Contribute/BAO/Contribution/Utils.php | 4 +- civicrm/CRM/Contribute/BAO/Query.php | 2 +- civicrm/CRM/Contribute/DAO/Contribution.php | 8 +- .../CRM/Contribute/DAO/ContributionPage.php | 9 +- .../CRM/Contribute/DAO/ContributionRecur.php | 4 +- .../Contribute/Form/AbstractEditPayment.php | 119 +- .../CRM/Contribute/Form/AdditionalInfo.php | 2 +- .../CRM/Contribute/Form/AdditionalPayment.php | 6 +- civicrm/CRM/Contribute/Form/Contribution.php | 127 +- .../CRM/Contribute/Form/Contribution/Main.php | 5 - .../CRM/Contribute/Form/ContributionBase.php | 20 +- .../Form/ContributionPage/TabHeader.php | 2 +- .../CRM/Contribute/Page/ContributionPage.php | 20 + civicrm/CRM/Contribute/Page/Tab.php | 6 +- civicrm/CRM/Contribute/Selector/Search.php | 7 +- civicrm/CRM/Contribute/Task.php | 9 + civicrm/CRM/Contribute/Tokens.php | 21 +- .../ContributionInvoiceReceipt.php | 12 - .../WorkflowMessage/ContributionTrait.php | 10 + civicrm/CRM/Core/Action.php | 2 +- civicrm/CRM/Core/BAO/ActionSchedule.php | 168 +- civicrm/CRM/Core/BAO/Country.php | 2 +- civicrm/CRM/Core/BAO/CustomField.php | 19 +- civicrm/CRM/Core/BAO/CustomGroup.php | 1 + civicrm/CRM/Core/BAO/Discount.php | 23 +- civicrm/CRM/Core/BAO/Domain.php | 2 +- civicrm/CRM/Core/BAO/Job.php | 21 + civicrm/CRM/Core/CodeGen/I18n.php | 13 +- civicrm/CRM/Core/CodeGen/Specification.php | 8 +- civicrm/CRM/Core/Component/Info.php | 11 - civicrm/CRM/Core/Config.php | 5 + civicrm/CRM/Core/DAO.php | 29 +- civicrm/CRM/Core/DAO/ActionSchedule.php | 127 +- civicrm/CRM/Core/DAO/Address.php | 14 +- civicrm/CRM/Core/DAO/CustomGroup.php | 12 +- civicrm/CRM/Core/DAO/Discount.php | 9 +- civicrm/CRM/Core/DAO/EntityTag.php | 3 +- civicrm/CRM/Core/DAO/MailSettings.php | 206 +- civicrm/CRM/Core/DAO/UserJob.php | 7 +- civicrm/CRM/Core/EntityTokens.php | 8 +- civicrm/CRM/Core/Error.php | 59 +- civicrm/CRM/Core/Form.php | 177 +- civicrm/CRM/Core/Form/RecurringEntity.php | 12 +- civicrm/CRM/Core/Form/Renderer.php | 8 +- civicrm/CRM/Core/I18n.php | 2 +- civicrm/CRM/Core/I18n/SchemaStructure.php | 40 +- civicrm/CRM/Core/Invoke.php | 3 + civicrm/CRM/Core/Lock.php | 2 +- civicrm/CRM/Core/ManagedEntities.php | 18 +- civicrm/CRM/Core/Menu.php | 41 +- civicrm/CRM/Core/Page/AJAX/Location.php | 4 +- civicrm/CRM/Core/Page/Basic.php | 12 + civicrm/CRM/Core/Payment/PayPalIPN.php | 2 +- civicrm/CRM/Core/Payment/PayPalProIPN.php | 2 +- civicrm/CRM/Core/Permission.php | 3 - civicrm/CRM/Core/Permission/Base.php | 46 +- civicrm/CRM/Core/PrevNextCache/Redis.php | 57 +- civicrm/CRM/Core/PseudoConstant.php | 4 +- civicrm/CRM/Core/ScheduledJob.php | 44 +- civicrm/CRM/Core/SelectValues.php | 78 +- civicrm/CRM/Core/Selector/Controller.php | 4 +- civicrm/CRM/Core/Session.php | 20 +- civicrm/CRM/Core/Smarty/plugins/block.url.php | 60 + .../Smarty/plugins/function.crmSqlData.php | 68 + civicrm/CRM/Core/xml/Menu/Admin.xml | 16 +- civicrm/CRM/Core/xml/Menu/Misc.xml | 6 +- civicrm/CRM/Custom/Form/DeleteGroup.php | 7 +- civicrm/CRM/Custom/Page/AJAX.php | 4 +- civicrm/CRM/Custom/Page/Group.php | 6 + civicrm/CRM/Event/ActionMapping.php | 59 +- civicrm/CRM/Event/ActionMapping/ByEvent.php | 8 +- .../CRM/Event/ActionMapping/ByTemplate.php | 4 + civicrm/CRM/Event/ActionMapping/ByType.php | 8 + civicrm/CRM/Event/BAO/Event.php | 124 +- civicrm/CRM/Event/BAO/Participant.php | 6 +- civicrm/CRM/Event/DAO/Event.php | 4 +- civicrm/CRM/Event/DAO/Participant.php | 4 +- civicrm/CRM/Event/Form/EventFees.php | 8 +- civicrm/CRM/Event/Form/ManageEvent.php | 44 +- .../CRM/Event/Form/ManageEvent/EventInfo.php | 57 +- .../CRM/Event/Form/ManageEvent/Location.php | 10 +- civicrm/CRM/Event/Form/ManageEvent/Repeat.php | 34 +- .../Form/ManageEvent/ScheduleReminders.php | 13 +- .../CRM/Event/Form/ManageEvent/TabHeader.php | 2 +- civicrm/CRM/Event/Form/Participant.php | 277 +- .../Event/Form/ParticipantFeeSelection.php | 67 +- civicrm/CRM/Event/Form/ParticipantView.php | 22 +- civicrm/CRM/Event/Form/Registration.php | 175 +- .../Registration/AdditionalParticipant.php | 3 +- .../CRM/Event/Form/Registration/Register.php | 44 +- civicrm/CRM/Event/Form/SearchEvent.php | 2 +- civicrm/CRM/Event/Form/Task/Register.php | 24 + .../CRM/Event/Import/Parser/Participant.php | 23 - civicrm/CRM/Event/Page/ManageEvent.php | 10 +- civicrm/CRM/Event/ParticipantTokens.php | 2 +- civicrm/CRM/Event/PseudoConstant.php | 4 +- civicrm/CRM/Event/Selector/Search.php | 8 +- civicrm/CRM/Event/Tokens.php | 2 +- .../WorkflowMessage/ParticipantTrait.php | 29 +- civicrm/CRM/Extension/Container/Basic.php | 7 +- civicrm/CRM/Extension/Mapper.php | 16 +- civicrm/CRM/Financial/BAO/Payment.php | 29 +- .../CRM/Financial/Form/BatchTransaction.php | 4 +- civicrm/CRM/Financial/Page/AJAX.php | 4 +- .../CRM/Financial/Page/BatchTransaction.php | 2 + .../CRM/Financial/Page/FinancialAccount.php | 4 + civicrm/CRM/Financial/Page/FinancialType.php | 5 + .../Financial/Page/FinancialTypeAccount.php | 2 + civicrm/CRM/Group/Form/Search.php | 4 +- civicrm/CRM/Import/Form/MapField.php | 10 +- civicrm/CRM/Import/Parser.php | 6 +- civicrm/CRM/Logging/ReportDetail.php | 2 +- civicrm/CRM/Mailing/BAO/MailingJob.php | 33 +- civicrm/CRM/Mailing/DAO/Mailing.php | 4 +- civicrm/CRM/Mailing/Form/Unsubscribe.php | 6 + civicrm/CRM/Mailing/Page/Browse.php | 14 +- civicrm/CRM/Mailing/Page/Preview.php | 85 - civicrm/CRM/Mailing/Page/View.php | 7 - civicrm/CRM/Mailing/PseudoConstant.php | 2 +- civicrm/CRM/Mailing/Selector/Browse.php | 22 +- civicrm/CRM/Mailing/xml/Menu/Mailing.xml | 7 - civicrm/CRM/Member/ActionMapping.php | 39 +- civicrm/CRM/Member/BAO/Membership.php | 10 +- civicrm/CRM/Member/BAO/MembershipType.php | 18 +- civicrm/CRM/Member/DAO/Membership.php | 4 +- civicrm/CRM/Member/Form/Membership.php | 2 +- civicrm/CRM/Member/Page/MembershipType.php | 14 +- civicrm/CRM/Member/Selector/Search.php | 2 + civicrm/CRM/PCP/BAO/PCP.php | 75 +- civicrm/CRM/PCP/BAO/PCPBlock.php | 11 +- civicrm/CRM/PCP/Form/Campaign.php | 2 +- civicrm/CRM/PCP/Form/Contribute.php | 2 +- civicrm/CRM/PCP/Form/Event.php | 2 +- civicrm/CRM/PCP/Form/PCP.php | 6 +- civicrm/CRM/PCP/Page/PCP.php | 2 +- civicrm/CRM/PCP/Page/PCPInfo.php | 2 +- civicrm/CRM/Pledge/BAO/Pledge.php | 2 +- civicrm/CRM/Pledge/DAO/Pledge.php | 5 +- civicrm/CRM/Pledge/Form/Pledge.php | 4 +- civicrm/CRM/Price/BAO/PriceField.php | 4 +- civicrm/CRM/Price/BAO/PriceSet.php | 29 +- civicrm/CRM/Price/DAO/LineItem.php | 6 +- civicrm/CRM/Price/Page/Set.php | 7 + civicrm/CRM/Profile/Form.php | 9 +- civicrm/CRM/Profile/Page/Dynamic.php | 4 +- civicrm/CRM/Profile/Page/Listings.php | 4 +- .../Page/MultipleRecordFieldsListing.php | 19 +- civicrm/CRM/Profile/Page/View.php | 4 +- civicrm/CRM/Queue/Runner.php | 21 + civicrm/CRM/Report/Form.php | 10 +- civicrm/CRM/Report/Form/Activity.php | 2 +- civicrm/CRM/Report/Form/ActivitySummary.php | 2 +- .../Report/Form/Campaign/SurveyDetails.php | 2 +- civicrm/CRM/Report/Form/Case/Detail.php | 2 +- civicrm/CRM/Report/Form/Case/TimeSpent.php | 2 +- .../Report/Form/Contact/CurrentEmployer.php | 2 +- civicrm/CRM/Report/Form/Contact/Detail.php | 88 +- civicrm/CRM/Report/Form/Contact/Log.php | 2 +- .../CRM/Report/Form/Contact/Relationship.php | 2 +- .../Form/Contribute/DeferredRevenue.php | 4 +- .../CRM/Report/Form/Contribute/History.php | 2 +- .../Form/Contribute/HouseholdSummary.php | 2 +- .../Form/Contribute/OrganizationSummary.php | 2 +- civicrm/CRM/Report/Form/Contribute/PCP.php | 2 +- .../Report/Form/Contribute/RecurSummary.php | 4 +- civicrm/CRM/Report/Form/Contribute/Repeat.php | 2 +- civicrm/CRM/Report/Form/Contribute/Sybunt.php | 2 +- .../CRM/Report/Form/Contribute/TopDonor.php | 4 +- .../Report/Form/Event/IncomeCountSummary.php | 2 +- civicrm/CRM/Report/Form/Event/Summary.php | 2 +- civicrm/CRM/Report/Form/Mailing/Bounce.php | 2 +- civicrm/CRM/Report/Form/Mailing/Summary.php | 2 +- civicrm/CRM/Report/Form/Member/Detail.php | 27 +- civicrm/CRM/Report/Form/Pledge/Detail.php | 2 +- civicrm/CRM/Report/Form/Pledge/Summary.php | 2 +- civicrm/CRM/Report/Page/Instance.php | 1 + civicrm/CRM/Report/Utils/Report.php | 72 +- civicrm/CRM/SMS/BAO/Provider.php | 7 +- civicrm/CRM/SMS/Form/Upload.php | 2 +- civicrm/CRM/UF/Page/Field.php | 5 + civicrm/CRM/UF/Page/Group.php | 11 + civicrm/CRM/Upgrade/Incremental/General.php | 4 +- .../Upgrade/Incremental/php/FiveFiftyOne.php | 2 +- .../Upgrade/Incremental/php/FiveSixtySix.php | 270 + .../Incremental/sql/5.63.alpha1.mysql.tpl | 8 + .../Incremental/sql/5.66.alpha1.mysql.tpl | 13 + .../Incremental/sql/5.66.beta1.mysql.tpl | 1 + civicrm/CRM/Upgrade/Snapshot.php | 15 +- civicrm/CRM/Utils/API/AbstractFieldCoder.php | 2 +- .../CRM/Utils/Check/Component/Security.php | 4 - civicrm/CRM/Utils/Date.php | 1 + civicrm/CRM/Utils/File.php | 17 +- civicrm/CRM/Utils/Hook.php | 2 +- civicrm/CRM/Utils/Mail.php | 14 +- civicrm/CRM/Utils/Mail/EmailProcessor.php | 377 +- civicrm/CRM/Utils/Mail/Incoming.php | 132 +- civicrm/CRM/Utils/Mail/IncomingMail.php | 233 + civicrm/CRM/Utils/Migrate/Import.php | 2 +- civicrm/CRM/Utils/SQL/Select.php | 7 + civicrm/CRM/Utils/System.php | 12 +- civicrm/CRM/Utils/System/Backdrop.php | 2 +- civicrm/CRM/Utils/System/Base.php | 47 + civicrm/CRM/Utils/System/Standalone.php | 14 +- civicrm/CRM/Utils/System/WordPress.php | 101 +- civicrm/Civi.php | 85 + civicrm/Civi/API/EntityLookupTrait.php | 116 + civicrm/Civi/API/ExternalBatch.php | 2 +- civicrm/Civi/API/Kernel.php | 31 +- civicrm/Civi/ActionSchedule/Mapping.php | 4 + civicrm/Civi/ActionSchedule/MappingBase.php | 42 +- .../Civi/ActionSchedule/MappingInterface.php | 92 +- .../Civi/ActionSchedule/RecipientBuilder.php | 14 +- civicrm/Civi/Angular/Manager.php | 2 +- civicrm/Civi/Api4/Action/GetActions.php | 2 +- civicrm/Civi/Api4/Contact.php | 1 + .../Api4/Discount.php} | 32 +- civicrm/Civi/Api4/Entity.php | 5 + civicrm/Civi/Api4/EntitySet.php | 8 + .../AutocompleteFieldSubscriber.php | 85 +- civicrm/Civi/Api4/Generic/AbstractAction.php | 4 +- civicrm/Civi/Api4/Generic/AbstractEntity.php | 7 +- .../Civi/Api4/Generic/AbstractGetAction.php | 2 +- .../Civi/Api4/Generic/AutocompleteAction.php | 26 +- civicrm/Civi/Api4/Generic/BasicGetAction.php | 5 +- .../Api4/Generic/BasicGetFieldsAction.php | 10 +- .../Civi/Api4/Generic/DAOGetFieldsAction.php | 4 - .../Traits/SavedSearchInspectorTrait.php | 80 +- .../Api4/Provider/ActionObjectProvider.php | 2 +- .../Civi/Api4/Query/Api4EntitySetQuery.php | 2 +- civicrm/Civi/Api4/Query/Api4SelectQuery.php | 34 +- civicrm/Civi/Api4/Query/SqlBool.php | 4 +- civicrm/Civi/Api4/Query/SqlEquation.php | 13 +- civicrm/Civi/Api4/Query/SqlExpression.php | 5 +- civicrm/Civi/Api4/Query/SqlField.php | 8 +- civicrm/Civi/Api4/Query/SqlFunction.php | 31 +- .../Api4/Query/SqlFunctionDAYSTOANNIV.php | 2 +- .../Api4/Query/SqlFunctionGROUP_CONCAT.php | 72 +- civicrm/Civi/Api4/Query/SqlNull.php | 4 - civicrm/Civi/Api4/Query/SqlNumber.php | 4 - civicrm/Civi/Api4/Query/SqlString.php | 4 +- civicrm/Civi/Api4/Query/SqlWild.php | 4 - civicrm/Civi/Api4/Relationship.php | 13 + civicrm/Civi/Api4/RelationshipCache.php | 1 + .../ActivityAutocompleteProvider.php | 6 +- .../Autocomplete/CaseAutocompleteProvider.php | 6 +- .../ContactAutocompleteProvider.php | 45 +- .../ContributionAutocompleteProvider.php | 6 +- .../ContributionRecurAutocompleteProvider.php | 6 +- .../EventAutocompleteProvider.php | 62 + .../MailingRecipientsAutocompleteProvider.php | 1 + ...hp => OptionValueAutocompleteProvider.php} | 24 +- .../PledgeAutocompleteProvider.php | 6 +- .../RelationshipAutocompleteProvider.php | 2 +- civicrm/Civi/Api4/Service/Schema/Joiner.php | 1 + .../ACLEntityRoleCreationSpecProvider.php | 37 - .../ActionScheduleCreationSpecProvider.php | 41 - .../Provider/ActionScheduleSpecProvider.php | 55 + .../Spec/Provider/AddressGetSpecProvider.php | 5 - .../Spec/Provider/CustomGroupSpecProvider.php | 40 - .../Spec/Provider/CustomValueSpecProvider.php | 3 + .../Provider/EmailCreationSpecProvider.php | 2 +- .../Generic/SpecProviderInterface.php | 5 +- .../Provider/GetActionDefaultsProvider.php | 6 +- .../Spec/Provider/UserJobSpecProvider.php | 39 - .../Civi/Api4/Service/Spec/SpecFormatter.php | 43 +- .../Civi/Api4/Service/Spec/SpecGatherer.php | 5 +- civicrm/Civi/Api4/Utils/CoreUtil.php | 45 +- civicrm/Civi/Api4/Utils/FormattingUtil.php | 9 +- civicrm/Civi/Core/Container.php | 14 +- civicrm/Civi/Core/Themes.php | 2 +- civicrm/Civi/Core/Url.php | 713 ++ civicrm/Civi/Schema/Traits/GuiSpecTrait.php | 10 + civicrm/Civi/Test/ACLPermissionTrait.php | 15 + civicrm/Civi/Test/Api3DocTrait.php | 211 - civicrm/Civi/Test/Api3TestTrait.php | 13 +- civicrm/Civi/Test/Api4TestTrait.php | 11 +- civicrm/Civi/Test/DbTestTrait.php | 4 +- civicrm/Civi/Test/EntityTrait.php | 6 +- civicrm/Civi/Test/EventTestTrait.php | 56 +- civicrm/Civi/Test/FormTrait.php | 39 + civicrm/Civi/Test/FormWrapper.php | 342 + .../Test/FormWrappers/EventFormOnline.php | 36 + .../FormWrappers/EventFormParticipant.php | 33 + civicrm/Civi/Token/TokenRow.php | 13 +- .../GenericWorkflowMessage.php | 2 + civicrm/ang/api4Explorer/Explorer.js | 2 +- civicrm/ang/crmMailing/EditUnsubGroupCtrl.js | 4 +- civicrm/ang/crmMailing/ViewRecipCtrl.js | 75 +- civicrm/ang/crmMailing/services.js | 73 + civicrm/api/api.php | 23 +- civicrm/api/v3/ActionSchedule.php | 14 +- civicrm/api/v3/Activity.php | 2 +- civicrm/api/v3/Contact.php | 402 - civicrm/api/v3/CustomValue.php | 4 +- civicrm/api/v3/Profile.php | 4 +- .../Activity/ContactRefCustomField.ex.php | 117 - .../Activity/ContactRefCustomFieldGet.ex.php | 107 - .../api/v3/examples/Activity/Create.ex.php | 115 - .../v3/examples/Activity/DateTimeHigh.ex.php | 89 - .../v3/examples/Activity/DateTimeLow.ex.php | 88 - .../api/v3/examples/Activity/Delete.ex.php | 75 - civicrm/api/v3/examples/Activity/Get.ex.php | 102 - .../api/v3/examples/Activity/GetFields.ex.php | 684 - .../Activity/GetTargetAndAssignee.ex.php | 118 - .../Activity/GetTargetandAssigneeName.ex.php | 102 - .../Activity/ReturnAssigneeContact.ex.php | 182 - .../v3/examples/ActivityContact/Create.ex.php | 85 - .../v3/examples/ActivityContact/Delete.ex.php | 75 - .../v3/examples/ActivityType/Create.ex.php | 106 - .../api/v3/examples/ActivityType/Get.ex.php | 113 - .../v3/examples/Address/AddressLike.ex.php | 87 - .../v3/examples/Address/AddressParse.ex.php | 95 - .../v3/examples/Address/AddressSort.ex.php | 91 - civicrm/api/v3/examples/Address/Create.ex.php | 98 - civicrm/api/v3/examples/Address/Delete.ex.php | 75 - civicrm/api/v3/examples/Address/Get.ex.php | 89 - .../api/v3/examples/Address/GetOptions.ex.php | 81 - civicrm/api/v3/examples/Batch/Create.ex.php | 101 - civicrm/api/v3/examples/Batch/Delete.ex.php | 75 - civicrm/api/v3/examples/Batch/Get.ex.php | 85 - civicrm/api/v3/examples/Batch/Update.ex.php | 101 - .../api/v3/examples/Campaign/Create.ex.php | 101 - .../api/v3/examples/Campaign/Delete.ex.php | 75 - civicrm/api/v3/examples/Campaign/Get.ex.php | 87 - civicrm/api/v3/examples/Case/Create.ex.php | 92 - .../api/v3/examples/CaseContact/Create.ex.php | 83 - .../api/v3/examples/CaseContact/Get.ex.php | 82 - civicrm/api/v3/examples/Constant/Get.ex.php | 115 - .../examples/Contact/APIChainedArray.ex.php | 235 - .../Contact/APIChainedArrayFormats.ex.php | 171 - .../APIChainedArrayMultipleCustom.ex.php | 213 - ...ainedArrayValuesFromSiblingFunction.ex.php | 146 - .../examples/Contact/ChainTwoWebsites.ex.php | 222 - .../Contact/ChainTwoWebsitesSyntax2.ex.php | 227 - .../ContactIDOfLoggedInUserContactAPI.ex.php | 148 - civicrm/api/v3/examples/Contact/Create.ex.php | 132 - .../Contact/CreateParticipantPayment.ex.php | 161 - .../v3/examples/Contact/CustomFieldGet.ex.php | 86 - ...CustomFieldGetReturnSyntaxVariation.ex.php | 86 - civicrm/api/v3/examples/Contact/Delete.ex.php | 75 - .../Contact/FormatIsSuccess_Fail.ex.php | 74 - .../Contact/FormatIsSuccess_True.ex.php | 74 - .../v3/examples/Contact/FormatOnlyID.ex.php | 75 - .../examples/Contact/FormatSingleValue.ex.php | 75 - civicrm/api/v3/examples/Contact/Get.ex.php | 146 - .../api/v3/examples/Contact/GetActions.ex.php | 110 - .../examples/Contact/GetCountContact.ex.php | 73 - .../examples/Contact/GetFieldsOptions.ex.php | 1334 -- .../v3/examples/Contact/GetMergedfrom.ex.php | 85 - .../v3/examples/Contact/GetMergedto.ex.php | 81 - .../api/v3/examples/Contact/GetOptions.ex.php | 80 - .../examples/Contact/GetSingleContact.ex.php | 142 - .../api/v3/examples/Contact/GetUnique.ex.php | 76 - .../Contact/GroupFilterUsingContactAPI.ex.php | 153 - .../Contact/NestedReplaceEmail.ex.php | 254 - ...ontributionCreateWithHonoreeContact.ex.php | 122 - .../ContributionCreateWithNote.ex.php | 125 - .../ContributionCreateWithSoftCredit.ex.php | 128 - ...ibutionCreateWithSoftCreditDefaults.ex.php | 122 - .../v3/examples/Contribution/Create.ex.php | 120 - .../CreateWithNestedLineItems.ex.php | 191 - .../v3/examples/Contribution/Delete.ex.php | 78 - .../api/v3/examples/Contribution/Get.ex.php | 112 - .../v3/examples/Contribution/GetUnique.ex.php | 76 - .../examples/ContributionPage/Create.ex.php | 135 - .../examples/ContributionPage/Delete.ex.php | 75 - .../v3/examples/ContributionPage/Get.ex.php | 104 - .../examples/ContributionPage/Submit.ex.php | 98 - .../examples/ContributionRecur/Create.ex.php | 115 - .../examples/ContributionRecur/Delete.ex.php | 75 - .../v3/examples/ContributionRecur/Get.ex.php | 95 - .../examples/ContributionSoft/Create.ex.php | 93 - .../examples/ContributionSoft/Delete.ex.php | 75 - .../v3/examples/ContributionSoft/Get.ex.php | 86 - civicrm/api/v3/examples/Country/Create.ex.php | 91 - civicrm/api/v3/examples/Country/Delete.ex.php | 75 - civicrm/api/v3/examples/Country/Get.ex.php | 85 - .../api/v3/examples/CustomField/Create.ex.php | 119 - .../api/v3/examples/CustomField/Delete.ex.php | 75 - .../api/v3/examples/CustomGroup/Create.ex.php | 111 - .../api/v3/examples/CustomGroup/Delete.ex.php | 75 - .../api/v3/examples/CustomGroup/Get.ex.php | 92 - .../api/v3/examples/CustomValue/Create.ex.php | 75 - .../CustomValue/FormatFieldName.ex.php | 126 - .../api/v3/examples/CustomValue/Get.ex.php | 125 - civicrm/api/v3/examples/Domain/Create.ex.php | 89 - civicrm/api/v3/examples/Domain/Get.ex.php | 129 - civicrm/api/v3/examples/Email/Create.ex.php | 93 - civicrm/api/v3/examples/Email/Delete.ex.php | 75 - civicrm/api/v3/examples/Email/Replace.ex.php | 173 - .../api/v3/examples/EntityBatch/Create.ex.php | 85 - .../api/v3/examples/EntityBatch/Delete.ex.php | 75 - .../api/v3/examples/EntityBatch/Get.ex.php | 85 - .../api/v3/examples/EntityTag/Create.ex.php | 75 - .../api/v3/examples/EntityTag/Delete.ex.php | 76 - civicrm/api/v3/examples/EntityTag/Get.ex.php | 83 - .../Event/ContactRefCustomField.ex.php | 113 - civicrm/api/v3/examples/Event/Create.ex.php | 162 - civicrm/api/v3/examples/Event/Delete.ex.php | 75 - civicrm/api/v3/examples/Event/Get.ex.php | 108 - .../v3/examples/Event/IsCurrentOption.ex.php | 116 - .../api/v3/examples/Event/IsFullOption.ex.php | 105 - civicrm/api/v3/examples/Grant/Create.ex.php | 101 - civicrm/api/v3/examples/Grant/Delete.ex.php | 75 - civicrm/api/v3/examples/Grant/Get.ex.php | 88 - civicrm/api/v3/examples/Group/Get.ex.php | 91 - .../api/v3/examples/Group/GetFields.ex.php | 460 - .../v3/examples/GroupContact/Create.ex.php | 80 - .../v3/examples/GroupContact/Delete.ex.php | 79 - .../api/v3/examples/GroupContact/Get.ex.php | 86 - .../GroupContact/GetWithGroupID.ex.php | 109 - .../v3/examples/GroupNesting/Create.ex.php | 83 - .../v3/examples/GroupNesting/Delete.ex.php | 75 - .../api/v3/examples/GroupNesting/Get.ex.php | 83 - .../examples/GroupOrganization/Create.ex.php | 83 - .../examples/GroupOrganization/Delete.ex.php | 75 - .../v3/examples/GroupOrganization/Get.ex.php | 75 - civicrm/api/v3/examples/Im/Create.ex.php | 88 - civicrm/api/v3/examples/Im/Delete.ex.php | 75 - civicrm/api/v3/examples/Im/Get.ex.php | 89 - civicrm/api/v3/examples/Job/Clone.ex.php | 88 - civicrm/api/v3/examples/Job/Create.ex.php | 97 - civicrm/api/v3/examples/Job/Delete.ex.php | 70 - .../api/v3/examples/LineItem/Create.ex.php | 100 - .../api/v3/examples/LineItem/Delete.ex.php | 75 - civicrm/api/v3/examples/LineItem/Get.ex.php | 93 - .../api/v3/examples/LocBlock/Create.ex.php | 92 - .../examples/LocBlock/CreateEntities.ex.php | 151 - civicrm/api/v3/examples/LocBlock/Get.ex.php | 120 - civicrm/api/v3/examples/Logging/Get.ex.php | 246 - civicrm/api/v3/examples/Logging/Revert.ex.php | 76 - .../MailSettings/ChainedGetDelete.ex.php | 100 - .../v3/examples/MailSettings/Create.ex.php | 103 - .../v3/examples/MailSettings/Delete.ex.php | 75 - .../api/v3/examples/MailSettings/Get.ex.php | 98 - .../examples/MailSettings/GetOptions.ex.php | 80 - civicrm/api/v3/examples/Mailing/Clone.ex.php | 124 - civicrm/api/v3/examples/Mailing/Create.ex.php | 172 - civicrm/api/v3/examples/Mailing/Delete.ex.php | 75 - .../api/v3/examples/Mailing/GetTokens.ex.php | 172 - civicrm/api/v3/examples/Mailing/Submit.ex.php | 126 - .../api/v3/examples/MailingAB/Create.ex.php | 99 - .../MailingEventSubscribe/Create.ex.php | 86 - .../v3/examples/MailingGroup/Subscribe.ex.php | 86 - civicrm/api/v3/examples/Mapping/Create.ex.php | 85 - civicrm/api/v3/examples/Mapping/Delete.ex.php | 75 - civicrm/api/v3/examples/Mapping/Get.ex.php | 85 - .../v3/examples/MappingField/Create.ex.php | 97 - .../v3/examples/MappingField/Delete.ex.php | 75 - .../api/v3/examples/MappingField/Get.ex.php | 89 - .../api/v3/examples/Membership/Create.ex.php | 102 - .../Membership/CreateWithCustomData.ex.php | 103 - .../api/v3/examples/Membership/Delete.ex.php | 76 - .../Membership/FilterIsCurrent.ex.php | 97 - civicrm/api/v3/examples/Membership/Get.ex.php | 82 - .../Membership/SearchWithCustomData.ex.php | 102 - .../Membership/UpdateCustomData.ex.php | 103 - .../examples/MembershipPayment/Create.ex.php | 83 - .../v3/examples/MembershipPayment/Get.ex.php | 83 - .../examples/MembershipStatus/Create.ex.php | 94 - .../v3/examples/MembershipStatus/Get.ex.php | 89 - .../v3/examples/MembershipType/Create.ex.php | 110 - .../v3/examples/MembershipType/Delete.ex.php | 75 - .../api/v3/examples/MembershipType/Get.ex.php | 92 - .../v3/examples/MessageTemplate/Create.ex.php | 97 - .../v3/examples/MessageTemplate/Delete.ex.php | 75 - .../v3/examples/MessageTemplate/Get.ex.php | 97 - civicrm/api/v3/examples/Note/Create.ex.php | 96 - civicrm/api/v3/examples/Note/Delete.ex.php | 75 - civicrm/api/v3/examples/Note/Get.ex.php | 76 - civicrm/api/v3/examples/OpenID/Create.ex.php | 87 - civicrm/api/v3/examples/OpenID/Delete.ex.php | 75 - civicrm/api/v3/examples/OpenID/Get.ex.php | 88 - .../api/v3/examples/OptionGroup/Create.ex.php | 98 - .../api/v3/examples/OptionGroup/Delete.ex.php | 75 - .../api/v3/examples/OptionGroup/Get.ex.php | 85 - .../api/v3/examples/OptionValue/Get.ex.php | 136 - .../v3/examples/OptionValue/SortOption.ex.php | 87 - civicrm/api/v3/examples/Order/Cancel.ex.php | 111 - civicrm/api/v3/examples/Order/Create.ex.php | 157 - .../Order/CreateOrderParticipant.ex.php | 179 - civicrm/api/v3/examples/Order/Delete.ex.php | 78 - civicrm/api/v3/examples/Order/Get.ex.php | 141 - .../api/v3/examples/Participant/Create.ex.php | 104 - .../api/v3/examples/Participant/Get.ex.php | 107 - .../examples/Participant/NestedDelete.ex.php | 151 - .../Participant/NestedEventGet.ex.php | 155 - .../examples/ParticipantPayment/Create.ex.php | 83 - .../examples/ParticipantPayment/Delete.ex.php | 75 - .../v3/examples/ParticipantPayment/Get.ex.php | 83 - .../ParticipantStatusType/Create.ex.php | 95 - .../ParticipantStatusType/Delete.ex.php | 75 - .../examples/ParticipantStatusType/Get.ex.php | 95 - civicrm/api/v3/examples/Payment/Cancel.ex.php | 93 - civicrm/api/v3/examples/Payment/Create.ex.php | 93 - .../Payment/CreatePaymentWithLineItems.ex.php | 103 - civicrm/api/v3/examples/Payment/Delete.ex.php | 76 - civicrm/api/v3/examples/Payment/Get.ex.php | 92 - .../v3/examples/Payment/UpdatePayment.ex.php | 97 - .../examples/PaymentProcessor/Create.ex.php | 107 - .../examples/PaymentProcessor/Delete.ex.php | 75 - .../PaymentProcessorType/Create.ex.php | 107 - .../PaymentProcessorType/Delete.ex.php | 75 - .../v3/examples/PaymentToken/Create.ex.php | 98 - .../v3/examples/PaymentToken/Delete.ex.php | 75 - .../api/v3/examples/PaymentToken/Get.ex.php | 88 - .../v3/examples/Pcp/ChainedGetDelete.ex.php | 119 - civicrm/api/v3/examples/Pcp/Create.ex.php | 98 - civicrm/api/v3/examples/Pcp/Delete.ex.php | 75 - civicrm/api/v3/examples/Pcp/Get.ex.php | 94 - civicrm/api/v3/examples/Phone/Create.ex.php | 92 - civicrm/api/v3/examples/Phone/Delete.ex.php | 75 - civicrm/api/v3/examples/Phone/Get.ex.php | 88 - .../api/v3/examples/Phone/GetOptions.ex.php | 81 - civicrm/api/v3/examples/Pledge/Create.ex.php | 115 - civicrm/api/v3/examples/Pledge/Delete.ex.php | 78 - civicrm/api/v3/examples/Pledge/Get.ex.php | 101 - .../examples/Pledge/GetFilterHighDate.ex.php | 103 - .../v3/examples/PledgePayment/Create.ex.php | 93 - .../v3/examples/PledgePayment/Delete.ex.php | 78 - .../api/v3/examples/PledgePayment/Get.ex.php | 119 - .../v3/examples/PledgePayment/Update.ex.php | 90 - .../api/v3/examples/PriceField/Create.ex.php | 101 - .../api/v3/examples/PriceField/Delete.ex.php | 75 - civicrm/api/v3/examples/PriceField/Get.ex.php | 91 - .../v3/examples/PriceFieldValue/Create.ex.php | 105 - .../v3/examples/PriceFieldValue/Delete.ex.php | 75 - .../v3/examples/PriceFieldValue/Get.ex.php | 91 - .../api/v3/examples/PriceSet/Create.ex.php | 96 - .../api/v3/examples/PriceSet/Delete.ex.php | 75 - civicrm/api/v3/examples/PriceSet/Get.ex.php | 88 - civicrm/api/v3/examples/Profile/Apply.ex.php | 114 - civicrm/api/v3/examples/Profile/Get.ex.php | 112 - .../api/v3/examples/Profile/GetFields.ex.php | 343 - civicrm/api/v3/examples/Profile/Submit.ex.php | 134 - .../BetweenRelationshipType.ex.php | 113 - .../v3/examples/Relationship/Create.ex.php | 96 - .../v3/examples/Relationship/Delete.ex.php | 75 - .../api/v3/examples/Relationship/Get.ex.php | 89 - .../Relationship/INRelationshipType.ex.php | 103 - .../NotBetweenRelationshipType.ex.php | 94 - .../Relationship/NotInRelationshipType.ex.php | 103 - .../Relationship/filterIsCurrent.ex.php | 91 - .../examples/RelationshipType/Create.ex.php | 97 - .../examples/RelationshipType/Delete.ex.php | 75 - .../v3/examples/ReportTemplate/Getrows.ex.php | 153 - .../ReportTemplate/Getstatistics.ex.php | 87 - .../api/v3/examples/SavedSearch/Create.ex.php | 142 - .../api/v3/examples/SavedSearch/Delete.ex.php | 75 - .../api/v3/examples/SavedSearch/Get.ex.php | 87 - civicrm/api/v3/examples/Setting/Create.ex.php | 81 - .../examples/Setting/CreateAllDomains.ex.php | 91 - .../Setting/CreateSettingCurrentDomain.ex.php | 82 - .../Setting/CreateSpecifiedDomains.ex.php | 88 - civicrm/api/v3/examples/Setting/Get.ex.php | 81 - .../v3/examples/Setting/GetAllDomains.ex.php | 91 - .../v3/examples/Setting/GetDefaults.ex.php | 88 - .../api/v3/examples/Setting/GetFields.ex.php | 3353 ----- .../Setting/GetSettingCurrentDomain.ex.php | 82 - .../Setting/GetSpecifiedDomains.ex.php | 90 - .../api/v3/examples/Setting/GetValue.ex.php | 73 - civicrm/api/v3/examples/Setting/Revert.ex.php | 94 - .../v3/examples/StateProvince/Create.ex.php | 86 - .../v3/examples/StateProvince/Delete.ex.php | 75 - .../api/v3/examples/StateProvince/Get.ex.php | 84 - .../examples/StatusPreference/Create.ex.php | 91 - .../examples/StatusPreference/Delete.ex.php | 75 - .../v3/examples/StatusPreference/Get.ex.php | 85 - .../examples/Survey/ChainedGetDelete.ex.php | 98 - civicrm/api/v3/examples/Survey/Create.ex.php | 102 - civicrm/api/v3/examples/Survey/Delete.ex.php | 75 - civicrm/api/v3/examples/Survey/Get.ex.php | 92 - .../v3/examples/SurveyRespondant/Get.ex.php | 80 - civicrm/api/v3/examples/System/Flush.ex.php | 75 - civicrm/api/v3/examples/Tag/Create.ex.php | 91 - civicrm/api/v3/examples/Tag/Delete.ex.php | 75 - civicrm/api/v3/examples/Tag/Get.ex.php | 88 - civicrm/api/v3/examples/Tag/GetFields.ex.php | 269 - civicrm/api/v3/examples/Tag/GetList.ex.php | 94 - .../api/v3/examples/Tag/GetReturnArray.ex.php | 87 - .../TaxContributionPage/Create.ex.php | 116 - .../CreateWithNestedLineItems.ex.php | 192 - .../TaxContributionPage/Delete.ex.php | 78 - civicrm/api/v3/examples/UFField/Create.ex.php | 107 - civicrm/api/v3/examples/UFField/Delete.ex.php | 75 - civicrm/api/v3/examples/UFField/Get.ex.php | 92 - .../api/v3/examples/UFField/Replace.ex.php | 173 - civicrm/api/v3/examples/UFGroup/Create.ex.php | 125 - civicrm/api/v3/examples/UFGroup/Delete.ex.php | 75 - civicrm/api/v3/examples/UFGroup/Get.ex.php | 102 - civicrm/api/v3/examples/UFJoin/Create.ex.php | 93 - civicrm/api/v3/examples/UFJoin/Get.ex.php | 88 - civicrm/api/v3/examples/UFMatch/Get.ex.php | 83 - civicrm/api/v3/examples/User/Get.ex.php | 83 - civicrm/api/v3/examples/User/GetFields.ex.php | 92 - civicrm/api/v3/examples/Website/Create.ex.php | 85 - civicrm/api/v3/examples/Website/Delete.ex.php | 75 - civicrm/api/v3/examples/Website/Get.ex.php | 85 - .../api/v3/examples/Website/GetFields.ex.php | 165 - .../examples/Website/GetWithMetadata.ex.php | 174 - civicrm/civicrm-version.php | 2 +- civicrm/composer.json | 2 +- civicrm/composer.lock | 14 +- civicrm/css/menubar-standalone.css | 15 + .../Civi/AfformAdmin/AfformAdminMeta.php | 3 +- .../Civi/Api4/Action/Afform/LoadAdminData.php | 4 +- .../ext/afform/admin/afformEntities/Note.php | 5 + civicrm/ext/afform/admin/ang/afAdmin.js | 2 +- .../ang/afAdmin/afAdminList.controller.js | 15 +- .../afform/admin/ang/afAdmin/afAdminList.html | 15 +- .../ang/afAdminFormSubmissionList.aff.json | 3 +- civicrm/ext/afform/admin/ang/afGuiEditor.css | 7 + .../ang/afGuiEditor/afGuiEditor.component.js | 4 + .../admin/ang/afGuiEditor/config-form.html | 64 +- .../afGuiEditor/elements/afGuiField-menu.html | 4 +- civicrm/ext/afform/admin/info.xml | 4 +- .../afform/core/CRM/Afform/AfformScanner.php | 4 +- .../core/CRM/Afform/BAO/AfformSubmission.php | 26 +- .../core/CRM/Afform/DAO/AfformSubmission.php | 76 +- .../ext/afform/core/CRM/Afform/Upgrader.php | 11 + .../Civi/Afform/AfformMetadataInjector.php | 2 +- .../afform/core/Civi/Afform/FormDataModel.php | 8 +- civicrm/ext/afform/core/Civi/Afform/Utils.php | 18 +- .../Api4/Action/Afform/AbstractProcessor.php | 34 +- .../core/Civi/Api4/Action/Afform/Get.php | 19 +- .../core/Civi/Api4/Action/Afform/Prefill.php | 25 +- civicrm/ext/afform/core/Civi/Api4/Afform.php | 68 +- .../AfformAutocompleteSubscriber.php | 2 +- .../core/Civi/Api4/Utils/AfformSaveTrait.php | 3 + civicrm/ext/afform/core/afform.civix.php | 4 +- civicrm/ext/afform/core/afform.php | 25 +- .../afform/core/ang/af/afField.component.js | 8 +- .../afform/core/ang/af/afForm.component.js | 50 +- .../core/ang/afblockContactNote.aff.html | 5 + .../core/ang/afblockContactNote.aff.json | 7 + civicrm/ext/afform/core/info.xml | 8 +- .../managed/AfformSubmissionStatus.mgd.php | 88 + civicrm/ext/afform/core/phpunit.xml.dist | 24 +- civicrm/ext/afform/core/sql/auto_install.sql | 1 + .../phpunit/Civi/Afform/AfformGetTest.php | 4 +- .../Civi/Afform/AfformSubmissionTest.php | 24 + .../schema/CRM/Afform/AfformSubmission.xml | 17 + civicrm/ext/afform/html/info.xml | 4 +- .../afform/mock/ang/mockPublicForm.test.php | 6 +- civicrm/ext/afform/mock/info.xml | 4 +- civicrm/ext/afform/mock/phpunit.xml.dist | 24 +- .../api/v4/AfformAutocompleteUsageTest.php | 12 +- .../phpunit/api/v4/AfformContactUsageTest.php | 65 +- .../phpunit/api/v4/AfformPrefillUsageTest.php | 165 + .../phpunit/api/v4/AfformRoutingTest.php | 8 +- .../mock/tests/phpunit/api/v4/AfformTest.php | 12 +- civicrm/ext/authx/Civi/Authx/Backdrop.php | 2 +- civicrm/ext/authx/Civi/Authx/Drupal.php | 2 +- civicrm/ext/authx/Civi/Authx/Drupal8.php | 2 +- civicrm/ext/authx/info.xml | 4 +- civicrm/ext/authx/phpunit.xml.dist | 24 +- .../tests/phpunit/Civi/Authx/AllFlowsTest.php | 4 +- civicrm/ext/civi_campaign/info.xml | 4 +- civicrm/ext/civi_case/Civi/Api4/CiviCase.php | 2 +- civicrm/ext/civi_case/civi_case.php | 13 + civicrm/ext/civi_case/info.xml | 4 +- .../Civi/Api4/Contribution.php | 1 + civicrm/ext/civi_contribute/info.xml | 4 +- .../ext/civi_event/Civi/Api4/Participant.php | 1 + .../Provider/EventCreationSpecProvider.php | 11 +- civicrm/ext/civi_event/info.xml | 4 +- civicrm/ext/civi_mail/info.xml | 4 +- .../ext/civi_member/Civi/Api4/Membership.php | 1 + civicrm/ext/civi_member/info.xml | 4 +- civicrm/ext/civi_pledge/Civi/Api4/Pledge.php | 1 + civicrm/ext/civi_pledge/info.xml | 4 +- civicrm/ext/civi_report/info.xml | 4 +- .../afsearchManageContributionPages.aff.html | 2 +- .../ang/afsearchManageScheduledJobs.aff.html | 2 +- civicrm/ext/civicrm_admin_ui/info.xml | 4 +- ...rch_Administer_Scheduled_Reminders.mgd.php | 4 +- .../SavedSearch_Manage_Mail_Accounts.mgd.php | 1 + civicrm/ext/civicrm_search_ui/info.xml | 4 +- civicrm/ext/civigrant/Civi/Api4/Grant.php | 1 + .../GrantAutocompleteProvider.php | 83 - ...nts.aff.html => afsearchTabGrant.aff.html} | 0 ...nts.aff.json => afsearchTabGrant.aff.json} | 0 civicrm/ext/civigrant/civigrant.php | 2 +- civicrm/ext/civigrant/info.xml | 4 +- civicrm/ext/civigrant/phpunit.xml.dist | 24 +- civicrm/ext/civiimport/info.xml | 4 +- civicrm/ext/civiimport/phpunit.xml.dist | 24 +- civicrm/ext/ckeditor4/info.xml | 4 +- .../ext/contributioncancelactions/info.xml | 4 +- .../phpunit.xml.dist | 24 +- civicrm/ext/elavon/info.xml | 4 +- civicrm/ext/elavon/phpunit.xml.dist | 24 +- civicrm/ext/eventcart/info.xml | 4 +- .../Cart/Form/Checkout/ConferenceEvents.tpl | 2 - .../Form/Checkout/ParticipantsAndPrices.tpl | 2 - .../CRM/Event/Cart/Form/Checkout/Payment.tpl | 2 - .../CRM/Event/Cart/Form/Checkout/ThankYou.tpl | 2 - civicrm/ext/ewaysingle/info.xml | 4 +- civicrm/ext/ewaysingle/phpunit.xml.dist | 24 +- civicrm/ext/financialacls/financialacls.php | 25 + civicrm/ext/financialacls/info.xml | 4 +- civicrm/ext/financialacls/phpunit.xml.dist | 24 +- .../Financialacls/MembershipTypesTest.php | 23 +- civicrm/ext/flexmailer/info.xml | 4 +- civicrm/ext/flexmailer/phpunit.xml.dist | 24 +- civicrm/ext/flexmailer/src/FlexMailer.php | 2 +- civicrm/ext/flexmailer/src/Validator.php | 2 +- .../phpunit/Civi/FlexMailer/ValidatorTest.php | 2 +- civicrm/ext/greenwich/info.xml | 4 +- .../CRM/Contact/Form/Search/Custom.php | 2 +- .../CRM/Contact/Selector/Custom.php | 2 + civicrm/ext/legacycustomsearches/info.xml | 4 +- .../ext/legacycustomsearches/phpunit.xml.dist | 24 +- civicrm/ext/message_admin/info.xml | 4 +- civicrm/ext/oauth-client/info.xml | 4 +- civicrm/ext/oauth-client/phpunit.xml.dist | 24 +- .../phpunit/api/v4/OAuthClientGrantTest.php | 4 +- .../tests/phpunit/api/v4/OAuthClientTest.php | 4 +- civicrm/ext/payflowpro/info.xml | 4 +- civicrm/ext/payflowpro/phpunit.xml.dist | 24 +- civicrm/ext/recaptcha/info.xml | 4 +- .../Civi/Search/ActionMapping.php | 180 + civicrm/ext/scheduled_communications/info.xml | 34 + .../scheduled_communications.civix.php | 200 + .../scheduled_communications.php | 47 + .../ext/search_kit/CRM/Search/Upgrader.php | 5 +- .../SearchDisplay/AbstractRunAction.php | 117 +- .../Api4/Action/SearchDisplay/GetDefault.php | 77 +- .../Civi/Api4/Action/SearchDisplay/Run.php | 1 + .../Subscriber/DefaultDisplaySubscriber.php | 30 +- civicrm/ext/search_kit/Civi/Search/Admin.php | 78 +- .../crmSearchAdmin.component.js | 23 +- ...earchAdminDisplayAutocomplete.component.js | 5 +- .../searchListing/communications.html | 20 + .../crmSearchAdminSearchListing.component.js | 37 +- .../ang/crmSearchDisplay/colType/field.html | 6 +- .../crmSearchDisplayEditable.component.js | 60 +- .../traits/searchDisplayBaseTrait.service.js | 3 + civicrm/ext/search_kit/css/crmSearchTasks.css | 4 - civicrm/ext/search_kit/info.xml | 4 +- civicrm/ext/search_kit/phpunit.xml.dist | 24 +- .../SearchDisplay/AbstractRunActionTest.php | 239 + .../api/v4/SearchDisplay/SearchRunTest.php | 132 +- .../SearchRunWithCustomFieldTest.php | 5 +- civicrm/ext/sequentialcreditnotes/info.xml | 4 +- .../sequentialcreditnotes/phpunit.xml.dist | 24 +- .../CRM/Standaloneusers/Page/Login.php | 2 +- .../Civi/Standalone/Security.php | 2 +- .../afsearchAdministerUserAccounts.aff.json | 4 +- .../ang/afsearchUserRoles.aff.json | 2 +- civicrm/ext/standaloneusers/info.xml | 4 +- civicrm/ext/standaloneusers/phpunit.xml.dist | 24 +- civicrm/js/crm.ajax.js | 2 +- civicrm/js/crm.menubar.js | 20 +- .../Smarty/plugins/modifier.escape.php | 5 + .../packages/html2text/rcube_html2text.php | 708 -- civicrm/packages/kcfinder/conf/config.php | 2 +- .../packages/kcfinder/lib/class_fastImage.php | 1 + civicrm/release-notes.md | 23 +- civicrm/release-notes/5.65.1.md | 42 - civicrm/release-notes/5.65.2.md | 42 - civicrm/release-notes/5.66.0.md | 1001 ++ civicrm/settings/Core.setting.php | 2 +- civicrm/settings/Search.setting.php | 16 +- .../CheckDbWellFormed.civi-setup.php | 7 +- civicrm/setup/res/index.php.txt | 55 +- civicrm/setup/src/Setup.php | 2 +- civicrm/sql/civicrm.mysql | 19 +- civicrm/sql/civicrm_data.mysql | 513 +- .../activity_type.sqldata.php | 8 + civicrm/sql/civicrm_generated.mysql | 10431 ++++++++-------- civicrm/sql/civicrm_navigation.mysql | 4 +- civicrm/templates/CRM/Admin/Form/Job.tpl | 2 +- .../templates/CRM/Admin/Form/MailSettings.hlp | 16 +- .../templates/CRM/Admin/Form/MailSettings.tpl | 18 +- .../CRM/Admin/Form/ScheduleReminders.tpl | 579 +- .../CRM/Admin/Form/Setting/SettingField.tpl | 2 +- .../templates/CRM/Admin/Page/APIExplorer.js | 34 +- .../templates/CRM/Admin/Page/APIExplorer.tpl | 30 +- civicrm/templates/CRM/Admin/Page/Access.tpl | 57 +- .../templates/CRM/Admin/Page/ContactType.tpl | 2 +- .../templates/CRM/Admin/Page/MailSettings.tpl | 5 +- .../templates/CRM/Admin/Page/Reminders.tpl | 2 +- .../CRM/Admin/Page/ScheduleReminders.tpl | 24 +- civicrm/templates/CRM/Batch/Form/Search.tpl | 7 +- civicrm/templates/CRM/Case/Form/CaseView.tpl | 2 +- .../templates/CRM/Case/Form/DeleteClient.tpl | 18 + civicrm/templates/CRM/Contact/Form/Domain.tpl | 15 +- .../CRM/Contact/Form/Edit/Address.tpl | 2 +- .../templates/CRM/Contact/Form/Edit/Email.tpl | 1 + .../templates/CRM/Contact/Form/Edit/Phone.tpl | 1 + .../CRM/Contact/Form/Search/Intro.tpl | 2 +- .../templates/CRM/Contact/Form/Task/SMS.tpl | 2 +- .../CRM/Contact/Form/Task/SaveSearch.tpl | 3 + .../CRM/Contact/Page/Inline/Address.tpl | 2 +- .../Form/Contribution/AuthorizeNetARB.tpl | 2 +- .../Contribute/Form/Contribution/Confirm.tpl | 87 +- .../CRM/Contribute/Form/Contribution/Main.tpl | 1 - .../Contribute/Form/Contribution/ThankYou.tpl | 50 +- .../Contribute/Form/SearchContribution.tpl | 7 +- .../CRM/Event/Form/ManageEvent/EventInfo.tpl | 3 +- .../CRM/Event/Form/ParticipantView.tpl | 39 +- .../Registration/AdditionalParticipant.tpl | 2 - .../CRM/Event/Form/Registration/Confirm.tpl | 2 - .../CRM/Event/Form/Registration/Register.tpl | 2 - .../CRM/Event/Form/Registration/ThankYou.tpl | 4 +- .../templates/CRM/Event/Form/SearchEvent.tpl | 3 - civicrm/templates/CRM/Group/Form/Search.tpl | 20 +- .../CRM/Mailing/Form/Unsubscribe.tpl | 5 +- civicrm/templates/CRM/Price/Form/LineItem.tpl | 2 +- civicrm/templates/CRM/Price/Page/LineItem.tpl | 2 +- .../CRM/Report/Form/Layout/Table.tpl | 5 +- civicrm/templates/CRM/common/paymentBlock.tpl | 16 +- civicrm/templates/CRM/common/standalone.tpl | 6 + civicrm/vendor/autoload.php | 2 +- civicrm/vendor/composer/autoload_real.php | 14 +- civicrm/vendor/composer/autoload_static.php | 12 +- civicrm/vendor/composer/installed.json | 14 +- civicrm/vendor/composer/installed.php | 18 +- .../vendor/totten/ca-config/phpunit.xml.dist | 1 - .../totten/ca-config/src/CA/Config/Curl.php | 6 + .../totten/ca-config/src/CA/Config/Stream.php | 6 + .../totten/ca-config/src/CA/Config/cacert.pem | 237 +- civicrm/xml/schema/ACL/ACL.xml | 2 +- civicrm/xml/schema/Activity/Activity.xml | 2 +- civicrm/xml/schema/Campaign/CampaignGroup.xml | 2 +- civicrm/xml/schema/Campaign/Survey.xml | 8 +- civicrm/xml/schema/Case/Case.xml | 1 + civicrm/xml/schema/Contact/Contact.xml | 1 + civicrm/xml/schema/Contact/Group.xml | 4 +- .../xml/schema/Contribute/Contribution.xml | 4 +- .../schema/Contribute/ContributionPage.xml | 7 +- .../schema/Contribute/ContributionRecur.xml | 2 +- civicrm/xml/schema/Core/ActionSchedule.xml | 115 +- civicrm/xml/schema/Core/Address.xml | 6 + civicrm/xml/schema/Core/CustomGroup.xml | 2 + civicrm/xml/schema/Core/Discount.xml | 5 + civicrm/xml/schema/Core/EntityTag.xml | 1 + civicrm/xml/schema/Core/MailSettings.xml | 84 + civicrm/xml/schema/Core/UserJob.xml | 1 + civicrm/xml/schema/Event/Event.xml | 2 +- civicrm/xml/schema/Event/Participant.xml | 2 +- civicrm/xml/schema/Mailing/Mailing.xml | 2 +- civicrm/xml/schema/Member/Membership.xml | 2 +- civicrm/xml/schema/Pledge/Pledge.xml | 3 +- civicrm/xml/schema/Price/LineItem.xml | 2 + civicrm/xml/templates/civicrm_data.tpl | 88 +- civicrm/xml/templates/civicrm_navigation.tpl | 4 +- .../contribution_offline_receipt_html.tpl | 7 +- .../contribution_offline_receipt_text.tpl | 7 +- .../contribution_online_receipt_html.tpl | 8 +- .../contribution_online_receipt_text.tpl | 8 +- .../event_offline_receipt_html.tpl | 91 +- .../event_offline_receipt_text.tpl | 72 +- .../event_online_receipt_html.tpl | 28 +- .../event_online_receipt_text.tpl | 6 +- .../membership_online_receipt_html.tpl | 2 - .../membership_online_receipt_text.tpl | 4 - civicrm/xml/version.xml | 2 +- includes/civicrm.basepage.php | 239 +- includes/civicrm.compat.php | 145 +- includes/compatibility/civicrm.misc.php | 130 + includes/compatibility/civicrm.polylang.php | 285 + includes/compatibility/civicrm.wpml.php | 103 + 931 files changed, 16966 insertions(+), 48681 deletions(-) create mode 100644 civicrm/CRM/Case/Form/DeleteClient.php create mode 100644 civicrm/CRM/Core/Smarty/plugins/block.url.php create mode 100644 civicrm/CRM/Core/Smarty/plugins/function.crmSqlData.php delete mode 100644 civicrm/CRM/Mailing/Page/Preview.php create mode 100644 civicrm/CRM/Upgrade/Incremental/php/FiveSixtySix.php create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.66.alpha1.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.66.beta1.mysql.tpl create mode 100644 civicrm/CRM/Utils/Mail/IncomingMail.php create mode 100644 civicrm/Civi/API/EntityLookupTrait.php create mode 100644 civicrm/Civi/ActionSchedule/Mapping.php rename civicrm/{templates/CRM/common/TrackingFields.tpl => Civi/Api4/Discount.php} (61%) create mode 100644 civicrm/Civi/Api4/Service/Autocomplete/EventAutocompleteProvider.php rename civicrm/Civi/Api4/Service/Autocomplete/{ParticipantAutocompleteProvider.php => OptionValueAutocompleteProvider.php} (67%) delete mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/ACLEntityRoleCreationSpecProvider.php delete mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php create mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleSpecProvider.php delete mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupSpecProvider.php delete mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/UserJobSpecProvider.php create mode 100644 civicrm/Civi/Core/Url.php delete mode 100644 civicrm/Civi/Test/Api3DocTrait.php create mode 100644 civicrm/Civi/Test/FormTrait.php create mode 100644 civicrm/Civi/Test/FormWrapper.php create mode 100644 civicrm/Civi/Test/FormWrappers/EventFormOnline.php create mode 100644 civicrm/Civi/Test/FormWrappers/EventFormParticipant.php delete mode 100644 civicrm/api/v3/examples/Activity/ContactRefCustomField.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/ContactRefCustomFieldGet.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/DateTimeHigh.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/DateTimeLow.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/GetFields.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/GetTargetAndAssignee.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/GetTargetandAssigneeName.ex.php delete mode 100644 civicrm/api/v3/examples/Activity/ReturnAssigneeContact.ex.php delete mode 100644 civicrm/api/v3/examples/ActivityContact/Create.ex.php delete mode 100644 civicrm/api/v3/examples/ActivityContact/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/ActivityType/Create.ex.php delete mode 100644 civicrm/api/v3/examples/ActivityType/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Address/AddressLike.ex.php delete mode 100644 civicrm/api/v3/examples/Address/AddressParse.ex.php delete mode 100644 civicrm/api/v3/examples/Address/AddressSort.ex.php delete mode 100644 civicrm/api/v3/examples/Address/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Address/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Address/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Address/GetOptions.ex.php delete mode 100644 civicrm/api/v3/examples/Batch/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Batch/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Batch/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Batch/Update.ex.php delete mode 100644 civicrm/api/v3/examples/Campaign/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Campaign/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Campaign/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Case/Create.ex.php delete mode 100644 civicrm/api/v3/examples/CaseContact/Create.ex.php delete mode 100644 civicrm/api/v3/examples/CaseContact/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Constant/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/APIChainedArray.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/APIChainedArrayFormats.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/APIChainedArrayMultipleCustom.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/APIChainedArrayValuesFromSiblingFunction.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/ChainTwoWebsites.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/ChainTwoWebsitesSyntax2.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/ContactIDOfLoggedInUserContactAPI.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/CreateParticipantPayment.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/CustomFieldGet.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/CustomFieldGetReturnSyntaxVariation.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/FormatIsSuccess_Fail.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/FormatIsSuccess_True.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/FormatOnlyID.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/FormatSingleValue.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetActions.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetCountContact.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetFieldsOptions.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetMergedfrom.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetMergedto.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetOptions.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetSingleContact.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GetUnique.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/GroupFilterUsingContactAPI.ex.php delete mode 100644 civicrm/api/v3/examples/Contact/NestedReplaceEmail.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/ContributionCreateWithHonoreeContact.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/ContributionCreateWithNote.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCredit.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCreditDefaults.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/CreateWithNestedLineItems.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Contribution/GetUnique.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionPage/Create.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionPage/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionPage/Get.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionPage/Submit.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionRecur/Create.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionRecur/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionRecur/Get.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionSoft/Create.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionSoft/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/ContributionSoft/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Country/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Country/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Country/Get.ex.php delete mode 100644 civicrm/api/v3/examples/CustomField/Create.ex.php delete mode 100644 civicrm/api/v3/examples/CustomField/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/CustomGroup/Create.ex.php delete mode 100644 civicrm/api/v3/examples/CustomGroup/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/CustomGroup/Get.ex.php delete mode 100644 civicrm/api/v3/examples/CustomValue/Create.ex.php delete mode 100644 civicrm/api/v3/examples/CustomValue/FormatFieldName.ex.php delete mode 100644 civicrm/api/v3/examples/CustomValue/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Domain/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Domain/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Email/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Email/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Email/Replace.ex.php delete mode 100644 civicrm/api/v3/examples/EntityBatch/Create.ex.php delete mode 100644 civicrm/api/v3/examples/EntityBatch/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/EntityBatch/Get.ex.php delete mode 100644 civicrm/api/v3/examples/EntityTag/Create.ex.php delete mode 100644 civicrm/api/v3/examples/EntityTag/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/EntityTag/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Event/ContactRefCustomField.ex.php delete mode 100644 civicrm/api/v3/examples/Event/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Event/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Event/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Event/IsCurrentOption.ex.php delete mode 100644 civicrm/api/v3/examples/Event/IsFullOption.ex.php delete mode 100644 civicrm/api/v3/examples/Grant/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Grant/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Grant/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Group/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Group/GetFields.ex.php delete mode 100644 civicrm/api/v3/examples/GroupContact/Create.ex.php delete mode 100644 civicrm/api/v3/examples/GroupContact/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/GroupContact/Get.ex.php delete mode 100644 civicrm/api/v3/examples/GroupContact/GetWithGroupID.ex.php delete mode 100644 civicrm/api/v3/examples/GroupNesting/Create.ex.php delete mode 100644 civicrm/api/v3/examples/GroupNesting/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/GroupNesting/Get.ex.php delete mode 100644 civicrm/api/v3/examples/GroupOrganization/Create.ex.php delete mode 100644 civicrm/api/v3/examples/GroupOrganization/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/GroupOrganization/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Im/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Im/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Im/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Job/Clone.ex.php delete mode 100644 civicrm/api/v3/examples/Job/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Job/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/LineItem/Create.ex.php delete mode 100644 civicrm/api/v3/examples/LineItem/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/LineItem/Get.ex.php delete mode 100644 civicrm/api/v3/examples/LocBlock/Create.ex.php delete mode 100644 civicrm/api/v3/examples/LocBlock/CreateEntities.ex.php delete mode 100644 civicrm/api/v3/examples/LocBlock/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Logging/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Logging/Revert.ex.php delete mode 100644 civicrm/api/v3/examples/MailSettings/ChainedGetDelete.ex.php delete mode 100644 civicrm/api/v3/examples/MailSettings/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MailSettings/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/MailSettings/Get.ex.php delete mode 100644 civicrm/api/v3/examples/MailSettings/GetOptions.ex.php delete mode 100644 civicrm/api/v3/examples/Mailing/Clone.ex.php delete mode 100644 civicrm/api/v3/examples/Mailing/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Mailing/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Mailing/GetTokens.ex.php delete mode 100644 civicrm/api/v3/examples/Mailing/Submit.ex.php delete mode 100644 civicrm/api/v3/examples/MailingAB/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MailingEventSubscribe/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MailingGroup/Subscribe.ex.php delete mode 100644 civicrm/api/v3/examples/Mapping/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Mapping/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Mapping/Get.ex.php delete mode 100644 civicrm/api/v3/examples/MappingField/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MappingField/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/MappingField/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Membership/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Membership/CreateWithCustomData.ex.php delete mode 100644 civicrm/api/v3/examples/Membership/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Membership/FilterIsCurrent.ex.php delete mode 100644 civicrm/api/v3/examples/Membership/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Membership/SearchWithCustomData.ex.php delete mode 100644 civicrm/api/v3/examples/Membership/UpdateCustomData.ex.php delete mode 100644 civicrm/api/v3/examples/MembershipPayment/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MembershipPayment/Get.ex.php delete mode 100644 civicrm/api/v3/examples/MembershipStatus/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MembershipStatus/Get.ex.php delete mode 100644 civicrm/api/v3/examples/MembershipType/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MembershipType/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/MembershipType/Get.ex.php delete mode 100644 civicrm/api/v3/examples/MessageTemplate/Create.ex.php delete mode 100644 civicrm/api/v3/examples/MessageTemplate/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/MessageTemplate/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Note/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Note/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Note/Get.ex.php delete mode 100644 civicrm/api/v3/examples/OpenID/Create.ex.php delete mode 100644 civicrm/api/v3/examples/OpenID/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/OpenID/Get.ex.php delete mode 100644 civicrm/api/v3/examples/OptionGroup/Create.ex.php delete mode 100644 civicrm/api/v3/examples/OptionGroup/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/OptionGroup/Get.ex.php delete mode 100644 civicrm/api/v3/examples/OptionValue/Get.ex.php delete mode 100644 civicrm/api/v3/examples/OptionValue/SortOption.ex.php delete mode 100644 civicrm/api/v3/examples/Order/Cancel.ex.php delete mode 100644 civicrm/api/v3/examples/Order/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Order/CreateOrderParticipant.ex.php delete mode 100644 civicrm/api/v3/examples/Order/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Order/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Participant/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Participant/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Participant/NestedDelete.ex.php delete mode 100644 civicrm/api/v3/examples/Participant/NestedEventGet.ex.php delete mode 100644 civicrm/api/v3/examples/ParticipantPayment/Create.ex.php delete mode 100644 civicrm/api/v3/examples/ParticipantPayment/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/ParticipantPayment/Get.ex.php delete mode 100644 civicrm/api/v3/examples/ParticipantStatusType/Create.ex.php delete mode 100644 civicrm/api/v3/examples/ParticipantStatusType/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/ParticipantStatusType/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Payment/Cancel.ex.php delete mode 100644 civicrm/api/v3/examples/Payment/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Payment/CreatePaymentWithLineItems.ex.php delete mode 100644 civicrm/api/v3/examples/Payment/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Payment/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Payment/UpdatePayment.ex.php delete mode 100644 civicrm/api/v3/examples/PaymentProcessor/Create.ex.php delete mode 100644 civicrm/api/v3/examples/PaymentProcessor/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/PaymentProcessorType/Create.ex.php delete mode 100644 civicrm/api/v3/examples/PaymentProcessorType/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/PaymentToken/Create.ex.php delete mode 100644 civicrm/api/v3/examples/PaymentToken/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/PaymentToken/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Pcp/ChainedGetDelete.ex.php delete mode 100644 civicrm/api/v3/examples/Pcp/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Pcp/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Pcp/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Phone/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Phone/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Phone/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Phone/GetOptions.ex.php delete mode 100644 civicrm/api/v3/examples/Pledge/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Pledge/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Pledge/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Pledge/GetFilterHighDate.ex.php delete mode 100644 civicrm/api/v3/examples/PledgePayment/Create.ex.php delete mode 100644 civicrm/api/v3/examples/PledgePayment/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/PledgePayment/Get.ex.php delete mode 100644 civicrm/api/v3/examples/PledgePayment/Update.ex.php delete mode 100644 civicrm/api/v3/examples/PriceField/Create.ex.php delete mode 100644 civicrm/api/v3/examples/PriceField/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/PriceField/Get.ex.php delete mode 100644 civicrm/api/v3/examples/PriceFieldValue/Create.ex.php delete mode 100644 civicrm/api/v3/examples/PriceFieldValue/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/PriceFieldValue/Get.ex.php delete mode 100644 civicrm/api/v3/examples/PriceSet/Create.ex.php delete mode 100644 civicrm/api/v3/examples/PriceSet/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/PriceSet/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Profile/Apply.ex.php delete mode 100644 civicrm/api/v3/examples/Profile/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Profile/GetFields.ex.php delete mode 100644 civicrm/api/v3/examples/Profile/Submit.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/BetweenRelationshipType.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/INRelationshipType.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/NotBetweenRelationshipType.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/NotInRelationshipType.ex.php delete mode 100644 civicrm/api/v3/examples/Relationship/filterIsCurrent.ex.php delete mode 100644 civicrm/api/v3/examples/RelationshipType/Create.ex.php delete mode 100644 civicrm/api/v3/examples/RelationshipType/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/ReportTemplate/Getrows.ex.php delete mode 100644 civicrm/api/v3/examples/ReportTemplate/Getstatistics.ex.php delete mode 100644 civicrm/api/v3/examples/SavedSearch/Create.ex.php delete mode 100644 civicrm/api/v3/examples/SavedSearch/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/SavedSearch/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/CreateAllDomains.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/CreateSettingCurrentDomain.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/CreateSpecifiedDomains.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/GetAllDomains.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/GetDefaults.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/GetFields.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/GetSettingCurrentDomain.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/GetSpecifiedDomains.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/GetValue.ex.php delete mode 100644 civicrm/api/v3/examples/Setting/Revert.ex.php delete mode 100644 civicrm/api/v3/examples/StateProvince/Create.ex.php delete mode 100644 civicrm/api/v3/examples/StateProvince/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/StateProvince/Get.ex.php delete mode 100644 civicrm/api/v3/examples/StatusPreference/Create.ex.php delete mode 100644 civicrm/api/v3/examples/StatusPreference/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/StatusPreference/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Survey/ChainedGetDelete.ex.php delete mode 100644 civicrm/api/v3/examples/Survey/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Survey/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Survey/Get.ex.php delete mode 100644 civicrm/api/v3/examples/SurveyRespondant/Get.ex.php delete mode 100644 civicrm/api/v3/examples/System/Flush.ex.php delete mode 100644 civicrm/api/v3/examples/Tag/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Tag/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Tag/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Tag/GetFields.ex.php delete mode 100644 civicrm/api/v3/examples/Tag/GetList.ex.php delete mode 100644 civicrm/api/v3/examples/Tag/GetReturnArray.ex.php delete mode 100644 civicrm/api/v3/examples/TaxContributionPage/Create.ex.php delete mode 100644 civicrm/api/v3/examples/TaxContributionPage/CreateWithNestedLineItems.ex.php delete mode 100644 civicrm/api/v3/examples/TaxContributionPage/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/UFField/Create.ex.php delete mode 100644 civicrm/api/v3/examples/UFField/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/UFField/Get.ex.php delete mode 100644 civicrm/api/v3/examples/UFField/Replace.ex.php delete mode 100644 civicrm/api/v3/examples/UFGroup/Create.ex.php delete mode 100644 civicrm/api/v3/examples/UFGroup/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/UFGroup/Get.ex.php delete mode 100644 civicrm/api/v3/examples/UFJoin/Create.ex.php delete mode 100644 civicrm/api/v3/examples/UFJoin/Get.ex.php delete mode 100644 civicrm/api/v3/examples/UFMatch/Get.ex.php delete mode 100644 civicrm/api/v3/examples/User/Get.ex.php delete mode 100644 civicrm/api/v3/examples/User/GetFields.ex.php delete mode 100644 civicrm/api/v3/examples/Website/Create.ex.php delete mode 100644 civicrm/api/v3/examples/Website/Delete.ex.php delete mode 100644 civicrm/api/v3/examples/Website/Get.ex.php delete mode 100644 civicrm/api/v3/examples/Website/GetFields.ex.php delete mode 100644 civicrm/api/v3/examples/Website/GetWithMetadata.ex.php create mode 100644 civicrm/ext/afform/admin/afformEntities/Note.php create mode 100644 civicrm/ext/afform/core/ang/afblockContactNote.aff.html create mode 100644 civicrm/ext/afform/core/ang/afblockContactNote.aff.json create mode 100644 civicrm/ext/afform/core/managed/AfformSubmissionStatus.mgd.php create mode 100644 civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php create mode 100644 civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php delete mode 100644 civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php rename civicrm/ext/civigrant/ang/{afsearchGrants.aff.html => afsearchTabGrant.aff.html} (100%) rename civicrm/ext/civigrant/ang/{afsearchGrants.aff.json => afsearchTabGrant.aff.json} (100%) create mode 100644 civicrm/ext/scheduled_communications/Civi/Search/ActionMapping.php create mode 100644 civicrm/ext/scheduled_communications/info.xml create mode 100644 civicrm/ext/scheduled_communications/scheduled_communications.civix.php create mode 100644 civicrm/ext/scheduled_communications/scheduled_communications.php create mode 100644 civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/communications.html delete mode 100644 civicrm/packages/html2text/rcube_html2text.php delete mode 100644 civicrm/release-notes/5.65.1.md delete mode 100644 civicrm/release-notes/5.65.2.md create mode 100644 civicrm/release-notes/5.66.0.md create mode 100644 civicrm/templates/CRM/Case/Form/DeleteClient.tpl create mode 100644 includes/compatibility/civicrm.misc.php create mode 100644 includes/compatibility/civicrm.polylang.php create mode 100644 includes/compatibility/civicrm.wpml.php diff --git a/civicrm.php b/civicrm.php index 49570b3c20..67ac8a2bce 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,7 +2,7 @@ /** * Plugin Name: CiviCRM * Description: CiviCRM - Growing and Sustaining Relationships - * Version: 5.65.2 + * Version: 5.66.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.65.2'); +define('CIVICRM_PLUGIN_VERSION', '5.66.0'); // Store reference to this file. if (!defined('CIVICRM_PLUGIN_FILE')) { @@ -1423,11 +1423,11 @@ class CiviCRM_For_WordPress { * * @since 4.6 * - * @return array $argdata Array containing request arguments and request string. + * @return array{args: array, argString: string} */ public function get_request_args() { - $argString = NULL; + $argString = ''; $args = []; // Get path from query vars. diff --git a/civicrm/CRM/ACL/BAO/ACL.php b/civicrm/CRM/ACL/BAO/ACL.php index ab6495a157..dd39cce679 100644 --- a/civicrm/CRM/ACL/BAO/ACL.php +++ b/civicrm/CRM/ACL/BAO/ACL.php @@ -222,31 +222,13 @@ SELECT count( a.id ) * @return null|string */ public static function whereClause($type, &$tables, &$whereTables, $contactID = NULL) { - $acls = CRM_ACL_BAO_Cache::build($contactID); $whereClause = NULL; $allInclude = $allExclude = FALSE; $clauses = []; - if (!empty($acls)) { - $aclKeys = array_keys($acls); - $aclKeys = implode(',', $aclKeys); - $orderBy = 'a.object_id'; - if (array_key_exists('priority', CRM_ACL_BAO_ACL::getSupportedFields())) { - $orderBy .= ',a.priority'; - } - $query = " -SELECT a.operation, a.object_id,a.deny - FROM civicrm_acl_cache c, civicrm_acl a - WHERE c.acl_id = a.id - AND a.is_active = 1 - AND a.object_table = 'civicrm_group' - AND a.id IN ( $aclKeys ) -ORDER BY {$orderBy} -"; - - $dao = CRM_Core_DAO::executeQuery($query); - + $dao = self::getOrderedActiveACLs($contactID, 'civicrm_group'); + if ($dao !== NULL) { // do an or of all the where clauses u see $ids = $excludeIds = []; while ($dao->fetch()) { @@ -277,9 +259,12 @@ ORDER BY {$orderBy} $ids = []; $clauses[] = self::getGroupClause($excludeIds, 'NOT IN'); } - if (!empty($ids)) { + if (!empty($ids) && !$allInclude) { $clauses[] = self::getGroupClause($ids, 'IN'); } + elseif ($allInclude && empty($excludeIds)) { + $clauses[] = ' ( 1 ) '; + } } if (!empty($clauses)) { @@ -451,54 +436,73 @@ ORDER BY {$orderBy} */ protected static function loadPermittedIDs(int $contactID, string $tableName, int $type, $allGroups): array { $ids = []; - $acls = CRM_ACL_BAO_Cache::build($contactID); - $aclKeys = array_keys($acls); - $aclKeys = implode(',', $aclKeys); - $orderBy = 'a.object_id'; - if (array_key_exists('priority', CRM_ACL_BAO_ACL::getSupportedFields())) { - $orderBy .= ',a.priority'; - } - $query = " -SELECT a.operation,a.object_id,a.deny - FROM civicrm_acl_cache c, civicrm_acl a - WHERE c.acl_id = a.id - AND a.is_active = 1 - AND a.object_table = %1 - AND a.id IN ( $aclKeys ) -ORDER BY {$orderBy} -"; - $params = [1 => [$tableName, 'String']]; - $dao = CRM_Core_DAO::executeQuery($query, $params); - while ($dao->fetch()) { - if ($dao->object_id) { - if (self::matchType($type, $dao->operation)) { - if (!$dao->deny) { - $ids[] = $dao->object_id; - } - else { - $ids = array_diff($ids, [$dao->object_id]); + $dao = self::getOrderedActiveACLs($contactID, $tableName); + if ($dao !== NULL) { + while ($dao->fetch()) { + if ($dao->object_id) { + if (self::matchType($type, $dao->operation)) { + if (!$dao->deny) { + $ids[] = $dao->object_id; + } + else { + $ids = array_diff($ids, [$dao->object_id]); + } } } - } - else { - // this user has got the permission for all objects of this type - // check if the type matches - if (self::matchType($type, $dao->operation)) { - if (!$dao->deny) { - foreach ($allGroups as $id => $dontCare) { - $ids[] = $id; + else { + // this user has got the permission for all objects of this type + // check if the type matches + if (self::matchType($type, $dao->operation)) { + if (!$dao->deny) { + foreach ($allGroups as $id => $dontCare) { + $ids[] = $id; + } + } + else { + $ids = array_diff($ids, array_keys($allGroups)); } - } - else { - $ids = array_diff($ids, array_keys($allGroups)); } } - break; } } return $ids; } + /** + * Execute a query to find active ACLs for a contact, ordered by priority (if supported) and object ID. + * The query returns the 'operation', 'object_id' and 'deny' properties. + * Returns NULL if CRM_ACL_BAO_Cache::build (effectively, CRM_ACL_BAO_ACL::getAllByContact) + * returns no ACLs (active or not) for the contact. + * + * @param string $contactID + * @param string $tableName + * @return NULL|CRM_Core_DAO|object + */ + private static function getOrderedActiveACLs(string $contactID, string $tableName) { + $dao = NULL; + $acls = CRM_ACL_BAO_Cache::build($contactID); + if (!empty($acls)) { + $aclKeys = array_keys($acls); + $aclKeys = implode(',', $aclKeys); + $orderBy = 'a.object_id'; + if (array_key_exists('priority', CRM_ACL_BAO_ACL::getSupportedFields())) { + $orderBy = "a.priority, $orderBy"; + } + $query = " +SELECT a.operation, a.object_id, a.deny + FROM civicrm_acl_cache c, civicrm_acl a + WHERE c.acl_id = a.id + AND a.is_active = 1 + AND a.object_table = %1 + AND a.id IN ({$aclKeys}) +ORDER BY {$orderBy} +"; + $params = [1 => [$tableName, 'String']]; + $dao = CRM_Core_DAO::executeQuery($query, $params); + } + return $dao; + } + private static function getGroupClause(array $groupIDs, string $operation): string { $ids = implode(',', $groupIDs); $query = " diff --git a/civicrm/CRM/ACL/DAO/ACL.php b/civicrm/CRM/ACL/DAO/ACL.php index 388d638e1d..0a9b48d468 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:cccf24b98d7147b2f5e237fcb0a54295) + * (GenCodeChecksum:56266204b43a487af7bf9963d23e0556) */ /** @@ -378,7 +378,7 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { ], 'pseudoconstant' => [ 'callback' => 'CRM_ACL_BAO_ACL::getObjectIdOptions', - 'prefetch' => 'false', + 'prefetch' => 'disabled', ], 'add' => '1.6', ], diff --git a/civicrm/CRM/ACL/Form/ACL.php b/civicrm/CRM/ACL/Form/ACL.php index 2c5264794d..b4f52a7c74 100644 --- a/civicrm/CRM/ACL/Form/ACL.php +++ b/civicrm/CRM/ACL/Form/ACL.php @@ -151,7 +151,7 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { $event = [ '-1' => ts('- select event -'), '0' => ts('All Events'), - ] + CRM_Event_PseudoConstant::event(NULL, FALSE, "( is_template IS NULL OR is_template != 1 )"); + ] + CRM_Event_PseudoConstant::event(NULL, FALSE, "is_template = 0"); $this->add('select', 'group_id', ts('Group'), $group); $this->add('select', 'custom_group_id', ts('Custom Data'), $customGroup); diff --git a/civicrm/CRM/ACL/Page/ACL.php b/civicrm/CRM/ACL/Page/ACL.php index da80cd79df..4f14e44616 100644 --- a/civicrm/CRM/ACL/Page/ACL.php +++ b/civicrm/CRM/ACL/Page/ACL.php @@ -115,6 +115,9 @@ class CRM_ACL_Page_ACL extends CRM_Core_Page_Basic { $acl[$dao->id]['object'] = $event[$acl[$dao->id]['object_id']] ?? NULL; $acl[$dao->id]['object_name'] = ts('Event'); break; + + default: + $acl[$dao->id]['object'] = $acl[$dao->id]['object_name'] = NULL; } // form all action links diff --git a/civicrm/CRM/Activity/ActionMapping.php b/civicrm/CRM/Activity/ActionMapping.php index 5d2f337d72..3f472bbc89 100644 --- a/civicrm/CRM/Activity/ActionMapping.php +++ b/civicrm/CRM/Activity/ActionMapping.php @@ -32,12 +32,21 @@ class CRM_Activity_ActionMapping extends \Civi\ActionSchedule\MappingBase { return self::ACTIVITY_MAPPING_ID; } + public function getName(): string { + return 'activity_type'; + } + public function getEntityName(): string { return 'Activity'; } - public function getValueHeader(): string { - return ts('Activity Type'); + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + $spec->getFieldByName('entity_value') + ->setLabel(ts('Activity Type')); + $spec->getFieldByName('entity_status') + ->setLabel(ts('Activity Status')); + $spec->getFieldByName('recipient') + ->setLabel(ts('Recipients')); } public function getValueLabels(): array { @@ -47,20 +56,26 @@ class CRM_Activity_ActionMapping extends \Civi\ActionSchedule\MappingBase { return $activityTypes; } - public function getStatusHeader(): string { - return ts('Activity Status'); - } - - public function getStatusLabels($value): array { + public function getStatusLabels(?array $entityValue): array { return CRM_Core_PseudoConstant::activityStatus(); } - public function getDateFields(): array { + public function getDateFields(?array $entityValue = NULL): array { return [ 'activity_date_time' => ts('Activity Date'), ]; } + public static function getLimitToOptions(): array { + return [ + [ + 'id' => 1, + 'name' => 'limit', + 'label' => ts('Recipients'), + ], + ]; + } + /** * Get a list of recipient types. * @@ -71,8 +86,8 @@ class CRM_Activity_ActionMapping extends \Civi\ActionSchedule\MappingBase { * array(string $value => string $label). * Ex: array('assignee' => 'Activity Assignee'). */ - public function getRecipientTypes(): array { - return \CRM_Core_OptionGroup::values('activity_contacts'); + public static function getRecipientTypes(): array { + return \CRM_Core_OptionGroup::values('activity_contacts') + parent::getRecipientTypes(); } /** @@ -93,7 +108,7 @@ class CRM_Activity_ActionMapping extends \Civi\ActionSchedule\MappingBase { $selectedValues = (array) \CRM_Utils_Array::explodePadded($schedule->entity_value); $selectedStatuses = (array) \CRM_Utils_Array::explodePadded($schedule->entity_status); - $query = \CRM_Utils_SQL_Select::from("{$this->getEntityTable()} e")->param($defaultParams); + $query = \CRM_Utils_SQL_Select::from("civicrm_activity e")->param($defaultParams); $query['casAddlCheckFrom'] = 'civicrm_activity e'; $query['casContactIdField'] = 'r.contact_id'; $query['casEntityIdField'] = 'e.id'; diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php index 3d7993b5fb..37ece7b6fd 100644 --- a/civicrm/CRM/Activity/BAO/Activity.php +++ b/civicrm/CRM/Activity/BAO/Activity.php @@ -922,7 +922,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity { $details = "-ALTERNATIVE ITEM 0-\n{$html}{$additionalDetails}\n-ALTERNATIVE ITEM 1-\n{$text}{$additionalDetails}\n-ALTERNATIVE END-\n"; } else { - $details = $html ? $html : $text; + $details = $html ?: $text; $details .= $additionalDetails; } @@ -1703,7 +1703,7 @@ WHERE activity.id IN ($activityIds)"; 'parent_id' ); - $parentActivities[$activityId] = $parentId ? $parentId : FALSE; + $parentActivities[$activityId] = $parentId ?: FALSE; } return $parentActivities[$activityId]; diff --git a/civicrm/CRM/Activity/DAO/Activity.php b/civicrm/CRM/Activity/DAO/Activity.php index 544e93db8e..dd50f905e4 100644 --- a/civicrm/CRM/Activity/DAO/Activity.php +++ b/civicrm/CRM/Activity/DAO/Activity.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Activity/Activity.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:5e64c1c4489e9c640f15d3a4877f7331) + * (GenCodeChecksum:ffa034666119a99fd35c5cf8955b8ecc) */ /** @@ -890,7 +890,7 @@ class CRM_Activity_DAO_Activity extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], diff --git a/civicrm/CRM/Activity/Selector/Activity.php b/civicrm/CRM/Activity/Selector/Activity.php index f94cbead18..f8682ae5a7 100644 --- a/civicrm/CRM/Activity/Selector/Activity.php +++ b/civicrm/CRM/Activity/Selector/Activity.php @@ -244,6 +244,7 @@ class CRM_Activity_Selector_Activity extends CRM_Core_Selector_Base implements C 'url' => '#', 'extra' => 'onclick="javascript:fileOnCase( \'file\', \'%%id%%\', null, this ); return false;"', 'title' => ts('File on Case'), + 'weight' => 50, ], ]; } diff --git a/civicrm/CRM/Activity/Tokens.php b/civicrm/CRM/Activity/Tokens.php index 79ff0ff0ad..714c26fa0a 100644 --- a/civicrm/CRM/Activity/Tokens.php +++ b/civicrm/CRM/Activity/Tokens.php @@ -37,7 +37,7 @@ class CRM_Activity_Tokens extends CRM_Core_EntityTokens { * @inheritDoc */ public function alterActionScheduleQuery(MailingQueryEvent $e): void { - if ($e->mapping->getEntityTable() !== $this->getExtendableTableName()) { + if ($e->mapping->getEntityTable($e->actionSchedule) !== $this->getExtendableTableName()) { return; } diff --git a/civicrm/CRM/Admin/Form.php b/civicrm/CRM/Admin/Form.php index 1b85dbb986..873aa2961a 100644 --- a/civicrm/CRM/Admin/Form.php +++ b/civicrm/CRM/Admin/Form.php @@ -41,6 +41,12 @@ class CRM_Admin_Form extends CRM_Core_Form { */ protected $_BAOName; + /** + * Whether to use the legacy `retrieve` method or APIv4 to load values. + * @var string + */ + protected $retrieveMethod = 'retrieve'; + /** * Explicitly declare the form context. */ @@ -139,18 +145,25 @@ class CRM_Admin_Form extends CRM_Core_Form { } /** - * Retrieve entity from the database. - * - * TODO: Add flag to allow forms to opt-in to using API::get instead of BAO::retrieve + * Retrieve entity from the database using legacy retrieve method (default) or APIv4. * * @return array */ protected function retrieveValues(): array { $this->_values = []; if (isset($this->_id) && CRM_Utils_Rule::positiveInteger($this->_id)) { - $params = ['id' => $this->_id]; - // FIXME: `retrieve` function is deprecated :( - $this->_BAOName::retrieve($params, $this->_values); + if ($this->retrieveMethod === 'retrieve') { + $params = ['id' => $this->_id]; + $this->_BAOName::retrieve($params, $this->_values); + } + elseif ($this->retrieveMethod === 'api4') { + $this->_values = civicrm_api4($this->getDefaultEntity(), 'get', [ + 'where' => [['id', '=', $this->_id]], + ])->single(); + } + else { + throw new CRM_Core_Exception("Unknown retrieve method '$this->retrieveMethod' in " . get_class($this)); + } } return $this->_values; } diff --git a/civicrm/CRM/Admin/Form/Job.php b/civicrm/CRM/Admin/Form/Job.php index 78583aec7f..7942b1a750 100644 --- a/civicrm/CRM/Admin/Form/Job.php +++ b/civicrm/CRM/Admin/Form/Job.php @@ -19,7 +19,6 @@ * Class for configuring jobs. */ class CRM_Admin_Form_Job extends CRM_Admin_Form { - public $_id = NULL; /** * @var bool @@ -146,23 +145,20 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { * @throws CRM_Core_Exception */ public static function formRule($fields) { - $errors = []; - require_once 'api/api.php'; - - /** @var \Civi\API\Kernel $apiKernel */ - $apiKernel = \Civi::service('civi_api_kernel'); - $apiRequest = \Civi\API\Request::create($fields['api_entity'], $fields['api_action'], ['version' => 3]); try { + $apiParams = CRM_Core_BAO_Job::parseParameters($fields['parameters']); + /** @var \Civi\API\Kernel $apiKernel */ + $apiKernel = \Civi::service('civi_api_kernel'); + $apiRequest = \Civi\API\Request::create($fields['api_entity'], $fields['api_action'], $apiParams); $apiKernel->resolve($apiRequest); } catch (\Civi\API\Exception\NotImplementedException $e) { $errors['api_action'] = ts('Given API command is not defined.'); } - - if (!empty($errors)) { - return $errors; + catch (CRM_Core_Exception $e) { + $errors['parameters'] = ts('Parameters must be formatted as key=value on separate lines'); } return empty($errors) ? TRUE : $errors; @@ -247,7 +243,7 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { $dao->api_entity = $values['api_entity']; $dao->api_action = $values['api_action']; $dao->description = $values['description']; - $dao->is_active = CRM_Utils_Array::value('is_active', $values, 0); + $dao->is_active = $values['is_active'] ?? 0; // CRM-17686 $ts = strtotime($values['scheduled_run_date']); @@ -297,4 +293,13 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { return $name . ' (' . $entity . '.' . $action . ')'; } + /** + * Override parent to do nothing - since we don't use this array. + * + * @return array + */ + protected function retrieveValues(): array { + return []; + } + } diff --git a/civicrm/CRM/Admin/Form/MailSettings.php b/civicrm/CRM/Admin/Form/MailSettings.php index 0ecbb0fe17..acdc5744da 100644 --- a/civicrm/CRM/Admin/Form/MailSettings.php +++ b/civicrm/CRM/Admin/Form/MailSettings.php @@ -85,10 +85,28 @@ class CRM_Admin_Form_MailSettings extends CRM_Admin_Form { 0 => ts('Email-to-Activity Processing'), ]; $this->add('select', 'is_default', ts('Used For?'), $usedfor); + + $activityTypes = + [CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email') => 'Inbound Email'] + + [CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Email') => 'Email'] + + CRM_Core_PseudoConstant::ActivityType(FALSE); + $this->add('select', 'activity_type_id', ts('Activity Type'), + $activityTypes, + TRUE, + ['class' => 'crm-select2 required'] + ); $this->addField('activity_status', ['placeholder' => FALSE]); + CRM_Campaign_BAO_Campaign::addCampaign($this); $this->add('checkbox', 'is_non_case_email_skipped', ts('Skip emails which do not have a Case ID or Case hash')); $this->add('checkbox', 'is_contact_creation_disabled_if_no_match', ts('Do not create new contacts when filing emails')); + + $emailRecipients = ['from' => 'From', 'to' => 'To', 'cc' => 'CC', 'bcc' => 'BCC']; + $this->add('select', 'activity_source', ts('Activity Source'), $emailRecipients, TRUE, ['class' => 'crm-select2 required']); + $this->add('select', 'activity_targets', ts('Activity Targets'), $emailRecipients, FALSE, ['class' => 'crm-select2', 'multiple' => TRUE]); + $this->add('select', 'activity_assignees', ts('Activity Assignees'), $emailRecipients, FALSE, ['class' => 'crm-select2', 'multiple' => TRUE]); + + $this->add('checkbox', 'is_active', ts('Enabled')); } /** @@ -108,12 +126,15 @@ class CRM_Admin_Form_MailSettings extends CRM_Admin_Form { public function setDefaultValues() { $defaults = parent::setDefaultValues(); - // Set activity status to "Completed" by default. - if ($this->_action != CRM_Core_Action::DELETE && - (!$this->_id || !CRM_Core_DAO::getFieldValue('CRM_Core_BAO_MailSettings', $this->_id, 'activity_status')) - ) { - $defaults['activity_status'] = 'Completed'; - } + $defaults['is_ssl'] = $defaults['is_ssl'] ?? TRUE; + $defaults['is_default'] = $defaults['is_default'] ?? 0; + $defaults['activity_type_id'] = $defaults['activity_type_id'] ?? + CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email'); + $defaults['activity_status'] = $defaults['activity_status'] ?? 'Completed'; + $defaults['activity_source'] = $defaults['activity_source'] ?? 'from'; + $defaults['activity_targets'] = $defaults['activity_targets'] ?? 'to,cc,bcc'; + $defaults['activity_assignees'] = $defaults['activity_assignees'] ?? 'from'; + $defaults['is_active'] = $defaults['is_active'] ?? TRUE; return $defaults; } @@ -173,6 +194,12 @@ class CRM_Admin_Form_MailSettings extends CRM_Admin_Form { 'activity_status', 'is_non_case_email_skipped', 'is_contact_creation_disabled_if_no_match', + 'activity_type_id', + 'campaign_id', + 'activity_source', + 'activity_targets', + 'activity_assignees', + 'is_active', ]; $params = []; @@ -182,6 +209,7 @@ class CRM_Admin_Form_MailSettings extends CRM_Admin_Form { 'is_ssl', 'is_non_case_email_skipped', 'is_contact_creation_disabled_if_no_match', + 'is_active', ])) { $params[$f] = CRM_Utils_Array::value($f, $formValues, FALSE); } diff --git a/civicrm/CRM/Admin/Form/PaymentProcessor.php b/civicrm/CRM/Admin/Form/PaymentProcessor.php index 0b32bcfc54..5c9831b470 100644 --- a/civicrm/CRM/Admin/Form/PaymentProcessor.php +++ b/civicrm/CRM/Admin/Form/PaymentProcessor.php @@ -248,10 +248,6 @@ class CRM_Admin_Form_PaymentProcessor extends CRM_Admin_Form { $errors['_qf_default'] = ts('You must have at least the test or live section filled'); } - if (!empty($errors)) { - return $errors; - } - return empty($errors) ? TRUE : $errors; } diff --git a/civicrm/CRM/Admin/Form/RelationshipType.php b/civicrm/CRM/Admin/Form/RelationshipType.php index 391b52304c..ce43206171 100644 --- a/civicrm/CRM/Admin/Form/RelationshipType.php +++ b/civicrm/CRM/Admin/Form/RelationshipType.php @@ -159,8 +159,8 @@ class CRM_Admin_Form_RelationshipType extends CRM_Admin_Form { $params['contact_type_a'] = $cTypeA[0]; $params['contact_type_b'] = $cTypeB[0]; - $params['contact_sub_type_a'] = $cTypeA[1] ? $cTypeA[1] : 'null'; - $params['contact_sub_type_b'] = $cTypeB[1] ? $cTypeB[1] : 'null'; + $params['contact_sub_type_a'] = $cTypeA[1] ?: 'null'; + $params['contact_sub_type_b'] = $cTypeB[1] ?: 'null'; if (!strlen(trim($params['label_b_a'] ?? ''))) { $params['label_b_a'] = $params['label_a_b'] ?? NULL; diff --git a/civicrm/CRM/Admin/Form/ScheduleReminders.php b/civicrm/CRM/Admin/Form/ScheduleReminders.php index 7c242bf8e9..6b76ffa22c 100644 --- a/civicrm/CRM/Admin/Form/ScheduleReminders.php +++ b/civicrm/CRM/Admin/Form/ScheduleReminders.php @@ -18,36 +18,10 @@ use Civi\Token\TokenProcessor; /** - * This class generates form components for Scheduling Reminders. + * ActionSchedule (aka Scheduled Reminder) create/edit/delete form. */ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { - protected $_compId; - - /** - * @var CRM_Core_DAO_ActionSchedule - */ - private $_actionSchedule; - - /** - * @var int|string|null - */ - private $_mappingID; - - /** - * @return mixed - */ - public function getComponentID() { - return $this->_compId; - } - - /** - * @param mixed $compId - */ - public function setComponentID($compId): void { - $this->_compId = $compId; - } - /** * @return string */ @@ -56,236 +30,153 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { } /** - * Build the form object. - * - * @throws \CRM_Core_Exception + * Because `CRM_Mailing_BAO_Mailing::commonCompose` uses different fieldNames than `CRM_Core_DAO_ActionSchedule`. + * @var array */ - public function buildQuickForm(): void { - parent::buildQuickForm(); - $this->_mappingID = $mappingID = NULL; - $providersCount = CRM_SMS_BAO_Provider::activeProviderCount(); - $this->setContext(); - $isEvent = $this->getContext() === 'event'; + private static $messageFieldMap = [ + 'text_message' => 'body_text', + 'html_message' => 'body_html', + 'sms_text_message' => 'sms_body_text', + 'template' => 'msg_template_id', + 'SMStemplate' => 'sms_template_id', + ]; - if ($isEvent) { - $this->setComponentID(CRM_Utils_Request::retrieve('compId', 'Integer', $this)); - if (!CRM_Event_BAO_Event::checkPermission((int) $this->getComponentID(), CRM_Core_Permission::EDIT)) { + /** + * @throws \CRM_Core_Exception + */ + public function preProcess() { + parent::preProcess(); + // Pre-selected mapping_id and entity_value for embedded forms + if (CRM_Utils_Request::retrieve('mapping_id', 'Alphanumeric', $this, FALSE, NULL, 'GET')) { + $this->_values['mapping_id'] = $this->get('mapping_id'); + } + if (CRM_Utils_Request::retrieve('entity_value', 'CommaSeparatedIntegers', $this, FALSE, NULL, 'GET')) { + $this->_values['entity_value'] = explode(',', $this->get('entity_value')); + } + if (!empty($this->_values['mapping_id'])) { + $mapping = CRM_Core_BAO_ActionSchedule::getMapping($this->_values['mapping_id']); + $this->setPageTitle(ts('%1 Reminder', [1 => $mapping->getLabel()])); + } + // Allow pre-selected mapping to check its own permissions + if (!CRM_Core_Permission::check('administer CiviCRM data')) { + if (empty($mapping) || !$mapping->checkAccess($this->_values['entity_value'] ?? [])) { throw new CRM_Core_Exception(ts('You do not have permission to access this page.')); } } - elseif (!CRM_Core_Permission::check('administer CiviCRM')) { - throw new CRM_Core_Exception(ts('You do not have permission to access this page.')); - } + } - if ($this->_action & (CRM_Core_Action::DELETE)) { - $reminderName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_ActionSchedule', $this->_id, 'title'); - $this->assign('reminderName', $reminderName); + public function buildQuickForm(): void { + parent::buildQuickForm(); + + if ($this->getAction() == CRM_Core_Action::DELETE) { + $this->assign('reminderName', $this->_values['title']); return; } - elseif ($this->_action & (CRM_Core_Action::UPDATE)) { - $this->_mappingID = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_ActionSchedule', $this->_id, 'mapping_id'); - } - if ($isEvent) { - $isTemplate = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->getComponentID(), 'is_template'); - $this->_mappingID = $isTemplate ? CRM_Event_ActionMapping::EVENT_TPL_MAPPING_ID : CRM_Event_ActionMapping::EVENT_NAME_MAPPING_ID; - } - if (!empty($_POST) && !empty($_POST['entity']) && empty($this->getContext())) { - $mappingID = $_POST['entity'][0]; - } - elseif ($this->_mappingID) { - $mappingID = $this->_mappingID; - if ($isEvent) { - $this->add('hidden', 'mappingID', $mappingID); + // Select fields whose option lists either control or are controlled by another field + $dynamicSelectFields = [ + 'mapping_id' => [], + 'entity_value' => [], + 'entity_status' => [], + 'recipient' => ['class' => 'twelve', 'placeholder' => ts('None')], + 'limit_to' => ['class' => 'twelve', 'placeholder' => ts('None')], + 'start_action_date' => ['class' => 'twelve'], + 'end_date' => ['class' => 'twelve'], + 'recipient_listing' => [], + ]; + // Load dynamic metadata based on current values + // Get values from submission (if rebuilding due to form errors) or saved reminder (in update mode) or preselected values from the preProcess fn. + $fieldMeta = Civi\Api4\ActionSchedule::getFields(FALSE) + ->setValues($this->_submitValues ?: $this->_values) + ->setAction('create') + ->setLoadOptions(['id', 'label', 'icon']) + ->addWhere('name', 'IN', array_keys($dynamicSelectFields)) + ->execute() + ->indexBy('name'); + $controlFields = []; + + // Add dynamic select fields + foreach ($fieldMeta as $field) { + $attr = $dynamicSelectFields[$field['name']] + ['multiple' => !empty($field['input_attrs']['multiple']), 'placeholder' => ts('Select')]; + if (!empty($field['input_attrs']['control_field'])) { + $controlFields[] = $attr['controlField'] = $field['input_attrs']['control_field']; } + $this->add('select2', $field['name'], $field['label'], $field['options'] ?: [], !empty($field['required']), $attr); } - $this->add( - 'text', - 'title', - ts('Title'), - CRM_Core_DAO::getAttribute('CRM_Core_DAO_ActionSchedule', 'title'), - TRUE - ); - - $mappings = CRM_Core_BAO_ActionSchedule::getMappings(); - $selectedMapping = $mappings[$mappingID ?: 1]; - $entityRecipientLabels = $selectedMapping->getRecipientTypes() + CRM_Core_BAO_ActionSchedule::getAdditionalRecipients(); - $this->assign('entityMapping', json_encode( - CRM_Utils_Array::collectMethod('getEntityTable', $mappings) - )); - $this->assign('recipientMapping', json_encode( - array_combine(array_keys($entityRecipientLabels), array_keys($entityRecipientLabels)) - )); - - if (!$this->getContext()) { - $sel = &$this->add( - 'hierselect', - 'entity', - ts('Entity'), - [ - 'name' => 'entity[0]', - 'style' => 'vertical-align: top;', - ] - ); - $sel->setOptions([ - CRM_Utils_Array::collectMethod('getLabel', $mappings), - CRM_Core_BAO_ActionSchedule::getAllEntityValueLabels(), - CRM_Core_BAO_ActionSchedule::getAllEntityStatusLabels(), - ]); - - if (is_a($sel->_elements[1], 'HTML_QuickForm_select')) { - // make second selector a multi-select - - $sel->_elements[1]->setMultiple(TRUE); - $sel->_elements[1]->setSize(5); - } + // Javascript will reload metadata when these fields are changed + $this->assign('controlFields', array_values(array_unique($controlFields))); - if (is_a($sel->_elements[2], 'HTML_QuickForm_select')) { - // make third selector a multi-select - - $sel->_elements[2]->setMultiple(TRUE); - $sel->_elements[2]->setSize(5); - } + // These 2 are preselected if form is embedded + if ($this->get('entity_value')) { + $this->getElement('entity_value')->freeze(); } - else { - $mapping = CRM_Core_BAO_ActionSchedule::getMapping($this->_mappingID); - $options = $mapping->getStatusLabels($this->getComponentID()); - $attributes = ['multiple' => TRUE, 'class' => 'crm-select2 huge', 'placeholder' => $mapping->getStatusHeader()]; - $this->add('select', 'entity', ts('Recipient(s)'), $options, TRUE, $attributes); + if ($this->get('mapping_id') || $this->getAction() == CRM_Core_Action::UPDATE) { + $this->getElement('mapping_id')->freeze(); } - $this->assign('context', $this->getContext()); + // Pre-assigned mapping_id will cause the field to be hidden by the tpl + $this->assign('mappingId', $this->get('mapping_id')); - //reminder_interval - $this->add('number', 'start_action_offset', ts('When (trigger date)'), ['class' => 'six', 'min' => 0]); - $this->addRule('start_action_offset', ts('Value should be a positive number'), 'positiveInteger'); + // Units fields will be pluralized by javascript + $this->addField('start_action_unit', ['placeholder' => FALSE])->setAttribute('class', 'crm-form-select'); + $this->addField('repetition_frequency_unit', ['placeholder' => FALSE])->setAttribute('class', 'crm-form-select'); + $this->addField('end_frequency_unit', ['placeholder' => FALSE])->setAttribute('class', 'crm-form-select'); + // Data for js pluralization + $this->assign('recurringFrequencyOptions', [ + 'plural' => CRM_Utils_Array::makeNonAssociative(CRM_Core_SelectValues::getRecurringFrequencyUnits(2)), + 'single' => CRM_Utils_Array::makeNonAssociative(CRM_Core_SelectValues::getRecurringFrequencyUnits()), + ]); - $isActive = ts('Scheduled Reminder Active'); - $recordActivity = ts('Record activity for automated email'); + $this->addField('title', [], TRUE); + $this->addField('absolute_date', [], FALSE, FALSE); + $this->addField('start_action_offset', ['class' => 'four']); + $this->addField('start_action_condition', ['placeholder' => FALSE])->setAttribute('class', 'crm-form-select'); + $this->addField('record_activity', ['type' => 'advcheckbox']); + $this->addField('is_repeat', ['type' => 'advcheckbox']); + $this->addField('repetition_frequency_interval', ['label' => ts('Every'), 'class' => 'four']); + $this->addField('end_frequency_interval', ['label' => ts('Until'), 'class' => 'four']); + $this->addField('end_action', ['placeholder' => FALSE])->setAttribute('class', 'crm-form-select'); + $this->addField('effective_start_date', ['label' => ts('Effective From')], FALSE, FALSE); + $this->addField('effective_end_date', ['label' => ts('To')], FALSE, FALSE); + $this->addField('is_active', ['type' => 'advcheckbox']); + $this->addAutocomplete('recipient_manual', ts('Manual Recipients'), ['select' => ['multiple' => TRUE]]); + $this->addAutocomplete('group_id', ts('Group'), ['entity' => 'Group', 'select' => ['minimumInputLength' => 0]]); + + // From email address (optional, defaults to domain email) + $domainDefault = CRM_Core_BAO_Domain::getNameAndEmail(TRUE); + $this->addField('from_name', ['placeholder' => $domainDefault[0] ?? '', 'class' => 'big']); + $this->addField('from_email', ['placeholder' => $domainDefault[1] ?? '', 'class' => 'big']); + + // Relative/absolute date toggle (not a real field, just a widget for the form) + $this->add('select', 'absolute_or_relative_date', ts('When (trigger date)'), ['relative' => ts('Relative Date'), 'absolute' => ts('Choose Date')], TRUE); + + // SMS-only fields + $providersCount = CRM_SMS_BAO_Provider::activeProviderCount(); + $this->assign('sms', $providersCount); if ($providersCount) { - $this->assign('sms', $providersCount); - $recordActivity = ts('Record activity for automated email or SMS'); - $options = CRM_Core_OptionGroup::values('msg_mode'); - $this->add('select', 'mode', ts('Send as'), $options); - - $providers = CRM_SMS_BAO_Provider::getProviders(NULL, NULL, TRUE, 'is_default desc'); - - $providerSelect = []; - foreach ($providers as $provider) { - $providerSelect[$provider['id']] = $provider['title']; - } - $this->add('select', 'sms_provider_id', ts('SMS Provider'), $providerSelect, TRUE); - } - - foreach (CRM_Core_SelectValues::getRecurringFrequencyUnits() as $val => $label) { - $freqUnitsDisplay[$val] = ts('%1(s)', [1 => $label]); - } - - $this->add('datepicker', 'absolute_date', ts('Start Date'), [], FALSE, ['time' => FALSE]); - - //reminder_frequency - $this->add('select', 'start_action_unit', ts('Frequency'), $freqUnitsDisplay, TRUE); - - $condition = [ - 'before' => ts('before'), - 'after' => ts('after'), - ]; - //reminder_action - $this->add('select', 'start_action_condition', ts('Action Condition'), $condition); - - $this->add('select', 'start_action_date', ts('Date Field'), $selectedMapping->getDateFields(), TRUE); - - $this->addElement('checkbox', 'record_activity', $recordActivity); - - $this->addElement('checkbox', 'is_repeat', ts('Repeat'), - NULL, ['onchange' => "return showHideByValue('is_repeat',true,'repeatFields','table-row','radio',false);"] - ); - - $this->add('select', 'repetition_frequency_unit', ts('every'), $freqUnitsDisplay); - $this->add('number', 'repetition_frequency_interval', ts('every'), ['class' => 'six', 'min' => 0]); - $this->addRule('repetition_frequency_interval', ts('Value should be a positive number'), 'positiveInteger'); - - $this->add('select', 'end_frequency_unit', ts('until'), $freqUnitsDisplay); - $this->add('number', 'end_frequency_interval', ts('until'), ['class' => 'six', 'min' => 0]); - $this->addRule('end_frequency_interval', ts('Value should be a positive number'), 'positiveInteger'); - - $this->add('select', 'end_action', ts('Repetition Condition'), $condition, TRUE); - $this->add('select', 'end_date', ts('Date Field'), $selectedMapping->getDateFields(), TRUE); - - $this->add('text', 'from_name', ts('From Name')); - $this->add('text', 'from_email', ts('From Email')); - - $this->add('datepicker', 'effective_start_date', ts('Effective start date'), [], FALSE); - $this->add('datepicker', 'effective_end_date', ts('Effective end date'), [], FALSE); - - $recipientListingOptions = []; - - $limitOptions = ['' => ts('Neither')] + CRM_Core_BAO_ActionSchedule::buildOptions('limit_to'); - - $recipientLabels = ['activity' => ts('Recipients'), 'other' => ts('Limit or Add Recipients')]; - $this->assign('recipientLabels', $recipientLabels); - - $this->add('select', 'limit_to', ts('Limit Options'), $limitOptions, FALSE, ['onChange' => "showHideByValue('limit_to','','recipient', 'select','select',true);"]); - - $this->add('select', 'recipient', $recipientLabels['other'], $entityRecipientLabels, - FALSE, ['onchange' => "showHideByValue('recipient','manual','recipientManual','table-row','select',false); showHideByValue('recipient','group','recipientGroup','table-row','select',false);"] - ); - - if (!empty($this->_submitValues['recipient_listing'])) { - if ($this->getContext()) { - $recipientListingOptions = CRM_Core_BAO_ActionSchedule::getRecipientListing($this->_mappingID, $this->_submitValues['recipient']); - } - else { - $recipientListingOptions = CRM_Core_BAO_ActionSchedule::getRecipientListing($_POST['entity'][0], $_POST['recipient']); - } - } - elseif (!empty($this->_values['recipient_listing'])) { - $recipientListingOptions = CRM_Core_BAO_ActionSchedule::getRecipientListing($this->_values['mapping_id'], $this->_values['recipient']); + $this->addField('mode', ['placeholder' => FALSE, 'option_url' => FALSE], TRUE)->setAttribute('class', 'crm-form-select'); + $this->addField('sms_provider_id'); } - $this->add('select', 'recipient_listing', ts('Recipient Roles'), $recipientListingOptions, FALSE, - ['multiple' => TRUE, 'class' => 'crm-select2 huge', 'placeholder' => TRUE]); - - $this->addEntityRef('recipient_manual_id', ts('Manual Recipients'), ['multiple' => TRUE, 'create' => TRUE]); - - $this->add('select', 'group_id', ts('Group'), - CRM_Core_PseudoConstant::nestedGroup(), FALSE, ['class' => 'crm-select2 huge'] - ); - - // multilingual only options + // Multilingual-only fields $multilingual = CRM_Core_I18n::isMultilingual(); + $this->assign('multilingual', $multilingual); if ($multilingual) { - $smarty = CRM_Core_Smarty::singleton(); - $smarty->assign('multilingual', $multilingual); - - $languages = CRM_Core_I18n::languages(TRUE); - $languageFilter = $languages + [CRM_Core_I18n::NONE => ts('Contacts with no preferred language')]; - $element = $this->add('select', 'filter_contact_language', ts('Recipients language'), $languageFilter, FALSE, - ['multiple' => TRUE, 'class' => 'crm-select2', 'placeholder' => TRUE]); - - $communicationLanguage = [ - '' => ts('System default language'), - CRM_Core_I18n::AUTO => ts('Follow recipient preferred language'), - ]; - $communicationLanguage = $communicationLanguage + $languages; - $this->add('select', 'communication_language', ts('Communication language'), $communicationLanguage); + $this->addField('filter_contact_language', ['placeholder' => ts('Any language')]); + $this->addField('communication_language', ['placeholder' => 'System default language']); } + // Message fields + $this->addField('subject'); CRM_Mailing_BAO_Mailing::commonCompose($this); - $this->add('text', 'subject', ts('Subject'), - CRM_Core_DAO::getAttribute('CRM_Core_DAO_ActionSchedule', 'subject') - ); - - $this->add('checkbox', 'is_active', $isActive); - $this->addFormRule([__CLASS__, 'formRule'], $this); - - $this->setPageTitle(ts('Scheduled Reminder')); } /** * Global form rule. * - * @param array $fields + * @param array $values * The input form values. * @param array $files * @param CRM_Admin_Form_ScheduleReminders $self @@ -295,129 +186,70 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { * @throws \CRM_Core_Exception * @throws \Civi\API\Exception\UnauthorizedException */ - public static function formRule(array $fields, $files, $self) { + public static function formRule(array $values, $files, $self) { $errors = []; - if ((array_key_exists(1, $fields['entity']) && $fields['entity'][1][0] === 0) || - (array_key_exists(2, $fields['entity']) && $fields['entity'][2][0] == 0) - ) { - $errors['entity'] = ts('Please select appropriate value'); - } - - $mode = $fields['mode'] ?? FALSE; - if (!empty($fields['is_active']) && - CRM_Utils_System::isNull($fields['subject']) && (!$mode || $mode !== 'SMS') - ) { - $errors['subject'] = ts('Subject is a required field.'); - } - if (!empty($fields['is_active']) && - CRM_Utils_System::isNull(trim(strip_tags($fields['html_message']))) && (!$mode || $mode !== 'SMS') - ) { - $errors['html_message'] = ts('The HTML message is a required field.'); - } - - if (!empty($mode) && ($mode === 'SMS' || $mode === 'User_Preference') && !empty($fields['is_active']) && - CRM_Utils_System::isNull(trim(strip_tags($fields['sms_text_message']))) - ) { - $errors['sms_text_message'] = ts('The SMS message is a required field.'); - } - - if (empty($self->getContext()) && CRM_Utils_System::isNull($fields['entity'][1] ?? NULL)) { - $errors['entity'] = ts('Please select entity value'); - } - - if (!CRM_Utils_System::isNull($fields['absolute_date']) && !CRM_Utils_System::isNull($fields['start_action_offset'])) { - $errors['absolute_date'] = ts('Only an absolute date or a relative date or time can be entered, not both.'); - } - if (!CRM_Utils_System::isNull($fields['absolute_date'])) { - if ($fields['absolute_date'] < date('Y-m-d')) { - $errors['absolute_date'] = ts('Absolute date cannot be earlier than the current time.'); + $values = self::normalizeFormValues($values); + $fieldMeta = Civi\Api4\ActionSchedule::getFields(FALSE) + ->setValues($values) + ->setAction('create') + ->execute() + ->indexBy('name'); + + foreach ($fieldMeta as $fieldName => $fieldInfo) { + $fieldValue = $values[$fieldName] ?? NULL; + $formFieldName = array_search($fieldName, self::$messageFieldMap) ?: $fieldName; + // TODO: This snippet could be an api action e.g. `civicrm_api4('ActionSchedule', 'validate'...)` + if ($fieldValue === NULL || $fieldValue === '' || $fieldValue === []) { + if ( + (!empty($fieldInfo['required']) && !isset($fieldInfo['default_value'])) || + (!empty($fieldInfo['required_if']) && \Civi\Api4\Generic\AbstractAction::evaluateCondition($fieldInfo['required_if'], ['values' => $values])) + ) { + $errors[$formFieldName] = ts('%1 is a required field.', [1 => $fieldInfo['label']]); + } } - } - else { - if (CRM_Utils_System::isNull($fields['start_action_offset'])) { - $errors['start_action_offset'] = ts('Start Action Offset must be filled in or Absolute Date set'); + elseif (empty($fieldInfo['input_attrs']['multiple']) && is_array($fieldValue) && count($fieldValue) > 1) { + $errors[$formFieldName] = ts('Please select only 1 %1.', [1 => $fieldInfo['label']]); } } - if (!CRM_Utils_Rule::email($fields['from_email']) && (!$mode || $mode != 'SMS')) { - $errors['from_email'] = ts('Please enter a valid email address.'); - } - $recipientKind = [ - 'participant_role' => [ - 'name' => 'participant role', - 'target_id' => 'recipient_listing', - ], - 'manual' => [ - 'name' => 'recipient', - 'target_id' => 'recipient_manual_id', - ], - ]; - if ($fields['limit_to'] && array_key_exists($fields['recipient'], $recipientKind) && empty($fields[$recipientKind[$fields['recipient']]['target_id']])) { - $errors[$recipientKind[$fields['recipient']]['target_id']] = ts('If "Also include" or "Limit to" are selected, you must specify at least one %1', [1 => $recipientKind[$fields['recipient']]['name']]); - } - //CRM-21523 - if (!empty($fields['is_repeat']) && - (empty($fields['repetition_frequency_interval']) || ($fields['end_frequency_interval'] == NULL)) - ) { - $errors['is_repeat'] = ts('If you are enabling repetition you must indicate the frequency and ending term.'); + // Suppress irrelevant error messages depending on chosen date mode + if ($values['absolute_or_relative_date'] === 'absolute') { + unset($errors['start_action_offset'], $errors['start_action_unit'], $errors['start_action_condition'], $errors['start_action_date']); } - - $self->_actionSchedule = $self->parseActionSchedule($fields); - if ($self->_actionSchedule->mapping_id) { - $mapping = CRM_Core_BAO_ActionSchedule::getMapping($self->_actionSchedule->mapping_id); - CRM_Utils_Array::extend($errors, $mapping->validateSchedule($self->_actionSchedule)); + else { + unset($errors['absolute_date']); } - return empty($errors) ? TRUE : $errors; + return $errors ?: TRUE; } /** * @return array */ public function setDefaultValues() { + $defaults = $this->_values ?? []; if ($this->_action & CRM_Core_Action::ADD) { $defaults['is_active'] = 1; - $defaults['mode'] = 'Email'; $defaults['record_activity'] = 1; - $defaults['start_action_unit'] = 'hour'; } else { - $defaults = $this->_values; - $entityValue = explode(CRM_Core_DAO::VALUE_SEPARATOR, CRM_Utils_Array::value('entity_value', $defaults)); - $entityStatus = explode(CRM_Core_DAO::VALUE_SEPARATOR, CRM_Utils_Array::value('entity_status', $defaults)); - if (empty($this->getContext())) { - $defaults['entity'][0] = $defaults['mapping_id'] ?? NULL; - $defaults['entity'][1] = $entityValue; - $defaults['entity'][2] = $entityStatus; - } - else { - $defaults['entity'] = $entityStatus; + // Set values for the fields added by CRM_Mailing_BAO_Mailing::commonCompose + foreach (self::$messageFieldMap as $messageFieldName => $actionScheduleFieldName) { + $defaults[$messageFieldName] = $defaults[$actionScheduleFieldName] ?? NULL; } + $defaults['absolute_or_relative_date'] = !empty($defaults['absolute_date']) ? 'absolute' : 'relative'; - $recipientListing = $defaults['recipient_listing'] ?? NULL; - if ($recipientListing) { - $defaults['recipient_listing'] = explode(CRM_Core_DAO::VALUE_SEPARATOR, - $recipientListing - ); - } - $defaults['text_message'] = $defaults['body_text'] ?? NULL; - $defaults['html_message'] = $defaults['body_html'] ?? NULL; - $defaults['sms_text_message'] = $defaults['sms_body_text'] ?? NULL; - $defaults['template'] = $defaults['msg_template_id'] ?? NULL; - $defaults['SMStemplate'] = $defaults['sms_template_id'] ?? NULL; - if (!empty($defaults['group_id'])) { - $defaults['recipient'] = 'group'; - } - elseif (!empty($defaults['recipient_manual'])) { - $defaults['recipient'] = 'manual'; - $defaults['recipient_manual_id'] = $defaults['recipient_manual']; - } - $contactLanguage = $defaults['filter_contact_language'] ?? NULL; - if ($contactLanguage) { - $defaults['filter_contact_language'] = explode(CRM_Core_DAO::VALUE_SEPARATOR, $contactLanguage); + // This is weird - the form used to nullify `recipient` if it was 'group' or 'manual', + // but I see no good reason for doing that. + if (empty($defaults['recipient'])) { + if (!empty($defaults['group_id'])) { + $defaults['recipient'] = 'group'; + } + elseif (!empty($defaults['recipient_manual'])) { + $defaults['recipient'] = 'manual'; + } } } - return $defaults; } @@ -428,198 +260,74 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { if ($this->_action & CRM_Core_Action::DELETE) { CRM_Core_BAO_ActionSchedule::deleteRecord(['id' => $this->_id]); CRM_Core_Session::setStatus(ts('Selected Reminder has been deleted.'), ts('Record Deleted'), 'success'); - if ($this->getContext() === 'event' && $this->getComponentID()) { - $url = CRM_Utils_System::url('civicrm/event/manage/reminder', - "reset=1&action=browse&id=" . $this->getComponentID() . "&component=" . $this->getContext() . "&setTab=1" - ); - $session = CRM_Core_Session::singleton(); - $session->pushUserContext($url); - } return; } $values = $this->controller->exportValues($this->getName()); - if (empty($this->_actionSchedule)) { - $bao = $this->parseActionSchedule($values)->save(); - } - else { - $bao = $this->_actionSchedule->save(); + if ($this->_action & CRM_Core_Action::UPDATE) { + $values['id'] = $this->_id; } + $values = self::normalizeFormValues($values); + self::saveMessageTemplates($values); + + $bao = CRM_Core_BAO_ActionSchedule::writeRecord($values); + // we need to set this on the form so that hooks can identify the created entity $this->set('id', $bao->id); - $status = ts("Your new Reminder titled %1 has been saved.", - [1 => "<strong>{$values['title']}</strong>"] - ); + $status = ts('Reminder "%1" has been saved.', [1 => $values['title']]); - if ($this->_action) { - if ($this->_action & CRM_Core_Action::UPDATE) { - $status = ts("Your Reminder titled %1 has been updated.", - [1 => "<strong>{$values['title']}</strong>"] - ); - } - - if ($this->getContext() === 'event' && $this->getComponentID()) { - $url = CRM_Utils_System::url('civicrm/event/manage/reminder', "reset=1&action=browse&id=" . $this->getComponentID() . "&component=" . $this->getContext() . "&setTab=1"); - $session = CRM_Core_Session::singleton(); - $session->pushUserContext($url); - } - } CRM_Core_Session::setStatus($status, ts('Saved'), 'success'); } - /** - * FIXME: This function shouldn't exist. It takes an overcomplicated form - * and maps the wonky form values to the bao object to be saved. - * - * @param array $values - * - * @return CRM_Core_DAO_ActionSchedule - * @throws \CRM_Core_Exception - * @throws \Civi\API\Exception\UnauthorizedException - */ - public function parseActionSchedule($values) { - $params = []; - - $keys = [ - 'title', - 'subject', - 'absolute_date', - 'group_id', - 'limit_to', - 'mode', - 'sms_provider_id', - 'from_name', - 'from_email', - ]; - foreach ($keys as $key) { - $params[$key] = $values[$key] ?? NULL; - } - - // set boolean fields to false if not set. - foreach (['record_activity', 'is_repeat', 'is_active'] as $boolFieldName) { - $params[$boolFieldName] = $values[$boolFieldName] ?? 0; - } - - $moreKeys = [ - 'start_action_offset', - 'start_action_unit', - 'start_action_condition', - 'start_action_date', - 'repetition_frequency_unit', - 'repetition_frequency_interval', - 'end_frequency_unit', - 'end_frequency_interval', - 'end_action', - 'end_date', - 'effective_end_date', - 'effective_start_date', - ]; - - if (empty($params['absolute_date'])) { - $params['absolute_date'] = 'null'; - } - foreach ($moreKeys as $mkey) { - if ($params['absolute_date'] !== 'null' && CRM_Utils_String::startsWith($mkey, 'start_action')) { - $params[$mkey] = 'null'; - continue; + private static function normalizeFormValues(array $values): array { + // Ensure multivalued fields are formatted as an array + $serialized = \Civi\Api4\ActionSchedule::getFields(FALSE) + ->addWhere('serialize', 'IS NOT EMPTY') + ->execute()->column('name'); + foreach ($serialized as $fieldName) { + if (isset($values[$fieldName]) && is_string($values[$fieldName])) { + $values[$fieldName] = explode(',', $values[$fieldName]); } - $params[$mkey] = $values[$mkey] ?? NULL; } - $params['body_text'] = $values['text_message'] ?? NULL; - $params['sms_body_text'] = $values['sms_text_message'] ?? NULL; - $params['body_html'] = $values['html_message'] ?? NULL; - - if (($values['recipient'] ?? NULL) === 'manual') { - $params['recipient_manual'] = $values['recipient_manual_id'] ?? NULL; - $params['group_id'] = $params['recipient'] = $params['recipient_listing'] = 'null'; - } - elseif (($values['recipient'] ?? NULL) === 'group') { - $params['group_id'] = $values['group_id']; - $params['recipient_manual'] = $params['recipient'] = $params['recipient_listing'] = 'null'; - } - elseif (isset($values['recipient_listing']) && !empty($values['limit_to']) && !CRM_Utils_System::isNull($values['recipient_listing'])) { - $params['recipient'] = $values['recipient'] ?? NULL; - $params['recipient_listing'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, - CRM_Utils_Array::value('recipient_listing', $values) - ); - $params['group_id'] = $params['recipient_manual'] = 'null'; + // Absolute or relative date + if ($values['absolute_or_relative_date'] === 'absolute') { + $values['start_action_offset'] = $values['start_action_unit'] = $values['start_action_condition'] = $values['start_action_date'] = NULL; } else { - $params['recipient'] = $values['recipient'] ?? NULL; - $params['group_id'] = $params['recipient_manual'] = $params['recipient_listing'] = 'null'; + $values['absolute_date'] = NULL; } - if (!empty($this->_mappingID) && !empty($this->getComponentID())) { - $params['mapping_id'] = $this->_mappingID; - $params['entity_value'] = $this->getComponentID(); - $params['entity_status'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $values['entity']); - } - else { - $params['mapping_id'] = $values['entity'][0]; - if ($params['mapping_id'] == 1) { - $params['limit_to'] = 1; - } - - $entity_value = CRM_Utils_Array::value(1, $values['entity'], []); - $entity_status = CRM_Utils_Array::value(2, $values['entity'], []); - $params['entity_value'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $entity_value); - $params['entity_status'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $entity_status); - } - - if (empty($values['is_repeat'])) { - $params['repetition_frequency_unit'] = 'null'; - $params['repetition_frequency_interval'] = 'null'; - $params['end_frequency_unit'] = 'null'; - $params['end_frequency_interval'] = 'null'; - $params['end_action'] = 'null'; - $params['end_date'] = 'null'; - } - - // multilingual options - $params['filter_contact_language'] = CRM_Utils_Array::value('filter_contact_language', $values, []); - $params['filter_contact_language'] = implode(CRM_Core_DAO::VALUE_SEPARATOR, $params['filter_contact_language']); - $params['communication_language'] = $values['communication_language'] ?? NULL; - - if ($this->_action & CRM_Core_Action::UPDATE) { - $params['id'] = $this->_id; - } - elseif ($this->_action & CRM_Core_Action::ADD) { - // we do this only once, so name never changes - $params['name'] = CRM_Utils_String::munge($params['title'], '_', 64); + // Convert values for the fields added by CRM_Mailing_BAO_Mailing::commonCompose + foreach (self::$messageFieldMap as $messageFieldName => $actionScheduleFieldName) { + $values[$actionScheduleFieldName] = $values[$messageFieldName] ?? NULL; } + return $values; + } - $modePrefixes = ['Mail' => NULL, 'SMS' => 'SMS']; + /** + * Add or update message templates (for both email & sms, according to mode) + * + * @param array $params + * @throws CRM_Core_Exception + */ + private static function saveMessageTemplates(array &$params): void { + $mode = $params['mode'] ?? 'Email'; + $modePrefixes = ['msg' => '', 'sms' => 'SMS']; - if ($params['mode'] === 'Email' || empty($params['sms_provider_id'])) { - unset($modePrefixes['SMS']); + if ($mode === 'Email' || empty($params['sms_provider_id'])) { + unset($modePrefixes['sms']); } - elseif ($params['mode'] === 'SMS') { - unset($modePrefixes['Mail']); + elseif ($mode === 'SMS') { + unset($modePrefixes['msg']); } - //TODO: handle postprocessing of SMS and/or Email info based on $modePrefixes - - $composeFields = [ - 'template', - 'saveTemplate', - 'updateTemplate', - 'saveTemplateName', - ]; $msgTemplate = NULL; - //mail template is composed - - foreach ($modePrefixes as $prefix) { - $composeParams = []; - foreach ($composeFields as $key) { - $key = $prefix . $key; - if (!empty($values[$key])) { - $composeParams[$key] = $values[$key]; - } - } - if (!empty($composeParams[$prefix . 'updateTemplate'])) { + foreach ($modePrefixes as $mode => $prefix) { + // Update existing template + if (!empty($params[$prefix . 'updateTemplate']) && !empty($params[$prefix . 'template'])) { $templateParams = ['is_active' => TRUE]; if ($prefix === 'SMS') { $templateParams += [ @@ -634,12 +342,13 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { 'msg_subject' => $params['subject'], ]; } - $templateParams['id'] = $values[$prefix . 'template']; + $templateParams['id'] = $params[$prefix . 'template']; $msgTemplate = CRM_Core_BAO_MessageTemplate::add($templateParams); } - if (!empty($composeParams[$prefix . 'saveTemplate'])) { + // Save new template + if (!empty($params[$prefix . 'saveTemplate'])) { $templateParams = ['is_active' => TRUE]; if ($prefix === 'SMS') { $templateParams += [ @@ -654,32 +363,15 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { 'msg_subject' => $params['subject'], ]; } - $templateParams['msg_title'] = $composeParams[$prefix . 'saveTemplateName']; + $templateParams['msg_title'] = $params[$prefix . 'saveTemplateName']; $msgTemplate = CRM_Core_BAO_MessageTemplate::add($templateParams); } - if ($prefix === 'SMS') { - if (isset($msgTemplate->id)) { - $params['sms_template_id'] = $msgTemplate->id; - } - else { - $params['sms_template_id'] = $values['SMStemplate'] ?? NULL; - } - } - else { - if (isset($msgTemplate->id)) { - $params['msg_template_id'] = $msgTemplate->id; - } - else { - $params['msg_template_id'] = $values['template'] ?? NULL; - } + if (isset($msgTemplate->id)) { + $params[$mode . '_template_id'] = $msgTemplate->id; } } - - $actionSchedule = new CRM_Core_DAO_ActionSchedule(); - $actionSchedule->copyValues($params); - return $actionSchedule; } /** diff --git a/civicrm/CRM/Admin/Page/AJAX.php b/civicrm/CRM/Admin/Page/AJAX.php index 9d0c9ca2cb..0cc9bbbb8c 100644 --- a/civicrm/CRM/Admin/Page/AJAX.php +++ b/civicrm/CRM/Admin/Page/AJAX.php @@ -279,62 +279,6 @@ class CRM_Admin_Page_AJAX { CRM_Core_Page_AJAX::returnJsonResponse($ret); } - /** - * Get a list of mappings. - * - * This appears to be only used by scheduled reminders. - */ - public static function mappingList() { - if (empty($_GET['mappingID'])) { - CRM_Utils_JSON::output(['status' => 'error', 'error_msg' => 'required params missing.']); - } - - $mapping = CRM_Core_BAO_ActionSchedule::getMapping($_GET['mappingID']); - $dateFieldLabels = $mapping ? $mapping->getDateFields() : []; - - // The UX here is quirky -- for "Activity" types, there's a simple drop "Recipients" - // dropdown which is always displayed. For other types, the "Recipients" drop down is - // conditional upon the weird isLimit ('Limit To / Also Include / Neither') dropdown. - $noThanksJustKidding = !$_GET['isLimit']; - if ($mapping instanceof CRM_Activity_ActionMapping || !$noThanksJustKidding) { - $entityRecipientLabels = $mapping ? ($mapping->getRecipientTypes() + CRM_Core_BAO_ActionSchedule::getAdditionalRecipients()) : []; - } - else { - $entityRecipientLabels = CRM_Core_BAO_ActionSchedule::getAdditionalRecipients(); - } - $recipientMapping = array_combine(array_keys($entityRecipientLabels), array_keys($entityRecipientLabels)); - - $output = [ - 'sel4' => CRM_Utils_Array::makeNonAssociative($dateFieldLabels), - 'sel5' => CRM_Utils_Array::makeNonAssociative($entityRecipientLabels), - 'recipientMapping' => $recipientMapping, - ]; - - CRM_Utils_JSON::output($output); - } - - /** - * (Scheduled Reminders) Get the list of possible recipient filters. - * - * Ex: GET /civicrm/ajax/recipientListing?mappingID=contribpage&recipientType= - */ - public static function recipientListing() { - $mappingID = filter_input(INPUT_GET, 'mappingID', FILTER_VALIDATE_REGEXP, [ - 'options' => [ - 'regexp' => '/^[a-zA-Z0-9_\-]+$/', - ], - ]); - $recipientType = filter_input(INPUT_GET, 'recipientType', FILTER_VALIDATE_REGEXP, [ - 'options' => [ - 'regexp' => '/^[a-zA-Z0-9_\-]+$/', - ], - ]); - - CRM_Utils_JSON::output([ - 'recipients' => CRM_Utils_Array::makeNonAssociative(CRM_Core_BAO_ActionSchedule::getRecipientListing($mappingID, $recipientType)), - ]); - } - /** * Outputs one branch in the tag tree * diff --git a/civicrm/CRM/Admin/Page/APIExplorer.php b/civicrm/CRM/Admin/Page/APIExplorer.php index a7b2553900..02f1d6cef4 100644 --- a/civicrm/CRM/Admin/Page/APIExplorer.php +++ b/civicrm/CRM/Admin/Page/APIExplorer.php @@ -20,29 +20,6 @@ */ class CRM_Admin_Page_APIExplorer extends CRM_Core_Page { - /** - * Return unique paths for checking for examples. - * @return array - */ - private static function uniquePaths() { - // Ensure that paths with trailing slashes are properly dealt with - $paths = explode(PATH_SEPARATOR, get_include_path()); - foreach ($paths as $id => $rawPath) { - $pathParts = explode(DIRECTORY_SEPARATOR, $rawPath); - foreach ($pathParts as $partId => $part) { - if (empty($part)) { - unset($pathParts[$partId]); - } - } - $newRawPath = implode(DIRECTORY_SEPARATOR, $pathParts); - if ($newRawPath != $rawPath) { - $paths[$id] = DIRECTORY_SEPARATOR . $newRawPath; - } - } - $paths = array_unique($paths); - return $paths; - } - /** * Run page. * @@ -57,23 +34,6 @@ class CRM_Admin_Page_APIExplorer extends CRM_Core_Page { $this->assign('operators', CRM_Core_DAO::acceptedSQLOperators()); - // List example directories - // use get_include_path to ensure that extensions are captured. - $examples = []; - $paths = self::uniquePaths(); - foreach ($paths as $path) { - $dir = \CRM_Utils_File::addTrailingSlash($path) . 'api' . DIRECTORY_SEPARATOR . 'v3' . DIRECTORY_SEPARATOR . 'examples'; - if (\CRM_Utils_File::isDir($dir)) { - foreach (scandir($dir) as $item) { - if ($item && strpos($item, '.') === FALSE && array_search($item, $examples) === FALSE) { - $examples[] = $item; - } - } - } - } - sort($examples); - $this->assign('examples', $examples); - return parent::run(); } @@ -87,44 +47,6 @@ class CRM_Admin_Page_APIExplorer extends CRM_Core_Page { return 'civicrm/api'; } - /** - * AJAX callback to fetch examples. - */ - public static function getExampleFile() { - if (!empty($_GET['entity']) && strpos($_GET['entity'], '.') === FALSE) { - $examples = []; - $paths = self::uniquePaths(); - foreach ($paths as $path) { - $dir = \CRM_Utils_File::addTrailingSlash($path) . 'api' . DIRECTORY_SEPARATOR . 'v3' . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $_GET['entity']; - if (\CRM_Utils_File::isDir($dir)) { - foreach (scandir($dir) as $item) { - $item = str_replace('.ex.php', '', $item); - if ($item && strpos($item, '.') === FALSE) { - $examples[] = ['key' => $item, 'value' => $item]; - } - } - } - } - CRM_Utils_JSON::output($examples); - } - if (!empty($_GET['file']) && strpos($_GET['file'], '.') === FALSE) { - $paths = self::uniquePaths(); - $fileFound = FALSE; - foreach ($paths as $path) { - $fileName = \CRM_Utils_File::addTrailingSlash($path) . 'api' . DIRECTORY_SEPARATOR . 'v3' . DIRECTORY_SEPARATOR . 'examples' . DIRECTORY_SEPARATOR . $_GET['file'] . '.ex.php'; - if (!$fileFound && file_exists($fileName)) { - $fileFound = TRUE; - echo file_get_contents($fileName); - } - } - if (!$fileFound) { - echo "Not found."; - } - CRM_Utils_System::civiExit(); - } - CRM_Utils_System::permissionDenied(); - } - /** * Ajax callback to display code docs. */ diff --git a/civicrm/CRM/Admin/Page/ContactType.php b/civicrm/CRM/Admin/Page/ContactType.php index 526b11194c..2766cb4ae3 100644 --- a/civicrm/CRM/Admin/Page/ContactType.php +++ b/civicrm/CRM/Admin/Page/ContactType.php @@ -71,6 +71,7 @@ class CRM_Admin_Page_ContactType extends CRM_Core_Page_Basic { 'ContactType', $value['id'] ); + $rows[$key] = array_merge(['class' => ''], $rows[$key]); } $this->assign('rows', $rows); } diff --git a/civicrm/CRM/Admin/Page/EventTemplate.php b/civicrm/CRM/Admin/Page/EventTemplate.php index c373135e63..77ee19f553 100644 --- a/civicrm/CRM/Admin/Page/EventTemplate.php +++ b/civicrm/CRM/Admin/Page/EventTemplate.php @@ -52,12 +52,14 @@ class CRM_Admin_Page_EventTemplate extends CRM_Core_Page_Basic { 'url' => 'civicrm/event/manage/settings', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit Event Template'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/event/manage', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Event Template'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/Admin/Page/Extensions.php b/civicrm/CRM/Admin/Page/Extensions.php index e845def26c..d04ad328eb 100644 --- a/civicrm/CRM/Admin/Page/Extensions.php +++ b/civicrm/CRM/Admin/Page/Extensions.php @@ -66,6 +66,7 @@ class CRM_Admin_Page_Extensions extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/extensions', 'qs' => 'action=add&id=%%id%%&key=%%key%%', 'title' => ts('Install'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ADD), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), @@ -73,24 +74,28 @@ class CRM_Admin_Page_Extensions extends CRM_Core_Page_Basic { 'qs' => 'action=enable&id=%%id%%&key=%%key%%', 'ref' => 'enable-action', 'title' => ts('Enable'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'url' => 'civicrm/admin/extensions', 'qs' => 'action=disable&id=%%id%%&key=%%key%%', 'title' => ts('Disable'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Uninstall'), 'url' => 'civicrm/admin/extensions', 'qs' => 'action=delete&id=%%id%%&key=%%key%%', 'title' => ts('Uninstall Extension'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Download'), 'url' => 'civicrm/admin/extensions', 'qs' => 'action=update&id=%%id%%&key=%%key%%', 'title' => ts('Download Extension'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], ]; } diff --git a/civicrm/CRM/Admin/Page/Job.php b/civicrm/CRM/Admin/Page/Job.php index 005b38f5ee..f8a1a10171 100644 --- a/civicrm/CRM/Admin/Page/Job.php +++ b/civicrm/CRM/Admin/Page/Job.php @@ -51,40 +51,47 @@ class CRM_Admin_Page_Job extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/joblog', 'qs' => 'jid=%%id%%&reset=1', 'title' => ts('See log entries for this Scheduled Job'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::VIEW => [ 'name' => ts('Execute'), 'url' => 'civicrm/admin/job/edit', 'qs' => 'action=view&id=%%id%%&reset=1', 'title' => ts('Execute Scheduled Job Now'), + 'weight' => -15, ], CRM_Core_Action::UPDATE => [ 'name' => ts('Edit'), 'url' => 'civicrm/admin/job/edit', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit Scheduled Job'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Scheduled Job'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Scheduled Job'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/job/edit', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Scheduled Job'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::COPY => [ 'name' => ts('Copy'), 'url' => 'civicrm/admin/job/edit', 'qs' => 'action=copy&id=%%id%%', 'title' => ts('Copy Scheduled Job'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::COPY), ], ]; } diff --git a/civicrm/CRM/Admin/Page/MailSettings.php b/civicrm/CRM/Admin/Page/MailSettings.php index 8495f708e5..e4b27ab05e 100644 --- a/civicrm/CRM/Admin/Page/MailSettings.php +++ b/civicrm/CRM/Admin/Page/MailSettings.php @@ -36,7 +36,6 @@ class CRM_Admin_Page_MailSettings extends CRM_Core_Page_Basic { * Browse all mail settings. */ public function browse() { - //get all mail settings. $allMailSettings = []; $mailSetting = new CRM_Core_DAO_MailSettings(); @@ -45,20 +44,19 @@ class CRM_Admin_Page_MailSettings extends CRM_Core_Page_Basic { //multi-domain support for mail settings. CRM-5244 $mailSetting->domain_id = CRM_Core_Config::domainID(); - //find all mail settings. $mailSetting->find(); while ($mailSetting->fetch()) { //replace protocol value with name $mailSetting->protocol = $allProtocols[$mailSetting->protocol] ?? NULL; CRM_Core_DAO::storeValues($mailSetting, $allMailSettings[$mailSetting->id]); - //form all action links $action = array_sum(array_keys($this->links())); - // disallow the DELETE action for the default set of settings if ($mailSetting->is_default) { - $action &= ~CRM_Core_Action::DELETE; + $action -= CRM_Core_Action::DELETE; + $action -= CRM_Core_Action::DISABLE; } + $action -= ($mailSetting->is_active) ? CRM_Core_Action::ENABLE : CRM_Core_Action::DISABLE; //add action links. $allMailSettings[$mailSetting->id]['action'] = CRM_Core_Action::formLink(self::links(), $action, diff --git a/civicrm/CRM/Admin/Page/MessageTemplates.php b/civicrm/CRM/Admin/Page/MessageTemplates.php index a2af7ea9ab..1de19bfc7e 100644 --- a/civicrm/CRM/Admin/Page/MessageTemplates.php +++ b/civicrm/CRM/Admin/Page/MessageTemplates.php @@ -90,22 +90,26 @@ class CRM_Admin_Page_MessageTemplates extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/messageTemplates/add', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit this message template'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable this message template'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable this message template'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/messageTemplates', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete this message template'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::REVERT => [ 'name' => ts('Revert to Default'), @@ -113,12 +117,15 @@ class CRM_Admin_Page_MessageTemplates extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/messageTemplates', 'qs' => 'action=revert&id=%%id%%&selectedChild=workflow', 'title' => ts('Revert this workflow message template to the system default'), + 'weight' => 110, ], CRM_Core_Action::VIEW => [ 'name' => ts('View Default'), 'url' => 'civicrm/admin/messageTemplates', 'qs' => 'action=view&id=%%orig_id%%&reset=1', 'title' => ts('View the system default for this workflow message template'), + // Not the standard view weight as it's not really a standard view action. + 'weight' => 120, ], ]; } diff --git a/civicrm/CRM/Admin/Page/Options.php b/civicrm/CRM/Admin/Page/Options.php index 93f30fc18f..19954130e2 100644 --- a/civicrm/CRM/Admin/Page/Options.php +++ b/civicrm/CRM/Admin/Page/Options.php @@ -157,26 +157,30 @@ class CRM_Admin_Page_Options extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/options/' . self::$_gName, 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit %1', [1 => self::$_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable %1', [1 => self::$_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable %1', [1 => self::$_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/options/' . self::$_gName, 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete %1 Type', [1 => self::$_gName]), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; - if (self::$_gName == 'custom_search') { + if (self::$_gName === 'custom_search') { $runLink = [ CRM_Core_Action::FOLLOWUP => [ 'name' => ts('Run'), @@ -184,6 +188,7 @@ class CRM_Admin_Page_Options extends CRM_Core_Page_Basic { 'qs' => 'reset=1&csid=%%value%%', 'title' => ts('Run %1', [1 => self::$_gName]), 'class' => 'no-popup', + 'weight' => 10, ], ]; self::$_links = $runLink + self::$_links; diff --git a/civicrm/CRM/Admin/Page/ScheduleReminders.php b/civicrm/CRM/Admin/Page/ScheduleReminders.php index c6a3415ebb..ed73fb9c46 100644 --- a/civicrm/CRM/Admin/Page/ScheduleReminders.php +++ b/civicrm/CRM/Admin/Page/ScheduleReminders.php @@ -72,12 +72,6 @@ class CRM_Admin_Page_ScheduleReminders extends CRM_Core_Page_Basic { * @throws \CRM_Core_Exception */ public function browse($action = NULL) { - //CRM-16777: Do not permit access to user, for page 'Administer->Communication->Schedule Reminder', - //when do not have 'administer CiviCRM' permission. - if (!CRM_Core_Permission::check('administer CiviCRM')) { - CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); - } - // Get list of configured reminders $reminderList = CRM_Core_BAO_ActionSchedule::getList(); @@ -100,9 +94,11 @@ class CRM_Admin_Page_ScheduleReminders extends CRM_Core_Page_Basic { 'ActionSchedule', $format['id'] ); + $format = array_merge(['class' => ''], $format); } $this->assign('rows', $reminderList); + $this->assign('addNewLink', $this->getLinkPath('add')); } } diff --git a/civicrm/CRM/Api4/Page/AJAX.php b/civicrm/CRM/Api4/Page/AJAX.php index 650641b07e..dee72c6f70 100644 --- a/civicrm/CRM/Api4/Page/AJAX.php +++ b/civicrm/CRM/Api4/Page/AJAX.php @@ -134,8 +134,9 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page { $statusMap = [ \Civi\API\Exception\UnauthorizedException::class => 403, ]; + $status = $statusMap[get_class($e)] ?? 500; // Send error code (but don't overwrite success code if there are multiple calls and one was successful) - $this->httpResponseCode = $this->httpResponseCode ?: ($statusMap[get_class($e)] ?? 500); + $this->httpResponseCode = $this->httpResponseCode ?: $status; if (CRM_Core_Permission::check('view debug output')) { $response['error_code'] = $e->getCode(); $response['error_message'] = $e->getMessage(); @@ -165,6 +166,7 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page { 'exception' => $e, ]); } + $response['status'] = $status; } return $response; } diff --git a/civicrm/CRM/Api4/Page/Api4Explorer.php b/civicrm/CRM/Api4/Page/Api4Explorer.php index 0b03bc9725..7f4ef62122 100644 --- a/civicrm/CRM/Api4/Page/Api4Explorer.php +++ b/civicrm/CRM/Api4/Page/Api4Explorer.php @@ -30,6 +30,7 @@ class CRM_Api4_Page_Api4Explorer extends CRM_Core_Page { 'docs' => \Civi\Api4\Utils\ReflectionUtils::parseDocBlock($apiDoc->getDocComment()), 'functions' => CoreUtil::getSqlFunctions(), 'authxEnabled' => $extensions->isActiveModule('authx'), + 'suffixes' => \Civi\Api4\Utils\FormattingUtil::$pseudoConstantSuffixes, 'restUrl' => rtrim(CRM_Utils_System::url('civicrm/ajax/api4/CRMAPI4ENTITY/CRMAPI4ACTION', NULL, TRUE, NULL, FALSE, TRUE), '/'), ]; Civi::resources() diff --git a/civicrm/CRM/Badge/Page/Layout.php b/civicrm/CRM/Badge/Page/Layout.php index 6fb0068d52..d0f31935e5 100644 --- a/civicrm/CRM/Badge/Page/Layout.php +++ b/civicrm/CRM/Badge/Page/Layout.php @@ -51,22 +51,26 @@ class CRM_Badge_Page_Layout extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/badgelayout', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit Badge Layout'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Badge Layout'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Badge Layout'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/badgelayout', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Badge Layout'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/Campaign/BAO/Campaign.php b/civicrm/CRM/Campaign/BAO/Campaign.php index 44de734813..b8d6b1c4c6 100644 --- a/civicrm/CRM/Campaign/BAO/Campaign.php +++ b/civicrm/CRM/Campaign/BAO/Campaign.php @@ -370,7 +370,7 @@ INNER JOIN civicrm_option_group grp ON ( campaign_type.option_group_id = grp.id if (array_key_exists('is_active', $params)) { $active = "( campaign.is_active = 1 )"; if (!empty($params['is_active'])) { - $active = "( campaign.is_active = 0 OR campaign.is_active IS NULL )"; + $active = "campaign.is_active = 0"; } $where[] = $active; } diff --git a/civicrm/CRM/Campaign/BAO/Query.php b/civicrm/CRM/Campaign/BAO/Query.php index 50fb3e5890..cde52e3172 100644 --- a/civicrm/CRM/Campaign/BAO/Query.php +++ b/civicrm/CRM/Campaign/BAO/Query.php @@ -176,7 +176,7 @@ class CRM_Campaign_BAO_Query { case 'campaign_search_voter_for': if (in_array($value, ['release', 'interview'])) { - $query->_where[$grouping][] = '(civicrm_activity.is_deleted = 0 OR civicrm_activity.is_deleted IS NULL)'; + $query->_where[$grouping][] = 'civicrm_activity.is_deleted = 0'; } return; @@ -468,13 +468,21 @@ INNER JOIN civicrm_custom_group grp on fld.custom_group_id = grp.id if ($searchVoterFor == 'reserve') { $operator = 'NOT IN'; //filter out recontact survey contacts. - $recontactInterval = CRM_Core_DAO::getFieldValue('CRM_Campaign_DAO_Survey', - $surveyId, 'recontact_interval' + $optionGroupId = CRM_Core_DAO::getFieldValue('CRM_Campaign_DAO_Survey', + $surveyId, 'result_id' ); - $recontactInterval = CRM_Utils_String::unserialize($recontactInterval); + if ($optionGroupId) { + // Lookup intervals which are stored in option_value.filter column. + // FIXME: Keyed by label because civicrm_activity.result unfortunately stores the option_value.label! + $recontactInterval = \Civi\Api4\OptionValue::get(FALSE) + ->addSelect('label', 'filter') + ->addWhere('option_group_id', '=', $optionGroupId) + ->execute() + ->indexBy('label')->column('filter'); + } if ($surveyId && - is_array($recontactInterval) && - !empty($recontactInterval) + !empty($recontactInterval) && + is_array($recontactInterval) ) { $voterIds = []; foreach ($voterActValues as $values) { diff --git a/civicrm/CRM/Campaign/BAO/Survey.php b/civicrm/CRM/Campaign/BAO/Survey.php index b81761be8a..5f9ee27493 100644 --- a/civicrm/CRM/Campaign/BAO/Survey.php +++ b/civicrm/CRM/Campaign/BAO/Survey.php @@ -503,7 +503,7 @@ INNER JOIN civicrm_activity_contact activityTarget INNER JOIN civicrm_activity_contact activityAssignment ON ( activityAssignment.activity_id = activity.id AND activityAssignment.record_type_id = $assigneeID ) WHERE activity.source_record_id = %1 - AND ( activity.is_deleted IS NULL OR activity.is_deleted = 0 ) "; + AND activity.is_deleted = 0 "; if (!empty($interviewerId)) { $query .= "AND activityAssignment.contact_id = %2 "; $params[2] = [$interviewerId, 'Integer']; @@ -598,7 +598,7 @@ INNER JOIN civicrm_activity_contact activityAssignment INNER JOIN civicrm_contact contact_a ON ( activityTarget.contact_id = contact_a.id ) WHERE activity.source_record_id = %1 AND activity.activity_type_id = %2 - AND ( activity.is_deleted IS NULL OR activity.is_deleted = 0 ) + AND activity.is_deleted = 0 $whereClause"; $params = [ diff --git a/civicrm/CRM/Campaign/DAO/CampaignGroup.php b/civicrm/CRM/Campaign/DAO/CampaignGroup.php index a5482ebce1..ba4bb2bb62 100644 --- a/civicrm/CRM/Campaign/DAO/CampaignGroup.php +++ b/civicrm/CRM/Campaign/DAO/CampaignGroup.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Campaign/CampaignGroup.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:5d72f04bf39ff20651ca6e1f59a3fd26) + * (GenCodeChecksum:a33ba39795de9f821cfb90cbe83db039) */ /** @@ -167,7 +167,7 @@ class CRM_Campaign_DAO_CampaignGroup extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.3', ], diff --git a/civicrm/CRM/Campaign/DAO/Survey.php b/civicrm/CRM/Campaign/DAO/Survey.php index 7acaf692e8..cbf590c943 100644 --- a/civicrm/CRM/Campaign/DAO/Survey.php +++ b/civicrm/CRM/Campaign/DAO/Survey.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Campaign/Survey.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:79c05054f18c94059ec35314ea6bbef6) + * (GenCodeChecksum:754f9a2e62e86ff340afea563b561dec) */ /** @@ -81,15 +81,6 @@ class CRM_Campaign_DAO_Survey extends CRM_Core_DAO { */ public $activity_type_id; - /** - * Recontact intervals for each status. - * - * @var string|null - * (SQL type: text) - * Note that values will be retrieved from the database as a string. - */ - public $recontact_interval; - /** * Script instructions for volunteers to use for the survey. * @@ -343,7 +334,7 @@ class CRM_Campaign_DAO_Survey extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.3', ], @@ -375,29 +366,6 @@ class CRM_Campaign_DAO_Survey extends CRM_Core_DAO { ], 'add' => '3.3', ], - 'recontact_interval' => [ - 'name' => 'recontact_interval', - 'type' => CRM_Utils_Type::T_TEXT, - 'title' => ts('Follow up Interval'), - 'description' => ts('Recontact intervals for each status.'), - 'rows' => 20, - 'cols' => 80, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_survey.recontact_interval', - 'table_name' => 'civicrm_survey', - 'entity' => 'Survey', - 'bao' => 'CRM_Campaign_BAO_Survey', - 'localizable' => 0, - 'html' => [ - 'type' => 'TextArea', - ], - 'add' => '3.3', - ], 'instructions' => [ 'name' => 'instructions', 'type' => CRM_Utils_Type::T_TEXT, diff --git a/civicrm/CRM/Campaign/Form/Petition/Signature.php b/civicrm/CRM/Campaign/Form/Petition/Signature.php index 2c13088366..aed16cd246 100644 --- a/civicrm/CRM/Campaign/Form/Petition/Signature.php +++ b/civicrm/CRM/Campaign/Form/Petition/Signature.php @@ -116,6 +116,13 @@ class CRM_Campaign_Form_Petition_Signature extends CRM_Core_Form { protected $_image_URL; + /** + * Prevent double clicks from creating duplicate or blank records. + * + * @var bool + */ + public $submitOnce = TRUE; + /** */ public function __construct() { diff --git a/civicrm/CRM/Campaign/Form/Survey/Main.php b/civicrm/CRM/Campaign/Form/Survey/Main.php index 72fc38c7c1..2aca9a250b 100644 --- a/civicrm/CRM/Campaign/Form/Survey/Main.php +++ b/civicrm/CRM/Campaign/Form/Survey/Main.php @@ -83,18 +83,6 @@ class CRM_Campaign_Form_Survey_Main extends CRM_Campaign_Form_Survey { $defaults = $this->_values; - if ($this->_surveyId) { - - if (!empty($defaults['result_id']) && !empty($defaults['recontact_interval'])) { - - $resultId = $defaults['result_id']; - $recontactInterval = CRM_Utils_String::unserialize($defaults['recontact_interval']); - - unset($defaults['recontact_interval']); - $defaults['option_group_id'] = $resultId; - } - } - if (!isset($defaults['is_active'])) { $defaults['is_active'] = 1; } diff --git a/civicrm/CRM/Campaign/Form/Survey/Results.php b/civicrm/CRM/Campaign/Form/Survey/Results.php index c7054f570f..27121645e8 100644 --- a/civicrm/CRM/Campaign/Form/Survey/Results.php +++ b/civicrm/CRM/Campaign/Form/Survey/Results.php @@ -343,7 +343,6 @@ class CRM_Campaign_Form_Survey_Results extends CRM_Campaign_Form_Survey { $resultSetOptGrpId = $params['option_group_id']; } - $recontactInterval = []; if ($updateResultSet) { $optionValue = new CRM_Core_DAO_OptionValue(); $optionValue->option_group_id = $resultSetOptGrpId; @@ -372,6 +371,7 @@ class CRM_Campaign_Form_Survey_Results extends CRM_Campaign_Form_Survey { $optionValue->value = trim($v); $optionValue->weight = $params['option_weight'][$k]; $optionValue->is_active = 1; + $optionValue->filter = $params['option_interval'][$k]; if (!empty($params['default_option']) && $params['default_option'] == $k @@ -381,14 +381,9 @@ class CRM_Campaign_Form_Survey_Results extends CRM_Campaign_Form_Survey { $optionValue->save(); - // using is_numeric since 0 is a valid value for option_interval - if (is_numeric($params['option_interval'][$k])) { - $recontactInterval[$optionValue->label] = $params['option_interval'][$k]; - } } } - $params['recontact_interval'] = serialize($recontactInterval); $survey = CRM_Campaign_BAO_Survey::create($params); // create report if required. @@ -397,7 +392,7 @@ class CRM_Campaign_Form_Survey_Results extends CRM_Campaign_Form_Survey { $activityStatus = array_flip($activityStatus); $this->_params = [ 'name' => "survey_{$survey->id}", - 'title' => $params['report_title'] ? $params['report_title'] : $this->_values['title'], + 'title' => $params['report_title'] ?: $this->_values['title'], 'status_id_op' => 'eq', // reserved status 'status_id_value' => $activityStatus['Scheduled'], diff --git a/civicrm/CRM/Campaign/Form/Survey/TabHeader.php b/civicrm/CRM/Campaign/Form/Survey/TabHeader.php index e7bfd2fa56..2856c09a3e 100644 --- a/civicrm/CRM/Campaign/Form/Survey/TabHeader.php +++ b/civicrm/CRM/Campaign/Form/Survey/TabHeader.php @@ -137,7 +137,7 @@ class CRM_Campaign_Form_Survey_TabHeader { } } - $current = $current ? $current : 'main'; + $current = $current ?: 'main'; return $current; } @@ -166,7 +166,7 @@ class CRM_Campaign_Form_Survey_TabHeader { } } - $next = $next ? $next : 'main'; + $next = $next ?: 'main'; return $next; } diff --git a/civicrm/CRM/Campaign/Page/AJAX.php b/civicrm/CRM/Campaign/Page/AJAX.php index fc667ded8b..f5e857c2d3 100644 --- a/civicrm/CRM/Campaign/Page/AJAX.php +++ b/civicrm/CRM/Campaign/Page/AJAX.php @@ -91,27 +91,14 @@ class CRM_Campaign_Page_AJAX { $id = CRM_Utils_Request::retrieve('option_group_id', 'Integer', CRM_Core_DAO::$_nullObject, FALSE, NULL, 'POST'); $status = 'fail'; - $opValues = []; if ($id) { - $groupParams['id'] = $id; - CRM_Core_OptionValue::getValues($groupParams, $opValues); - } - - $surveyId = CRM_Utils_Request::retrieve('survey_id', 'Integer', CRM_Core_DAO::$_nullObject, FALSE, NULL, 'POST'); - if ($surveyId) { - $survey = new CRM_Campaign_DAO_Survey(); - $survey->id = $surveyId; - $survey->result_id = $id; - if ($survey->find(TRUE)) { - if ($survey->recontact_interval) { - $recontactInterval = CRM_Utils_String::unserialize($survey->recontact_interval); - foreach ($opValues as $opValId => $opVal) { - if (is_numeric($recontactInterval[$opVal['label']])) { - $opValues[$opValId]['interval'] = $recontactInterval[$opVal['label']]; - } - } - } + $opValues = \Civi\Api4\OptionValue::get(FALSE) + ->addWhere('option_group_id', '=', $id) + ->addOrderBy('weight') + ->execute()->indexBy('id'); + foreach ($opValues as $id => $value) { + $opValues[$id]['interval'] = $value['filter']; } } diff --git a/civicrm/CRM/Case/BAO/Case.php b/civicrm/CRM/Case/BAO/Case.php index 00aad654ae..aaa7fab22b 100644 --- a/civicrm/CRM/Case/BAO/Case.php +++ b/civicrm/CRM/Case/BAO/Case.php @@ -1902,7 +1902,7 @@ HERESQL; $whereClause = "mainCase.id = %2"; if ($excludeDeleted) { - $whereClause .= " AND ( relAct.is_deleted = 0 OR relAct.is_deleted IS NULL )"; + $whereClause .= " AND relAct.is_deleted = 0"; } $query = " @@ -1945,7 +1945,7 @@ HERESQL; $whereClause = 'relCase.id IN ( ' . implode(',', $relatedCaseIds) . ' )'; if ($excludeDeleted) { - $whereClause .= " AND ( relCase.is_deleted = 0 OR relCase.is_deleted IS NULL )"; + $whereClause .= " AND relCase.is_deleted = 0"; } //filter for permissioned cases. diff --git a/civicrm/CRM/Case/DAO/Case.php b/civicrm/CRM/Case/DAO/Case.php index 70afd42bae..08d048818b 100644 --- a/civicrm/CRM/Case/DAO/Case.php +++ b/civicrm/CRM/Case/DAO/Case.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Case/Case.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:64f4fa789f0b49013001698acf6c7463) + * (GenCodeChecksum:83be6db09d4f5220f74ccc72149dcab6) */ /** @@ -357,6 +357,7 @@ class CRM_Case_DAO_Case extends CRM_Core_DAO { 'localizable' => 0, 'html' => [ 'type' => 'Select', + 'controlField' => 'case_type_id', ], 'pseudoconstant' => [ 'optionGroupName' => 'case_status', diff --git a/civicrm/CRM/Case/Form/DeleteClient.php b/civicrm/CRM/Case/Form/DeleteClient.php new file mode 100644 index 0000000000..c7614416ea --- /dev/null +++ b/civicrm/CRM/Case/Form/DeleteClient.php @@ -0,0 +1,130 @@ +<?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 | + +--------------------------------------------------------------------+ + */ +use Civi\Api4\CaseContact; + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + +/** + * This class assigns the current case to another client. + */ +class CRM_Case_Form_DeleteClient extends CRM_Core_Form { + + /** + * case ID + * @var int + */ + protected $id; + + /** + * Client ID + * @var int + */ + protected $cid; + + /** + * Return ContactId + * @var int + */ + protected $returnContactId; + + /** + * Build all the data structures needed to build the form. + */ + public function preProcess() { + $this->cid = CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE); + $this->id = CRM_Utils_Request::retrieve('id', 'Positive', $this, TRUE); + $this->returnContactId = CRM_Utils_Request::retrieve('rcid', 'Positive', $this, TRUE); + $context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this); + + //get current client name. + $this->assign('currentClientName', CRM_Contact_BAO_Contact::displayName($this->cid)); + $this->assign('id', $this->id); + + //set the context. + $url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&force=1&cid={$this->cid}&selectedChild=case"); + if ($context == 'search') { + $qfKey = CRM_Utils_Request::retrieve('key', 'String', $this); + //validate the qfKey + $urlParams = 'force=1'; + if (CRM_Utils_Rule::qfKey($qfKey)) { + $urlParams .= "&qfKey=$qfKey"; + } + $url = CRM_Utils_System::url('civicrm/case/search', $urlParams); + } + elseif ($context == 'dashboard') { + $url = CRM_Utils_System::url('civicrm/case', 'reset=1'); + } + elseif (in_array($context, [ + 'dashlet', + 'dashletFullscreen', + ])) { + $url = CRM_Utils_System::url('civicrm/dashboard', 'reset=1'); + } + $session = CRM_Core_Session::singleton(); + $session->pushUserContext($url); + $caseContacts = CaseContact::get()->addWhere('case_id', '=', $this->id)->execute(); + if (count($caseContacts) === 1) { + CRM_Core_Error::statusBounce(ts('Cannot Remove Client from case as is the only client on the case'), $url); + } + } + + /** + * Build the form object. + */ + public function buildQuickForm() { + $this->add('hidden', 'id', $this->id); + $this->add('hidden', 'contact_id', $this->cid); + $this->addButtons([ + [ + 'type' => 'submit', + 'name' => ts('Remove Client from Case'), + ], + [ + 'type' => 'cancel', + 'name' => ts('Cancel'), + ], + ]); + + // This form may change the url structure so should not submit via ajax + $this->preventAjaxSubmit(); + } + + /** + * Process the form. + */ + public function postProcess() { + $params = $this->controller->exportValues($this->_name); + civicrm_api3('CaseContact', 'get', [ + 'case_id' => $params['id'], + 'contact_id' => $params['contact_id'], + 'api.case_contact.delete' => ['id' => "\$value.id"], + ]); + civicrm_api3('Activity', 'create', [ + 'activity_type_id' => 'Case Client Removed', + 'subject' => ts('Case Client Removed'), + 'source_contact_id' => CRM_Core_Session::getLoggedInContactID(), + 'case_id' => $params['id'], + 'target_contact_id' => $params['contact_id'], + ]); + + // user context + $url = CRM_Utils_System::url('civicrm/contact/view/case', + "reset=1&action=view&cid={$this->returnContactId}&id={$params['id']}&show=1" + ); + CRM_Utils_System::redirect($url); + + } + +} diff --git a/civicrm/CRM/Case/Info.php b/civicrm/CRM/Case/Info.php index 5269af7a2d..bd4037ceff 100644 --- a/civicrm/CRM/Case/Info.php +++ b/civicrm/CRM/Case/Info.php @@ -51,20 +51,6 @@ class CRM_Case_Info extends CRM_Core_Component_Info { return $result; } - /** - * @inheritDoc - * @return array - * @throws CRM_Core_Exception - */ - public function getManagedEntities() { - $entities = array_merge( - CRM_Case_ManagedEntities::createManagedCaseTypes(), - CRM_Case_ManagedEntities::createManagedActivityTypes(CRM_Case_XMLRepository::singleton(), CRM_Core_ManagedEntities::singleton()), - CRM_Case_ManagedEntities::createManagedRelationshipTypes(CRM_Case_XMLRepository::singleton(), CRM_Core_ManagedEntities::singleton()) - ); - return $entities; - } - /** * @inheritDoc * @param bool $getAllUnconditionally diff --git a/civicrm/CRM/Case/xml/Menu/Case.xml b/civicrm/CRM/Case/xml/Menu/Case.xml index 91348e1c9a..28d716afa6 100644 --- a/civicrm/CRM/Case/xml/Menu/Case.xml +++ b/civicrm/CRM/Case/xml/Menu/Case.xml @@ -141,4 +141,9 @@ <title>Email</title> <page_callback>CRM_Case_Form_Task_Email</page_callback> </item> + <item> + <path>civicrm/contact/view/case/deleteClient</path> + <title>Remove Client</title> + <page_callback>CRM_Case_Form_DeleteClient</page_callback> + </item> </menu> diff --git a/civicrm/CRM/Contact/ActionMapping.php b/civicrm/CRM/Contact/ActionMapping.php index 281da12a2f..ca2788fada 100644 --- a/civicrm/CRM/Contact/ActionMapping.php +++ b/civicrm/CRM/Contact/ActionMapping.php @@ -28,12 +28,22 @@ class CRM_Contact_ActionMapping extends \Civi\ActionSchedule\MappingBase { return self::CONTACT_MAPPING_ID; } + public function getName(): string { + return 'contact'; + } + public function getEntityName(): string { return 'Contact'; } - public function getValueHeader(): string { - return ts('Date Field'); + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + $spec->getFieldByName('entity_value') + ->setLabel(ts('Date Field')) + ->setInputAttr('multiple', FALSE); + $spec->getFieldByName('entity_status') + ->setLabel(ts('Annual Options')) + ->setInputAttr('multiple', FALSE) + ->setRequired(TRUE); } public function getValueLabels(): array { @@ -51,15 +61,11 @@ class CRM_Contact_ActionMapping extends \Civi\ActionSchedule\MappingBase { return $dateFields; } - public function getStatusHeader(): string { - return ts('Annual Options'); - } - - public function getStatusLabels($value): array { + public function getStatusLabels(?array $entityValue): array { return CRM_Core_OptionGroup::values('contact_date_reminder_options'); } - public function getDateFields(): array { + public function getDateFields(?array $entityValue = NULL): array { return [ 'date_field' => ts('Date Field'), ]; @@ -71,30 +77,6 @@ class CRM_Contact_ActionMapping extends \Civi\ActionSchedule\MappingBase { 'modified_date', ]; - /** - * Determine whether a schedule based on this mapping is sufficiently - * complete. - * - * @param \CRM_Core_DAO_ActionSchedule $schedule - * @return array - * Array (string $code => string $message). - * List of error messages. - */ - public function validateSchedule($schedule): array { - $errors = []; - if (CRM_Utils_System::isNull($schedule->entity_value) || $schedule->entity_value === '0') { - $errors['entity'] = ts('Please select a specific date field.'); - } - elseif (count(CRM_Utils_Array::explodePadded($schedule->entity_value)) > 1) { - $errors['entity'] = ts('You may only select one contact field per reminder'); - } - elseif (CRM_Utils_System::isNull($schedule->entity_status) || $schedule->entity_status === '0') { - $errors['entity'] = ts('Please select whether the reminder is sent each year.'); - } - - return $errors; - } - /** * Generate a query to locate recipients who match the given * schedule. @@ -113,14 +95,14 @@ class CRM_Contact_ActionMapping extends \Civi\ActionSchedule\MappingBase { $selectedValues = (array) \CRM_Utils_Array::explodePadded($schedule->entity_value); $selectedStatuses = (array) \CRM_Utils_Array::explodePadded($schedule->entity_status); - // FIXME: This assumes that $values only has one field, but UI shows multiselect. - // Properly supporting multiselect would require total rewrite of this function. + // Only one value is allowed for this mapping type. + // The form and API both enforce this, so this error should never happen. if (count($selectedValues) != 1 || !isset($selectedValues[0])) { throw new \CRM_Core_Exception("Error: Scheduled reminders may only have one contact field."); } elseif (in_array($selectedValues[0], $this->contactDateFields)) { $dateDBField = $selectedValues[0]; - $query = \CRM_Utils_SQL_Select::from("{$this->getEntityTable()} e")->param($defaultParams); + $query = \CRM_Utils_SQL_Select::from('civicrm_contact e')->param($defaultParams); $query->param([ 'casAddlCheckFrom' => 'civicrm_contact e', 'casContactIdField' => 'e.id', diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php index f1de7ae4a0..def5241622 100644 --- a/civicrm/CRM/Contact/BAO/Contact.php +++ b/civicrm/CRM/Contact/BAO/Contact.php @@ -1136,7 +1136,7 @@ WHERE civicrm_contact.id = " . CRM_Utils_Type::escape($id, 'Integer'); // retrieve contact id in case of Profile context $id = CRM_Utils_Request::retrieve('id', 'Positive'); $formName = $pcp ? 'CRM_PCP_Form_PCPAccount' : ($cid ? 'CRM_Contact_Form_Contact' : 'CRM_Profile_Form_Edit'); - $cid = $cid ? $cid : $id; + $cid = $cid ?: $id; if ($action & CRM_Core_Action::DELETE) { if (CRM_Utils_Request::retrieve('confirmed', 'Boolean')) { // $controller is not used at all but we need the CRM_Core_Controller object as in it's constructor diff --git a/civicrm/CRM/Contact/BAO/Contact/Utils.php b/civicrm/CRM/Contact/BAO/Contact/Utils.php index 7e151c35e2..2b972e77f3 100644 --- a/civicrm/CRM/Contact/BAO/Contact/Utils.php +++ b/civicrm/CRM/Contact/BAO/Contact/Utils.php @@ -148,12 +148,12 @@ WHERE id IN ( $idString ) } if (!$hash) { - if ($entityType == 'contact') { + if ($entityType === 'contact') { $hash = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $entityId, 'hash' ); } - elseif ($entityType == 'mailing') { + elseif ($entityType === 'mailing') { $hash = CRM_Core_DAO::getFieldValue('CRM_Mailing_DAO_Mailing', $entityId, 'hash' ); diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php index 17bedf4a4d..e39077b4db 100644 --- a/civicrm/CRM/Contact/BAO/Group.php +++ b/civicrm/CRM/Contact/BAO/Group.php @@ -315,9 +315,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { public function addSelectWhereClause() { $clauses = []; if (!CRM_Core_Permission::check([['edit all contacts', 'view all contacts']])) { - $allGroups = CRM_Core_PseudoConstant::allGroup(NULL, FALSE); - $allowedGroups = \CRM_ACL_API::group(CRM_ACL_API::VIEW, NULL, 'civicrm_group', $allGroups); - $groupsIn = $allowedGroups ? implode(',', $allowedGroups) : '0'; + $allowedGroups = CRM_Core_Permission::group(NULL, FALSE); + $groupsIn = $allowedGroups ? implode(',', array_keys($allowedGroups)) : '0'; $clauses['id'][] = "IN ($groupsIn)"; } CRM_Utils_Hook::selectWhereClause($this, $clauses); @@ -631,17 +630,10 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { */ protected static function flushCaches() { CRM_Utils_System::flushCache(); - $staticCaches = [ - 'CRM_Core_PseudoConstant' => 'groups', - 'CRM_ACL_API' => 'group_permission', - 'CRM_ACL_BAO_ACL' => 'permissioned_groups', - 'CRM_Contact_BAO_Group' => 'permission_clause', - ]; - foreach ($staticCaches as $class => $key) { - if (isset(Civi::$statics[$class][$key])) { - unset(Civi::$statics[$class][$key]); - } - } + unset(Civi::$statics['CRM_Core_PseudoConstant']['groups']); + unset(Civi::$statics['CRM_ACL_API']); + unset(Civi::$statics['CRM_ACL_BAO_ACL']['permissioned_groups']); + unset(Civi::$statics['CRM_Contact_BAO_Group']['permission_clause']); } /** @@ -1025,6 +1017,12 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { // CRM-16905 - Sort by count cannot be done with sql if (!empty($params['sort']) && strpos($params['sort'], 'count') === 0) { usort($values, function($a, $b) { + if ($a['count'] === 'unknown') { + return -1; + } + if ($b['count'] === 'unknown') { + return 1; + } return $a['count'] - $b['count']; }); if (strpos($params['sort'], 'desc')) { diff --git a/civicrm/CRM/Contact/BAO/GroupContactCache.php b/civicrm/CRM/Contact/BAO/GroupContactCache.php index f29a782746..8d30ca73c5 100644 --- a/civicrm/CRM/Contact/BAO/GroupContactCache.php +++ b/civicrm/CRM/Contact/BAO/GroupContactCache.php @@ -82,7 +82,7 @@ AND ( )"; if (!$includeHiddenGroups) { - $query .= "AND (g.is_hidden = 0 OR g.is_hidden IS NULL)"; + $query .= "AND g.is_hidden = 0"; } if (!empty($groupIDClause)) { @@ -431,7 +431,7 @@ SELECT gc.group_id, gc.contact_id, g.title, g.children, g.description FROM civicrm_group_contact_cache gc INNER JOIN civicrm_group g ON g.id = gc.group_id WHERE gc.contact_id = $contactID - AND (g.is_hidden = 0 OR g.is_hidden IS NULL) + AND g.is_hidden = 0 ORDER BY gc.contact_id, g.children "; diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index 98d891c5e7..8642c163bc 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -1579,11 +1579,7 @@ class CRM_Contact_BAO_Query { * 4 => null * ); * - * There are some examples of the syntax in - * https://github.com/civicrm/civicrm-core/tree/master/api/v3/examples/Relationship - * * More notes at CRM_Core_DAO::createSQLFilter - * * and a list of supported operators in CRM_Core_DAO * * @param array $formValues @@ -6137,7 +6133,6 @@ AND displayRelType.is_active = 1 if (!empty($value['table'])) { $regex = "/({$value['table']}\.|{$name})/"; if (preg_match($regex, $sort)) { - $this->_elemnt[$value['element']] = 1; $this->_select[$value['element']] = $value['select']; $this->_pseudoConstantsSelect[$name]['sorting'] = 1; $present[$value['table']] = $value['join']; diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php index eb45476e86..6405520474 100644 --- a/civicrm/CRM/Contact/BAO/Relationship.php +++ b/civicrm/CRM/Contact/BAO/Relationship.php @@ -2040,7 +2040,7 @@ AND cc.sort_name LIKE '%$name%'"; */ public static function isCurrentEmployerNeedingToBeCleared($params, $relationshipId, $updatedRelTypeID = NULL) { $existingTypeID = (int) CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Relationship', $relationshipId, 'relationship_type_id'); - $updatedRelTypeID = $updatedRelTypeID ? $updatedRelTypeID : $existingTypeID; + $updatedRelTypeID = $updatedRelTypeID ?: $existingTypeID; $currentEmployerID = (int) civicrm_api3('Contact', 'getvalue', ['return' => 'current_employer_id', 'id' => $params['contact_id_a']]); if ($currentEmployerID !== (int) $params['contact_id_b'] || !self::isRelationshipTypeCurrentEmployer($existingTypeID)) { @@ -2274,4 +2274,25 @@ SELECT count(*) } } + /** + * @param string $entityName + * @param string $action + * @param array $record + * @param int $userID + * @return bool + * @see CRM_Core_DAO::checkAccess + */ + public static function _checkAccess(string $entityName, string $action, array $record, int $userID): bool { + // Delegate relationship permissions to contacts a & b + foreach (['a', 'b'] as $ab) { + if (empty($record["contact_id_$ab"]) && !empty($record['id'])) { + $record["contact_id_$ab"] = CRM_Core_DAO::getFieldValue(__CLASS__, $record['id'], "contact_id_$ab"); + } + if (!\Civi\Api4\Utils\CoreUtil::checkAccessDelegated('Contact', 'update', ['id' => $record["contact_id_$ab"]], $userID)) { + return FALSE; + } + } + return TRUE; + } + } diff --git a/civicrm/CRM/Contact/DAO/Contact.php b/civicrm/CRM/Contact/DAO/Contact.php index e4794d7b5f..edae63298b 100644 --- a/civicrm/CRM/Contact/DAO/Contact.php +++ b/civicrm/CRM/Contact/DAO/Contact.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/Contact.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:7cbc554ead9281e6c0ce8b7865056777) + * (GenCodeChecksum:4066902548c1bc5ba4358b9e0195a3fa) */ /** @@ -728,6 +728,7 @@ class CRM_Contact_DAO_Contact extends CRM_Core_DAO { 'serialize' => self::SERIALIZE_SEPARATOR_BOOKEND, 'html' => [ 'type' => 'Select', + 'controlField' => 'contact_type', ], 'pseudoconstant' => [ 'table' => 'civicrm_contact_type', diff --git a/civicrm/CRM/Contact/DAO/Group.php b/civicrm/CRM/Contact/DAO/Group.php index 44f8d410e8..eaf99bed29 100644 --- a/civicrm/CRM/Contact/DAO/Group.php +++ b/civicrm/CRM/Contact/DAO/Group.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contact/Group.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:34853e01e303b4fe9111665cc7eb0fb5) + * (GenCodeChecksum:81bebe4ba76713e7fb6a39e7710634a4) */ /** @@ -641,7 +641,7 @@ class CRM_Contact_DAO_Group extends CRM_Core_DAO { 'keyColumn' => 'id', 'labelColumn' => 'title', 'nameColumn' => 'name', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '2.1', ], @@ -671,7 +671,7 @@ class CRM_Contact_DAO_Group extends CRM_Core_DAO { 'keyColumn' => 'id', 'labelColumn' => 'title', 'nameColumn' => 'name', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'readonly' => TRUE, 'add' => '2.1', diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php index 486bf3b7da..b1395a93c8 100644 --- a/civicrm/CRM/Contact/Form/Contact.php +++ b/civicrm/CRM/Contact/Form/Contact.php @@ -312,8 +312,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { // also keep the convention. $this->assign('contactId', $this->_contactId); - // location blocks. - CRM_Contact_Form_Location::preProcess($this); + $this->preProcessLocation(); // retain the multiple count custom fields value if (!empty($_POST['hidden_custom'])) { @@ -375,6 +374,28 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { $this->assign('paramSubType', $paramSubType ?? ''); } + private function preProcessLocation() { + $blockName = CRM_Utils_Request::retrieve('block', 'String'); + $additionalblockCount = CRM_Utils_Request::retrieve('count', 'Positive'); + + $this->assign('addBlock', FALSE); + if ($blockName && $additionalblockCount) { + $this->assign('addBlock', TRUE); + $this->assign('blockName', $blockName); + $this->assign('blockId', $additionalblockCount); + $this->set($blockName . '_Block_Count', $additionalblockCount); + } + + $this->assign('className', 'CRM_Contact_Form_Contact'); + + // get address sequence. + if (!$addressSequence = $this->get('addressSequence')) { + $addressSequence = CRM_Core_BAO_Address::addressSequence(); + $this->set('addressSequence', $addressSequence); + } + $this->assign('addressSequence', $addressSequence); + } + /** * Set default values for the form. * @@ -538,7 +559,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { */ public function addRules() { // skip adding formRules when custom data is build - if ($this->_addBlockName || ($this->_action & CRM_Core_Action::DELETE)) { + if ($this->isAjaxMode() || ($this->_action & CRM_Core_Action::DELETE)) { return; } @@ -558,6 +579,38 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { } } + /** + * Is the form being run in an ajax overload way. + * + * Overloading of existing forms to return ajax forms is an anti-pattern. We + * have removed it in some places (eg, the Payment_Form) & added separate paths. + * + * If someone does separate this out, care needs to be taken to ensure that fields added in the ajax mode + * are also added to the parent form, when separating them. ie it is important to check the + * ajax-loaded fields are in the forms values retrieved from quick form as + * quick form will filter out POST values that have not been added to the + * quick form object.. + * + * @return bool + */ + public function isAjaxMode(): bool { + return (bool) $this->getAjaxBlockName(); + } + + /** + * Get the name of any overload block being used. + * + * This would either be 'CustomData' or a location entity + * (Phone, Address, Email, etc). + * + * @return string + * @noinspection PhpDocMissingThrowsInspection + * @noinspection PhpUnhandledExceptionInspection + */ + public function getAjaxBlockName(): string { + return (string) (CRM_Utils_Request::retrieve('type', 'String') ? 'CustomData' : CRM_Utils_Request::retrieve('block', 'String')); + } + /** * Global validation rules for the form. * @@ -719,8 +772,8 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { */ public function buildQuickForm() { //load form for child blocks - if ($this->_addBlockName) { - $className = 'CRM_Contact_Form_Edit_' . $this->_addBlockName; + if ($this->isAjaxMode()) { + $className = 'CRM_Contact_Form_Edit_' . $this->getAjaxBlockName(); return $className::buildQuickForm($this); } @@ -798,7 +851,7 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { // build location blocks. CRM_Contact_Form_Edit_Lock::buildQuickForm($this); - CRM_Contact_Form_Location::buildQuickForm($this); + $this->buildLocationForm(); // add attachment $this->addField('image_URL', ['maxlength' => '255', 'label' => ts('Browse/Upload Image'), 'accept' => 'image/png, image/jpeg, image/gif']); @@ -862,6 +915,67 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { $this->addButtons($buttons); } + private function buildLocationForm(): void { + // required for subsequent AJAX requests. + $ajaxRequestBlocks = []; + $generateAjaxRequest = 0; + + //build 1 instance of all blocks, without using ajax ... + foreach ($this->_blocks as $blockName => $label) { + $name = strtolower($blockName); + + $instances = [1]; + if (!empty($_POST[$name]) && is_array($_POST[$name])) { + $instances = array_keys($_POST[$name]); + } + elseif (!empty($this->_values[$name]) && is_array($this->_values[$name])) { + $instances = array_keys($this->_values[$name]); + } + + foreach ($instances as $instance) { + if ($instance == 1) { + $this->assign('addBlock', FALSE); + $this->assign('blockId', $instance); + } + else { + //we are going to build other block instances w/ AJAX + $generateAjaxRequest++; + $ajaxRequestBlocks[$blockName][$instance] = TRUE; + } + switch ($blockName) { + case 'Email': + // setDefaults uses this to tell which instance + $this->set('Email_Block_Count', $instance); + CRM_Contact_Form_Edit_Email::buildQuickForm($this, $instance); + // Only display the signature fields if this contact has a CMS account + // because they can only send email if they have access to the CRM + $ufID = $this->_contactId && CRM_Core_BAO_UFMatch::getUFId($this->_contactId); + $this->assign('isAddSignatureFields', (bool) $ufID); + if ($ufID) { + $this->add('textarea', "email[$instance][signature_text]", ts('Signature (Text)'), + ['rows' => 2, 'cols' => 40] + ); + $this->add('wysiwyg', "email[$instance][signature_html]", ts('Signature (HTML)'), + ['rows' => 2, 'cols' => 40] + ); + } + break; + + default: + // @todo This pattern actually adds complexity compared to filling out a switch statement + // for the limited number of blocks - as we also have to receive the block count + $this->set($blockName . '_Block_Count', $instance); + $formName = 'CRM_Contact_Form_Edit_' . $blockName; + $formName::buildQuickForm($this); + } + } + } + + //assign to generate AJAX request for building extra blocks. + $this->assign('generateAjaxRequest', $generateAjaxRequest); + $this->assign('ajaxRequestBlocks', $ajaxRequestBlocks); + } + /** * Form submission of new/edit contact is processed. */ diff --git a/civicrm/CRM/Contact/Form/Domain.php b/civicrm/CRM/Contact/Form/Domain.php index 42121b0371..24d6bf693b 100644 --- a/civicrm/CRM/Contact/Form/Domain.php +++ b/civicrm/CRM/Contact/Form/Domain.php @@ -73,7 +73,6 @@ class CRM_Contact_Form_Domain extends CRM_Core_Form { $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'view' ); - CRM_Contact_Form_Location::preProcess($this); } /** @@ -121,6 +120,7 @@ class CRM_Contact_Form_Domain extends CRM_Core_Form { $this->addField('description', ['label' => ts('Description'), 'size' => 30]); //build location blocks. + $this->assign('addressSequence', CRM_Core_BAO_Address::addressSequence()); CRM_Contact_Form_Edit_Address::buildQuickForm($this, 1); CRM_Contact_Form_Edit_Email::buildQuickForm($this, 1); CRM_Contact_Form_Edit_Phone::buildQuickForm($this, 1); diff --git a/civicrm/CRM/Contact/Form/Edit/CustomData.php b/civicrm/CRM/Contact/Form/Edit/CustomData.php index 4e48301453..9593b39278 100644 --- a/civicrm/CRM/Contact/Form/Edit/CustomData.php +++ b/civicrm/CRM/Contact/Form/Edit/CustomData.php @@ -31,9 +31,8 @@ class CRM_Contact_Form_Edit_CustomData { $customDataType = CRM_Utils_Request::retrieve('type', 'String'); if ($customDataType) { - $form->_addBlockName = 'CustomData'; - $form->assign("addBlock", TRUE); - $form->assign("blockName", $form->_addBlockName); + $form->assign('addBlock', TRUE); + $form->assign('blockName', 'CustomData'); } CRM_Custom_Form_CustomData::preProcess($form, NULL, NULL, NULL, diff --git a/civicrm/CRM/Contact/Form/Location.php b/civicrm/CRM/Contact/Form/Location.php index 222cd29f9a..53bbd87d58 100644 --- a/civicrm/CRM/Contact/Form/Location.php +++ b/civicrm/CRM/Contact/Form/Location.php @@ -13,52 +13,19 @@ * * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing + * + * @deprecated in CiviCRM 5.66, will be removed around CiviCRM 5.76. */ class CRM_Contact_Form_Location { - /** - * Set variables up before form is built. - * - * @param CRM_Core_Form $form - */ - public static function preProcess($form) { - $form->_addBlockName = CRM_Utils_Request::retrieve('block', 'String'); - $additionalblockCount = CRM_Utils_Request::retrieve('count', 'Positive'); - - $form->assign('addBlock', FALSE); - if ($form->_addBlockName && $additionalblockCount) { - $form->assign('addBlock', TRUE); - $form->assign('blockName', $form->_addBlockName); - $form->assign('blockId', $additionalblockCount); - $form->set($form->_addBlockName . '_Block_Count', $additionalblockCount); - } - - if (is_a($form, 'CRM_Event_Form_ManageEvent_Location') - || is_a($form, 'CRM_Contact_Form_Domain')) { - $form->_blocks = [ - 'Address' => ts('Address'), - 'Email' => ts('Email'), - 'Phone' => ts('Phone'), - ]; - } - - $form->assign('blocks', $form->_blocks); - $form->assign('className', CRM_Utils_System::getClassName($form)); - - // get address sequence. - if (!$addressSequence = $form->get('addressSequence')) { - $addressSequence = CRM_Core_BAO_Address::addressSequence(); - $form->set('addressSequence', $addressSequence); - } - $form->assign('addressSequence', $addressSequence); - } - /** * Build the form object. * + * @deprecated in CiviCRM 5.66, will be removed around CiviCRM 5.76. * @param CRM_Core_Form $form */ public static function buildQuickForm(&$form) { + CRM_Core_Error::deprecatedFunctionWarning('internal core function, take a copy'); // required for subsequent AJAX requests. $ajaxRequestBlocks = []; $generateAjaxRequest = 0; diff --git a/civicrm/CRM/Contact/Form/Search/Builder.php b/civicrm/CRM/Contact/Form/Search/Builder.php index 2996b1f8d7..c65dc87d0c 100644 --- a/civicrm/CRM/Contact/Form/Search/Builder.php +++ b/civicrm/CRM/Contact/Form/Search/Builder.php @@ -917,12 +917,12 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search { $jsSet = TRUE; - if (CRM_Utils_Array::value($i, CRM_Utils_Array::value($x, $mappingOperator))) { - $defaults["operator[$x][$i]"] = $mappingOperator[$x][$i] ?? NULL; + if (!empty($mappingOperator[$x][$i])) { + $defaults["operator[$x][$i]"] = $mappingOperator[$x][$i]; } if (isset($mappingValue[$x][$i])) { - $defaults["value[$x][$i]"] = $mappingValue[$x][$i] ?? NULL; + $defaults["value[$x][$i]"] = $mappingValue[$x][$i]; } } } diff --git a/civicrm/CRM/Contact/Form/Task/EmailTrait.php b/civicrm/CRM/Contact/Form/Task/EmailTrait.php index 04a1b7bd57..1755bbc232 100644 --- a/civicrm/CRM/Contact/Form/Task/EmailTrait.php +++ b/civicrm/CRM/Contact/Form/Task/EmailTrait.php @@ -838,7 +838,7 @@ trait CRM_Contact_Form_Task_EmailTrait { $details = "-ALTERNATIVE ITEM 0-\n{$html}{$additionalDetails}\n-ALTERNATIVE ITEM 1-\n{$text}{$additionalDetails}\n-ALTERNATIVE END-\n"; } else { - $details = $html ? $html : $text; + $details = $html ?: $text; $details .= $additionalDetails; } diff --git a/civicrm/CRM/Contact/Form/Task/SaveSearch.php b/civicrm/CRM/Contact/Form/Task/SaveSearch.php index 8901ee49a4..0014e03479 100644 --- a/civicrm/CRM/Contact/Form/Task/SaveSearch.php +++ b/civicrm/CRM/Contact/Form/Task/SaveSearch.php @@ -54,6 +54,9 @@ class CRM_Contact_Form_Task_SaveSearch extends CRM_Contact_Form_Task { $modeValue = CRM_Contact_Form_Search::getModeValue(CRM_Utils_Array::value('component_mode', $values, CRM_Contact_BAO_Query::MODE_CONTACTS)); $className = $modeValue['taskClassName']; $this->_task = $values['task'] ?? NULL; + + // Add group custom data + CRM_Custom_Form_CustomData::preProcess($this, NULL, NULL, 1, 'Group'); } /** @@ -105,6 +108,9 @@ class CRM_Contact_Form_Task_SaveSearch extends CRM_Contact_Form_Task { CRM_Group_Form_Edit::buildParentGroups($this); CRM_Group_Form_Edit::buildGroupOrganizations($this); + // Build custom data + CRM_Custom_Form_CustomData::buildQuickForm($this); + // get the group id for the saved search $groupID = NULL; if (isset($this->_id)) { @@ -210,6 +216,8 @@ class CRM_Contact_Form_Task_SaveSearch extends CRM_Contact_Form_Task { $params['id'] = CRM_Contact_BAO_SavedSearch::getName($this->_id, 'id'); } + $params['custom'] = CRM_Core_BAO_CustomField::postProcess($formValues, $this->_id, 'Group'); + $group = CRM_Contact_BAO_Group::create($params); // Update mapping with the name and description of the group. @@ -242,6 +250,7 @@ class CRM_Contact_Form_Task_SaveSearch extends CRM_Contact_Form_Task { if (empty($defaults['parents'])) { $defaults['parents'] = CRM_Core_BAO_Domain::getGroupId(); } + $defaults += CRM_Custom_Form_CustomData::setDefaultValues($this); return $defaults; } diff --git a/civicrm/CRM/Contact/Page/View/Note.php b/civicrm/CRM/Contact/Page/View/Note.php index ae4a351488..8375a27606 100644 --- a/civicrm/CRM/Contact/Page/View/Note.php +++ b/civicrm/CRM/Contact/Page/View/Note.php @@ -50,10 +50,10 @@ class CRM_Contact_Page_View_Note extends CRM_Core_Page { /** * called when action is browse. */ - public function browse() { + public function browse(): void { $note = new CRM_Core_DAO_Note(); $note->entity_table = 'civicrm_contact'; - $note->entity_id = $this->_contactId; + $note->entity_id = $this->getContactID(); $note->orderBy('modified_date desc'); @@ -80,7 +80,7 @@ class CRM_Contact_Page_View_Note extends CRM_Core_Page { $action, [ 'id' => $note->id, - 'cid' => $this->_contactId, + 'cid' => $this->getContactID(), ], ts('more'), FALSE, @@ -123,7 +123,7 @@ class CRM_Contact_Page_View_Note extends CRM_Core_Page { ); $this->assign('commentAction', $commentAction); - $this->ajaxResponse['tabCount'] = CRM_Contact_BAO_Contact::getCountComponent('note', $this->_contactId); + $this->ajaxResponse['tabCount'] = CRM_Contact_BAO_Contact::getCountComponent('note', $this->getContactID()); } /** @@ -135,8 +135,9 @@ class CRM_Contact_Page_View_Note extends CRM_Core_Page { // set the userContext stack $session = CRM_Core_Session::singleton(); + $contactID = $this->getContactID(); $url = CRM_Utils_System::url('civicrm/contact/view', - 'action=browse&selectedChild=note&cid=' . $this->_contactId + 'action=browse&selectedChild=note&cid=' . $contactID ); $session->pushUserContext($url); @@ -250,6 +251,7 @@ class CRM_Contact_Page_View_Note extends CRM_Core_Page { 'url' => 'civicrm/contact/view/note', 'qs' => 'action=add&reset=1&cid=%%cid%%&parentId=%%id%%&selectedChild=note', 'title' => ts('Add Comment'), + 'weight' => -5, ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), @@ -266,7 +268,7 @@ class CRM_Contact_Page_View_Note extends CRM_Core_Page { * * @return array[] */ - public static function commentLinks() { + public static function commentLinks(): array { return [ CRM_Core_Action::VIEW => [ 'name' => ts('View'), @@ -292,4 +294,18 @@ class CRM_Contact_Page_View_Note extends CRM_Core_Page { ]; } + /** + * Get the relevant contact ID. + * + * @api supported to be accessed from outside of core. + * + * @return int + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocMissingThrowsInspection + */ + public function getContactID(): int { + return (int) CRM_Utils_Request::retrieve('cid', 'Positive', $this, TRUE); + } + } diff --git a/civicrm/CRM/Contact/Page/View/Summary.php b/civicrm/CRM/Contact/Page/View/Summary.php index 170ad5692a..585bf193fc 100644 --- a/civicrm/CRM/Contact/Page/View/Summary.php +++ b/civicrm/CRM/Contact/Page/View/Summary.php @@ -140,6 +140,8 @@ class CRM_Contact_Page_View_Summary extends CRM_Contact_Page_View { 'email_greeting_custom' => '', 'addressee_custom' => '', 'communication_style_display' => '', + 'email_greeting_display' => '', + 'postal_greeting_display' => '', // for Demographics.tpl 'age' => ['y' => '', 'm' => ''], 'birth_date' => '', diff --git a/civicrm/CRM/Contact/Tokens.php b/civicrm/CRM/Contact/Tokens.php index 97d87b2d93..232f8661a1 100644 --- a/civicrm/CRM/Contact/Tokens.php +++ b/civicrm/CRM/Contact/Tokens.php @@ -641,6 +641,7 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens { 'type' => 'calculated', 'options' => NULL, 'data_type' => 'String', + 'input_type' => NULL, 'audience' => 'user', ], 'employer_id.display_name' => [ @@ -659,6 +660,7 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens { 'api_v3' => 'world_region', 'options' => NULL, 'data_type' => 'String', + 'input_type' => 'Text', 'advertised_name' => 'world_region', 'audience' => 'user', ], @@ -669,6 +671,7 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens { 'type' => 'Field', 'options' => NULL, 'data_type' => 'String', + 'input_type' => 'Text', 'audience' => 'sysadmin', ], // this gets forced out if we specify individual fields @@ -678,6 +681,7 @@ class CRM_Contact_Tokens extends CRM_Core_EntityTokens { 'type' => 'Field', 'options' => NULL, 'data_type' => 'String', + 'input_type' => 'Text', 'audience' => 'sysadmin', ], ]; diff --git a/civicrm/CRM/Contribute/ActionMapping.php b/civicrm/CRM/Contribute/ActionMapping.php index ed5aaaa631..625fc1af58 100644 --- a/civicrm/CRM/Contribute/ActionMapping.php +++ b/civicrm/CRM/Contribute/ActionMapping.php @@ -24,22 +24,23 @@ abstract class CRM_Contribute_ActionMapping extends \Civi\ActionSchedule\Mapping return 'Contribution'; } - public function getStatusHeader(): string { - return ts('Contribution Status'); + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + $spec->getFieldByName('entity_status') + ->setLabel(ts('Contribution Status')); } /** * Get a list of status options. * - * @param string|int $value + * @param array|null $entityValue * @return array * @throws CRM_Core_Exception */ - public function getStatusLabels($value): array { + public function getStatusLabels(?array $entityValue): array { return CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'get', []); } - public function getDateFields(): array { + public function getDateFields(?array $entityValue = NULL): array { return [ 'receive_date' => ts('Receive Date'), 'cancel_date' => ts('Cancel Date'), diff --git a/civicrm/CRM/Contribute/ActionMapping/ByPage.php b/civicrm/CRM/Contribute/ActionMapping/ByPage.php index f332d6f1e9..5cf73dbbb1 100644 --- a/civicrm/CRM/Contribute/ActionMapping/ByPage.php +++ b/civicrm/CRM/Contribute/ActionMapping/ByPage.php @@ -23,7 +23,7 @@ class CRM_Contribute_ActionMapping_ByPage extends CRM_Contribute_ActionMapping { /** * @return string */ - public function getId() { + public function getName(): string { return 'contribpage'; } @@ -36,13 +36,10 @@ class CRM_Contribute_ActionMapping_ByPage extends CRM_Contribute_ActionMapping { return ts('Contribution Page'); } - /** - * Get a printable label to use as the header on the 'value' filter. - * - * @return string - */ - public function getValueHeader(): string { - return ts('Contribution Page'); + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + parent::modifySpec($spec); + $spec->getFieldByName('entity_value') + ->setLabel(ts('Contribution Page')); } /** diff --git a/civicrm/CRM/Contribute/ActionMapping/ByType.php b/civicrm/CRM/Contribute/ActionMapping/ByType.php index 2cab15f818..39d8c51654 100644 --- a/civicrm/CRM/Contribute/ActionMapping/ByType.php +++ b/civicrm/CRM/Contribute/ActionMapping/ByType.php @@ -23,7 +23,7 @@ class CRM_Contribute_ActionMapping_ByType extends CRM_Contribute_ActionMapping { /** * @return string */ - public function getId() { + public function getName(): string { return 'contribtype'; } @@ -36,13 +36,12 @@ class CRM_Contribute_ActionMapping_ByType extends CRM_Contribute_ActionMapping { return ts('Contribution Type'); } - /** - * Get a printable label to use as the header on the 'value' filter. - * - * @return string - */ - public function getValueHeader(): string { - return ts('Financial Type'); + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + parent::modifySpec($spec); + $spec->getFieldByName('entity_value') + ->setLabel(ts('Financial Type')); + $spec->getFieldByName('recipient_listing') + ->setRequired($spec->getValue('limit_to') && $spec->getValue('recipient') === 'soft_credit_type'); } /** @@ -67,10 +66,10 @@ class CRM_Contribute_ActionMapping_ByType extends CRM_Contribute_ActionMapping { * array(string $value => string $label). * Ex: array('assignee' => 'Activity Assignee'). */ - public function getRecipientTypes(): array { - return [ - 'soft_credit_type' => ts('Soft Credit Role'), - ]; + public static function getRecipientTypes(): array { + $types = parent::getRecipientTypes(); + $types['soft_credit_type'] = ts('Soft Credit Role'); + return $types; } /** diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index c164c36fb5..928eb3a83d 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -1029,6 +1029,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution im 'class' => 'medium-popup', 'qs' => "reset=1&id=%%id%%&contribution_id=%%contribution_id%%", 'title' => ts('Edit Payment'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], ]; $paymentEditLink = CRM_Core_Action::formLink( @@ -1152,7 +1153,7 @@ class CRM_Contribute_BAO_Contribution extends CRM_Contribute_DAO_Contribution im INNER JOIN civicrm_contact contact ON ( contact.id = c.contact_id ) $financialTypeACLJoin WHERE $whereCond - AND ( is_test = 0 OR is_test IS NULL ) + AND is_test = 0 AND contact.is_deleted = 0 GROUP BY currency "; @@ -2063,7 +2064,10 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ LEFT JOIN civicrm_participant p ON pp.participant_id = p.id LEFT JOIN civicrm_membership m ON m.id = mp.membership_id LEFT JOIN civicrm_pledge_payment pgp ON pgp.contribution_id = c.id - WHERE c.id = $contributionId"; + WHERE c.id = $contributionId + -- only get the primary recipient + AND (p.registered_by_id IS NULL OR p.registered_by_id = 0) + "; $dao = CRM_Core_DAO::executeQuery($query); $componentDetails = []; @@ -2498,22 +2502,17 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * messages * @throws \CRM_Core_Exception */ - public function composeMessageArray(&$input, &$ids, &$values, $returnMessageText = TRUE) { + public function composeMessageArray($input, $ids, $values = [], $returnMessageText = TRUE) { $ids = array_merge(self::getComponentDetails($this->id), $ids); if (empty($ids['contact']) && isset($this->contact_id)) { $ids['contact'] = $this->contact_id; } - - if (empty($this->_component)) { - if (!empty($ids['event'])) { - $this->_component = 'event'; - } - else { - $this->_component = $input['component'] ?? 'contribute'; - } + if (!empty($ids['event'])) { + $this->_component = 'event'; + } + else { + $this->_component = 'contribute'; } - // @todo remove strtolower - check consistency - $this->_component = strtolower($this->_component); // If the object is not fully populated then make sure it is - this is a more about legacy paths & cautious // refactoring than anything else, and has unit test coverage. @@ -2535,9 +2534,11 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $this->loadRelatedObjects($paymentProcessorID, $ids); $paymentProcessor = $this->_relatedObjects['paymentProcessor'] ?? NULL; + $eventID = isset($ids['event']) ? (int) $ids['event'] : NULL; + $participantID = isset($ids['participant']) ? (int) $ids['participant'] : NULL; //not really sure what params might be passed in but lets merge em into values - $values = array_merge($this->_gatherMessageValues($input, $values, $ids), $values); + $values = array_merge($this->_gatherMessageValues($values, $eventID, $participantID), $values); $values['is_email_receipt'] = !$returnMessageText; foreach (['receipt_date', 'cc_receipt', 'bcc_receipt', 'receipt_from_name', 'receipt_from_email', 'receipt_text', 'pay_later_receipt'] as $fld) { if (!empty($input[$fld])) { @@ -2571,7 +2572,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } if ($this->_component === 'event') { - $eventID = $this->_relatedObjects['participant']->event_id; $eventParams = ['id' => $eventID]; $values['event'] = []; @@ -2612,7 +2612,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac } return CRM_Event_BAO_Event::sendMail($ids['contact'], $values, - $this->_relatedObjects['participant']->id, $this->is_test, $returnMessageText + $participantID, $this->is_test, $returnMessageText ); } else { @@ -2688,16 +2688,14 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * as part of CRM-9996 refactoring as a step towards simplifying the composeMessage function * Values related to the contribution in question are gathered * - * @param array $input - * Input into function (probably from payment processor). * @param array $values - * @param array $ids - * The set of ids related to the input. + * @param int|null $eventID + * @param int|null $participantID * * @return array * @throws \CRM_Core_Exception */ - public function _gatherMessageValues($input, &$values, $ids = []) { + public function _gatherMessageValues($values, ?int $eventID, ?int $participantID) { // set display address of contributor $values['billingName'] = ''; if ($this->address_id) { @@ -2773,11 +2771,11 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac ); // if this is onbehalf of contribution then set related contact if (!empty($relatedContact['individual_id'])) { - $values['related_contact'] = $ids['related_contact'] = $relatedContact['individual_id']; + $values['related_contact'] = $relatedContact['individual_id']; } } else { - $values = array_merge($values, $this->loadEventMessageTemplateParams((int) $ids['event'], (int) $this->_relatedObjects['participant']->id, $this->id)); + $values = array_merge($values, $this->loadEventMessageTemplateParams($eventID, $participantID, $this->id)); } $groupTree = CRM_Core_BAO_CustomGroup::getTree('Contribution', NULL, $this->id); @@ -4311,6 +4309,7 @@ LIMIT 1;"; 'is_refund' => 0, ], 'extra' => '', + 'weight' => 0, ]; if (CRM_Core_Config::isEnabledBackOfficeCreditCardPayments()) { @@ -4328,6 +4327,7 @@ LIMIT 1;"; 'mode' => 'live', ], 'extra' => '', + 'weight' => 0, ]; } if ($contributionStatus !== 'Pending') { @@ -4344,6 +4344,7 @@ LIMIT 1;"; 'is_refund' => 1, ], 'extra' => '', + 'weight' => 0, ]; } diff --git a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php index c14439d7ab..6a6996ff05 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution/Utils.php +++ b/civicrm/CRM/Contribute/BAO/Contribution/Utils.php @@ -40,7 +40,7 @@ class CRM_Contribute_BAO_Contribution_Utils { FROM civicrm_contribution AS contrib INNER JOIN civicrm_contact AS contact ON ( contact.id = contrib.contact_id ) WHERE contrib.contact_id = contact.id - AND ( contrib.is_test = 0 OR contrib.is_test IS NULL ) + AND contrib.is_test = 0 AND contrib.contribution_status_id = 1 AND date_format(contrib.receive_date,'%Y') = %1 AND contact.is_deleted = 0 @@ -83,7 +83,7 @@ INNER JOIN civicrm_contact AS contact ON ( contact.id = contrib.contact_id ) {$yearClause} FROM civicrm_contribution AS contrib INNER JOIN civicrm_contact contact ON ( contact.id = contrib.contact_id ) - WHERE ( contrib.is_test = 0 OR contrib.is_test IS NULL ) + WHERE contrib.is_test = 0 AND contrib.contribution_status_id = 1 AND contact.is_deleted = 0 GROUP BY contribYear diff --git a/civicrm/CRM/Contribute/BAO/Query.php b/civicrm/CRM/Contribute/BAO/Query.php index ac6ea213b4..1abf33ef4f 100644 --- a/civicrm/CRM/Contribute/BAO/Query.php +++ b/civicrm/CRM/Contribute/BAO/Query.php @@ -985,7 +985,7 @@ class CRM_Contribute_BAO_Query extends CRM_Core_BAO_Query { ] ); - $form->addField('financial_trxn_card_type_id', ['entity' => 'FinancialTrxn', 'name' => 'card_type_id', 'action' => 'get']); + $form->addField('financial_trxn_card_type_id', ['entity' => 'FinancialTrxn', 'name' => 'card_type_id', 'action' => 'get', 'label' => ts('Card Type')]); $form->add('text', 'financial_trxn_pan_truncation', ts('Card Number'), [ 'size' => 5, diff --git a/civicrm/CRM/Contribute/DAO/Contribution.php b/civicrm/CRM/Contribute/DAO/Contribution.php index 6fc472c9b2..6751a23867 100644 --- a/civicrm/CRM/Contribute/DAO/Contribution.php +++ b/civicrm/CRM/Contribute/DAO/Contribution.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contribute/Contribution.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:4816aa376fc64fa748237d9eb9b68e01) + * (GenCodeChecksum:f62008d2fa8bae5fcc90e9fa11cf9591) */ /** @@ -291,7 +291,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { /** * Total tax amount of this contribution. * - * @var float|string|null + * @var float|string * (SQL type: decimal(20,2)) * Note that values will be retrieved from the database as a string. */ @@ -1103,7 +1103,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], @@ -1138,6 +1138,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_MONEY, 'title' => ts('Tax Amount'), 'description' => ts('Total tax amount of this contribution.'), + 'required' => TRUE, 'precision' => [ 20, 2, @@ -1153,6 +1154,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { 'headerPattern' => '/tax(.?am(ou)?nt)?/i', 'dataPattern' => '/^\d+(\.\d{2})?$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_contribution', 'entity' => 'Contribution', 'bao' => 'CRM_Contribute_BAO_Contribution', diff --git a/civicrm/CRM/Contribute/DAO/ContributionPage.php b/civicrm/CRM/Contribute/DAO/ContributionPage.php index bf31276951..7ce4c8cc85 100644 --- a/civicrm/CRM/Contribute/DAO/ContributionPage.php +++ b/civicrm/CRM/Contribute/DAO/ContributionPage.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contribute/ContributionPage.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:7d36798b74d9cf8912d4b23b5abe2fc8) + * (GenCodeChecksum:84e81e764d43c0d0116ae54d90a18a84) */ /** @@ -904,6 +904,8 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_TEXT, 'title' => ts('Pay Later Receipt'), 'description' => ts('The receipt sent to the user instead of the normal receipt text'), + 'rows' => 8, + 'cols' => 60, 'usage' => [ 'import' => FALSE, 'export' => FALSE, @@ -915,6 +917,9 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'entity' => 'ContributionPage', 'bao' => 'CRM_Contribute_BAO_ContributionPage', 'localizable' => 1, + 'html' => [ + 'type' => 'RichTextEditor', + ], 'add' => '2.0', ], 'is_partial_payment' => [ @@ -1503,7 +1508,7 @@ class CRM_Contribute_DAO_ContributionPage extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], diff --git a/civicrm/CRM/Contribute/DAO/ContributionRecur.php b/civicrm/CRM/Contribute/DAO/ContributionRecur.php index 21d7c21f09..013862e7e0 100644 --- a/civicrm/CRM/Contribute/DAO/ContributionRecur.php +++ b/civicrm/CRM/Contribute/DAO/ContributionRecur.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Contribute/ContributionRecur.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:f633ecacb25c131d5a07f8c30a169204) + * (GenCodeChecksum:d12951f50f11d6868ebb04fe6f3d9707) */ /** @@ -1018,7 +1018,7 @@ class CRM_Contribute_DAO_ContributionRecur extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '4.1', ], diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php index 90b2fe1522..b9ff55e169 100644 --- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php +++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php @@ -262,12 +262,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { * @throws \CRM_Core_Exception */ public function preProcess() { - $this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); - if (empty($this->_contactID) && !empty($this->_id) && $this->entity) { - $this->_contactID = civicrm_api3($this->entity, 'getvalue', ['id' => $this->_id, 'return' => 'contact_id']); - } - $this->assign('contactID', $this->_contactID); - CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => (int) $this->_contactID]); + $this->assignContactID(); $this->_action = CRM_Utils_Request::retrieve('action', 'String', $this, FALSE, 'add'); $this->_mode = empty($this->_mode) ? CRM_Utils_Request::retrieve('mode', 'Alphanumeric', $this) : $this->_mode; $this->assign('isBackOffice', $this->isBackOffice); @@ -275,6 +270,24 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { $this->assignPaymentRelatedVariables(); } + /** + * Get the contact ID in use. + * + * Ideally override this as appropriate to the form. + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocSignatureIsNotCompleteInspection + */ + public function getContactID():?int { + if ($this->_contactID === NULL) { + $this->_contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); + if (empty($this->_contactID) && !empty($this->_id) && $this->entity) { + $this->_contactID = civicrm_api3($this->entity, 'getvalue', ['id' => $this->_id, 'return' => 'contact_id']); + } + } + return $this->_contactID ? (int) $this->_contactID : NULL; + } + /** * @param int $id */ @@ -410,82 +423,6 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { return $submittedValues['currency'] ?? $this->_values['currency'] ?? CRM_Core_Config::singleton()->defaultCurrency; } - public function preProcessPledge() { - //get the payment values associated with given pledge payment id OR check for payments due. - $this->_pledgeValues = []; - if ($this->_ppID) { - $payParams = ['id' => $this->_ppID]; - - CRM_Pledge_BAO_PledgePayment::retrieve($payParams, $this->_pledgeValues['pledgePayment']); - $this->_pledgeID = $this->_pledgeValues['pledgePayment']['pledge_id'] ?? NULL; - $paymentStatusID = $this->_pledgeValues['pledgePayment']['status_id'] ?? NULL; - $this->_id = $this->_pledgeValues['pledgePayment']['contribution_id'] ?? NULL; - - //get all status - $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - if (!($paymentStatusID == array_search('Pending', $allStatus) || $paymentStatusID == array_search('Overdue', $allStatus))) { - CRM_Core_Error::statusBounce(ts("Pledge payment status should be 'Pending' or 'Overdue'.")); - } - - //get the pledge values associated with given pledge payment. - - $ids = []; - $pledgeParams = ['id' => $this->_pledgeID]; - CRM_Pledge_BAO_Pledge::getValues($pledgeParams, $this->_pledgeValues, $ids); - $this->assign('ppID', $this->_ppID); - } - else { - // Not making a pledge payment, so if adding a new contribution we should check if pledge payment(s) are due for this contact so we can alert the user. CRM-5206 - if (isset($this->_contactID)) { - $contactPledges = CRM_Pledge_BAO_Pledge::getContactPledges($this->_contactID); - - if (!empty($contactPledges)) { - $payments = $paymentsDue = NULL; - $multipleDue = FALSE; - foreach ($contactPledges as $key => $pledgeId) { - $payments = CRM_Pledge_BAO_PledgePayment::getOldestPledgePayment($pledgeId); - if ($payments) { - if ($paymentsDue) { - $multipleDue = TRUE; - break; - } - else { - $paymentsDue = $payments; - } - } - } - if ($multipleDue) { - // Show link to pledge tab since more than one pledge has a payment due - $pledgeTab = CRM_Utils_System::url('civicrm/contact/view', - "reset=1&force=1&cid={$this->_contactID}&selectedChild=pledge" - ); - CRM_Core_Session::setStatus(ts('This contact has pending or overdue pledge payments. <a href="%1">Click here to view their Pledges tab</a> and verify whether this contribution should be applied as a pledge payment.', [1 => $pledgeTab]), ts('Notice'), 'alert'); - } - elseif ($paymentsDue) { - // Show user link to oldest Pending or Overdue pledge payment - $ppAmountDue = CRM_Utils_Money::format($payments['amount'], $payments['currency']); - $ppSchedDate = CRM_Utils_Date::customFormat(CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_PledgePayment', $payments['id'], 'scheduled_date')); - if ($this->_mode) { - $ppUrl = CRM_Utils_System::url('civicrm/contact/view/contribution', - "reset=1&action=add&cid={$this->_contactID}&ppid={$payments['id']}&context=pledge&mode=live" - ); - } - else { - $ppUrl = CRM_Utils_System::url('civicrm/contact/view/contribution', - "reset=1&action=add&cid={$this->_contactID}&ppid={$payments['id']}&context=pledge" - ); - } - CRM_Core_Session::setStatus(ts('This contact has a pending or overdue pledge payment of %2 which is scheduled for %3. <a href="%1">Click here to enter a pledge payment</a>.', [ - 1 => $ppUrl, - 2 => $ppAmountDue, - 3 => $ppSchedDate, - ]), ts('Notice'), 'alert'); - } - } - } - } - } - /** * @param array $submittedValues * @@ -620,7 +557,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { $fields["email-{$this->_bltID}"] = 1; } - list($hasBillingField, $addressParams) = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($this->_params, $this->_bltID); + [$hasBillingField, $addressParams] = CRM_Contribute_BAO_Contribution::getPaymentProcessorReadyAddressParams($this->_params, $this->_bltID); $fields = $this->formatParamsForPaymentProcessor($fields); if ($hasBillingField) { @@ -735,13 +672,19 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { } protected function assignContactEmailDetails() { - if ($this->_contactID) { - list($this->userDisplayName, $this->userEmail) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID); - if (empty($this->userDisplayName)) { - $this->userDisplayName = civicrm_api3('contact', 'getvalue', ['id' => $this->_contactID, 'return' => 'display_name']); + if ($this->getContactID()) { + [$displayName, $this->userEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->getContactID()); + if (!$displayName) { + $displayName = civicrm_api3('contact', 'getvalue', ['id' => $this->getContactID(), 'return' => 'display_name']); } - $this->assign('displayName', $this->userDisplayName); + $this->assign('displayName', $displayName); } } + protected function assignContactID(): void { + $this->assign('contactID', $this->getContactID()); + CRM_Core_Resources::singleton() + ->addVars('coreForm', ['contact_id' => (int) $this->getContactID()]); + } + } diff --git a/civicrm/CRM/Contribute/Form/AdditionalInfo.php b/civicrm/CRM/Contribute/Form/AdditionalInfo.php index 2d451f782c..86b0e94572 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalInfo.php +++ b/civicrm/CRM/Contribute/Form/AdditionalInfo.php @@ -255,7 +255,7 @@ class CRM_Contribute_Form_AdditionalInfo { $noteID = []; if ($contributionNoteID) { $noteID = ["id" => $contributionNoteID]; - $noteParams['note'] = $noteParams['note'] ? $noteParams['note'] : "null"; + $noteParams['note'] = $noteParams['note'] ?: "null"; } CRM_Core_BAO_Note::add($noteParams, $noteID); } diff --git a/civicrm/CRM/Contribute/Form/AdditionalPayment.php b/civicrm/CRM/Contribute/Form/AdditionalPayment.php index bbf41548d0..de5821dc04 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalPayment.php +++ b/civicrm/CRM/Contribute/Form/AdditionalPayment.php @@ -368,11 +368,11 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract $session = CRM_Core_Session::singleton(); // we need to retrieve email address - if ($this->_context == 'standalone' && !empty($this->_params['is_email_receipt'])) { - list($this->userDisplayName, + if ($this->_context === 'standalone' && !empty($this->_params['is_email_receipt'])) { + list($displayName, $this->userEmail ) = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactId); - $this->assign('displayName', $this->userDisplayName); + $this->assign('displayName', $displayName); } $this->_params['amount'] = $this->_params['total_amount']; diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php index b1f3a66511..b35e3d1f22 100644 --- a/civicrm/CRM/Contribute/Form/Contribution.php +++ b/civicrm/CRM/Contribute/Form/Contribution.php @@ -330,6 +330,82 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } } + private function preProcessPledge(): void { + //get the payment values associated with given pledge payment id OR check for payments due. + $this->_pledgeValues = []; + if ($this->_ppID) { + $payParams = ['id' => $this->_ppID]; + + CRM_Pledge_BAO_PledgePayment::retrieve($payParams, $this->_pledgeValues['pledgePayment']); + $this->_pledgeID = $this->_pledgeValues['pledgePayment']['pledge_id'] ?? NULL; + $paymentStatusID = $this->_pledgeValues['pledgePayment']['status_id'] ?? NULL; + $this->_id = $this->_pledgeValues['pledgePayment']['contribution_id'] ?? NULL; + + //get all status + $allStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); + if (!($paymentStatusID == array_search('Pending', $allStatus) || $paymentStatusID == array_search('Overdue', $allStatus))) { + CRM_Core_Error::statusBounce(ts("Pledge payment status should be 'Pending' or 'Overdue'.")); + } + + //get the pledge values associated with given pledge payment. + + $ids = []; + $pledgeParams = ['id' => $this->_pledgeID]; + CRM_Pledge_BAO_Pledge::getValues($pledgeParams, $this->_pledgeValues, $ids); + $this->assign('ppID', $this->_ppID); + } + else { + // Not making a pledge payment, so if adding a new contribution we should check if pledge payment(s) are due for this contact so we can alert the user. CRM-5206 + if (isset($this->_contactID)) { + $contactPledges = CRM_Pledge_BAO_Pledge::getContactPledges($this->_contactID); + + if (!empty($contactPledges)) { + $payments = $paymentsDue = NULL; + $multipleDue = FALSE; + foreach ($contactPledges as $key => $pledgeId) { + $payments = CRM_Pledge_BAO_PledgePayment::getOldestPledgePayment($pledgeId); + if ($payments) { + if ($paymentsDue) { + $multipleDue = TRUE; + break; + } + else { + $paymentsDue = $payments; + } + } + } + if ($multipleDue) { + // Show link to pledge tab since more than one pledge has a payment due + $pledgeTab = CRM_Utils_System::url('civicrm/contact/view', + "reset=1&force=1&cid={$this->_contactID}&selectedChild=pledge" + ); + CRM_Core_Session::setStatus(ts('This contact has pending or overdue pledge payments. <a href="%1">Click here to view their Pledges tab</a> and verify whether this contribution should be applied as a pledge payment.', [1 => $pledgeTab]), ts('Notice'), 'alert'); + } + elseif ($paymentsDue) { + // Show user link to oldest Pending or Overdue pledge payment + $ppAmountDue = CRM_Utils_Money::format($payments['amount'], $payments['currency']); + $ppSchedDate = CRM_Utils_Date::customFormat(CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_PledgePayment', $payments['id'], 'scheduled_date')); + if ($this->_mode) { + $ppUrl = CRM_Utils_System::url('civicrm/contact/view/contribution', + "reset=1&action=add&cid={$this->_contactID}&ppid={$payments['id']}&context=pledge&mode=live" + ); + } + else { + $ppUrl = CRM_Utils_System::url('civicrm/contact/view/contribution', + "reset=1&action=add&cid={$this->_contactID}&ppid={$payments['id']}&context=pledge" + ); + } + CRM_Core_Session::setStatus(ts('This contact has a pending or overdue pledge payment of %2 which is scheduled for %3. <a href="%1">Click here to enter a pledge payment</a>.', [ + 1 => $ppUrl, + 2 => $ppAmountDue, + 3 => $ppSchedDate, + ]), ts('Notice'), 'alert'); + } + } + } + } + } + /** * Set default values. * @@ -542,7 +618,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } $this->set('priceSetId', $this->_priceSetId); - CRM_Price_BAO_PriceSet::buildPriceSet($this); + CRM_Price_BAO_PriceSet::buildPriceSet($this, 'contribution', FALSE); // get only price set form elements. if ($getOnlyPriceSetElements) { @@ -579,18 +655,17 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $defaults['hidden_AdditionalDetail'] = 1; } - $paneNames = []; if (empty($this->_payNow)) { - $paneNames[ts('Additional Details')] = 'AdditionalDetail'; - } - - //Add Premium pane only if Premium is exists. - $dao = new CRM_Contribute_DAO_Product(); - $dao->is_active = 1; + $allPanes = [ts('Additional Details') => $this->generatePane('AdditionalDetail', $defaults)]; + //Add Premium pane only if Premium is exists. + $dao = new CRM_Contribute_DAO_Product(); + $dao->is_active = 1; - if ($dao->find(TRUE) && empty($this->_payNow)) { - $paneNames[ts('Premium Information')] = 'Premium'; + if ($dao->find(TRUE)) { + $allPanes[ts('Premium Information')] = $this->generatePane('Premium', $defaults); + } } + $this->assign('allPanes', $allPanes ?: []); $this->payment_instrument_id = $defaults['payment_instrument_id'] ?? $this->getDefaultPaymentInstrumentId(); CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, FALSE, TRUE, $this->payment_instrument_id); @@ -614,13 +689,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP } $this->addPaymentProcessorSelect(FALSE, $buildRecurBlock); - foreach ($paneNames as $name => $type) { - $allPanes[$name] = $this->generatePane($type, $defaults); - } - $qfKey = $this->controller->_key; $this->assign('qfKey', $qfKey); - $this->assign('allPanes', $allPanes); $this->addFormRule(['CRM_Contribute_Form_Contribution', 'formRule'], $this); $this->assign('formType', $this->_formType); @@ -1380,8 +1450,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP * This appears to mean 'there is a pane to show'. * * @param string $type - * Type of Pane - this is generally used to determine the function name used to build it - * - e.g CreditCard, AdditionalDetail + * Type of Pane - only options are AdditionalDetail or Premium * @param array $defaults * * @return array @@ -1395,16 +1464,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $urlParams .= "&mode={$this->_mode}"; } - $open = 'false'; - if ($type == 'CreditCard' || - $type == 'DirectDebit' - ) { - $open = 'true'; - } - $pane = [ 'url' => CRM_Utils_System::url('civicrm/contact/view/contribution', $urlParams), - 'open' => $open, + 'open' => 'false', 'id' => $type, ]; @@ -1415,18 +1477,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $this->assign('showAdditionalInfo', TRUE); $pane['open'] = 'true'; } - - if ($type == 'CreditCard' || $type == 'DirectDebit') { - // @todo would be good to align tpl name with form name... - // @todo document why this hidden variable is required. - $this->add('hidden', 'hidden_' . $type, 1); - return $pane; - } - else { - $additionalInfoFormFunction = 'build' . $type; - CRM_Contribute_Form_AdditionalInfo::$additionalInfoFormFunction($this); - return $pane; - } + $additionalInfoFormFunction = 'build' . $type; + CRM_Contribute_Form_AdditionalInfo::$additionalInfoFormFunction($this); + return $pane; } /** diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php index 0505ba536c..38f9126f70 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Main.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php @@ -1235,11 +1235,6 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // Would be nice to someday understand the point of this set. $this->set('is_pay_later', $params['is_pay_later']); - // assign pay later stuff - $this->_params['is_pay_later'] = $params['is_pay_later']; - $this->assign('is_pay_later', $params['is_pay_later']); - $this->assign('pay_later_text', $params['is_pay_later'] ? $this->_values['pay_later_text'] : NULL); - $this->assign('pay_later_receipt', ($params['is_pay_later'] && isset($this->_values['pay_later_receipt'])) ? $this->_values['pay_later_receipt'] : NULL); if ($this->_membershipBlock && $this->_membershipBlock['is_separate_payment'] && !empty($params['separate_amount'])) { $this->set('amount', $params['separate_amount']); diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php index 36422a48f3..b1972d0060 100644 --- a/civicrm/CRM/Contribute/Form/ContributionBase.php +++ b/civicrm/CRM/Contribute/Form/ContributionBase.php @@ -138,8 +138,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { */ public $_contactID; - protected $_userID; - /** * The Membership ID for membership renewal * @@ -293,9 +291,6 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { } $this->_emailExists = $this->get('emailExists'); - // this was used prior to the cleverer this_>getContactID - unsure now - $this->_userID = CRM_Core_Session::getLoggedInContactID(); - $this->_contactID = $this->_membershipContactID = $this->getContactID(); $this->getRenewalMembershipID(); @@ -307,7 +302,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { $this->_defaultMemTypeId = $membership->membership_type_id; if ($membership->contact_id != $this->_contactID) { $validMembership = FALSE; - $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->_userID, NULL, NULL, 'Organization'); + $organizations = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), NULL, NULL, 'Organization'); if (!empty($organizations) && array_key_exists($membership->contact_id, $organizations)) { $this->_membershipContactID = $membership->contact_id; $this->assign('membershipContactID', $this->_membershipContactID); @@ -320,8 +315,8 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { if ($membershipType->find(TRUE)) { // CRM-14051 - membership_type.relationship_type_id is a CTRL-A padded string w one or more ID values. // Convert to comma separated list. - $inheritedRelTypes = implode(CRM_Utils_Array::explodePadded($membershipType->relationship_type_id), ','); - $permContacts = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->_userID, $membershipType->relationship_type_id); + $inheritedRelTypes = implode(',', CRM_Utils_Array::explodePadded($membershipType->relationship_type_id)); + $permContacts = CRM_Contact_BAO_Relationship::getPermissionedContacts($this->getAuthenticatedContactID(), $membershipType->relationship_type_id); if (array_key_exists($membership->contact_id, $permContacts)) { $this->_membershipContactID = $membership->contact_id; $validMembership = TRUE; @@ -1094,7 +1089,7 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { */ public function overrideExtraTemplateFileName() { $fileName = $this->checkTemplateFileExists('extra.'); - return $fileName ? $fileName : parent::overrideExtraTemplateFileName(); + return $fileName ?: parent::overrideExtraTemplateFileName(); } /** @@ -1122,8 +1117,11 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { ]; $validUser = FALSE; - if ($this->_userID && - $this->_userID == $pledgeValues['contact_id'] + // @todo - override getRequestedContactID to add in checking pledge values, then + // getContactID will do all this. + $userID = CRM_Core_Session::getLoggedInContactID(); + if ($userID && + $userID == $pledgeValues['contact_id'] ) { //check for authenticated user. $validUser = TRUE; diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/TabHeader.php b/civicrm/CRM/Contribute/Form/ContributionPage/TabHeader.php index c103759321..1344cbb441 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/TabHeader.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/TabHeader.php @@ -179,7 +179,7 @@ class CRM_Contribute_Form_ContributionPage_TabHeader { } } - $current = $current ? $current : 'settings'; + $current = $current ?: 'settings'; return $current; } diff --git a/civicrm/CRM/Contribute/Page/ContributionPage.php b/civicrm/CRM/Contribute/Page/ContributionPage.php index 0ebc82cfcd..89de378665 100644 --- a/civicrm/CRM/Contribute/Page/ContributionPage.php +++ b/civicrm/CRM/Contribute/Page/ContributionPage.php @@ -67,16 +67,19 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'qs' => 'action=copy&gid=%%id%%', 'title' => ts('Make a Copy of CiviCRM Contribution Page'), 'extra' => 'onclick = "return confirm(\'' . $copyExtra . '\');"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::COPY), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'title' => ts('Disable'), 'ref' => 'crm-enable-disable', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), @@ -84,6 +87,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'qs' => 'action=delete&reset=1&id=%%id%%', 'title' => ts('Delete Custom Field'), 'extra' => 'onclick = "return confirm(\'' . $deleteExtra . '\');"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } @@ -108,6 +112,8 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'settings', 'qs' => $urlParams, 'uniqueName' => 'settings', + // This needs to be lower than Membership Settings since otherwise the order doesn't make sense. + 'weight' => -20, ], CRM_Core_Action::UPDATE => [ 'name' => ts('Contribution Amounts'), @@ -115,6 +121,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'amount', 'qs' => $urlParams, 'uniqueName' => 'amount', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::VIEW => [ 'name' => ts('Membership Settings'), @@ -122,6 +129,8 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'membership', 'qs' => $urlParams, 'uniqueName' => 'membership', + // This should come after Title + 'weight' => 0, ], CRM_Core_Action::EXPORT => [ 'name' => ts('Thank-you and Receipting'), @@ -129,6 +138,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'thankyou', 'qs' => $urlParams, 'uniqueName' => 'thankyou', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::EXPORT), ], CRM_Core_Action::BASIC => [ 'name' => ts('Tell a Friend'), @@ -136,6 +146,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'friend', 'qs' => $urlParams, 'uniqueName' => 'friend', + 'weight' => 10, ], CRM_Core_Action::PROFILE => [ 'name' => ts('Include Profiles'), @@ -143,6 +154,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'custom', 'qs' => $urlParams, 'uniqueName' => 'custom', + 'weight' => 20, ], CRM_Core_Action::MAP => [ 'name' => ts('Contribution Widget'), @@ -150,6 +162,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'widget', 'qs' => $urlParams, 'uniqueName' => 'widget', + 'weight' => 30, ], CRM_Core_Action::FOLLOWUP => [ 'name' => ts('Premiums'), @@ -157,6 +170,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'premium', 'qs' => $urlParams, 'uniqueName' => 'premium', + 'weight' => 40, ], CRM_Core_Action::ADVANCED => [ 'name' => ts('Personal Campaign Pages'), @@ -164,6 +178,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString . 'pcp', 'qs' => $urlParams, 'uniqueName' => 'pcp', + 'weight' => 50, ], ]; $context = [ @@ -193,6 +208,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'qs' => $urlParams, 'fe' => TRUE, 'uniqueName' => 'live_page', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::RENEW), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Test-drive'), @@ -202,6 +218,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { // Addresses https://lab.civicrm.org/dev/core/issues/658 'fe' => TRUE, 'uniqueName' => 'test_drive', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], ]; } @@ -233,6 +250,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString, 'qs' => "{$urlParams}&receive_date_low={$monthDate}&receive_date_high={$now}", 'uniqueName' => 'current_month_to_date', + 'weight' => 10, ], CRM_Core_Action::REVERT => [ 'name' => ts('Fiscal Year-To-Date'), @@ -240,6 +258,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString, 'qs' => "{$urlParams}&receive_date_low={$yearDate}&receive_date_high={$yearNow}", 'uniqueName' => 'fiscal_year_to_date', + 'weight' => 20, ], CRM_Core_Action::BROWSE => [ 'name' => ts('Cumulative'), @@ -247,6 +266,7 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { 'url' => $urlString, 'qs' => "{$urlParams}", 'uniqueName' => 'cumulative', + 'weight' => 30, ], ]; } diff --git a/civicrm/CRM/Contribute/Page/Tab.php b/civicrm/CRM/Contribute/Page/Tab.php index 4755a44e41..641bb6ee4f 100644 --- a/civicrm/CRM/Contribute/Page/Tab.php +++ b/civicrm/CRM/Contribute/Page/Tab.php @@ -55,7 +55,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { 'title' => ts('View Recurring Payment'), 'url' => 'civicrm/contact/view/contributionrecur', 'qs' => "reset=1&id=%%crid%%&cid=%%cid%%&context={$context}", - 'weight' => -20, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], ]; @@ -77,6 +77,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { 'title' => ts('Edit Recurring Payment'), 'url' => 'civicrm/contribute/updaterecur', 'qs' => "reset=1&action=update&crid=%%crid%%&cid=%%cid%%&context={$context}", + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ]; } @@ -85,6 +86,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { 'title' => ts('Cancel'), 'url' => 'civicrm/contribute/unsubscribe', 'qs' => 'reset=1&crid=%%crid%%&cid=%%cid%%&context=' . $context, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ]; if ($paymentProcessorObj->supports('UpdateSubscriptionBillingInfo')) { @@ -93,6 +95,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { 'title' => ts('Change Billing Details'), 'url' => 'civicrm/contribute/updatebilling', 'qs' => "reset=1&crid=%%crid%%&cid=%%cid%%&context={$context}", + 'weight' => 110, ]; } if (!empty($templateContribution['id']) && $paymentProcessorObj->supportsEditRecurringContribution()) { @@ -103,6 +106,7 @@ class CRM_Contribute_Page_Tab extends CRM_Core_Page { 'title' => ts('View Template Contribution'), 'url' => 'civicrm/contact/view/contribution', 'qs' => "reset=1&id={$templateContribution['id']}&cid=%%cid%%&action=view&context={$context}&force_create_template=1", + 'weight' => 120, ]; } diff --git a/civicrm/CRM/Contribute/Selector/Search.php b/civicrm/CRM/Contribute/Selector/Search.php index 53a2488e02..fc755d92d8 100644 --- a/civicrm/CRM/Contribute/Selector/Search.php +++ b/civicrm/CRM/Contribute/Selector/Search.php @@ -413,9 +413,10 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C 'url' => 'civicrm/contact/view/contribution', 'qs' => 'reset=1&action=update&id=%%id%%&cid=%%cid%%&context=%%cxt%%&mode=live', 'title' => ts('Pay with Credit Card'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ADD), ]; } - elseif (($row['contribution_status_name'] ?? NULL) == 'Pending') { + elseif (($row['contribution_status_name'] ?? NULL) === 'Pending') { $row['contribution_status'] .= ' (' . ts('Incomplete Transaction') . ')'; } @@ -433,7 +434,7 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C if (in_array($row['contribution_status_name'], ['Partially paid', 'Pending refund']) || $isPayLater) { $buttonName = ts('Record Payment'); - if ($row['contribution_status_name'] == 'Pending refund') { + if ($row['contribution_status_name'] === 'Pending refund') { $buttonName = ts('Record Refund'); } elseif (CRM_Core_Config::isEnabledBackOfficeCreditCardPayments()) { @@ -442,6 +443,7 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C 'url' => 'civicrm/payment/add', 'qs' => 'reset=1&id=%%id%%&cid=%%cid%%&action=add&component=contribution&mode=live', 'title' => ts('Submit Credit Card payment'), + 'weight' => 30, ]; } $links[CRM_Core_Action::ADD] = [ @@ -449,6 +451,7 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C 'url' => 'civicrm/payment', 'qs' => 'reset=1&id=%%id%%&cid=%%cid%%&action=add&component=contribution', 'title' => $buttonName, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ADD), ]; } $links = $links + CRM_Contribute_Task::getContextualLinks($row); diff --git a/civicrm/CRM/Contribute/Task.php b/civicrm/CRM/Contribute/Task.php index 52434ccba3..3fa495d852 100644 --- a/civicrm/CRM/Contribute/Task.php +++ b/civicrm/CRM/Contribute/Task.php @@ -50,11 +50,13 @@ class CRM_Contribute_Task extends CRM_Core_Task { 'title' => ts('Delete contributions'), 'class' => 'CRM_Contribute_Form_Task_Delete', 'result' => FALSE, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], self::TASK_PRINT => [ 'title' => ts('Print selected rows'), 'class' => 'CRM_Contribute_Form_Task_Print', 'result' => FALSE, + 'weight' => 10, ], self::TASK_EXPORT => [ 'title' => ts('Export contributions'), @@ -63,6 +65,7 @@ class CRM_Contribute_Task extends CRM_Core_Task { 'CRM_Contribute_Export_Form_Map', ], 'result' => FALSE, + 'weight' => 20, ], self::BATCH_UPDATE => [ 'title' => ts('Update multiple contributions'), @@ -71,6 +74,7 @@ class CRM_Contribute_Task extends CRM_Core_Task { 'CRM_Contribute_Form_Task_Batch', ], 'result' => TRUE, + 'weight' => 30, ], self::TASK_EMAIL => [ 'title' => ts('Email - send now (to %1 or less)', [ @@ -79,11 +83,13 @@ class CRM_Contribute_Task extends CRM_Core_Task { ]), 'class' => 'CRM_Contribute_Form_Task_Email', 'result' => TRUE, + 'weight' => 40, ], self::UPDATE_STATUS => [ 'title' => ts('Record payments for contributions'), 'class' => 'CRM_Contribute_Form_Task_Status', 'result' => TRUE, + 'weight' => 50, ], self::PDF_RECEIPT => [ 'title' => ts('Receipts - print or email'), @@ -96,6 +102,7 @@ class CRM_Contribute_Task extends CRM_Core_Task { 'icon' => 'fa-envelope-o', 'filters' => ['contribution_status_id' => [CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')]], 'is_single_mode' => TRUE, + 'weight' => 60, ], self::PDF_THANKYOU => [ 'title' => ts('Thank-you letters - print or email'), @@ -106,11 +113,13 @@ class CRM_Contribute_Task extends CRM_Core_Task { 'name' => ts('Send Letter'), 'is_single_mode' => TRUE, 'title_single_mode' => ts('Thank-you letter - print or email'), + 'weight' => 70, ], self::PDF_INVOICE => [ 'title' => ts('Invoices - print or email'), 'class' => 'CRM_Contribute_Form_Task_Invoice', 'result' => FALSE, + 'weight' => 80, ], ]; diff --git a/civicrm/CRM/Contribute/Tokens.php b/civicrm/CRM/Contribute/Tokens.php index 39f87b1231..5af208998f 100644 --- a/civicrm/CRM/Contribute/Tokens.php +++ b/civicrm/CRM/Contribute/Tokens.php @@ -10,6 +10,7 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\ContributionPage; use Civi\Api4\ContributionRecur; /** @@ -55,9 +56,26 @@ class CRM_Contribute_Tokens extends CRM_Core_EntityTokens { */ protected function getRelatedTokens(): array { $tokens = []; - if (!in_array('ContributionRecur', array_keys(\Civi::service('action_object_provider')->getEntities()))) { + // Check to make sure CiviContribute is enabled, just in case it remains registered. Eventually this will be moved to the CiviContribute extension + // and this check can hopefully be removed (as long as caching on enable / disable doesn't explode our brains and / or crash the site). + if (!array_key_exists('Contribution', \Civi::service('action_object_provider')->getEntities())) { return $tokens; } + // 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', + ]; + } $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) { @@ -67,6 +85,7 @@ class CRM_Contribute_Tokens extends CRM_Core_EntityTokens { 'type' => 'mapped', 'options' => $contributionRecurField['options'] ?? NULL, 'data_type' => $contributionRecurField['data_type'], + 'input_type' => $contributionRecurField['input_type'], 'audience' => in_array($contributionRecurField['name'], $hiddenTokens) ? 'hidden' : 'user', ]; } diff --git a/civicrm/CRM/Contribute/WorkflowMessage/ContributionInvoiceReceipt.php b/civicrm/CRM/Contribute/WorkflowMessage/ContributionInvoiceReceipt.php index e18907027d..c11d6f32f2 100644 --- a/civicrm/CRM/Contribute/WorkflowMessage/ContributionInvoiceReceipt.php +++ b/civicrm/CRM/Contribute/WorkflowMessage/ContributionInvoiceReceipt.php @@ -23,16 +23,4 @@ class CRM_Contribute_WorkflowMessage_ContributionInvoiceReceipt extends GenericW public const WORKFLOW = 'contribution_invoice_receipt'; - /** - * Specify any tokens that should be exported as smarty variables. - * - * @todo it might be that this should be moved to the trait as we - * we work through these. - * - * @param array $export - */ - protected function exportExtraTokenContext(array &$export): void { - $export['smartyTokenAlias']['currency'] = 'contribution.currency'; - } - } diff --git a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php index 433ef71d67..81e32f49b4 100644 --- a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php +++ b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php @@ -219,4 +219,14 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait { $export['isShowTax'] = (bool) Civi::settings()->get('invoicing'); } + /** + * Specify any tokens that should be exported as smarty variables. + * + * @param array $export + */ + protected function exportExtraTokenContext(array &$export): void { + $export['smartyTokenAlias']['currency'] = 'contribution.currency'; + $export['smartyTokenAlias']['taxTerm'] = 'domain.tax_term'; + } + } diff --git a/civicrm/CRM/Core/Action.php b/civicrm/CRM/Core/Action.php index cb6ae64fc8..faa335682f 100644 --- a/civicrm/CRM/Core/Action.php +++ b/civicrm/CRM/Core/Action.php @@ -315,7 +315,7 @@ class CRM_Core_Action { $url = []; usort($seqLinks, static function ($a, $b) { - return (int) ((int) ($a['weight'] ?? 0) > (int) ($b['weight'] ?? 0)); + return (int) ((int) ($a['weight']) > (int) ($b['weight'])); }); foreach ($seqLinks as $i => $link) { diff --git a/civicrm/CRM/Core/BAO/ActionSchedule.php b/civicrm/CRM/Core/BAO/ActionSchedule.php index 76936efb65..df6f784ded 100644 --- a/civicrm/CRM/Core/BAO/ActionSchedule.php +++ b/civicrm/CRM/Core/BAO/ActionSchedule.php @@ -16,6 +16,7 @@ */ use Civi\ActionSchedule\Event\MappingRegisterEvent; +use Civi\ActionSchedule\MappingBase; use Civi\Core\HookInterface; /** @@ -34,7 +35,14 @@ class CRM_Core_BAO_ActionSchedule extends CRM_Core_DAO_ActionSchedule implements $event = \Civi::dispatcher() ->dispatch('civi.actionSchedule.getMappings', new MappingRegisterEvent()); - Civi::$statics[__CLASS__]['mappings'] = $event->getMappings(); + // Filter out mappings from disabled components. + // TODO: we could move the mapping classes into their respective + // component-extensions and this would happen automatically. + // Civi::$statics[__CLASS__]['mappings'] = $event->getMappings(); + $allEntities = \Civi\Api4\Entity::get(FALSE)->execute()->column('name'); + Civi::$statics[__CLASS__]['mappings'] = array_filter($event->getMappings(), function($mapping) use ($allEntities) { + return in_array($mapping->getEntityName(), $allEntities, TRUE); + }); } if (isset($filters['id'])) { CRM_Core_Error::deprecatedWarning('Use "getMapping" to retrieve a single mapping by id instead of passing a filter to "GetMappings".'); @@ -44,21 +52,33 @@ class CRM_Core_BAO_ActionSchedule extends CRM_Core_DAO_ActionSchedule implements } /** - * @param string|int $identifier - * Name of the mapping e.g. 'contribpage' or CRM_Contact_ActionMapping::CONTACT_MAPPING_ID + * @param string|int $mappingId + * Id of the mapping e.g. 'contribpage' or CRM_Contact_ActionMapping::CONTACT_MAPPING_ID * * @return \Civi\ActionSchedule\MappingInterface|NULL */ - public static function getMapping($identifier) { - return self::getMappings()[$identifier] ?? NULL; + public static function getMapping($mappingId) { + return self::getMappings()[$mappingId] ?? NULL; } /** * Provides the pseudoconstant list for `mapping_id` field. - * @return array + * @return array[] */ public static function getMappingOptions(): array { - return CRM_Utils_Array::collectMethod('getLabel', self::getMappings()); + $mappings = []; + foreach (self::getMappings() as $mapping) { + $mappings[] = [ + 'id' => $mapping->getId(), + 'name' => $mapping->getName(), + 'label' => $mapping->getLabel(), + 'icon' => \Civi\Api4\Utils\CoreUtil::getInfoItem($mapping->getEntityName(), 'icon'), + ]; + } + usort($mappings, function($m1, $m2) { + return strnatcasecmp($m1['label'], $m2['label']); + }); + return $mappings; } /** @@ -67,10 +87,38 @@ class CRM_Core_BAO_ActionSchedule extends CRM_Core_DAO_ActionSchedule implements */ public static function getEntityValueOptions(string $fieldName, array $params): array { $values = self::fillValues($params['values'], ['mapping_id']); - if (!$values['mapping_id']) { - return []; - } - return self::getMapping($values['mapping_id'])->getValueLabels(); + $mapping = self::getMapping($values['mapping_id']); + return $mapping ? $mapping->getValueLabels() : []; + } + + /** + * Provides pseudoconstant list for `limit_to` field. + * @return array|null + */ + public static function getLimitToOptions(string $fieldName, array $params): ?array { + $values = self::fillValues($params['values'], ['mapping_id']); + $mapping = self::getMapping($values['mapping_id']); + return $mapping ? $mapping::getLimitToOptions() : MappingBase::getLimitToOptions(); + } + + /** + * Provides pseudoconstant list for `recipient` field. + * @return array|null + */ + public static function getRecipientOptions(string $fieldName, array $params): ?array { + $values = self::fillValues($params['values'], ['mapping_id']); + $mapping = self::getMapping($values['mapping_id']); + return $mapping ? $mapping::getRecipientTypes() : MappingBase::getRecipientTypes(); + } + + /** + * Provides pseudoconstant list for `recipient_listing` field. + * @return array|null + */ + public static function getRecipientListingOptions(string $fieldName, array $params): ?array { + $values = self::fillValues($params['values'], ['mapping_id', 'recipient']); + $mapping = self::getMapping($values['mapping_id']); + return $mapping ? $mapping->getRecipientListing($values['recipient']) : []; } /** @@ -79,10 +127,8 @@ class CRM_Core_BAO_ActionSchedule extends CRM_Core_DAO_ActionSchedule implements */ public static function getEntityStatusOptions(string $fieldName, array $params): array { $values = self::fillValues($params['values'], ['mapping_id', 'entity_value']); - if (!$values['mapping_id']) { - return []; - } - return self::getMapping($values['mapping_id'])->getStatusLabels($values['entity_value']); + $mapping = self::getMapping($values['mapping_id']); + return $mapping ? $mapping->getStatusLabels($values['entity_value']) : []; } /** @@ -91,10 +137,8 @@ class CRM_Core_BAO_ActionSchedule extends CRM_Core_DAO_ActionSchedule implements */ public static function getActionDateOptions(string $fieldName, array $params): array { $values = self::fillValues($params['values'], ['mapping_id', 'entity_value']); - if (!$values['mapping_id']) { - return []; - } - return self::getMapping($values['mapping_id'])->getDateFields($values['entity_value']); + $mapping = self::getMapping($values['mapping_id']); + return $mapping ? $mapping->getDateFields($values['entity_value']) : []; } /** @@ -109,45 +153,27 @@ class CRM_Core_BAO_ActionSchedule extends CRM_Core_DAO_ActionSchedule implements } /** - * For each entity, get a list of entity-value labels. - * + * Provides pseudoconstant list for `filter_contact_language`. * @return array - * Ex: $entityValueLabels[$mappingId][$valueId] = $valueLabel. - * @throws CRM_Core_Exception */ - public static function getAllEntityValueLabels() { - $entityValueLabels = []; - foreach (CRM_Core_BAO_ActionSchedule::getMappings() as $mapping) { - $entityValueLabels[$mapping->getId()] = $mapping->getValueLabels(); - $valueLabel = ['- ' . strtolower($mapping->getValueHeader()) . ' -']; - $entityValueLabels[$mapping->getId()] = $valueLabel + $entityValueLabels[$mapping->getId()]; - } - return $entityValueLabels; + public static function getFilterContactLanguageOptions(): array { + $languages = CRM_Core_I18n::languages(TRUE); + return $languages + [CRM_Core_I18n::NONE => ts('Contacts with no preferred language')]; } /** - * For each entity, get a list of entity-status labels. - * + * Provides pseudoconstant list for `communication_language`. * @return array - * Ex: $entityValueLabels[$mappingId][$valueId][$statusId] = $statusLabel. - */ - public static function getAllEntityStatusLabels() { - $entityValueLabels = self::getAllEntityValueLabels(); - $entityStatusLabels = []; - foreach (CRM_Core_BAO_ActionSchedule::getMappings() as $mapping) { - $statusLabel = ['- ' . strtolower($mapping->getStatusHeader()) . ' -']; - $entityStatusLabels[$mapping->getId()] = $entityValueLabels[$mapping->getId()]; - foreach ($entityStatusLabels[$mapping->getId()] as $kkey => & $vval) { - $vval = $statusLabel + $mapping->getStatusLabels($kkey); - } - } - return $entityStatusLabels; + */ + public static function getCommunicationLanguageOptions(): array { + $languages = CRM_Core_I18n::languages(TRUE); + return [CRM_Core_I18n::AUTO => ts('Follow recipient preferred language')] + $languages; } /** * Retrieve list of Scheduled Reminders. * - * @param \Civi\ActionSchedule\Mapping|null $filterMapping + * @param \Civi\ActionSchedule\MappingInterface|null $filterMapping * Filter by the schedule's mapping type. * @param int $filterValue * Filter by the schedule's entity_value. @@ -203,7 +229,7 @@ FROM civicrm_action_schedule cas explode(CRM_Core_DAO::VALUE_SEPARATOR, $dao->entityValueIds) )); $list[$dao->id]['status'] = implode(', ', CRM_Utils_Array::subset( - $filterMapping->getStatusLabels($dao->entityValueIds), + $filterMapping->getStatusLabels($list[$dao->id]['entity_value']), explode(CRM_Core_DAO::VALUE_SEPARATOR, $dao->entityStatusIds) )); $list[$dao->id]['is_repeat'] = $dao->is_repeat; @@ -234,9 +260,29 @@ FROM civicrm_action_schedule cas */ public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event) { if (in_array($event->action, ['create', 'edit'])) { - if (isset($event->params['limit_to']) && in_array($event->params['limit_to'], [0, '0', FALSE], TRUE)) { + $values =& $event->params; + if (isset($values['limit_to']) && in_array($values['limit_to'], [0, '0', FALSE], TRUE)) { CRM_Core_Error::deprecatedWarning('Deprecated value "0" is no longer a valid option for ActionSchedule.limit_to; changed to "2".'); - $event->params['limit_to'] = 2; + $values['limit_to'] = 2; + } + $recipient = $values['recipient'] ?? NULL; + if ($recipient && $recipient !== 'group') { + $values['group_id'] = ''; + } + elseif ($recipient && $recipient !== 'manual') { + $values['recipient_manual'] = ''; + } + if ($recipient === 'group' || $recipient === 'manual') { + $values['recipient_listing'] = ''; + } + // When repeat is disabled, wipe all related fields + if (isset($values['is_repeat']) && !$values['is_repeat']) { + $values['repetition_frequency_unit'] = ''; + $values['repetition_frequency_interval'] = ''; + $values['end_frequency_unit'] = ''; + $values['end_frequency_interval'] = ''; + $values['end_action'] = ''; + $values['end_date'] = ''; } } } @@ -431,17 +477,11 @@ FROM civicrm_action_schedule cas } /** - * @param int $mappingID - * @param $recipientType - * - * @return array + * @deprecated */ public static function getRecipientListing($mappingID, $recipientType) { - $mapping = CRM_Core_BAO_ActionSchedule::getMapping($mappingID); - if (!$mapping) { - return []; - } - return $mapping->getRecipientListing($recipientType); + CRM_Core_Error::deprecatedFunctionWarning('getRecipientListingOptions'); + return self::getRecipientListingOptions('recipient_listing', ['values' => ['mapping_id' => $mappingID, 'recipient' => $recipientType]]); } /** @@ -489,7 +529,7 @@ FROM civicrm_action_schedule cas protected static function createMailingActivity($tokenRow, $mapping, $contactID, $entityID, $caseID) { $session = CRM_Core_Session::singleton(); - if ($mapping->getEntityTable() == 'civicrm_membership') { + if ($mapping->getEntityName() === 'Membership') { // @todo - not required with api $activityTypeID = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Membership Renewal Reminder'); @@ -534,7 +574,7 @@ FROM civicrm_action_schedule cas 'casActionScheduleId' => $actionSchedule->id, 'casMailingJoinType' => ($actionSchedule->limit_to == 2) ? 'LEFT JOIN' : 'INNER JOIN', 'casMappingId' => $mapping->getId(), - 'casMappingEntity' => $mapping->getEntityTable(), + 'casMappingEntity' => $mapping->getEntityTable($actionSchedule), 'casEntityJoinExpr' => 'e.id = IF(reminder.entity_table = "civicrm_contact", reminder.contact_id, reminder.entity_id)', ]); @@ -715,12 +755,10 @@ FROM civicrm_action_schedule cas } /** - * Get the list of generic recipient types supported by all entities/mappings. - * - * @return array - * array(mixed $value => string $label). + * @deprecated */ public static function getAdditionalRecipients(): array { + CRM_Core_Error::deprecatedFunctionWarning('APIv4 getFields'); return [ 'manual' => ts('Choose Recipient(s)'), 'group' => ts('Select Group'), diff --git a/civicrm/CRM/Core/BAO/Country.php b/civicrm/CRM/Core/BAO/Country.php index d81958f09d..8d53a8bf8a 100644 --- a/civicrm/CRM/Core/BAO/Country.php +++ b/civicrm/CRM/Core/BAO/Country.php @@ -174,7 +174,7 @@ class CRM_Core_BAO_Country extends CRM_Core_DAO_Country { public static function defaultCurrencySymbol($defaultCurrency = NULL) { static $cachedSymbol = NULL; if (!$cachedSymbol || $defaultCurrency) { - $currency = $defaultCurrency ? $defaultCurrency : Civi::settings()->get('defaultCurrency'); + $currency = $defaultCurrency ?: Civi::settings()->get('defaultCurrency'); if ($currency) { $currencySymbols = CRM_Core_PseudoConstant::get('CRM_Contribute_DAO_Contribution', 'currency', [ 'labelColumn' => 'symbol', diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 8c7f3d0aa9..c40de2cb86 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -1060,17 +1060,14 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $fieldAttributes['api']['fieldName'] = $field->getEntity() . '.' . $groupName . '.' . $field->name; $element = $qf->addAutocomplete($elementName, $label, $fieldAttributes, $useRequired && !$search); } + // Autocomplete for field with option values else { - // FIXME: This won't work with customFieldOptions hook - $fieldAttributes += [ - 'entity' => 'OptionValue', - 'placeholder' => $placeholder, - 'multiple' => $search ? TRUE : !empty($field->serialize), - 'api' => [ - 'params' => ['option_group_id' => $field->option_group_id, 'is_active' => 1], - ], - ]; - $element = $qf->addEntityRef($elementName, $label, $fieldAttributes, $useRequired && !$search); + $fieldAttributes['entity'] = 'OptionValue'; + $fieldAttributes['placeholder'] = $placeholder; + $fieldAttributes['api']['fieldName'] = $field->getEntity() . '.' . $groupName . '.' . $field->name; + $fieldAttributes['select']['multiple'] = $search ? TRUE : !empty($field->serialize); + $fieldAttributes['select']['minimumInputLength'] = 0; + $element = $qf->addAutocomplete($elementName, $label, $fieldAttributes, $useRequired && !$search); } $qf->assign('customUrls', $customUrls); @@ -2782,7 +2779,7 @@ WHERE cf.id = %1 AND cg.is_multiple = 1"; return TRUE; } // Do this before the "Select" string search because date fields have a "Select Date" html_type - // and contactRef fields have an "Autocomplete-Select" html_type - contacts are an FK not an option list. + // and entityRef fields have an "Autocomplete-Select" html_type - references are an FK not an option list. if (in_array($field['data_type'], ['EntityReference', 'ContactReference', 'Date'])) { return FALSE; } diff --git a/civicrm/CRM/Core/BAO/CustomGroup.php b/civicrm/CRM/Core/BAO/CustomGroup.php index e7b561a07c..44973b7ace 100644 --- a/civicrm/CRM/Core/BAO/CustomGroup.php +++ b/civicrm/CRM/Core/BAO/CustomGroup.php @@ -837,6 +837,7 @@ ORDER BY civicrm_custom_group.weight, 'qs' => 'reset=1&id=%%id%%&eid=%%eid%%&fid=%%fid%%&action=delete&fcs=%%fcs%%', 'extra' => 'onclick = "if (confirm( \'' . $deleteExtra . '\' ) ) this.href+=\'&confirmed=1\'; else return false;"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; $customValue['deleteURL'] = CRM_Core_Action::formLink($deleteURL, diff --git a/civicrm/CRM/Core/BAO/Discount.php b/civicrm/CRM/Core/BAO/Discount.php index 2b63fd5c36..c0f29cfccd 100644 --- a/civicrm/CRM/Core/BAO/Discount.php +++ b/civicrm/CRM/Core/BAO/Discount.php @@ -78,11 +78,32 @@ class CRM_Core_BAO_Discount extends CRM_Core_DAO_Discount { $dao->entity_table = $entityTable; $dao->find(); while ($dao->fetch()) { - $optionGroupIDs[$dao->id] = $dao->price_set_id; + $optionGroupIDs[$dao->id] = (int) $dao->price_set_id; } return $optionGroupIDs; } + public static function buildOptions($fieldName, $context = NULL, $values = []) { + // Special logic for fields whose options depend on context or properties + if ($fieldName === 'price_set_id' && !empty($values['entity_table']) && !empty($values['entity_id'])) { + $priceSetIds = self::getOptionGroup($values['entity_id'], $values['entity_table']); + $params = ['condition' => ['id IN (' . implode(',', $priceSetIds) . ')']]; + return CRM_Core_PseudoConstant::get(__CLASS__, $fieldName, $params, $context); + } + return parent::buildOptions($fieldName, $context, $values); + } + + /** + * Whitelist of possible values for the entity_table field + * + * @return array + */ + public static function entityTables(): array { + return [ + 'civicrm_event' => ts('Event'), + ]; + } + /** * Determine in which discount set the registration date falls. * diff --git a/civicrm/CRM/Core/BAO/Domain.php b/civicrm/CRM/Core/BAO/Domain.php index 1462718c86..548baffdc6 100644 --- a/civicrm/CRM/Core/BAO/Domain.php +++ b/civicrm/CRM/Core/BAO/Domain.php @@ -273,7 +273,7 @@ class CRM_Core_BAO_Domain extends CRM_Core_DAO_Domain { $title, 'id', 'title', TRUE ); } - return $groupID ? $groupID : FALSE; + return $groupID ?: FALSE; } /** diff --git a/civicrm/CRM/Core/BAO/Job.php b/civicrm/CRM/Core/BAO/Job.php index 57b1691aa1..cbf3b2e818 100644 --- a/civicrm/CRM/Core/BAO/Job.php +++ b/civicrm/CRM/Core/BAO/Job.php @@ -117,4 +117,25 @@ class CRM_Core_BAO_Job extends CRM_Core_DAO_Job { return $copy; } + /** + * Parse multi-line `$parameters` string into an array + * + * @param string|null $parameters + * @return array + * @throws CRM_Core_Exception + */ + public static function parseParameters(?string $parameters): array { + $result = ['version' => 3]; + $lines = $parameters ? explode("\n", $parameters) : []; + + foreach ($lines as $line) { + $pair = explode("=", $line); + if ($pair === FALSE || count($pair) !== 2 || !trim($pair[0]) || trim($pair[1]) === '') { + throw new CRM_Core_Exception('Malformed API parameters in scheduled job'); + } + $result[trim($pair[0])] = trim($pair[1]); + } + return $result; + } + } diff --git a/civicrm/CRM/Core/CodeGen/I18n.php b/civicrm/CRM/Core/CodeGen/I18n.php index 3d3ecc1bcf..2f71133ba4 100644 --- a/civicrm/CRM/Core/CodeGen/I18n.php +++ b/civicrm/CRM/Core/CodeGen/I18n.php @@ -22,7 +22,7 @@ class CRM_Core_CodeGen_I18n extends CRM_Core_CodeGen_BaseTask { file_put_contents('../install/langs.php', "<?php \$langs = " . var_export($langs, TRUE) . ";"); } - public function generateSchemaStructure() { + public function generateSchemaStructure(): void { echo "Generating CRM_Core_I18n_SchemaStructure...\n"; $columns = []; $indices = []; @@ -36,10 +36,15 @@ class CRM_Core_CodeGen_I18n extends CRM_Core_CodeGen_BaseTask { continue; } foreach ($table['fields'] as $field) { - $required = $field['required'] ? ' NOT NULL' : ''; - $default = $field['default'] ? ' DEFAULT ' . $field['default'] : ''; - $comment = $field['comment'] ? " COMMENT '" . $field['comment'] . "'" : ''; if ($field['localizable']) { + $required = $field['required'] ? ' NOT NULL' : ''; + // The setting of default `''` for required fields is a workaround + // that makes it work similar to turning off STRICT_TRANS_TABLES, but + // means that the database cannot enforce required fields since this + // definition is not the same as "required". Ideally, required fields + // would be included in every INSERT statement. + $default = $field['default'] ? ' DEFAULT ' . $field['default'] : ($field['required'] ? " DEFAULT '' " : ''); + $comment = $field['comment'] ? " COMMENT '" . $field['comment'] . "'" : ''; $columns[$table['name']][$field['name']] = $field['sqlType'] . $required . $default . $comment; $widgets[$table['name']][$field['name']] = $field['widget']; } diff --git a/civicrm/CRM/Core/CodeGen/Specification.php b/civicrm/CRM/Core/CodeGen/Specification.php index c26671270e..e64367f97b 100644 --- a/civicrm/CRM/Core/CodeGen/Specification.php +++ b/civicrm/CRM/Core/CodeGen/Specification.php @@ -421,6 +421,8 @@ class CRM_Core_CodeGen_Specification { 'formatType', 'label', 'controlField', + 'min', + 'max', /* Fixme: prior to CRM-13497 these were in a flat structure // CRM-13497 moved them to be nested within 'html' but there's no point // making that change in the DAOs right now since we are in the process of @@ -432,7 +434,7 @@ class CRM_Core_CodeGen_Specification { ]; $field['html'] = []; foreach ($validOptions as $htmlOption) { - if (!empty($fieldXML->html->$htmlOption)) { + if (isset($fieldXML->html->$htmlOption) && $fieldXML->html->$htmlOption !== '') { $field['html'][$htmlOption] = $this->value($htmlOption, $fieldXML->html); } } @@ -495,6 +497,10 @@ class CRM_Core_CodeGen_Specification { if (!isset($field['pseudoconstant']['optionEditPath']) && !empty($field['pseudoconstant']['optionGroupName'])) { $field['pseudoconstant']['optionEditPath'] = 'civicrm/admin/options/' . $field['pseudoconstant']['optionGroupName']; } + // Set suffixes if explicitly declared + if (!empty($fieldXML->pseudoconstant->suffixes)) { + $field['pseudoconstant']['suffixes'] = explode(',', $this->value('suffixes', $fieldXML->pseudoconstant)); + } // For now, fields that have option lists that are not in the db can simply // declare an empty pseudoconstant tag and we'll add this placeholder. // That field's BAO::buildOptions fn will need to be responsible for generating the option list diff --git a/civicrm/CRM/Core/Component/Info.php b/civicrm/CRM/Core/Component/Info.php index 640f3e26d2..037b3cea0e 100644 --- a/civicrm/CRM/Core/Component/Info.php +++ b/civicrm/CRM/Core/Component/Info.php @@ -139,17 +139,6 @@ abstract class CRM_Core_Component_Info { */ abstract public function getInfo(); - /** - * Get a list of entities to register via API. - * - * @return array - * list of entities; same format as CRM_Utils_Hook::managedEntities(&$entities) - * @see CRM_Utils_Hook::managedEntities - */ - public function getManagedEntities() { - return []; - } - /** * Provides permissions that are unwise for Anonymous Roles to have. * diff --git a/civicrm/CRM/Core/Config.php b/civicrm/CRM/Core/Config.php index 66e59e4264..55093d3613 100644 --- a/civicrm/CRM/Core/Config.php +++ b/civicrm/CRM/Core/Config.php @@ -345,6 +345,11 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { CRM_Core_DAO::executeQuery($query); } + // Clear the Redis prev-next cache, if there is one. + // Since we truncated the civicrm_cache table it is logical to also remove + // the same from the Redis cache here. + \Civi::service('prevnext')->deleteItem(); + // also delete all the import and export temp tables self::clearTempTables(); } diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php index 27cb3b417c..ad06001e74 100644 --- a/civicrm/CRM/Core/DAO.php +++ b/civicrm/CRM/Core/DAO.php @@ -3365,6 +3365,7 @@ SELECT contact_id * Given an incomplete record, attempt to fill missing field values from the database */ public static function fillValues(array $existingValues, $fieldsToRetrieve): array { + $entityFields = static::getSupportedFields(); $idField = static::$_primaryKey[0]; // Ensure primary key is set $existingValues += [$idField => NULL]; @@ -3378,25 +3379,25 @@ SELECT contact_id } $idValue = $existingValues[$idField] ?? NULL; foreach ($fieldsToRetrieve as $fieldName) { + $fieldMeta = $entityFields[$fieldName] ?? ['type' => NULL]; if (!array_key_exists($fieldName, $existingValues)) { - $fieldMeta = static::getSupportedFields()[$fieldName] ?? ['type' => NULL]; $existingValues[$fieldName] = NULL; if ($idValue) { $existingValues[$fieldName] = self::getFieldValue(static::class, $idValue, $fieldName, $idField); } - if (isset($existingValues[$fieldName])) { - if (!empty($fieldMeta['serialize'])) { - self::unSerializeField($existingValues[$fieldName], $fieldMeta['serialize']); - } - elseif ($fieldMeta['type'] === CRM_Utils_Type::T_BOOLEAN) { - $existingValues[$fieldName] = (bool) $existingValues[$fieldName]; - } - elseif ($fieldMeta['type'] === CRM_Utils_Type::T_INT) { - $existingValues[$fieldName] = (int) $existingValues[$fieldName]; - } - elseif ($fieldMeta['type'] === CRM_Utils_Type::T_FLOAT) { - $existingValues[$fieldName] = (float) $existingValues[$fieldName]; - } + } + if (isset($existingValues[$fieldName])) { + if (!empty($fieldMeta['serialize']) && !is_array($existingValues[$fieldName])) { + $existingValues[$fieldName] = self::unSerializeField($existingValues[$fieldName], $fieldMeta['serialize']); + } + elseif ($fieldMeta['type'] === CRM_Utils_Type::T_BOOLEAN) { + $existingValues[$fieldName] = (bool) $existingValues[$fieldName]; + } + elseif ($fieldMeta['type'] === CRM_Utils_Type::T_INT) { + $existingValues[$fieldName] = (int) $existingValues[$fieldName]; + } + elseif ($fieldMeta['type'] === CRM_Utils_Type::T_FLOAT) { + $existingValues[$fieldName] = (float) $existingValues[$fieldName]; } } } diff --git a/civicrm/CRM/Core/DAO/ActionSchedule.php b/civicrm/CRM/Core/DAO/ActionSchedule.php index ad145d3843..f75590e064 100644 --- a/civicrm/CRM/Core/DAO/ActionSchedule.php +++ b/civicrm/CRM/Core/DAO/ActionSchedule.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/ActionSchedule.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:98aa9bf4539e598e9d7d0d5da203717d) + * (GenCodeChecksum:7cd61559377e23d6ad4c833616f22a12) */ /** @@ -59,7 +59,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { /** * Name of the action(reminder) * - * @var string|null + * @var string * (SQL type: varchar(64)) * Note that values will be retrieved from the database as a string. */ @@ -436,7 +436,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { * Whether to return the plural version of the title. */ public static function getEntityTitle($plural = FALSE) { - return $plural ? ts('Action Schedules') : ts('Action Schedule'); + return $plural ? ts('Scheduled Reminders') : ts('Scheduled Reminder'); } /** @@ -492,6 +492,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Name'), 'description' => ts('Name of the action(reminder)'), + 'required' => TRUE, 'maxlength' => 64, 'size' => CRM_Utils_Type::BIG, 'usage' => [ @@ -505,6 +506,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], 'add' => '3.4', ], 'title' => [ @@ -525,6 +529,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], 'add' => '3.4', ], 'recipient' => [ @@ -546,7 +553,12 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ - 'label' => ts("Recipient"), + 'type' => 'Select', + 'label' => ts("Limit or Add Recipients"), + 'controlField' => 'mapping_id', + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_ActionSchedule::getRecipientOptions', ], 'add' => '3.4', ], @@ -567,10 +579,12 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ - 'label' => ts("Limit To"), + 'type' => 'Select', + 'label' => ts("Limit/Add"), + 'controlField' => 'mapping_id', ], 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::getLimitToValues', + 'callback' => 'CRM_Core_BAO_ActionSchedule::getLimitToOptions', ], 'add' => '4.4', ], @@ -650,7 +664,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ + 'type' => 'Number', 'label' => ts("Start Action Offset"), + 'min' => '0', ], 'add' => '3.4', ], @@ -701,7 +717,11 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ - 'label' => ts("Start Action condition"), + 'type' => 'Select', + 'label' => ts("Start Condition"), + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::beforeAfter', ], 'add' => '3.4', ], @@ -801,7 +821,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ + 'type' => 'Number', 'label' => ts("Repetition Frequency Interval"), + 'min' => '0', ], 'add' => '3.4', ], @@ -851,7 +873,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ + 'type' => 'Number', 'label' => ts("End Frequency Interval"), + 'min' => '0', ], 'add' => '3.4', ], @@ -874,7 +898,11 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ - 'label' => ts("End Action"), + 'type' => 'Select', + 'label' => ts("End Condition"), + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::beforeAfter', ], 'add' => '3.4', ], @@ -949,6 +977,10 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'serialize' => self::SERIALIZE_COMMA, + 'html' => [ + 'type' => 'EntityRef', + 'label' => ts("Manual Recipients"), + ], 'add' => '3.4', ], 'recipient_listing' => [ @@ -969,6 +1001,15 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'serialize' => self::SERIALIZE_SEPARATOR_TRIMMED, + 'html' => [ + 'type' => 'Select', + 'label' => ts("Recipient Roles"), + 'controlField' => 'recipient', + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_ActionSchedule::getRecipientListingOptions', + ], 'add' => '4.1', ], 'body_text' => [ @@ -987,6 +1028,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'TextArea', + ], 'add' => '3.4', ], 'body_html' => [ @@ -1005,6 +1049,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'RichTextEditor', + ], 'add' => '3.4', ], 'sms_body_text' => [ @@ -1023,6 +1070,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'TextArea', + ], 'add' => '4.5', ], 'subject' => [ @@ -1043,12 +1093,15 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], 'add' => '3.4', ], 'record_activity' => [ 'name' => 'record_activity', 'type' => CRM_Utils_Type::T_BOOLEAN, - 'title' => ts('Record Activity for Reminder?'), + 'title' => ts('Record Activity'), 'description' => ts('Record Activity for this reminder?'), 'required' => TRUE, 'usage' => [ @@ -1063,6 +1116,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + ], 'add' => '3.4', ], 'mapping_id' => [ @@ -1089,6 +1145,11 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { ], 'pseudoconstant' => [ 'callback' => 'CRM_Core_BAO_ActionSchedule::getMappingOptions', + 'suffixes' => [ + 'name', + 'label', + 'icon', + ], ], 'add' => '3.4', ], @@ -1117,7 +1178,7 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'table' => 'civicrm_group', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], @@ -1181,6 +1242,10 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDate', + ], 'add' => '4.1', ], 'from_name' => [ @@ -1201,6 +1266,10 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + 'label' => ts("From Name"), + ], 'add' => '4.5', ], 'from_email' => [ @@ -1221,6 +1290,10 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Email', + 'label' => ts("From Email"), + ], 'add' => '4.5', ], 'mode' => [ @@ -1271,6 +1344,9 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'type' => 'Select', 'label' => ts("SMS Provider"), ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::smsProvider', + ], 'add' => '4.5', ], 'used_for' => [ @@ -1314,8 +1390,13 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'serialize' => self::SERIALIZE_SEPARATOR_TRIMMED, 'html' => [ - 'label' => ts("Filter Contact Language"), + 'type' => 'Select', + 'label' => ts("Recipients Language"), + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_ActionSchedule::getFilterContactLanguageOptions', ], 'add' => '4.7', ], @@ -1338,8 +1419,12 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, 'html' => [ + 'type' => 'Select', 'label' => ts("Communication Language"), ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_ActionSchedule::getCommunicationLanguageOptions', + ], 'add' => '4.7', ], 'action_schedule_created_date' => [ @@ -1405,6 +1490,10 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDate', + ], 'add' => '5.34', ], 'action_schedule_effective_end_date' => [ @@ -1425,6 +1514,10 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { 'entity' => 'ActionSchedule', 'bao' => 'CRM_Core_BAO_ActionSchedule', 'localizable' => 0, + 'html' => [ + 'type' => 'Select Date', + 'formatType' => 'activityDate', + ], 'add' => '5.34', ], ]; @@ -1496,7 +1589,17 @@ class CRM_Core_DAO_ActionSchedule extends CRM_Core_DAO { * @return array */ public static function indices($localize = TRUE) { - $indices = []; + $indices = [ + 'UI_name' => [ + 'name' => 'UI_name', + 'field' => [ + 0 => 'name', + ], + 'localizable' => FALSE, + 'unique' => TRUE, + 'sig' => 'civicrm_action_schedule::1::name', + ], + ]; return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; } diff --git a/civicrm/CRM/Core/DAO/Address.php b/civicrm/CRM/Core/DAO/Address.php index d6daae7227..c70f36ea36 100644 --- a/civicrm/CRM/Core/DAO/Address.php +++ b/civicrm/CRM/Core/DAO/Address.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Address.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:93cff77485ca748e88906bcb5d61bf22) + * (GenCodeChecksum:7fed80f6afc84e71f18055294868044d) */ /** @@ -789,6 +789,10 @@ class CRM_Core_DAO_Address extends CRM_Core_DAO { 'keyColumn' => 'id', 'labelColumn' => 'name', 'abbrColumn' => 'abbreviation', + 'suffixes' => [ + 'label', + 'abbr', + ], ], 'add' => '1.1', ], @@ -820,6 +824,10 @@ class CRM_Core_DAO_Address extends CRM_Core_DAO { 'keyColumn' => 'id', 'labelColumn' => 'name', 'abbrColumn' => 'abbreviation', + 'suffixes' => [ + 'label', + 'abbr', + ], ], 'add' => '1.1', ], @@ -926,6 +934,10 @@ class CRM_Core_DAO_Address extends CRM_Core_DAO { 'labelColumn' => 'name', 'nameColumn' => 'iso_code', 'abbrColumn' => 'iso_code', + 'suffixes' => [ + 'label', + 'abbr', + ], ], 'add' => '1.1', ], diff --git a/civicrm/CRM/Core/DAO/CustomGroup.php b/civicrm/CRM/Core/DAO/CustomGroup.php index af79e781f7..17c0bd8922 100644 --- a/civicrm/CRM/Core/DAO/CustomGroup.php +++ b/civicrm/CRM/Core/DAO/CustomGroup.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/CustomGroup.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:7bcb3484fe1ff4d97feddb0d2ad981ec) + * (GenCodeChecksum:7a53822fedde32eeb1089f09654a2d88) */ /** @@ -380,6 +380,11 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { ], 'pseudoconstant' => [ 'callback' => 'CRM_Core_BAO_CustomGroup::getCustomGroupExtendsOptions', + 'suffixes' => [ + 'name', + 'label', + 'grouping', + ], ], 'add' => '1.1', ], @@ -406,6 +411,11 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { ], 'pseudoconstant' => [ 'callback' => 'CRM_Core_BAO_CustomGroup::getExtendsEntityColumnIdOptions', + 'suffixes' => [ + 'name', + 'label', + 'grouping', + ], ], 'add' => '2.2', ], diff --git a/civicrm/CRM/Core/DAO/Discount.php b/civicrm/CRM/Core/DAO/Discount.php index 1d9810753e..d9d44b82fa 100644 --- a/civicrm/CRM/Core/DAO/Discount.php +++ b/civicrm/CRM/Core/DAO/Discount.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Discount.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:63b35b634e2bbd8e56e55e87c7d06f91) + * (GenCodeChecksum:83144959b102b14625522e9fae8dd8d8) */ /** @@ -42,7 +42,7 @@ class CRM_Core_DAO_Discount extends CRM_Core_DAO { /** * physical tablename for entity being joined to discount, e.g. civicrm_event * - * @var string|null + * @var string * (SQL type: varchar(64)) * Note that values will be retrieved from the database as a string. */ @@ -154,6 +154,7 @@ class CRM_Core_DAO_Discount extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Entity Table'), 'description' => ts('physical tablename for entity being joined to discount, e.g. civicrm_event'), + 'required' => TRUE, 'maxlength' => 64, 'size' => CRM_Utils_Type::BIG, 'usage' => [ @@ -167,6 +168,9 @@ class CRM_Core_DAO_Discount extends CRM_Core_DAO { 'entity' => 'Discount', 'bao' => 'CRM_Core_BAO_Discount', 'localizable' => 0, + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_BAO_Discount::entityTables', + ], 'add' => '2.1', ], 'entity_id' => [ @@ -210,6 +214,7 @@ class CRM_Core_DAO_Discount extends CRM_Core_DAO { 'html' => [ 'type' => 'Select', 'label' => ts("Price Set"), + 'controlField' => 'entity_id', ], 'pseudoconstant' => [ 'table' => 'civicrm_price_set', diff --git a/civicrm/CRM/Core/DAO/EntityTag.php b/civicrm/CRM/Core/DAO/EntityTag.php index c099f7b383..3f57d572bd 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:abace77d8add308d67ba45fa73c2f249) + * (GenCodeChecksum:2fccc138a26fe391325fd641c891cd91) */ /** @@ -195,6 +195,7 @@ class CRM_Core_DAO_EntityTag extends CRM_Core_DAO { 'html' => [ 'type' => 'Select', 'label' => ts("Tag"), + 'controlField' => 'entity_table', ], 'pseudoconstant' => [ 'table' => 'civicrm_tag', diff --git a/civicrm/CRM/Core/DAO/MailSettings.php b/civicrm/CRM/Core/DAO/MailSettings.php index 545ad74151..3b621dcafd 100644 --- a/civicrm/CRM/Core/DAO/MailSettings.php +++ b/civicrm/CRM/Core/DAO/MailSettings.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/MailSettings.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:2e7847f2338745c805f4d8c8939ac511) + * (GenCodeChecksum:7d9b4af7c9e04acac0e734ce036ea527) */ /** @@ -193,6 +193,60 @@ class CRM_Core_DAO_MailSettings extends CRM_Core_DAO { */ public $is_contact_creation_disabled_if_no_match; + /** + * Ignored for bounce processing, only for email-to-activity + * + * @var bool|string + * (SQL type: tinyint) + * Note that values will be retrieved from the database as a string. + */ + public $is_active; + + /** + * Implicit FK to civicrm_option_value where option_group = activity_type + * + * @var int|string|null + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $activity_type_id; + + /** + * Foreign key to the Campaign. + * + * @var int|string|null + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $campaign_id; + + /** + * Which email recipient to add as the activity source (from, to, cc, bcc). + * + * @var string|null + * (SQL type: varchar(4)) + * Note that values will be retrieved from the database as a string. + */ + public $activity_source; + + /** + * Which email recipients to add as the activity targets (from, to, cc, bcc). + * + * @var string|null + * (SQL type: varchar(16)) + * Note that values will be retrieved from the database as a string. + */ + public $activity_targets; + + /** + * Which email recipients to add as the activity assignees (from, to, cc, bcc). + * + * @var string|null + * (SQL type: varchar(16)) + * Note that values will be retrieved from the database as a string. + */ + public $activity_assignees; + /** * Class constructor. */ @@ -221,6 +275,7 @@ class CRM_Core_DAO_MailSettings extends CRM_Core_DAO { if (!isset(Civi::$statics[__CLASS__]['links'])) { Civi::$statics[__CLASS__]['links'] = static::createReferenceColumns(__CLASS__); Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'domain_id', 'civicrm_domain', 'id'); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'campaign_id', 'civicrm_campaign', 'id'); CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']); } return Civi::$statics[__CLASS__]['links']; @@ -607,6 +662,155 @@ class CRM_Core_DAO_MailSettings extends CRM_Core_DAO { ], 'add' => '5.31', ], + 'is_active' => [ + 'name' => 'is_active', + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'title' => ts('Enabled?'), + 'description' => ts('Ignored for bounce processing, only for email-to-activity'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_mail_settings.is_active', + 'default' => '1', + 'table_name' => 'civicrm_mail_settings', + 'entity' => 'MailSettings', + 'bao' => 'CRM_Core_BAO_MailSettings', + 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + ], + 'add' => '5.66', + ], + 'activity_type_id' => [ + 'name' => 'activity_type_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Activity Type'), + 'description' => ts('Implicit FK to civicrm_option_value where option_group = activity_type'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_mail_settings.activity_type_id', + 'table_name' => 'civicrm_mail_settings', + 'entity' => 'MailSettings', + 'bao' => 'CRM_Core_BAO_MailSettings', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select', + ], + 'pseudoconstant' => [ + 'optionGroupName' => 'activity_type', + 'optionEditPath' => 'civicrm/admin/options/activity_type', + ], + 'add' => '5.66', + ], + 'campaign_id' => [ + 'name' => 'campaign_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Campaign ID'), + 'description' => ts('Foreign key to the Campaign.'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_mail_settings.campaign_id', + 'default' => NULL, + 'table_name' => 'civicrm_mail_settings', + 'entity' => 'MailSettings', + 'bao' => 'CRM_Core_BAO_MailSettings', + 'localizable' => 0, + 'FKClassName' => 'CRM_Campaign_DAO_Campaign', + 'html' => [ + 'type' => 'EntityRef', + 'label' => ts("Campaign"), + ], + 'pseudoconstant' => [ + 'table' => 'civicrm_campaign', + 'keyColumn' => 'id', + 'labelColumn' => 'title', + 'prefetch' => 'FALSE', + ], + 'add' => '5.66', + ], + 'activity_source' => [ + 'name' => 'activity_source', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Activity Source'), + 'description' => ts('Which email recipient to add as the activity source (from, to, cc, bcc).'), + 'maxlength' => 4, + 'size' => CRM_Utils_Type::FOUR, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_mail_settings.activity_source', + 'table_name' => 'civicrm_mail_settings', + 'entity' => 'MailSettings', + 'bao' => 'CRM_Core_BAO_MailSettings', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select', + ], + 'add' => '5.66', + ], + 'activity_targets' => [ + 'name' => 'activity_targets', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Activity Targets'), + 'description' => ts('Which email recipients to add as the activity targets (from, to, cc, bcc).'), + 'maxlength' => 16, + 'size' => CRM_Utils_Type::TWELVE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_mail_settings.activity_targets', + 'table_name' => 'civicrm_mail_settings', + 'entity' => 'MailSettings', + 'bao' => 'CRM_Core_BAO_MailSettings', + 'localizable' => 0, + 'serialize' => self::SERIALIZE_COMMA, + 'html' => [ + 'type' => 'Select', + ], + 'add' => '5.66', + ], + 'activity_assignees' => [ + 'name' => 'activity_assignees', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => ts('Activity Assignees'), + 'description' => ts('Which email recipients to add as the activity assignees (from, to, cc, bcc).'), + 'maxlength' => 16, + 'size' => CRM_Utils_Type::TWELVE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_mail_settings.activity_assignees', + 'table_name' => 'civicrm_mail_settings', + 'entity' => 'MailSettings', + 'bao' => 'CRM_Core_BAO_MailSettings', + 'localizable' => 0, + 'serialize' => self::SERIALIZE_COMMA, + 'html' => [ + 'type' => 'Select', + ], + 'add' => '5.66', + ], ]; CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); } diff --git a/civicrm/CRM/Core/DAO/UserJob.php b/civicrm/CRM/Core/DAO/UserJob.php index 9917b6b120..bde39eeef2 100644 --- a/civicrm/CRM/Core/DAO/UserJob.php +++ b/civicrm/CRM/Core/DAO/UserJob.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/UserJob.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:290ce6f8908a1dfc1590534029171f41) + * (GenCodeChecksum:03487d9109a74e0f60ee656055d205f7) */ /** @@ -395,6 +395,11 @@ class CRM_Core_DAO_UserJob extends CRM_Core_DAO { ], 'pseudoconstant' => [ 'callback' => 'CRM_Core_BAO_UserJob::getTypes', + 'suffixes' => [ + 'name', + 'label', + 'url', + ], ], 'add' => '5.50', ], diff --git a/civicrm/CRM/Core/EntityTokens.php b/civicrm/CRM/Core/EntityTokens.php index 1fb8bcebc5..908937cea0 100644 --- a/civicrm/CRM/Core/EntityTokens.php +++ b/civicrm/CRM/Core/EntityTokens.php @@ -138,6 +138,9 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber { Civi::log()->info('invalid date token'); } } + if ($this->isHTMLTextField($field)) { + return $row->format('text/html')->tokens($entity, $field, (string) $fieldValue); + } $row->format('text/plain')->tokens($entity, $field, (string) $fieldValue); } @@ -362,8 +365,7 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber { public function checkActive(TokenProcessor $processor) { return ((!empty($processor->context['actionMapping']) // This makes the 'schema context compulsory - which feels accidental - // since recent discu - && $processor->context['actionMapping']->getEntityTable()) || in_array($this->getEntityIDField(), $processor->context['schema'])) && in_array($this->getApiEntityName(), array_keys(\Civi::service('action_object_provider')->getEntities())); + && $processor->context['actionMapping']->getEntityName()) || in_array($this->getEntityIDField(), $processor->context['schema'])) && in_array($this->getApiEntityName(), array_keys(\Civi::service('action_object_provider')->getEntities())); } /** @@ -372,7 +374,7 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber { * @param \Civi\ActionSchedule\Event\MailingQueryEvent $e */ public function alterActionScheduleQuery(MailingQueryEvent $e): void { - if ($e->mapping->getEntityTable() !== $this->getExtendableTableName()) { + if ($e->mapping->getEntityTable($e->actionSchedule) !== $this->getExtendableTableName()) { return; } $e->query->select('e.id AS tokenContext_' . $this->getEntityIDField()); diff --git a/civicrm/CRM/Core/Error.php b/civicrm/CRM/Core/Error.php index 5e6b349e57..fd6ae04c14 100644 --- a/civicrm/CRM/Core/Error.php +++ b/civicrm/CRM/Core/Error.php @@ -468,46 +468,57 @@ class CRM_Core_Error extends PEAR_ErrorStack { * * @param string $name name of debug section * @param mixed $variable reference to variables that we need a trace of - * @param bool $log should we log or return the output - * @param bool $html whether to generate a HTML-escaped output + * @param bool $log + * - TRUE: log to error_log and echo one of: everything / a code / nothing, depending on permissions. + * - FALSE: only return the output as a string. Nothing to error_log or echo. + * @param bool $html whether to HTML-escape output (typically use TRUE unless you know your $variable is safe) * @param bool $checkPermission should we check permissions before displaying output - * useful when we die during initialization and permissioning - * subsystem is not initialized - CRM-13765 + * useful when we die during initialization and permissioning + * subsystem is not initialized - CRM-13765 * * @return string * the generated output + * + * @deprecated prefer Civi::log(). + * @see https://github.com/civicrm/civicrm-core/pull/27138 */ public static function debug($name, $variable = NULL, $log = TRUE, $html = TRUE, $checkPermission = TRUE) { - $error = self::singleton(); - if ($variable === NULL) { $variable = $name; $name = NULL; } $out = print_r($variable, TRUE); - $prefix = NULL; - if ($html) { - $out = htmlspecialchars($out); - if ($name) { - $prefix = "<p>$name</p>"; - } - $out = "{$prefix}<p><pre>$out</pre></p><p></p>"; + $outHTML = htmlspecialchars($out); + + if ($name) { + $outHTML = "<p>" . htmlspecialchars($name) . "</p><p><pre>$outHTML</pre></p>"; + $out = "$name:\n$out"; } - else { - if ($name) { - $prefix = "$name:\n"; + + if ($log) { + // Log the output to error_log with a unique reference. + $unique = substr(md5(random_bytes(32)), 0, 12); + error_log("errorID:$unique\n$out"); + + if (!$checkPermission) { + // Permission system inactive, only emit a reference to content in logfile + echo "Critical error. Please see server logs for errorID:$unique"; + } + else { + if (CRM_Core_Permission::check('view debug output')) { + // We are outputting to the browser. + echo $html ? $outHTML : $out; + } + else { + // No permission; show nothing visible, but include the error in an HTML + // comment in case a dev wants to inspect. + echo $html ? "<!-- critical error reference $unique -->" : ''; + } } - $out = "{$prefix}$out\n"; - } - if ( - $log && - (!$checkPermission || CRM_Core_Permission::check('view debug output')) - ) { - echo $out; } - return $out; + return $html ? $outHTML : $out; } /** diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index e671b3f8b6..88968b816f 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -114,17 +114,6 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ protected $_paymentProcessorID; - /** - * Is pay later enabled for the form. - * - * As part of trying to consolidate various payment pages we store processors here & have functions - * at this level to manage them. An alternative would be to have a separate Form that is inherited - * by all forms that allow payment processing. - * - * @var int - */ - protected $_is_pay_later_enabled; - /** * The renderer used for this form * @@ -132,18 +121,6 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ protected $_renderer; - /** - * An array to hold a list of datefields on the form - * so that they can be converted to ISO in a consistent manner - * - * @var array - * - * e.g on a form declare $_dateFields = array( - * 'receive_date' => array('default' => 'now'), - * ); - */ - protected $_dateFields = []; - /** * Cache the smarty template for efficiency reasons * @@ -198,6 +175,16 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ protected $exportedValues = []; + /** + * The contact ID that has been authenticated and can be used for checking permissions. + * + * It could be a combination of cid in the url plus a checksum or the logged in user. + * Importantly it can be used to run permission checks on. + * + * @var int + */ + private $authenticatedContactID; + /** * @return string */ @@ -479,7 +466,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { // Fudge some extra types that quickform doesn't support $inputType = $type; if ($type == 'wysiwyg' || in_array($type, self::$html5Types)) { - $attributes = ($attributes ? $attributes : []) + ['class' => '']; + $attributes = ($attributes ?: []) + ['class' => '']; $attributes['class'] = ltrim($attributes['class'] . " crm-form-$type"); if ($type == 'wysiwyg' && isset($attributes['preset'])) { $attributes['data-preset'] = $attributes['preset']; @@ -490,8 +477,14 @@ class CRM_Core_Form extends HTML_QuickForm_Page { // Like select but accepts rich array data (with nesting, colors, icons, etc) as option list. if ($inputType == 'select2') { $type = 'text'; - $options = $attributes; - $attributes = ($extra ? $extra : []) + ['class' => '']; + $options = []; + foreach ($attributes as $option) { + // Transform options from api4.getFields format + $option['text'] = $option['text'] ?? $option['label']; + unset($option['label']); + $options[] = $option; + } + $attributes = ($extra ?: []) + ['class' => '']; $attributes['class'] = ltrim($attributes['class'] . " crm-select2 crm-form-select2"); $attributes['data-select-params'] = json_encode(['data' => $options, 'multiple' => !empty($attributes['multiple'])]); unset($attributes['multiple']); @@ -1381,7 +1374,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { */ public function &addRadio($name, $title, $values, $attributes = [], $separator = NULL, $required = FALSE, $optionAttributes = []) { $options = []; - $attributes = $attributes ? $attributes : []; + $attributes = $attributes ?: []; $allowClear = !empty($attributes['allowClear']); unset($attributes['allowClear']); $attributes['id_suffix'] = $name; @@ -1825,6 +1818,9 @@ class CRM_Core_Form extends HTML_QuickForm_Page { $widget = $widget == 'Select2' ? $widget : 'Select'; $props['multiple'] = CRM_Utils_Array::value('multiple', $props, TRUE); } + elseif (!empty($fieldSpec['serialize'])) { + $props['multiple'] = TRUE; + } // Add data for popup link. $canEditOptions = CRM_Core_Permission::check('administer CiviCRM'); @@ -2388,66 +2384,119 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } /** - * Get contact if for a form object. Prioritise - * - cid in URL if 0 (on behalf on someoneelse) - * (@todo consider setting a variable if onbehalf for clarity of downstream 'if's - * - logged in user id if it matches the one in the cid in the URL - * - contact id validated from a checksum from a checksum - * - cid from the url if the caller has ACL permission to view - * - fallback is logged in user (or ? NULL if no logged in user) (@todo wouldn't 0 be more intuitive?) + * Get contact iD for a form object. + * + * This checks the requestedContactID and returns it if + * - it is the number 0 (relevant for online contribution & event forms). + * - it is the logged in user + * - it is validated by a checksum in the url. + * - it is a contact that the logged in user has permission to view + * + * Failing that it returns the logged in user, if any. This is may be useful + * for users taking actions from their contact dashboard (although usually one + * of the variants above would be hit). * * @return NULL|int + * + * @throws \CRM_Core_Exception */ protected function setContactID() { - $tempID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); - if (isset($this->_params) && !empty($this->_params['select_contact_id'])) { - $tempID = $this->_params['select_contact_id']; - } - if (isset($this->_params, $this->_params[0]) && !empty($this->_params[0]['select_contact_id'])) { - // event form stores as an indexed array, contribution form not so much... - $tempID = $this->_params[0]['select_contact_id']; - } + $requestedContactID = $this->getRequestedContactID(); // force to ignore the authenticated user - if ($tempID === '0' || $tempID === 0) { + if ($requestedContactID === 0) { // we set the cid on the form so that this will be retained for the Confirm page // in the multi-page form & prevent us returning the $userID when this is called // from that page // we don't really need to set it when $tempID is set because the params have that stored $this->set('cid', 0); - CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => (int) $tempID]); - return (int) $tempID; - } - - $userID = CRM_Core_Session::getLoggedInContactID(); - - if (!is_null($tempID) && $tempID === $userID) { - CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => (int) $tempID]); - return (int) $userID; + CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => $requestedContactID]); + return (int) $requestedContactID; } - //check if this is a checksum authentication - $userChecksum = CRM_Utils_Request::retrieve('cs', 'String', $this); - if ($userChecksum) { - //check for anonymous user. - $validUser = CRM_Contact_BAO_Contact_Utils::validChecksum($tempID, $userChecksum); - if ($validUser) { - CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => (int) $tempID]); - CRM_Core_Resources::singleton()->addVars('coreForm', ['checksum' => $userChecksum]); - return $tempID; + if ($requestedContactID === $this->getAuthenticatedContactID()) { + CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => $requestedContactID]); + // Check if this is a checksum authentication. + if ($this->getAuthenticatedCheckSumContactID()) { + CRM_Core_Resources::singleton()->addVars('coreForm', ['checksum' => CRM_Utils_Request::retrieve('cs', 'String', $this)]); } + return $requestedContactID; } + // check if user has permission, CRM-12062 - elseif ($tempID && CRM_Contact_BAO_Contact_Permission::allow($tempID)) { - CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => (int) $tempID]); - return $tempID; + if ($requestedContactID && CRM_Contact_BAO_Contact_Permission::allow($requestedContactID)) { + CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => (int) $requestedContactID]); + return $requestedContactID; } + $userID = CRM_Core_Session::getLoggedInContactID(); if (is_numeric($userID)) { CRM_Core_Resources::singleton()->addVars('coreForm', ['contact_id' => (int) $userID]); } return is_numeric($userID) ? $userID : NULL; } + /** + * Get the contact ID that has been requested (via url or form value). + * + * Ideally the forms would override this so only the cid in the url + * would be checked in the shared form function. + * + * @return int + * @throws \CRM_Core_Exception + */ + public function getRequestedContactID(): ?int { + if (isset($this->_params) && !empty($this->_params['select_contact_id'])) { + return (int) $this->_params['select_contact_id']; + } + if (isset($this->_params, $this->_params[0]) && !empty($this->_params[0]['select_contact_id'])) { + // Event form stores as an indexed array, contribution form not so much... + return (int) $this->_params[0]['select_contact_id']; + } + $urlContactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); + return is_numeric($urlContactID) ? (int) $urlContactID : NULL; + } + + /** + * Get the authenticated contact ID. + * + * This is either + * - a contact ID authenticated by checksum + * - the logged in user + * - 0 for none. + * + * @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 + * + * @throws \CRM_Core_Exception + */ + public function getAuthenticatedContactID() : int { + if ($this->authenticatedContactID === NULL) { + $this->authenticatedContactID = $this->getAuthenticatedCheckSumContactID(); + if (!$this->authenticatedContactID) { + $this->authenticatedContactID = (int) CRM_Core_Session::getLoggedInContactID(); + } + } + return $this->authenticatedContactID; + } + + /** + * Get the contact ID authenticated as a valid by checksum. + * + * @return int + * @throws \CRM_Core_Exception + */ + protected function getAuthenticatedCheckSumContactID(): int { + $requestedContactID = $this->getRequestedContactID(); + $userChecksum = CRM_Utils_Request::retrieve('cs', 'String', $this); + if ($userChecksum && CRM_Contact_BAO_Contact_Utils::validChecksum($requestedContactID, $userChecksum)) { + return $requestedContactID; + } + return 0; + } + /** * Get the contact id that the form is being submitted for. * diff --git a/civicrm/CRM/Core/Form/RecurringEntity.php b/civicrm/CRM/Core/Form/RecurringEntity.php index 181f7cc140..6390726a75 100644 --- a/civicrm/CRM/Core/Form/RecurringEntity.php +++ b/civicrm/CRM/Core/Form/RecurringEntity.php @@ -349,6 +349,7 @@ class CRM_Core_Form_RecurringEntity { CRM_Core_BAO_ActionSchedule::deleteRecord($params); unset($params['id']); } + $dbParams['name'] = 'repeat_' . $params['used_for'] . '_' . $params['entity_id']; $actionScheduleObj = CRM_Core_BAO_ActionSchedule::writeRecord($dbParams); //exclude dates @@ -392,7 +393,7 @@ class CRM_Core_Form_RecurringEntity { } } - //Set type for API + // 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]; @@ -403,10 +404,11 @@ class CRM_Core_Form_RecurringEntity { if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func']) && !empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class']) ) { - $preDeleteResult = call_user_func_array(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['pre_delete_func'], [$params['entity_id']]); - if (!empty($preDeleteResult)) { - call_user_func([CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['helper_class'], $preDeleteResult]); - } + // 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']]); } //Ready to execute delete on entities if it has delete function set if (!empty(CRM_Core_BAO_RecurringEntity::$_recurringEntityHelper[$params['entity_table']]['delete_func']) && diff --git a/civicrm/CRM/Core/Form/Renderer.php b/civicrm/CRM/Core/Form/Renderer.php index f85323feea..92e23e7a50 100644 --- a/civicrm/CRM/Core/Form/Renderer.php +++ b/civicrm/CRM/Core/Form/Renderer.php @@ -165,16 +165,20 @@ class CRM_Core_Form_Renderer extends HTML_QuickForm_Renderer_ArraySmarty { } } - $class = $element->getAttribute('class'); + $class = $element->getAttribute('class') ?? ''; $type = $element->getType(); if (!$class) { if ($type == 'text' || $type == 'password') { $size = $element->getAttribute('size'); if (!empty($size)) { - $class = self::$_sizeMapper[$size] ?? NULL; + $class = self::$_sizeMapper[$size] ?? ''; } } } + // When select2 is an <input> it requires comma-separated values instead of an array + if (in_array($type, ['text', 'hidden']) && str_contains($class, 'crm-select2') && is_array($element->getValue())) { + $element->setValue(implode(',', $element->getValue())); + } if ($type == 'select' && $element->getAttribute('multiple')) { $type = 'multiselect'; diff --git a/civicrm/CRM/Core/I18n.php b/civicrm/CRM/Core/I18n.php index 7484564f5b..2c789e152e 100644 --- a/civicrm/CRM/Core/I18n.php +++ b/civicrm/CRM/Core/I18n.php @@ -774,7 +774,7 @@ class CRM_Core_I18n { */ public static function getLocale() { global $tsLocale; - return $tsLocale ? $tsLocale : 'en_US'; + return $tsLocale ?: 'en_US'; } /** diff --git a/civicrm/CRM/Core/I18n/SchemaStructure.php b/civicrm/CRM/Core/I18n/SchemaStructure.php index 87ca894a09..672da8d722 100644 --- a/civicrm/CRM/Core/I18n/SchemaStructure.php +++ b/civicrm/CRM/Core/I18n/SchemaStructure.php @@ -30,7 +30,7 @@ class CRM_Core_I18n_SchemaStructure { if (!$result) { $result = [ 'civicrm_location_type' => [ - 'display_name' => "varchar(64) NOT NULL COMMENT 'Location Type Display Name.'", + 'display_name' => "varchar(64) NOT NULL DEFAULT '' COMMENT 'Location Type Display Name.'", ], 'civicrm_option_group' => [ 'title' => "varchar(255) COMMENT 'Option Group title.'", @@ -58,7 +58,7 @@ class CRM_Core_I18n_SchemaStructure { 'label' => "varchar(128) COMMENT 'Label for Membership Status'", ], 'civicrm_survey' => [ - 'title' => "varchar(255) NOT NULL COMMENT 'Title of the Survey.'", + 'title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Title of the Survey.'", 'instructions' => "text COMMENT 'Script instructions for volunteers to use for the survey.'", 'thankyou_title' => "varchar(255) COMMENT 'Title for Thank-you page (header title tag, and display at the top of the page).'", 'thankyou_text' => "text COMMENT 'text and html allowed. displayed above result on success page'", @@ -67,7 +67,7 @@ class CRM_Core_I18n_SchemaStructure { 'label' => "varchar(255) COMMENT 'localized label for display of this status type'", ], 'civicrm_case_type' => [ - 'title' => "varchar(64) NOT NULL COMMENT 'Natural language name for Case Type'", + 'title' => "varchar(64) NOT NULL DEFAULT '' COMMENT 'Natural language name for Case Type'", 'description' => "varchar(255) COMMENT 'Description of the Case Type'", ], 'civicrm_tell_friend' => [ @@ -78,27 +78,27 @@ class CRM_Core_I18n_SchemaStructure { 'thankyou_text' => "text COMMENT 'Thank you message displayed on success page.'", ], 'civicrm_custom_group' => [ - 'title' => "varchar(64) NOT NULL COMMENT 'Friendly Name.'", + 'title' => "varchar(64) NOT NULL DEFAULT '' COMMENT 'Friendly Name.'", 'help_pre' => "text COMMENT 'Description and/or help text to display before fields in form.'", 'help_post' => "text COMMENT 'Description and/or help text to display after fields in form.'", ], 'civicrm_custom_field' => [ - 'label' => "varchar(255) NOT NULL COMMENT 'Text for form field label (also friendly name for administering this custom property).'", + 'label' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Text for form field label (also friendly name for administering this custom property).'", 'help_pre' => "text COMMENT 'Description and/or help text to display before this field.'", 'help_post' => "text COMMENT 'Description and/or help text to display after this field.'", ], 'civicrm_option_value' => [ - 'label' => "varchar(512) NOT NULL COMMENT 'Option string as displayed to users - e.g. the label in an HTML OPTION tag.'", + 'label' => "varchar(512) NOT NULL DEFAULT '' COMMENT 'Option string as displayed to users - e.g. the label in an HTML OPTION tag.'", 'description' => "text COMMENT 'Optional description.'", ], 'civicrm_group' => [ - 'title' => "varchar(255) NOT NULL COMMENT 'Name of Group.'", - 'frontend_title' => "varchar(255) NOT NULL COMMENT 'Alternative public title for this Group.'", + 'title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of Group.'", + 'frontend_title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Alternative public title for this Group.'", 'frontend_description' => "text DEFAULT NULL COMMENT 'Alternative public description of the group.'", ], 'civicrm_contribution_page' => [ - 'title' => "varchar(255) NOT NULL COMMENT 'Contribution Page title. For top of page display'", - 'frontend_title' => "varchar(255) NOT NULL COMMENT 'Contribution Page Public title'", + 'title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Contribution Page title. For top of page display'", + 'frontend_title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Contribution Page Public title'", 'intro_text' => "text COMMENT 'Text and html allowed. Displayed below title.'", 'pay_later_text' => "text COMMENT 'The text displayed to the user in the main form'", 'pay_later_receipt' => "text COMMENT 'The receipt sent to the user instead of the normal receipt text'", @@ -112,16 +112,16 @@ class CRM_Core_I18n_SchemaStructure { 'footer_text' => "text COMMENT 'Text and html allowed. Displayed at the bottom of the first page of the contribution wizard.'", ], 'civicrm_product' => [ - 'name' => "varchar(255) NOT NULL COMMENT 'Required product/premium name'", + 'name' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Required product/premium name'", 'description' => "text COMMENT 'Optional description of the product/premium.'", 'options' => "text COMMENT 'Store comma-delimited list of color, size, etc. options for the product.'", ], 'civicrm_payment_processor' => [ - 'title' => "varchar(255) NOT NULL COMMENT 'Name of processor when shown to CiviCRM administrators.'", - 'frontend_title' => "varchar(255) NOT NULL COMMENT 'Name of processor when shown to users making a payment.'", + 'title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of processor when shown to CiviCRM administrators.'", + 'frontend_title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of processor when shown to users making a payment.'", ], 'civicrm_membership_type' => [ - 'name' => "varchar(128) NOT NULL COMMENT 'Name of Membership Type'", + 'name' => "varchar(128) NOT NULL DEFAULT '' COMMENT 'Name of Membership Type'", 'description' => "varchar(255) COMMENT 'Description of Membership Type'", ], 'civicrm_membership_block' => [ @@ -131,7 +131,7 @@ class CRM_Core_I18n_SchemaStructure { 'renewal_text' => "text COMMENT 'Text to display for member renewal'", ], 'civicrm_price_set' => [ - 'title' => "varchar(255) NOT NULL COMMENT 'Displayed title for the Price Set.'", + 'title' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Displayed title for the Price Set.'", 'help_pre' => "text COMMENT 'Description and/or help text to display before fields in form.'", 'help_post' => "text COMMENT 'Description and/or help text to display after fields in form.'", ], @@ -139,7 +139,7 @@ class CRM_Core_I18n_SchemaStructure { 'label' => "varchar(255) COMMENT 'dashlet title'", ], 'civicrm_uf_group' => [ - 'title' => "varchar(64) NOT NULL COMMENT 'Form title.'", + 'title' => "varchar(64) NOT NULL DEFAULT '' COMMENT 'Form title.'", 'frontend_title' => "varchar(64) COMMENT 'Profile Form Public title'", 'help_pre' => "text COMMENT 'Description and/or help text to display before fields in form.'", 'help_post' => "text COMMENT 'Description and/or help text to display after fields in form.'", @@ -149,10 +149,10 @@ class CRM_Core_I18n_SchemaStructure { 'civicrm_uf_field' => [ 'help_post' => "text COMMENT 'Description and/or help text to display after this field.'", 'help_pre' => "text COMMENT 'Description and/or help text to display before this field.'", - 'label' => "varchar(255) NOT NULL COMMENT 'To save label for fields.'", + 'label' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'To save label for fields.'", ], 'civicrm_price_field' => [ - 'label' => "varchar(255) NOT NULL COMMENT 'Text for form field label (also friendly name for administering this field).'", + 'label' => "varchar(255) NOT NULL DEFAULT '' COMMENT 'Text for form field label (also friendly name for administering this field).'", 'help_pre' => "text COMMENT 'Description and/or help text to display before this field.'", 'help_post' => "text COMMENT 'Description and/or help text to display after this field.'", ], @@ -447,7 +447,9 @@ class CRM_Core_I18n_SchemaStructure { 'type' => "Text", ], 'pay_later_receipt' => [ - 'type' => "Text", + 'type' => "RichTextEditor", + 'rows' => "8", + 'cols' => "60", ], 'initial_amount_label' => [ 'label' => "Initial Amount Label", diff --git a/civicrm/CRM/Core/Invoke.php b/civicrm/CRM/Core/Invoke.php index 83e9e721bc..64c1f77460 100644 --- a/civicrm/CRM/Core/Invoke.php +++ b/civicrm/CRM/Core/Invoke.php @@ -207,6 +207,9 @@ class CRM_Core_Invoke { self::registerPharHandler(); $config = CRM_Core_Config::singleton(); + + // WISHLIST: if $item is a web-service route, swap prepend to $civicrm_url_defaults + if ($config->userFramework == 'Joomla' && $item) { $config->userFrameworkURLVar = 'task'; diff --git a/civicrm/CRM/Core/Lock.php b/civicrm/CRM/Core/Lock.php index f72c655d59..129e5db599 100644 --- a/civicrm/CRM/Core/Lock.php +++ b/civicrm/CRM/Core/Lock.php @@ -175,7 +175,7 @@ class CRM_Core_Lock implements \Civi\Core\Lock\LockInterface { $query = "SELECT GET_LOCK( %1, %2 )"; $params = [ 1 => [$this->_id, 'String'], - 2 => [$timeout ? $timeout : $this->_timeout, 'Integer'], + 2 => [$timeout ?: $this->_timeout, 'Integer'], ]; $res = CRM_Core_DAO::singleValueQuery($query, $params); if ($res) { diff --git a/civicrm/CRM/Core/ManagedEntities.php b/civicrm/CRM/Core/ManagedEntities.php index 52e8d1c0c4..0c16cb2644 100644 --- a/civicrm/CRM/Core/ManagedEntities.php +++ b/civicrm/CRM/Core/ManagedEntities.php @@ -523,16 +523,18 @@ class CRM_Core_ManagedEntities { */ protected function getDeclarations($modules = NULL): array { $declarations = []; - // Exclude components if given a module name. - if (!$modules || $modules === ['civicrm']) { - foreach (CRM_Core_Component::getEnabledComponents() as $component) { - $declarations = array_merge($declarations, $component->getManagedEntities()); - } - } CRM_Utils_Hook::managed($declarations, $modules); $this->validate($declarations); - foreach (array_keys($declarations) as $name) { - $declarations[$name] += ['name' => $name]; + // FIXME: Some well-meaning developer added this a long time ago to support associative arrays + // that use the array index as the declaration name. But it probably never worked, because by the time it gets to this point, + // lots of implementations of `hook_civicrm_managed()` would have run `$declarations = array_merge($declarations, [...])` + // which would have reset the indexes. + // Adding a noisy deprecation notice for now, then we should remove this block: + foreach ($declarations as $index => $declaration) { + if (empty($declaration['name'])) { + CRM_Core_Error::deprecatedWarning(sprintf('Managed entity "%s" declared by extension "%s" without a name.', $index, $declaration['module'])); + $declarations[$index] += ['name' => $index]; + } } return $declarations; } diff --git a/civicrm/CRM/Core/Menu.php b/civicrm/CRM/Core/Menu.php index d22073f07b..2a23ee2053 100644 --- a/civicrm/CRM/Core/Menu.php +++ b/civicrm/CRM/Core/Menu.php @@ -280,6 +280,44 @@ class CRM_Core_Menu { self::buildAdminLinks($menu); } + /** + * Determine whether a route should canonically use a frontend or backend UI. + * + * @param string $path + * Ex: 'civicrm/contribute/transact' + * @return bool + * TRUE if the route is marked with 'is_public=1'. + * @internal + * We may wish to revise the metadata to allow more distinctions. In that case, `isPublicRoute()` + * would probably get replaced by something else. + */ + public static function isPublicRoute(string $path): bool { + // A page-view may include hundreds of links - so don't hit DB for every link. Use cache. + // In default+demo builds, the list of public routes is much smaller than the list of + // private routes (roughly 1:10; ~50 entries vs ~450 entries). Cache the smaller list. + $cache = Civi::cache('long'); + $index = $cache->get('PublicRouteIndex'); + if ($index === NULL) { + $routes = CRM_Core_DAO::executeQuery('SELECT id, path FROM civicrm_menu WHERE is_public = 1') + ->fetchMap('id', 'path'); + if (empty($routes)) { + Civi::log()->warning('isPublicRoute() should not be called before the menu has been built.'); + return FALSE; + } + $index = array_fill_keys(array_values($routes), TRUE); + $cache->set('PublicRouteIndex', $index); + } + + $parts = explode('/', $path); + while (count($parts) > 1) { + if (isset($index[implode('/', $parts)])) { + return TRUE; + } + array_pop($parts); + } + return FALSE; + } + /** * This function recomputes menu from xml and populates civicrm_menu. * @@ -291,6 +329,7 @@ class CRM_Core_Menu { $query = 'TRUNCATE civicrm_menu'; CRM_Core_DAO::executeQuery($query); } + Civi::cache('long')->delete('PublicRouteIndex'); $menuArray = self::items($truncate); self::build($menuArray); @@ -522,7 +561,7 @@ class CRM_Core_Menu { 'id', 'name' ); } - $menu[$path]['component_id'] = $componentId ? $componentId : NULL; + $menu[$path]['component_id'] = $componentId ?: NULL; $cache[$compPath] = $menu[$path]['component_id']; } } diff --git a/civicrm/CRM/Core/Page/AJAX/Location.php b/civicrm/CRM/Core/Page/AJAX/Location.php index 2faae46bf2..0e47c0a466 100644 --- a/civicrm/CRM/Core/Page/AJAX/Location.php +++ b/civicrm/CRM/Core/Page/AJAX/Location.php @@ -226,7 +226,7 @@ class CRM_Core_Page_AJAX_Location { } $fld = "address[1][{$element}]"; $value = $location['address'][1][$element] ?? NULL; - $value = $value ? $value : ""; + $value = $value ?: ""; $result[str_replace([ '][', '[', @@ -244,7 +244,7 @@ class CRM_Core_Page_AJAX_Location { for ($i = 1; $i < 3; $i++) { $fld = "{$block}[{$i}][{$element}]"; $value = $location[$block][$i][$element] ?? NULL; - $value = $value ? $value : ""; + $value = $value ?: ""; $result[str_replace([ '][', '[', diff --git a/civicrm/CRM/Core/Page/Basic.php b/civicrm/CRM/Core/Page/Basic.php index 93a6294074..355e764841 100644 --- a/civicrm/CRM/Core/Page/Basic.php +++ b/civicrm/CRM/Core/Page/Basic.php @@ -451,4 +451,16 @@ abstract class CRM_Core_Page_Basic extends CRM_Core_Page { return []; } + /** + * Get the menu path corresponding to an action on this entity + * + * @param string $linkAction + * e.g. "view" + * @return string|null + * e.g. "civicrm/activity?reset=1&action=view&id=[id]" + */ + public function getLinkPath(string $linkAction): ?string { + return $this->getBAOName()::getEntityPaths()[$linkAction] ?? NULL; + } + } diff --git a/civicrm/CRM/Core/Payment/PayPalIPN.php b/civicrm/CRM/Core/Payment/PayPalIPN.php index 369e4c176a..23be16e1af 100644 --- a/civicrm/CRM/Core/Payment/PayPalIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalIPN.php @@ -308,7 +308,7 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { ]; foreach ($lookup as $name => $paypalName) { $value = $this->retrieve($paypalName, 'String', FALSE); - $input[$name] = $value ? $value : NULL; + $input[$name] = $value ?: NULL; } $input['is_test'] = $this->retrieve('test_ipn', 'Integer', FALSE); diff --git a/civicrm/CRM/Core/Payment/PayPalProIPN.php b/civicrm/CRM/Core/Payment/PayPalProIPN.php index 5b039d3b41..2106e136d4 100644 --- a/civicrm/CRM/Core/Payment/PayPalProIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalProIPN.php @@ -480,7 +480,7 @@ class CRM_Core_Payment_PayPalProIPN extends CRM_Core_Payment_BaseIPN { ]; foreach ($lookup as $name => $paypalName) { $value = $this->retrieve($paypalName, 'String', FALSE); - $input[$name] = $value ? $value : NULL; + $input[$name] = $value ?: NULL; } $input['is_test'] = $this->retrieve('test_ipn', 'Integer', FALSE); diff --git a/civicrm/CRM/Core/Permission.php b/civicrm/CRM/Core/Permission.php index 4bcdf5eda3..64a7db180b 100644 --- a/civicrm/CRM/Core/Permission.php +++ b/civicrm/CRM/Core/Permission.php @@ -996,9 +996,6 @@ class CRM_Core_Permission { 'get' => [], // managed by _civicrm_api3_check_edit_permissions 'update' => [], - 'getquick' => [ - ['access CiviCRM', 'access AJAX API'], - ], 'duplicatecheck' => [ 'access CiviCRM', ], diff --git a/civicrm/CRM/Core/Permission/Base.php b/civicrm/CRM/Core/Permission/Base.php index ac9fbea549..2ecb7e553d 100644 --- a/civicrm/CRM/Core/Permission/Base.php +++ b/civicrm/CRM/Core/Permission/Base.php @@ -143,14 +143,14 @@ class CRM_Core_Permission_Base { public function group($groupType = NULL, $excludeHidden = TRUE) { $userId = CRM_Core_Session::getLoggedInContactID(); $domainId = CRM_Core_Config::domainID(); - if (!isset(Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId])) { - Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId] = Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId] = []; + if (!isset(Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId])) { + Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId] = Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId] = []; } - $groupKey = $groupType ? $groupType : 'all'; + $groupKey = $groupType ?: 'all'; - if (!isset(Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) { - Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = []; + if (!isset(Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) { + Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = []; $groups = CRM_Core_PseudoConstant::allGroup($groupType, $excludeHidden); @@ -159,21 +159,21 @@ class CRM_Core_Permission_Base { // immediately rather than dilute it further $this->_editAdminUser = $this->_viewAdminUser = TRUE; $this->_editPermission = $this->_viewPermission = TRUE; - Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = $groups; - Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = $groups; - return Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]; + Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = $groups; + Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = $groups; + return Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]; } elseif ($this->check('view all contacts')) { $this->_viewAdminUser = TRUE; $this->_viewPermission = TRUE; - Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = $groups; + Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = $groups; } $ids = CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_group', $groups); if (!empty($ids)) { foreach (array_values($ids) as $id) { - $title = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $id, 'title'); - Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey][$id] = $title; + $title = $groups[$id] ?? CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $id, 'title'); + Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey][$id] = $title; $this->_viewPermission = TRUE; } } @@ -181,16 +181,16 @@ class CRM_Core_Permission_Base { $ids = CRM_ACL_API::group(CRM_Core_Permission::EDIT, NULL, 'civicrm_group', $groups); if (!empty($ids)) { foreach (array_values($ids) as $id) { - $title = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $id, 'title'); - Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey][$id] = $title; - Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey][$id] = $title; + $title = $groups[$id] ?? CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $id, 'title'); + Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey][$id] = $title; + Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey][$id] = $title; $this->_editPermission = TRUE; $this->_viewPermission = TRUE; } } } - return Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]; + return Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]; } /** @@ -209,7 +209,7 @@ class CRM_Core_Permission_Base { public function groupClause($type, &$tables, &$whereTables) { $userId = CRM_Core_Session::getLoggedInContactID(); $domainId = CRM_Core_Config::domainID(); - if (!isset(Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId])) { + if (!isset(Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId])) { $this->group(); } @@ -219,18 +219,18 @@ class CRM_Core_Permission_Base { if ($this->_editAdminUser) { $clause = ' ( 1 ) '; } - elseif (empty(Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) { + elseif (empty(Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) { $clause = ' ( 0 ) '; } else { $clauses = []; - $groups = implode(', ', Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]); - $clauses[] = ' ( civicrm_group_contact.group_id IN ( ' . implode(', ', array_keys(Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) . " ) AND civicrm_group_contact.status = 'Added' ) "; + $groups = implode(', ', Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]); + $clauses[] = ' ( civicrm_group_contact.group_id IN ( ' . implode(', ', array_keys(Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) . " ) AND civicrm_group_contact.status = 'Added' ) "; $tables['civicrm_group_contact'] = 1; $whereTables['civicrm_group_contact'] = 1; // foreach group that is potentially a saved search, add the saved search clause - foreach (array_keys(Civi::$statics[__CLASS__]['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]) as $id) { + foreach (array_keys(Civi::$statics['CRM_ACL_API']['editPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]) as $id) { $group = new CRM_Contact_DAO_Group(); $group->id = $id; if ($group->find(TRUE) && $group->saved_search_id) { @@ -250,13 +250,13 @@ class CRM_Core_Permission_Base { if ($this->_viewAdminUser) { $clause = ' ( 1 ) '; } - elseif (empty(Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) { + elseif (empty(Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) { $clause = ' ( 0 ) '; } else { $clauses = []; - $groups = implode(', ', Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]); - $clauses[] = ' civicrm_group.id IN (' . implode(', ', array_keys(Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) . " ) "; + $groups = implode(', ', Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey]); + $clauses[] = ' civicrm_group.id IN (' . implode(', ', array_keys(Civi::$statics['CRM_ACL_API']['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey])) . " ) "; $tables['civicrm_group'] = 1; $whereTables['civicrm_group'] = 1; $clause = ' ( ' . implode(' OR ', $clauses) . ' ) '; diff --git a/civicrm/CRM/Core/PrevNextCache/Redis.php b/civicrm/CRM/Core/PrevNextCache/Redis.php index 5b70cf74dc..0295db9dc2 100644 --- a/civicrm/CRM/Core/PrevNextCache/Redis.php +++ b/civicrm/CRM/Core/PrevNextCache/Redis.php @@ -23,7 +23,7 @@ */ class CRM_Core_PrevNextCache_Redis implements CRM_Core_PrevNextCache_Interface { - const TTL = 21600; + private const TTL = 21600; /** * @var Redis @@ -45,16 +45,34 @@ class CRM_Core_PrevNextCache_Redis implements CRM_Core_PrevNextCache_Interface { $this->prefix .= \CRM_Utils_Cache::DELIMITER . 'prevnext' . \CRM_Utils_Cache::DELIMITER; } + /** + * Get the time-to-live. + * + * This is likely to be made configurable in future. + * + * @return int + */ + public function getTTL() : int { + return self::TTL; + } + public function fillWithSql($cacheKey, $sql, $sqlParams = []) { $dao = CRM_Core_DAO::executeQuery($sql, $sqlParams, FALSE); [$allKey, $dataKey, , $maxScore] = $this->initCacheKey($cacheKey); - + $first = TRUE; while ($dao->fetch()) { [, $entity_id, $data] = array_values($dao->toArray()); $maxScore++; $this->redis->zAdd($allKey, $maxScore, $entity_id); + if ($first) { + $this->redis->expire($allKey, $this->getTTL()); + } $this->redis->hSet($dataKey, $entity_id, $data); + if ($first) { + $this->redis->expire($dataKey, $this->getTTL()); + } + $first = FALSE; } return TRUE; @@ -62,11 +80,18 @@ class CRM_Core_PrevNextCache_Redis implements CRM_Core_PrevNextCache_Interface { public function fillWithArray($cacheKey, $rows) { [$allKey, $dataKey, , $maxScore] = $this->initCacheKey($cacheKey); - + $first = TRUE; foreach ($rows as $row) { $maxScore++; $this->redis->zAdd($allKey, $maxScore, $row['entity_id1']); + if ($first) { + $this->redis->expire($allKey, $this->getTTL()); + } $this->redis->hSet($dataKey, $row['entity_id1'], $row['data']); + if ($first) { + $this->redis->expire($dataKey, $this->getTTL()); + } + $first = FALSE; } return TRUE; @@ -82,14 +107,19 @@ class CRM_Core_PrevNextCache_Redis implements CRM_Core_PrevNextCache_Interface { $selKey = $this->key($cacheKey, 'sel'); if ($action === 'select') { + $first = TRUE; foreach ((array) $ids as $id) { $score = $this->redis->zScore($allKey, $id); $this->redis->zAdd($selKey, $score, $id); + if ($first) { + $this->redis->expire($selKey, $this->getTTL()); + } + $first = FALSE; } } elseif ($action === 'unselect' && $ids === NULL) { $this->redis->del($selKey); - $this->redis->expire($selKey, self::TTL); + $this->redis->expire($selKey, $this->getTTL()); } elseif ($action === 'unselect' && $ids !== NULL) { foreach ((array) $ids as $id) { @@ -112,16 +142,14 @@ class CRM_Core_PrevNextCache_Redis implements CRM_Core_PrevNextCache_Interface { } return [$cacheKey => $result]; } - elseif ($action === 'getall') { + if ($action === 'getall') { $result = []; foreach ($this->redis->zRange($allKey, 0, -1) as $entity_id) { $result[$entity_id] = 1; } return [$cacheKey => $result]; } - else { - throw new \CRM_Core_Exception("Unrecognized action: $action"); - } + throw new \CRM_Core_Exception("Unrecognized action: $action"); } public function getPositions($cacheKey, $id1) { @@ -173,9 +201,12 @@ class CRM_Core_PrevNextCache_Redis implements CRM_Core_PrevNextCache_Interface { } elseif ($id !== NULL && $cacheKey !== NULL) { // Delete a specific contact, within a specific cache. - $this->redis->zRem($this->key($cacheKey, 'all'), $id); - $this->redis->zRem($this->key($cacheKey, 'sel'), $id); - $this->redis->hDel($this->key($cacheKey, 'data'), $id); + $deleted = $this->redis->zRem($this->key($cacheKey, 'all'), $id); + if ($deleted) { + // If they were in the 'all' key they might be in the more specific 'sel' and 'data' keys. + $this->redis->zRem($this->key($cacheKey, 'sel'), $id); + $this->redis->hDel($this->key($cacheKey, 'data'), $id); + } } elseif ($id !== NULL && $cacheKey === NULL) { // Delete a specific contact, across all prevnext caches. @@ -228,10 +259,6 @@ class CRM_Core_PrevNextCache_Redis implements CRM_Core_PrevNextCache_Interface { $selKey = $this->key($cacheKey, 'sel'); $dataKey = $this->key($cacheKey, 'data'); - $this->redis->expire($allKey, self::TTL); - $this->redis->expire($dataKey, self::TTL); - $this->redis->expire($selKey, self::TTL); - $maxScore = 0; foreach ($this->redis->zRange($allKey, -1, -1, TRUE) as $lastElem => $lastScore) { $maxScore = $lastScore; diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php index 2caae6d9c3..4a86234f1f 100644 --- a/civicrm/CRM/Core/PseudoConstant.php +++ b/civicrm/CRM/Core/PseudoConstant.php @@ -803,7 +803,7 @@ WHERE id = %1"; */ public static function allGroup($groupType = NULL, $excludeHidden = TRUE) { $condition = CRM_Contact_BAO_Group::groupTypeCondition($groupType, $excludeHidden); - $groupKey = ($groupType ? $groupType : 'null') . !empty($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); @@ -1533,7 +1533,7 @@ WHERE id = %1 } // Filter domain specific options if (in_array('domain_id', $availableFields)) { - $wheres[] = 'domain_id = ' . CRM_Core_Config::domainID() . ' OR domain_id is NULL'; + $wheres[] = '(domain_id = ' . CRM_Core_Config::domainID() . ' OR domain_id is NULL)'; } $queryParams = [ 1 => [$params['keyColumn'], 'MysqlColumnNameOrAlias'], diff --git a/civicrm/CRM/Core/ScheduledJob.php b/civicrm/CRM/Core/ScheduledJob.php index 6fac4e195c..34cfd57bcf 100644 --- a/civicrm/CRM/Core/ScheduledJob.php +++ b/civicrm/CRM/Core/ScheduledJob.php @@ -18,10 +18,24 @@ */ class CRM_Core_ScheduledJob { + /** + * @var int + * @deprecated + */ public $version = 3; + /** + * @var int + */ + public $id; + public $name = NULL; + /** + * @var string + */ + public $parameters = ''; + public $apiParams = []; public $remarks = []; @@ -30,31 +44,16 @@ class CRM_Core_ScheduledJob { * @param array $params */ public function __construct($params) { + // Fixme - setting undeclared class properties! foreach ($params as $name => $param) { $this->$name = $param; } - // version is set to 3 by default - if different number - // defined in params, it's replaced later on, however, - // it's practically useles, since it seems none of api v2 - // will work properly in cron job setup. It might become - // useful when/if api v4 starts to emerge and will need - // testing in the cron job setup. To permanenty require - // hardcoded api version, it's enough to move below line - // under following if block. - $this->apiParams = ['version' => $this->version]; - - if (!empty($this->parameters)) { - $lines = explode("\n", $this->parameters); - - foreach ($lines as $line) { - $pair = explode("=", $line); - if ($pair === FALSE || count($pair) != 2 || trim($pair[0]) == '' || trim($pair[1]) == '') { - $this->remarks[] .= 'Malformed parameters!'; - break; - } - $this->apiParams[trim($pair[0])] = trim($pair[1]); - } + try { + $this->apiParams = CRM_Core_BAO_Job::parseParameters($this->parameters); + } + catch (CRM_Core_Exception $e) { + $this->remarks[] = $e->getMessage(); } } @@ -137,7 +136,4 @@ class CRM_Core_ScheduledJob { return ($now >= $nextTime); } - public function __destruct() { - } - } diff --git a/civicrm/CRM/Core/SelectValues.php b/civicrm/CRM/Core/SelectValues.php index 0ecdede8c0..0573b1a8a1 100644 --- a/civicrm/CRM/Core/SelectValues.php +++ b/civicrm/CRM/Core/SelectValues.php @@ -488,6 +488,19 @@ class CRM_Core_SelectValues { return $addr; } + public static function smsProvider(): array { + $providers = CRM_SMS_BAO_Provider::getProviders(NULL, NULL, TRUE, 'is_default desc, title'); + $result = []; + foreach ($providers as $provider) { + $result[] = [ + 'id' => $provider['id'], + 'name' => $provider['name'], + 'label' => $provider['title'], + ]; + } + return $result; + } + /** * Different type of Mailing Tokens. * @@ -1105,28 +1118,34 @@ class CRM_Core_SelectValues { $includeEmail = civicrm_api3('setting', 'getvalue', ['name' => 'includeEmailInName', 'group' => 'Search Preferences']); $options = [ 'sort_name' => $includeEmail ? ts('Name/Email') : ts('Name'), - 'contact_id' => ts('Contact ID'), + 'id' => ts('Contact ID'), 'external_identifier' => ts('External ID'), 'first_name' => ts('First Name'), 'last_name' => ts('Last Name'), - 'email' => ts('Email'), - 'phone_numeric' => ts('Phone'), - 'street_address' => ts('Street Address'), - 'city' => ts('City'), - 'postal_code' => ts('Postal Code'), + 'email_primary.email' => ts('Email'), + 'phone_primary.phone_numeric' => ts('Phone'), + 'address_primary.street_address' => ts('Street Address'), + 'address_primary.city' => ts('City'), + 'address_primary.postal_code' => ts('Postal Code'), 'job_title' => ts('Job Title'), ]; - $custom = civicrm_api3('CustomField', 'get', [ - 'return' => ['name', 'label', 'custom_group_id.title'], - 'custom_group_id.extends' => ['IN' => array_merge(['Contact'], CRM_Contact_BAO_ContactType::basicTypes())], - 'data_type' => ['NOT IN' => ['ContactReference', 'Date', 'File']], - 'custom_group_id.is_active' => 1, - 'is_active' => 1, - 'is_searchable' => 1, - 'options' => ['sort' => ['custom_group_id.weight', 'weight'], 'limit' => 0], + $custom = civicrm_api4('CustomField', 'get', [ + 'checkPermissions' => FALSE, + 'select' => ['name', 'label', 'custom_group_id.name', 'custom_group_id.title', 'option_group_id'], + 'where' => [ + ['custom_group_id.extends', 'IN', array_merge(['Contact'], CRM_Contact_BAO_ContactType::basicTypes())], + ['data_type', 'NOT IN', ['ContactReference', 'Date', 'File']], + ['custom_group_id.is_active', '=', TRUE], + ['is_active', '=', TRUE], + ['is_searchable', '=', TRUE], + ], + 'orderBy' => [ + 'custom_group_id.weight' => 'ASC', + 'weight' => 'ASC', + ], ]); - foreach ($custom['values'] as $field) { - $options['custom_' . $field['name']] = $field['custom_group_id.title'] . ': ' . $field['label']; + foreach ($custom as $field) { + $options[$field['custom_group_id.name'] . '.' . $field['name'] . ($field['option_group_id'] ? ':label' : '')] = $field['custom_group_id.title'] . ': ' . $field['label']; } return $options; } @@ -1193,6 +1212,13 @@ class CRM_Core_SelectValues { ]; } + public static function beforeAfter() { + return [ + 'before' => ts('Before'), + 'after' => ts('After'), + ]; + } + /** * Columns from the option_value table which may or may not be used by each option_group. * @@ -1229,24 +1255,4 @@ class CRM_Core_SelectValues { return $options; } - /** - * Limit-to options for schedule reminders. - * - * @return array - */ - public static function getLimitToValues(): array { - return [ - [ - 'id' => 1, - 'name' => 'limit', - 'label' => ts('Limit to'), - ], - [ - 'id' => 2, - 'name' => 'add', - 'label' => ts('Also include'), - ], - ]; - } - } diff --git a/civicrm/CRM/Core/Selector/Controller.php b/civicrm/CRM/Core/Selector/Controller.php index a3723979b1..c2cc8d196a 100644 --- a/civicrm/CRM/Core/Selector/Controller.php +++ b/civicrm/CRM/Core/Selector/Controller.php @@ -183,8 +183,8 @@ class CRM_Core_Selector_Controller { public function __construct($object, $pageID, $sortID, $action, $store = NULL, $output = self::TEMPLATE, $prefix = NULL, $case = NULL) { $this->_object = $object; - $this->_pageID = $pageID ? $pageID : 1; - $this->_sortID = $sortID ? $sortID : NULL; + $this->_pageID = $pageID ?: 1; + $this->_sortID = $sortID ?: NULL; $this->_action = $action; $this->_store = $store; $this->_output = $output; diff --git a/civicrm/CRM/Core/Session.php b/civicrm/CRM/Core/Session.php index 3f0011cc78..5f5f46589e 100644 --- a/civicrm/CRM/Core/Session.php +++ b/civicrm/CRM/Core/Session.php @@ -207,18 +207,18 @@ class CRM_Core_Session { } /** - * Store the variable with the value in the session scope. - * - * This function takes a name, value pair and stores this - * in the session scope. Not sure what happens if we try - * to store complex objects in the session. I suspect it - * is supported but we need to verify this - * + * Store a name-value pair in the session scope. * * @param string $name * Name of the variable. * @param mixed $value - * Value of the variable. + * Value of the variable. It is safe to use scalar values here, as well as + * arrays whose leaf nodes are scalar values. Instances of built-in classes + * like DateTime may be safe, although the retrieved objects will be copies + * of the ones saved here. Instances of custom classes (such as those + * defined in CiviCRM core or extension code) will probably not be rebuilt + * correctly on retrieval. Resources and other special variable types are + * not safe to use. References will be dereferenced. * @param string $prefix * A string to prefix the keys in the session with. */ @@ -325,7 +325,7 @@ class CRM_Core_Session { $ts = $this->get($name, 'timer'); if (!$ts || $ts < time() - $expire) { $this->set($name, time(), 'timer'); - return $ts ? $ts : 'not set'; + return $ts ?: 'not set'; } return FALSE; } @@ -502,7 +502,7 @@ class CRM_Core_Session { 'text' => $text, 'title' => $title, 'type' => $type, - 'options' => $options ? $options : NULL, + 'options' => $options ?: NULL, ]; } } diff --git a/civicrm/CRM/Core/Smarty/plugins/block.url.php b/civicrm/CRM/Core/Smarty/plugins/block.url.php new file mode 100644 index 0000000000..71814af2a1 --- /dev/null +++ b/civicrm/CRM/Core/Smarty/plugins/block.url.php @@ -0,0 +1,60 @@ +<?php + +/** + * Generate a URL. This is thin wrapper for the Civi::url() helper. + * + * @see Civi::url() + * + * Ex: Generate a backend URL. + * {url}backend://civicrm/admin?reset=1{/url} + * + * Ex: Generate a backend URL. Assign it to a Smarty variable. + * {url assign=tmpVar}backend://civicrm/admin?reset=1{/url} + * + * Ex: Generate a backend URL. Set optional flags: (t)ext, (s)sl, (a)bsolute. + * {url flags=tsa}backend://civicrm/admin?reset=1{/url} + * + * Ex: Generate a URL in the current (active) routing scheme. Add named variables. (Values are escaped). + * {url verb="Eat" target="Apples and bananas"}//civicrm/fruit?method=[verb]&data=[target]{/url} + * + * Ex: As above, but use numerical variables. + * {url 1="Eat" 2="Apples and bananas"}//civicrm/fruit?method=[1]&data=[2]{/url} + * + * Ex: Generate a URL. Add some pre-escaped variables using Smarty {$foo}. + * {assign var=myEscapedAction value="Eat"} + * {assign var=myEscapedData value="Apples+and+bananas"} + * {url}//civicrm/fruit?method={$myEscapedAction}&data={$myEscapedData}{/url} + * + * @param array $params + * The following parameters have specific meanings: + * - "assign" (string) - Assign output to a Smarty variable + * - "flags" (string) - List of options, as per `Civi::url(...$flags)` + * All other parameters will be passed-through as variables for the URL. + * @param string $text + * Contents of block. + * @param CRM_Core_Smarty $smarty + * The Smarty object. + * @return string + */ +function smarty_block_url($params, $text, &$smarty) { + if ($text === NULL) { + return NULL; + } + + $flags = 'h' . ($params['flags'] ?? ''); + $assign = $params['assign'] ?? NULL; + unset($params['flags'], $params['assign']); + + $url = (string) Civi::url($text, $flags)->addVars($params); + + // This could be neat, but see discussion in CRM_Core_Smarty_plugins_UrlTest for why it's currently off. + // $url->setVarsCallback([$smarty, 'get_template_vars']); + + if ($assign !== NULL) { + $smarty->assign([$assign => $url]); + return ''; + } + else { + return $url; + } +} diff --git a/civicrm/CRM/Core/Smarty/plugins/function.crmSqlData.php b/civicrm/CRM/Core/Smarty/plugins/function.crmSqlData.php new file mode 100644 index 0000000000..3336fdd039 --- /dev/null +++ b/civicrm/CRM/Core/Smarty/plugins/function.crmSqlData.php @@ -0,0 +1,68 @@ +<?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 | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + +/** + * Evaluate a `*.sqldata.php` file. + * + * @param array $params + * 'file' => Glob expression pointing to 0+ files + * 'exclude' => Regex of files to exclude + * @param CRM_Core_Smarty $smarty + * @return string + * The generated SQL + * @internal + */ +function smarty_function_crmSqlData($params, &$smarty) { + if ($smarty->security) { + throw new \CRM_Core_Exception("crmSqlData not allowed in secure mode"); + // In theory, there's nothing actually wrong with running in secure more. We just don't need it. + // If that changes, then be sure to double-check that the file-name sanitization is good. + } + + $civicrmDir = dirname(__DIR__, 4); + $files = glob($civicrmDir . DIRECTORY_SEPARATOR . $params['file']); + if (!empty($params['exclude'])) { + $files = preg_grep($params['exclude'], $files, PREG_GREP_INVERT); + } + foreach ($files as $file) { + if (!CRM_Utils_File::isChildPath($civicrmDir . DIRECTORY_SEPARATOR . 'sql', $file) || !str_ends_with($file, '.sqldata.php') ||!file_exists($file)) { + throw new \CRM_Core_Exception("Invalid sqldata file: $file"); + } + } + + $items = []; + $classes = []; + foreach ($files as $file) { + /** @var CRM_Core_CodeGen_AbstractSqlData $sqlData */ + $sqlData = include $file; + $items[] = $sqlData; + $classes[get_class($sqlData)] = 1; + } + + if (count($items) > 1) { + if (count($classes) > 1) { + throw new \CRM_Core_Exception("Can only batch-load sqldata files with same type. (Batch: " . $params['file'] . ')'); + } + uasort($items, [array_keys($classes)[0], 'compare']); + } + + $result = ''; + foreach ($items as $item) { + $result .= $item->toSQL(); + } + return $result; +} diff --git a/civicrm/CRM/Core/xml/Menu/Admin.xml b/civicrm/CRM/Core/xml/Menu/Admin.xml index 6eb998424a..9d7d5f4c09 100644 --- a/civicrm/CRM/Core/xml/Menu/Admin.xml +++ b/civicrm/CRM/Core/xml/Menu/Admin.xml @@ -295,7 +295,7 @@ <desc>Schedule Reminders.</desc> <page_callback>CRM_Admin_Page_ScheduleReminders</page_callback> <access_callback>1</access_callback> - <access_arguments>administer CiviCRM data;edit all events</access_arguments> + <access_arguments>administer CiviCRM data</access_arguments> <adminGroup>Communications</adminGroup> <weight>40</weight> </item> @@ -598,10 +598,8 @@ <path>civicrm/admin/job/add</path> <title>Add Scheduled Job</title> <desc>Add a periodially running task.</desc> - <page_callback>CRM_Admin_Page_Job</page_callback> + <page_callback>CRM_Admin_Form_Job</page_callback> <access_arguments>access CiviCRM,administer CiviCRM system</access_arguments> - <adminGroup>System Settings</adminGroup> - <weight>1371</weight> </item> <item> <path>civicrm/admin/job/edit</path> @@ -705,16 +703,6 @@ <title>Price Field Options</title> <page_callback>CRM_Price_Page_Option</page_callback> </item> - <item> - <path>civicrm/ajax/mapping</path> - <page_callback>CRM_Admin_Page_AJAX::mappingList</page_callback> - <access_arguments>administer CiviCRM,access CiviCRM</access_arguments> - </item> - <item> - <path>civicrm/ajax/recipientListing</path> - <page_callback>CRM_Admin_Page_AJAX::recipientListing</page_callback> - <access_arguments>access CiviEvent,access CiviCRM</access_arguments> - </item> <item> <path>civicrm/admin/sms/provider</path> <title>Sms Providers</title> diff --git a/civicrm/CRM/Core/xml/Menu/Misc.xml b/civicrm/CRM/Core/xml/Menu/Misc.xml index 96584fc654..222e7ece8f 100644 --- a/civicrm/CRM/Core/xml/Menu/Misc.xml +++ b/civicrm/CRM/Core/xml/Menu/Misc.xml @@ -107,11 +107,6 @@ <access_arguments>access CiviCRM</access_arguments> <title>CiviCRM API v3</title> </item> - <item> - <path>civicrm/ajax/apiexample</path> - <page_callback>CRM_Admin_Page_APIExplorer::getExampleFile</page_callback> - <access_arguments>access CiviCRM</access_arguments> - </item> <item> <path>civicrm/ajax/apidoc</path> <page_callback>CRM_Admin_Page_APIExplorer::getDoc</page_callback> @@ -141,6 +136,7 @@ <path>civicrm/asset/builder</path> <page_callback>\Civi\Core\AssetBuilder::pageRun</page_callback> <access_arguments>*always allow*</access_arguments> + <is_public>1</is_public> </item> <item> <path>civicrm/contribute/ajax/tableview</path> diff --git a/civicrm/CRM/Custom/Form/DeleteGroup.php b/civicrm/CRM/Custom/Form/DeleteGroup.php index 1fed29e919..1c498a2126 100644 --- a/civicrm/CRM/Custom/Form/DeleteGroup.php +++ b/civicrm/CRM/Custom/Form/DeleteGroup.php @@ -48,14 +48,13 @@ class CRM_Custom_Form_DeleteGroup extends CRM_Core_Form { CRM_Core_BAO_CustomGroup::retrieve($params, $defaults); $this->_title = $defaults['title']; - //check wheter this contain any custom fields + //check if this contains any custom fields $customField = new CRM_Core_DAO_CustomField(); $customField->custom_group_id = $this->_id; if ($customField->find(TRUE)) { - CRM_Core_Session::setStatus(ts("The Group '%1' cannot be deleted! You must Delete all custom fields in this group prior to deleting the group.", [1 => $this->_title]), ts('Deletion Error'), 'error'); - $url = CRM_Utils_System::url('civicrm/admin/custom/group', "reset=1"); - CRM_Utils_System::redirect($url); + CRM_Core_Error::statusBounce(ts("The Group '%1' cannot be deleted! You must Delete all custom fields in this group prior to deleting the group.", [1 => $this->_title]), + CRM_Utils_System::url('civicrm/admin/custom/group', "reset=1")); return TRUE; } $this->assign('title', $this->_title); diff --git a/civicrm/CRM/Custom/Page/AJAX.php b/civicrm/CRM/Custom/Page/AJAX.php index 5ddbb19ccd..2deb349df6 100644 --- a/civicrm/CRM/Custom/Page/AJAX.php +++ b/civicrm/CRM/Custom/Page/AJAX.php @@ -93,7 +93,7 @@ class CRM_Custom_Page_AJAX { /** * Get list of Multi Record Fields. */ - public static function getMultiRecordFieldList() { + public static function getMultiRecordFieldList(): void { $params = CRM_Core_Page_AJAX::defaultSortAndPagerParams(0, 10); $params['cid'] = CRM_Utils_Type::escape($_GET['cid'], 'Integer'); @@ -118,7 +118,7 @@ class CRM_Custom_Page_AJAX { $obj->_DTparams['sort'] = $params['sortBy']; } - list($fields, $attributes) = $obj->browse(); + [$fields, $attributes] = $obj->browse(); // format params and add class attributes $fieldList = []; diff --git a/civicrm/CRM/Custom/Page/Group.php b/civicrm/CRM/Custom/Page/Group.php index 0c336c4901..231d6fea62 100644 --- a/civicrm/CRM/Custom/Page/Group.php +++ b/civicrm/CRM/Custom/Page/Group.php @@ -48,34 +48,40 @@ class CRM_Custom_Page_Group extends CRM_Core_Page { 'url' => 'civicrm/admin/custom/group/field', 'qs' => 'reset=1&action=browse&gid=%%id%%', 'title' => ts('View and Edit Custom Fields'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::BROWSE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/custom/group/preview', 'qs' => 'reset=1&gid=%%id%%', 'title' => ts('Preview Custom Data Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Settings'), 'url' => 'civicrm/admin/custom/group/edit', 'qs' => 'action=update&reset=1&id=%%id%%', 'title' => ts('Edit Custom Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Custom Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Custom Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/custom/group/delete', 'qs' => 'reset=1&id=%%id%%', 'title' => ts('Delete Custom Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/Event/ActionMapping.php b/civicrm/CRM/Event/ActionMapping.php index 424090141c..9450794438 100644 --- a/civicrm/CRM/Event/ActionMapping.php +++ b/civicrm/CRM/Event/ActionMapping.php @@ -28,21 +28,22 @@ abstract class CRM_Event_ActionMapping extends \Civi\ActionSchedule\MappingBase return 'Participant'; } - public function getStatusHeader(): string { - return ts('Participant Status'); + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + $spec->getFieldByName('entity_value') + ->setLabel($this->getLabel()); + $spec->getFieldByName('entity_status') + ->setLabel(ts('Participant Status')); + $spec->getFieldByName('recipient') + ->setLabel(ts('Recipients')); + $spec->getFieldByName('recipient_listing') + ->setRequired($spec->getValue('recipient') === 'participant_role'); } - public function getStatusLabels($value): array { + public function getStatusLabels(?array $entityValue): array { return CRM_Event_PseudoConstant::participantStatus(NULL, NULL, 'label'); } - /** - * Get a list of available date fields. - * - * @return array - * Array(string $fieldName => string $fieldLabel). - */ - public function getDateFields(): array { + public function getDateFields(?array $entityValue = NULL): array { return [ 'start_date' => ts('Event Start'), 'end_date' => ts('Event End'), @@ -51,6 +52,37 @@ abstract class CRM_Event_ActionMapping extends \Civi\ActionSchedule\MappingBase ]; } + public static function getLimitToOptions(): array { + // Events only support "limit", not "add". + return CRM_Utils_Array::findAll(parent::getLimitToOptions(), ['name' => 'limit']); + } + + /** + * Check access to event when the ScheduledReminder form is embedded on an event page + * + * @param array $entityValue + * An array of event ids + * @return bool + */ + public function checkAccess(array $entityValue): bool { + if (!$entityValue) { + return FALSE; + } + // This field is technically multivalued. In reality it should only ever contain one value, + // (because a ScheduledReminder form can only be embedded on one event page at a time) + // but since it's an array, a loop seems appropriate. + foreach ($entityValue as $eventId) { + $access = \Civi\Api4\Event::checkAccess() + ->setAction('update') + ->addValue('id', $eventId) + ->execute()->first()['access']; + if (!$access) { + return FALSE; + } + } + return TRUE; + } + /** * Get a list of recipient types. * @@ -61,8 +93,9 @@ abstract class CRM_Event_ActionMapping extends \Civi\ActionSchedule\MappingBase * array(string $value => string $label). * Ex: array('assignee' => 'Activity Assignee'). */ - public function getRecipientTypes(): array { - return \CRM_Core_OptionGroup::values('event_contacts', FALSE, FALSE, FALSE, NULL, 'label', TRUE, FALSE, 'name'); + public static function getRecipientTypes(): array { + $types = \CRM_Core_OptionGroup::values('event_contacts', FALSE, FALSE, FALSE, NULL, 'label', TRUE, FALSE, 'name'); + return $types + parent::getRecipientTypes(); } /** @@ -105,7 +138,7 @@ abstract class CRM_Event_ActionMapping extends \Civi\ActionSchedule\MappingBase $selectedValues = (array) \CRM_Utils_Array::explodePadded($schedule->entity_value); $selectedStatuses = (array) \CRM_Utils_Array::explodePadded($schedule->entity_status); - $query = \CRM_Utils_SQL_Select::from("{$this->getEntityTable()} e")->param($defaultParams); + $query = \CRM_Utils_SQL_Select::from('civicrm_participant e')->param($defaultParams); $query['casAddlCheckFrom'] = 'civicrm_event r'; $query['casContactIdField'] = 'e.contact_id'; $query['casEntityIdField'] = 'e.id'; diff --git a/civicrm/CRM/Event/ActionMapping/ByEvent.php b/civicrm/CRM/Event/ActionMapping/ByEvent.php index ddb8107245..e5489630b8 100644 --- a/civicrm/CRM/Event/ActionMapping/ByEvent.php +++ b/civicrm/CRM/Event/ActionMapping/ByEvent.php @@ -19,12 +19,16 @@ class CRM_Event_ActionMapping_ByEvent extends CRM_Event_ActionMapping { return self::EVENT_NAME_MAPPING_ID; } + public function getName(): string { + return 'event_id'; + } + public function getLabel(): string { - return ts('Event Name'); + return ts('Event'); } public function getValueLabels(): array { - return CRM_Event_PseudoConstant::event(NULL, FALSE, "( is_template IS NULL OR is_template != 1 )"); + return CRM_Event_PseudoConstant::event(NULL, FALSE, "is_template = 0"); } } diff --git a/civicrm/CRM/Event/ActionMapping/ByTemplate.php b/civicrm/CRM/Event/ActionMapping/ByTemplate.php index 7ee4744d1c..229cbeeed6 100644 --- a/civicrm/CRM/Event/ActionMapping/ByTemplate.php +++ b/civicrm/CRM/Event/ActionMapping/ByTemplate.php @@ -19,6 +19,10 @@ class CRM_Event_ActionMapping_ByTemplate extends CRM_Event_ActionMapping { return self::EVENT_TPL_MAPPING_ID; } + public function getName(): string { + return 'event_template'; + } + public function getLabel(): string { return ts('Event Template'); } diff --git a/civicrm/CRM/Event/ActionMapping/ByType.php b/civicrm/CRM/Event/ActionMapping/ByType.php index fdba67d9e6..78641ad8cf 100644 --- a/civicrm/CRM/Event/ActionMapping/ByType.php +++ b/civicrm/CRM/Event/ActionMapping/ByType.php @@ -19,6 +19,10 @@ class CRM_Event_ActionMapping_ByType extends CRM_Event_ActionMapping { return self::EVENT_TYPE_MAPPING_ID; } + public function getName(): string { + return 'event_type'; + } + public function getLabel(): string { return ts('Event Type'); } @@ -27,4 +31,8 @@ class CRM_Event_ActionMapping_ByType extends CRM_Event_ActionMapping { return CRM_Event_PseudoConstant::eventType(); } + public function checkAccess(array $entityValue): bool { + return FALSE; + } + } diff --git a/civicrm/CRM/Event/BAO/Event.php b/civicrm/CRM/Event/BAO/Event.php index 7f45b9ae4a..f2a5e6dee7 100644 --- a/civicrm/CRM/Event/BAO/Event.php +++ b/civicrm/CRM/Event/BAO/Event.php @@ -268,7 +268,7 @@ class CRM_Event_BAO_Event extends CRM_Event_DAO_Event implements \Civi\Core\Hook $query = " SELECT `id`, `title`, `start_date` FROM `civicrm_event` -WHERE ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0 )"; +WHERE ( civicrm_event.is_template = 0 )"; if (!empty($id)) { $op = is_array($id) ? 'IN' : '='; @@ -363,8 +363,8 @@ WHERE ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0 )"; SELECT count(id) as total_events FROM civicrm_event WHERE civicrm_event.is_active = 1 AND - ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0) AND - civicrm_event.start_date >= DATE_SUB( NOW(), INTERVAL 7 day ) + civicrm_event.is_template = 0 AND + (civicrm_event.start_date >= DATE_SUB(NOW(), INTERVAL 7 day) OR (civicrm_event.end_date IS NOT NULL AND civicrm_event.end_date >= NOW())) $validEventIDs"; $dao = CRM_Core_DAO::executeQuery($query); @@ -373,9 +373,7 @@ WHERE civicrm_event.is_active = 1 AND $eventSummary['total_events'] = $dao->total_events; } - if (empty($eventSummary) || - $dao->total_events == 0 - ) { + if (empty($eventSummary['total_events'])) { return $eventSummary; } @@ -425,8 +423,8 @@ LEFT JOIN civicrm_tell_friend ON ( civicrm_tell_friend.entity_id = civicrm_even LEFT JOIN civicrm_pcp_block ON ( civicrm_pcp_block.entity_id = civicrm_event.id AND civicrm_pcp_block.entity_table = 'civicrm_event') LEFT JOIN civicrm_recurring_entity ON ( civicrm_event.id = civicrm_recurring_entity.entity_id AND civicrm_recurring_entity.entity_table = 'civicrm_event' ) WHERE civicrm_event.is_active = 1 AND - ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0) AND - civicrm_event.start_date >= DATE_SUB( NOW(), INTERVAL 7 day ) + civicrm_event.is_template = 0 AND + (civicrm_event.start_date >= DATE_SUB(NOW(), INTERVAL 7 day) OR (civicrm_event.end_date IS NOT NULL AND civicrm_event.end_date >= NOW())) $validEventIDs ORDER BY civicrm_event.start_date ASC $event_summary_limit @@ -579,7 +577,7 @@ $event_summary_limit $countedRoles = CRM_Event_PseudoConstant::participantRole(NULL, 'filter = 1'); $nonCountedRoles = CRM_Event_PseudoConstant::participantRole(NULL, '( filter = 0 OR filter IS NULL )'); $countedStatus = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 1'); - $nonCountedStatus = CRM_Event_PseudoConstant::participantStatus(NULL, '( is_counted = 0 OR is_counted IS NULL )'); + $nonCountedStatus = CRM_Event_PseudoConstant::participantStatus(NULL, 'is_counted = 0'); $countedStatusANDRoles = array_merge($countedStatus, $countedRoles); $nonCountedStatusANDRoles = array_merge($nonCountedStatus, $nonCountedRoles); @@ -827,7 +825,7 @@ LEFT JOIN civicrm_option_value ON ( civicrm_event.event_type_id = civicrm_option_value.value AND civicrm_option_value.option_group_id = %1 ) WHERE civicrm_event.is_active = 1 - AND (is_template = 0 OR is_template IS NULL) + AND is_template = 0 {$publicCondition} {$dateCondition}"; @@ -1271,7 +1269,7 @@ WHERE civicrm_event.is_active = 1 * Add the custom fields OR array of participant's profile info. * * @param int $id - * @param string $name + * @param string $name eg. customPre or additionalCustomPost to denote the profile location. * @param int $cid * @param \CRM_Core_Smarty $template * @param int $participantId @@ -1378,9 +1376,7 @@ WHERE civicrm_event.is_active = 1 while ($grp->fetch()) { $grpTitles[] = $grp->title; } - if (!empty($grpTitles) && - CRM_Utils_Array::value('title', CRM_Utils_Array::value('group', $fields)) - ) { + if (!empty($grpTitles) && !empty($fields['group']['title'])) { $values[$fields['group']['title']] = implode(', ', $grpTitles); } unset($fields['group']); @@ -1443,22 +1439,15 @@ WHERE civicrm_event.is_active = 1 } } - if (count($val)) { - $template->assign($name, $val); - } - - if (count($groupTitles)) { - $template->assign($name . '_grouptitle', $groupTitles); - } + $template->assign($name, $val); + $template->assign($name . '_grouptitle', $groupTitles); //return if we only require array of participant's info. if ($returnResults) { - if (count($val)) { + if ($val) { return [$val, $groupTitles]; } - else { - return NULL; - } + return NULL; } } @@ -2055,66 +2044,68 @@ WHERE ce.loc_block_id = $locBlockId"; * * @param int $eventId * @param int $permissionType + * @param int $userId * * @return bool|array * Whether the user has permission for this event (or if eventId=NULL an array of permissions) * @throws \CRM_Core_Exception */ - public static function checkPermission(int $eventId, $permissionType = CRM_Core_Permission::VIEW) { + public static function checkPermission(int $eventId, $permissionType = CRM_Core_Permission::VIEW, $userId = NULL) { + $userId = $userId ?? CRM_Core_Session::getLoggedInContactID(); switch ($permissionType) { case CRM_Core_Permission::EDIT: // We also set the cached "view" permission to TRUE if "edit" is TRUE - if (isset(Civi::$statics[__CLASS__]['permission']['edit'][$eventId])) { - return Civi::$statics[__CLASS__]['permission']['edit'][$eventId]; + if (isset(Civi::$statics[__CLASS__]["perm_$userId"]['edit'][$eventId])) { + return Civi::$statics[__CLASS__]["perm_$userId"]['edit'][$eventId]; } - Civi::$statics[__CLASS__]['permission']['edit'][$eventId] = FALSE; + Civi::$statics[__CLASS__]["perm_$userId"]['edit'][$eventId] = FALSE; [$allEvents, $createdEvents] = self::checkPermissionGetInfo($eventId); // Note: for a multisite setup, a user with edit all events, can edit all events // including those from other sites - if (($permissionType == CRM_Core_Permission::EDIT) && CRM_Core_Permission::check('edit all events')) { - Civi::$statics[__CLASS__]['permission']['edit'][$eventId] = TRUE; - Civi::$statics[__CLASS__]['permission']['view'][$eventId] = TRUE; + if (($permissionType == CRM_Core_Permission::EDIT) && CRM_Core_Permission::check('edit all events', $userId)) { + Civi::$statics[__CLASS__]["perm_$userId"]['edit'][$eventId] = TRUE; + Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId] = TRUE; } - elseif (in_array($eventId, CRM_ACL_API::group(CRM_Core_Permission::EDIT, NULL, 'civicrm_event', $allEvents, $createdEvents))) { - Civi::$statics[__CLASS__]['permission']['edit'][$eventId] = TRUE; - Civi::$statics[__CLASS__]['permission']['view'][$eventId] = TRUE; + elseif (in_array($eventId, CRM_ACL_API::group(CRM_Core_Permission::EDIT, $userId, 'civicrm_event', $allEvents, $createdEvents))) { + Civi::$statics[__CLASS__]["perm_$userId"]['edit'][$eventId] = TRUE; + Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId] = TRUE; } - return Civi::$statics[__CLASS__]['permission']['edit'][$eventId]; + return Civi::$statics[__CLASS__]["perm_$userId"]['edit'][$eventId]; case CRM_Core_Permission::VIEW: - if (isset(Civi::$statics[__CLASS__]['permission']['view'][$eventId])) { - return Civi::$statics[__CLASS__]['permission']['view'][$eventId]; + if (isset(Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId])) { + return Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId]; } - Civi::$statics[__CLASS__]['permission']['view'][$eventId] = FALSE; + Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId] = FALSE; [$allEvents, $createdEvents] = self::checkPermissionGetInfo($eventId); - if (CRM_Core_Permission::check('access CiviEvent')) { - if (in_array($eventId, CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_event', $allEvents, array_keys($createdEvents)))) { + if (CRM_Core_Permission::check('access CiviEvent', $userId)) { + if (in_array($eventId, CRM_ACL_API::group(CRM_Core_Permission::VIEW, $userId, 'civicrm_event', $allEvents, array_keys($createdEvents)))) { // User created this event so has permission to view it - return Civi::$statics[__CLASS__]['permission']['view'][$eventId] = TRUE; + return Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId] = TRUE; } - if (CRM_Core_Permission::check('view event participants')) { + if (CRM_Core_Permission::check('view event participants', $userId)) { // User has permission to view all events // use case: allow "view all events" but NOT "edit all events" // so for a normal site allow users with these two permissions to view all events AND // at the same time also allow any hook to override if needed. - if (in_array($eventId, CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_event', $allEvents, array_keys($allEvents)))) { - Civi::$statics[__CLASS__]['permission']['view'][$eventId] = TRUE; + if (in_array($eventId, CRM_ACL_API::group(CRM_Core_Permission::VIEW, $userId, 'civicrm_event', $allEvents, array_keys($allEvents)))) { + Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId] = TRUE; } } } - return Civi::$statics[__CLASS__]['permission']['view'][$eventId]; + return Civi::$statics[__CLASS__]["perm_$userId"]['view'][$eventId]; case CRM_Core_Permission::DELETE: - if (isset(Civi::$statics[__CLASS__]['permission']['delete'][$eventId])) { - return Civi::$statics[__CLASS__]['permission']['delete'][$eventId]; + if (isset(Civi::$statics[__CLASS__]["perm_$userId"]['delete'][$eventId])) { + return Civi::$statics[__CLASS__]["perm_$userId"]['delete'][$eventId]; } - Civi::$statics[__CLASS__]['permission']['delete'][$eventId] = FALSE; - if (CRM_Core_Permission::check('delete in CiviEvent')) { - Civi::$statics[__CLASS__]['permission']['delete'][$eventId] = TRUE; + Civi::$statics[__CLASS__]["perm_$userId"]['delete'][$eventId] = FALSE; + if (CRM_Core_Permission::check('delete in CiviEvent', $userId)) { + Civi::$statics[__CLASS__]["perm_$userId"]['delete'][$eventId] = TRUE; } - return Civi::$statics[__CLASS__]['permission']['delete'][$eventId]; + return Civi::$statics[__CLASS__]["perm_$userId"]['delete'][$eventId]; default: return FALSE; @@ -2205,6 +2196,35 @@ WHERE ce.loc_block_id = $locBlockId"; return Civi::$statics[__CLASS__]['permissions']; } + /** + * @param string $entityName + * @param string $action + * @param array $record + * @param int $userID + * @return bool + * @see CRM_Core_DAO::checkAccess + */ + public static function _checkAccess(string $entityName, string $action, array $record, $userID): bool { + switch ($action) { + case 'create': + return CRM_Core_Permission::check('access CiviEvent', $userID); + + case 'get': + $actionType = CRM_Core_Permission::VIEW; + break; + + case 'delete': + $actionType = CRM_Core_Permission::DELETE; + break; + + default: + $actionType = CRM_Core_Permission::EDIT; + break; + } + + return self::checkPermission($record['id'], $actionType, $userID); + } + /** * Build From Email as the combination of all the email ids of the logged in user, * the domain email id and the email id configured for the event diff --git a/civicrm/CRM/Event/BAO/Participant.php b/civicrm/CRM/Event/BAO/Participant.php index 18915d84e8..64768f27e0 100644 --- a/civicrm/CRM/Event/BAO/Participant.php +++ b/civicrm/CRM/Event/BAO/Participant.php @@ -356,7 +356,7 @@ class CRM_Event_BAO_Participant extends CRM_Event_DAO_Participant implements \Ci $where = [' event.id = %1 ']; if (!$considerTestParticipant) { - $where[] = ' ( participant.is_test = 0 OR participant.is_test IS NULL ) '; + $where[] = ' participant.is_test = 0 '; } // Only count Participant Roles with the "Counted?" flag. @@ -511,7 +511,7 @@ SELECT event.event_full_text, $isTestClause = NULL; if (!$considerTestParticipants) { - $isTestClause = ' AND ( participant.is_test IS NULL OR participant.is_test = 0 )'; + $isTestClause = ' AND participant.is_test = 0 '; } $skipParticipantClause = NULL; @@ -1858,7 +1858,7 @@ WHERE civicrm_participant.contact_id = {$contactID} AND return $details; } // Verify participant status is one that can be self-cancelled - if (!in_array($details['status'], ['Registered', 'Pending from pay later', 'On waitlist'])) { + if (!in_array($details['status'], ['Registered', 'Pending from pay later', 'On waitlist', 'Pending from incomplete transaction'])) { $details['eligible'] = FALSE; $details['ineligible_message'] = ts('You cannot transfer or cancel your registration for %1 as you are not currently registered for this event.', [1 => $eventTitle]); return $details; diff --git a/civicrm/CRM/Event/DAO/Event.php b/civicrm/CRM/Event/DAO/Event.php index ffe17d4337..2d6e3fa421 100644 --- a/civicrm/CRM/Event/DAO/Event.php +++ b/civicrm/CRM/Event/DAO/Event.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Event/Event.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:bdb38b76e64a2eeac5c2f214aabad598) + * (GenCodeChecksum:80eed9bb6b3badce7199dd8da7f3f14b) */ /** @@ -2216,7 +2216,7 @@ class CRM_Event_DAO_Event extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], diff --git a/civicrm/CRM/Event/DAO/Participant.php b/civicrm/CRM/Event/DAO/Participant.php index e25c471dd3..dee37a6c53 100644 --- a/civicrm/CRM/Event/DAO/Participant.php +++ b/civicrm/CRM/Event/DAO/Participant.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Event/Participant.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:2cc6fce620624d08af9f5f0739a81392) + * (GenCodeChecksum:3faebf0fa49dd7b3bf527bd082dd1fb7) */ /** @@ -685,7 +685,7 @@ class CRM_Event_DAO_Participant extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], diff --git a/civicrm/CRM/Event/Form/EventFees.php b/civicrm/CRM/Event/Form/EventFees.php index 8031bb5fa8..5ef84b3c58 100644 --- a/civicrm/CRM/Event/Form/EventFees.php +++ b/civicrm/CRM/Event/Form/EventFees.php @@ -66,6 +66,9 @@ class CRM_Event_Form_EventFees { if (!empty($details[$form->_eventId]['financial_type_id'])) { $defaults[$form->_pId]['financial_type_id'] = $details[$form->_eventId]['financial_type_id']; } + if (!empty($details[$form->_eventId]['confirm_email_text'])) { + $defaults[$form->_pId]['receipt_text'] = $details[$form->_eventId]['confirm_email_text']; + } } if ($form->_pId) { @@ -93,11 +96,6 @@ class CRM_Event_Form_EventFees { } else { $defaults[$form->_pId]['send_receipt'] = (strtotime(CRM_Utils_Array::value('start_date', $details[$form->_eventId])) >= time()) ? 1 : 0; - if ($form->_eventId && !empty($details[$form->_eventId]['confirm_email_text'])) { - //set receipt text - $defaults[$form->_pId]['receipt_text'] = $details[$form->_eventId]['confirm_email_text']; - } - $defaults[$form->_pId]['receive_date'] = date('Y-m-d H:i:s'); } diff --git a/civicrm/CRM/Event/Form/ManageEvent.php b/civicrm/CRM/Event/Form/ManageEvent.php index 6eed43ce9d..f496bdc670 100644 --- a/civicrm/CRM/Event/Form/ManageEvent.php +++ b/civicrm/CRM/Event/Form/ManageEvent.php @@ -95,13 +95,9 @@ class CRM_Event_Form_ManageEvent extends CRM_Core_Form { $this->assign('action', $this->_action); - $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE, NULL, 'GET'); - if ($this->_id) { + if ($this->getEventID()) { $this->_isRepeatingEvent = CRM_Core_BAO_RecurringEntity::getParentFor($this->_id, 'civicrm_event'); $this->assign('eventId', $this->_id); - if (!empty($this->_addBlockName) && empty($this->_addProfileBottom) && empty($this->_addProfileBottomAdd)) { - $this->add('hidden', 'id', $this->_id); - } $this->_single = TRUE; $eventInfo = \Civi\Api4\Event::get(FALSE) @@ -166,11 +162,7 @@ class CRM_Event_Form_ManageEvent extends CRM_Core_Form { $this->_templateId = (int) CRM_Utils_Request::retrieve('template_id', 'Integer', $this); - //Is a repeating event - if ($this->_isRepeatingEvent) { - $isRepeatingEntity = TRUE; - $this->assign('isRepeatingEntity', $isRepeatingEntity); - } + $this->assign('isRepeatingEntity', $this->_isRepeatingEvent); // CRM-16776 - show edit/copy/create buttons for Profiles if user has required permission. $ufGroups = CRM_Core_PseudoConstant::get('CRM_Core_DAO_UFField', 'uf_group_id'); @@ -191,35 +183,28 @@ class CRM_Event_Form_ManageEvent extends CRM_Core_Form { // Set Done button URL and breadcrumb. Templates go back to Manage Templates, // otherwise go to Manage Event for new event or ManageEventEdit if event if exists. - $breadCrumb = []; if (!$this->_isTemplate) { + $breadCrumb = ['title' => ts('Manage Events')]; if ($this->_id) { - $this->_doneUrl = CRM_Utils_System::url(CRM_Utils_System::currentPath(), + $breadCrumb['url'] = CRM_Utils_System::url(CRM_Utils_System::currentPath(), "action=update&reset=1&id={$this->_id}" ); } else { - $this->_doneUrl = CRM_Utils_System::url('civicrm/event/manage', + $breadCrumb['url'] = CRM_Utils_System::url('civicrm/event/manage', 'reset=1' ); - $breadCrumb = [ - [ - 'title' => ts('Manage Events'), - 'url' => $this->_doneUrl, - ], - ]; } + CRM_Utils_System::appendBreadCrumb([$breadCrumb]); } else { - $this->_doneUrl = CRM_Utils_System::url('civicrm/admin/eventTemplate', 'reset=1'); - $breadCrumb = [ + CRM_Utils_System::appendBreadCrumb([ [ 'title' => ts('Manage Event Templates'), - 'url' => $this->_doneUrl, + 'url' => CRM_Utils_System::url('civicrm/admin/eventTemplate', 'reset=1'), ], - ]; + ]); } - CRM_Utils_System::appendBreadCrumb($breadCrumb); } /** @@ -400,4 +385,15 @@ class CRM_Event_Form_ManageEvent extends CRM_Core_Form { CRM_UF_Page_ProfileEditor::registerSchemas(['IndividualModel', 'ParticipantModel']); } + /** + * @return int|null + * @throws \CRM_Core_Exception + */ + public function getEventID() { + if (!$this->_id) { + $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this, FALSE, NULL, 'GET'); + } + return $this->_id ? (int) $this->_id : NULL; + } + } diff --git a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php index ae762f2a82..9743f45c45 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php +++ b/civicrm/CRM/Event/Form/ManageEvent/EventInfo.php @@ -14,6 +14,8 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Api4\Event; + /** * This class generates form components for processing Event. */ @@ -23,28 +25,19 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { * Event type. * @var int */ - protected $_eventType = NULL; + protected $_eventType; /** * Set variables up before form is built. + * + * @throws \CRM_Core_Exception */ - public function preProcess() { + public function preProcess(): void { parent::preProcess(); $this->setSelectedChild('settings'); - $entityID = $this->_id ?: $this->_templateId; - if ($entityID) { - $this->assign('entityID', $entityID); - $eventType = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', - $entityID, - 'event_type_id' - ); - } - else { - $eventType = 'null'; - } - - $showLocation = FALSE; + $entityID = $this->getEventID() ?: $this->_templateId; + $this->assign('eventID', $entityID); // when custom data is included in this page if (!empty($_POST['hidden_custom'])) { $this->set('type', 'Event'); @@ -61,7 +54,9 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { /** * Set default values for the form. * - * For edit/view mode he default values are retrieved from the database. + * For edit/view mode the default values are retrieved from the database. + * + * @return array */ public function setDefaultValues() { $defaults = parent::setDefaultValues(); @@ -71,26 +66,26 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { $this->assign('customDataSubType', $defaults['event_type_id']); } - $this->_showHide = new CRM_Core_ShowHideBlocks(); + $showHideBlocks = new CRM_Core_ShowHideBlocks(); // Show waitlist features or event_full_text if max participants set if (!empty($defaults['max_participants'])) { - $this->_showHide->addShow('id-waitlist'); + $showHideBlocks->addShow('id-waitlist'); if (!empty($defaults['has_waitlist'])) { - $this->_showHide->addShow('id-waitlist-text'); - $this->_showHide->addHide('id-event_full'); + $showHideBlocks->addShow('id-waitlist-text'); + $showHideBlocks->addHide('id-event_full'); } else { - $this->_showHide->addHide('id-waitlist-text'); - $this->_showHide->addShow('id-event_full'); + $showHideBlocks->addHide('id-waitlist-text'); + $showHideBlocks->addShow('id-event_full'); } } else { - $this->_showHide->addHide('id-event_full'); - $this->_showHide->addHide('id-waitlist'); - $this->_showHide->addHide('id-waitlist-text'); + $showHideBlocks->addHide('id-event_full'); + $showHideBlocks->addHide('id-waitlist'); + $showHideBlocks->addHide('id-waitlist-text'); } - $this->_showHide->addToTemplate(); + $showHideBlocks->addToTemplate(); $this->assign('elemType', 'table-row'); $this->assign('description', CRM_Utils_Array::value('description', $defaults)); @@ -106,8 +101,10 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { /** * Build the form object. + * + * @throws \CRM_Core_Exception */ - public function buildQuickForm() { + public function buildQuickForm(): void { //need to assign custom data type and subtype to the template $this->assign('customDataType', 'Event'); if ($this->_eventType) { @@ -123,7 +120,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { } if ($this->_action & CRM_Core_Action::ADD) { - $eventTemplates = \Civi\Api4\Event::get(FALSE) + $eventTemplates = Event::get(FALSE) ->addWhere('is_template', '=', TRUE) ->addWhere('is_active', '=', TRUE) ->execute() @@ -254,7 +251,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { $url = 'civicrm/event/manage/location'; $urlParams = "action=update&reset=1&id={$event->id}"; // special case for 'Save and Done' consistency. - if ($this->controller->getButtonName('submit') == '_qf_EventInfo_upload_done') { + if ('_qf_EventInfo_upload_done' === $this->controller->getButtonName('submit')) { $url = 'civicrm/event/manage'; $urlParams = 'reset=1'; CRM_Core_Session::setStatus(ts("'%1' information has been saved.", @@ -273,7 +270,7 @@ class CRM_Event_Form_ManageEvent_EventInfo extends CRM_Event_Form_ManageEvent { * * @return string */ - public function getTitle() { + public function getTitle(): string { return ts('Event Information and Settings'); } diff --git a/civicrm/CRM/Event/Form/ManageEvent/Location.php b/civicrm/CRM/Event/Form/ManageEvent/Location.php index e6a30e61e6..90faa0cc98 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Location.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Location.php @@ -32,14 +32,6 @@ class CRM_Event_Form_ManageEvent_Location extends CRM_Event_Form_ManageEvent { */ protected $locationBlock; - /** - * How many locationBlocks should we display? - * - * @var int - * @const - */ - const LOCATION_BLOCKS = 1; - /** * The variable, for storing the location array * @@ -83,7 +75,7 @@ class CRM_Event_Form_ManageEvent_Location extends CRM_Event_Form_ManageEvent { } //location blocks. - CRM_Contact_Form_Location::preProcess($this); + $this->assign('addressSequence', CRM_Core_BAO_Address::addressSequence()); } /** diff --git a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php index 5910607862..f84c3de494 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Repeat.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Repeat.php @@ -26,19 +26,12 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { */ protected $_parentEventEndDate = NULL; - /** - * @return int - */ - protected function getEventId() { - return $this->_id; - } - public function preProcess() { parent::preProcess(); $this->setSelectedChild('repeat'); - $this->assign('currentEventId', $this->getEventId()); + $this->assign('currentEventId', $this->getEventID()); - $checkParentExistsForThisId = CRM_Core_BAO_RecurringEntity::getParentFor($this->getEventId(), 'civicrm_event'); + $checkParentExistsForThisId = CRM_Core_BAO_RecurringEntity::getParentFor($this->getEventID(), 'civicrm_event'); //If this ID has parent, send parent id if ($checkParentExistsForThisId) { /** @@ -73,7 +66,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { } } - $parentEventParams = ['id' => $this->getEventId()]; + $parentEventParams = ['id' => $this->getEventID()]; $parentEventValues = []; $parentEventReturnProperties = ['start_date', 'end_date']; $parentEventAttributes = CRM_Core_DAO::commonRetrieve('CRM_Event_DAO_Event', $parentEventParams, $parentEventValues, $parentEventReturnProperties); @@ -92,7 +85,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { $defaults = []; //Always pass current event's start date by default - $defaults['repetition_start_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->getEventId(), 'start_date', 'id'); + $defaults['repetition_start_date'] = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->getEventID(), 'start_date', 'id'); $recurringEntityDefaults = CRM_Core_Form_RecurringEntity::setDefaultValues(); return array_merge($defaults, $recurringEntityDefaults); } @@ -101,8 +94,11 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { CRM_Core_Form_RecurringEntity::buildQuickForm($this); } + /** + * @throws \CRM_Core_Exception + */ public function postProcess() { - if ($this->getEventId()) { + if ($this->getEventID()) { $params = $this->controller->exportValues($this->_name); if ($this->_parentEventStartDate && $this->_parentEventEndDate) { $interval = CRM_Core_BAO_RecurringEntity::getInterval($this->_parentEventStartDate, $this->_parentEventEndDate); @@ -111,22 +107,22 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { $params['dateColumns'] = ['start_date']; $params['excludeDateRangeColumns'] = ['start_date', 'end_date']; $params['entity_table'] = 'civicrm_event'; - $params['entity_id'] = $this->getEventId(); + $params['entity_id'] = $this->getEventID(); // CRM-16568 - check if parent exist for the event. - $parentId = CRM_Core_BAO_RecurringEntity::getParentFor($this->getEventId(), 'civicrm_event'); + $parentId = CRM_Core_BAO_RecurringEntity::getParentFor($this->getEventID(), 'civicrm_event'); $params['parent_entity_id'] = !empty($parentId) ? $parentId : $params['entity_id']; //Unset event id unset($params['id']); $url = 'civicrm/event/manage/repeat'; - $urlParams = "action=update&reset=1&id={$this->getEventId()}&selectedChild=repeat"; + $urlParams = "action=update&reset=1&id={$this->getEventID()}&selectedChild=repeat"; $linkedEntities = [ [ 'table' => 'civicrm_price_set_entity', 'findCriteria' => [ - 'entity_id' => $this->getEventId(), + 'entity_id' => $this->getEventID(), 'entity_table' => 'civicrm_event', ], 'linkedColumns' => ['entity_id'], @@ -135,7 +131,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { [ 'table' => 'civicrm_uf_join', 'findCriteria' => [ - 'entity_id' => $this->getEventId(), + 'entity_id' => $this->getEventID(), 'entity_table' => 'civicrm_event', ], 'linkedColumns' => ['entity_id'], @@ -144,7 +140,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { [ 'table' => 'civicrm_tell_friend', 'findCriteria' => [ - 'entity_id' => $this->getEventId(), + 'entity_id' => $this->getEventID(), 'entity_table' => 'civicrm_event', ], 'linkedColumns' => ['entity_id'], @@ -153,7 +149,7 @@ class CRM_Event_Form_ManageEvent_Repeat extends CRM_Event_Form_ManageEvent { [ 'table' => 'civicrm_pcp_block', 'findCriteria' => [ - 'entity_id' => $this->getEventId(), + 'entity_id' => $this->getEventID(), 'entity_table' => 'civicrm_event', ], 'linkedColumns' => ['entity_id'], diff --git a/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php b/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php index 1af6314f12..0c786bfb9f 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php +++ b/civicrm/CRM/Event/Form/ManageEvent/ScheduleReminders.php @@ -30,10 +30,10 @@ class CRM_Event_Form_ManageEvent_ScheduleReminders extends CRM_Event_Form_Manage public function preProcess() { parent::preProcess(); $this->setSelectedChild('reminder'); - $setTab = CRM_Utils_Request::retrieve('setTab', 'Int', $this, FALSE, 0); $mapping = CRM_Core_BAO_ActionSchedule::getMapping($this->_isTemplate ? CRM_Event_ActionMapping::EVENT_TPL_MAPPING_ID : CRM_Event_ActionMapping::EVENT_NAME_MAPPING_ID); $reminderList = CRM_Core_BAO_ActionSchedule::getList($mapping, $this->_id); + $scheduleReminder = new CRM_Admin_Page_ScheduleReminders(); // Add action links to each of the reminders foreach ($reminderList as & $format) { $action = CRM_Core_Action::UPDATE + CRM_Core_Action::DELETE; @@ -43,10 +43,9 @@ class CRM_Event_Form_ManageEvent_ScheduleReminders extends CRM_Event_Form_Manage else { $action += CRM_Core_Action::ENABLE; } - $scheduleReminder = new CRM_Admin_Page_ScheduleReminders(); $links = $scheduleReminder->links(); - $links[CRM_Core_Action::DELETE]['qs'] .= "&context=event&compId={$this->_id}"; - $links[CRM_Core_Action::UPDATE]['qs'] .= "&context=event&compId={$this->_id}"; + $links[CRM_Core_Action::DELETE]['qs'] .= "&mapping_id={$mapping->getId()}&entity_value={$this->_id}"; + $links[CRM_Core_Action::UPDATE]['qs'] .= "&mapping_id={$mapping->getId()}&entity_value={$this->_id}"; $format['action'] = CRM_Core_Action::formLink( $links, $action, @@ -60,8 +59,7 @@ class CRM_Event_Form_ManageEvent_ScheduleReminders extends CRM_Event_Form_Manage } $this->assign('rows', $reminderList); - $this->assign('setTab', $setTab); - $this->assign('component', 'event'); + $this->assign('addNewLink', $scheduleReminder->getLinkPath('add') . "&mapping_id={$mapping->getId()}&entity_value={$this->_id}"); // Update tab "disabled" css class $this->ajaxResponse['tabValid'] = is_array($reminderList) && (count($reminderList) > 0); @@ -72,7 +70,8 @@ class CRM_Event_Form_ManageEvent_ScheduleReminders extends CRM_Event_Form_Manage * @return string */ public function getTemplateFileName() { - return 'CRM/Admin/Page/ScheduleReminders.tpl'; + $setTab = CRM_Utils_Request::retrieve('setTab', 'Int', NULL, FALSE, 0); + return $setTab ? 'CRM/Event/Form/ManageEvent/Tab.tpl' : 'CRM/Admin/Page/ScheduleReminders.tpl'; } } diff --git a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php index af32097768..8c159a7c39 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php +++ b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php @@ -227,7 +227,7 @@ WHERE e.id = %1 } } - $current = $current ? $current : 'settings'; + $current = $current ?: 'settings'; return $current; } diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php index f463f1b8c3..fc8c303ce9 100644 --- a/civicrm/CRM/Event/Form/Participant.php +++ b/civicrm/CRM/Event/Form/Participant.php @@ -16,11 +16,15 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\API\EntityLookupTrait; + /** * Back office participant form. */ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment { + use EntityLookupTrait; + /** * Participant ID - use getParticipantID. * @@ -46,17 +50,12 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ public $_values; - /** - * The values for the quickconfig for priceset. - * - * @var bool - */ - public $_quickConfig = NULL; - /** * Price Set ID, if the new price set method is used * * @var int + * + * @internal use getPriceSetID(). */ public $_priceSetId; @@ -213,7 +212,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment * * @var int */ - public $_paymentId = NULL; + public $_paymentId; /** * @var null @@ -287,18 +286,16 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ public function preProcess() { parent::preProcess(); - $this->_showFeeBlock = $_GET['eventId'] ?? NULL; - $this->assign('showFeeBlock', FALSE); $this->assign('feeBlockPaid', FALSE); // @todo eliminate this duplication. - $this->_contactId = $this->_contactID; + $this->_contactId = $this->getContactID(); $this->_eID = CRM_Utils_Request::retrieve('eid', 'Positive', $this); $this->_context = CRM_Utils_Request::retrieve('context', 'Alphanumeric', $this); $this->assign('context', $this->_context); - if ($this->_contactID) { - $this->setPageTitle(ts('Event Registration for %1', [1 => $this->userDisplayName])); + if ($this->getContactID()) { + $this->setPageTitle(ts('Event Registration for %1', [1 => $this->getContactValue('display_name')])); } else { $this->setPageTitle(ts('Event Registration')); @@ -332,13 +329,14 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $this->assign('participantMode', $this->_mode); - $this->assign('showFeeBlock', $this->_showFeeBlock); - if ($this->_showFeeBlock) { - $isMonetary = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $this->_showFeeBlock, 'is_monetary'); - if ($isMonetary) { + $isOverloadFeesMode = $this->isOverloadFeesMode(); + $this->assign('showFeeBlock', $isOverloadFeesMode); + if ($isOverloadFeesMode) { + if (CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $_GET['eventId'], 'is_monetary')) { $this->assign('feeBlockPaid', TRUE); } - return CRM_Event_Form_EventFees::preProcess($this); + CRM_Event_Form_EventFees::preProcess($this); + return; } $this->assignUrlPath(); @@ -427,7 +425,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment * @throws \CRM_Core_Exception */ public function setDefaultValues(): array { - if ($this->_showFeeBlock) { + if ($this->isOverloadFeesMode()) { return CRM_Event_Form_EventFees::setDefaultValues($this); } @@ -524,8 +522,8 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $this->_eventTypeId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Event', $eventID, 'event_type_id', 'id'); - $this->_discountId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->_id, 'discount_id'); - if ($this->_discountId) { + if ($this->getDiscountID()) { + // This doesn't seem used.... $this->set('discountId', $this->_discountId); } } @@ -575,6 +573,25 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment return $defaults[$this->_id]; } + /** + * Get a value for the contact being acted on in the form. + * + * This can be called from any point in the form flow and if + * the contact can not yet be determined it will return NULL. + * + * @throws \CRM_Core_Exception + */ + public function getContactValue($fieldName) { + if ($this->isDefined('Contact')) { + return $this->lookup('Contact', $fieldName); + } + if ($this->getContactID()) { + $this->define('Contact', 'Contact', ['id' => $this->getContactID()]); + return $this->lookup('Contact', $fieldName); + } + return NULL; + } + /** * Build the form object. * @@ -587,7 +604,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $partiallyPaidStatusId = array_search('Partially paid', $participantStatuses); $this->assign('partiallyPaidStatusId', $partiallyPaidStatusId); - if ($this->_showFeeBlock) { + if ($this->isOverloadFeesMode()) { return $this->buildEventFeeForm($this); } @@ -631,7 +648,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment if ($this->_single) { $contactField = $this->addEntityRef('contact_id', ts('Participant'), ['create' => TRUE, 'api' => ['extra' => ['email']]], TRUE); - if ($this->_context != 'standalone') { + if ($this->_context !== 'standalone') { $contactField->freeze(); } } @@ -833,7 +850,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment // For single additions - show validation error if the contact has already been registered // for this event. if (($self->_action & CRM_Core_Action::ADD)) { - if ($self->_context == 'standalone') { + if ($self->_context === 'standalone') { $contactId = $values['contact_id'] ?? NULL; } else { @@ -936,9 +953,6 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment if (!empty($params['contact_id'])) { $this->_contactID = $this->_contactId = $params['contact_id']; } - if ($this->_priceSetId && $isQuickConfig = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_priceSetId, 'is_quick_config')) { - $this->_quickConfig = $isQuickConfig; - } if ($this->_id) { $params['id'] = $this->_id; @@ -970,7 +984,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $userName = CRM_Core_Session::singleton()->getLoggedInContactDisplayName(); if ($this->_contactId) { - [$this->_contributorDisplayName, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($this->_contactId); + [, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($this->_contactId); } //modify params according to parameter used in create @@ -1223,7 +1237,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') { + if ($f === 'trxn_id') { $this->assign('trxn_id', $contributionParams[$f]); } } @@ -1312,10 +1326,10 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment ) { foreach ($this->_contactIds as $num => $contactID) { foreach ($this->_lineItem as $key => $value) { - if (is_array($value) && $value != 'skip') { + if (is_array($value) && $value !== 'skip') { foreach ($value as $lineKey => $line) { //10117 update the line items for participants if contribution amount is recorded - if ($this->_quickConfig && !empty($params['total_amount']) && + if ($this->isQuickConfig() && !empty($params['total_amount']) && ($params['status_id'] != array_search('Partially paid', $participantStatus)) ) { $line['unit_price'] = $line['line_total'] = $params['total_amount']; @@ -1350,7 +1364,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } if (!empty($params['send_receipt'])) { - $result = $this->sendReceipts($params, $contributionParams['total_amount'], $customFields, $participants, $lineItem[0] ?? [], $additionalParticipantDetails); + $result = $this->sendReceipts($params, $customFields, $participants, $lineItem[0] ?? [], $additionalParticipantDetails ?? []); } // set the participant id if it is not set @@ -1390,9 +1404,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment protected function getStatusMsg(array $params, int $numberSent, int $numberNotSent, string $updateStatusMsg): string { $statusMsg = ''; if (($this->_action & CRM_Core_Action::UPDATE)) { - $statusMsg = ts('Event registration information for %1 has been updated.', [1 => $this->_contributorDisplayName]); + $statusMsg = ts('Event registration information for %1 has been updated.', [1 => $this->getContactValue('display_name')]); if (!empty($params['send_receipt']) && $numberSent) { - $statusMsg .= ' ' . ts('A confirmation email has been sent to %1', [1 => $this->_contributorEmail]); + $statusMsg .= ' ' . ts('A confirmation email has been sent to %1', [1 => $this->getContactValue('email_primary.email')]); } if ($updateStatusMsg) { @@ -1400,20 +1414,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } } elseif ($this->_action & CRM_Core_Action::ADD) { - if ($this->_single) { - $statusMsg = ts('Event registration for %1 has been added.', [1 => $this->_contributorDisplayName]); - if (!empty($params['send_receipt']) && $numberSent) { - $statusMsg .= ' ' . ts('A confirmation email has been sent to %1.', [1 => $this->_contributorEmail]); - } - } - else { - $statusMsg = ts('Total Participant(s) added to event: %1.', [1 => count($this->_contactIds)]); - if ($numberNotSent > 0) { - $statusMsg .= ' ' . ts('Email has NOT been sent to %1 contact(s) - communication preferences specify DO NOT EMAIL OR valid Email is NOT present. ', [1 => $numberNotSent]); - } - elseif (isset($params['send_receipt'])) { - $statusMsg .= ' ' . ts('A confirmation email has been sent to ALL participants'); - } + $statusMsg = ts('Event registration for %1 has been added.', [1 => $this->getContactValue('display_name')]); + if (!empty($params['send_receipt']) && $numberSent) { + $statusMsg .= ' ' . ts('A confirmation email has been sent to %1.', [1 => $this->getContactValue('email_primary.email')]); } } return $statusMsg; @@ -1447,8 +1450,32 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment //retrieve custom information $form->_values = []; - CRM_Event_Form_Registration::initEventFee($form, $event['id'], FALSE); - CRM_Event_Form_Registration_Register::buildAmount($form, TRUE, $form->_discountId); + CRM_Event_Form_Registration::initEventFee($form, $event['id'], FALSE, $this->getPriceSetID()); + if ($form->_context === 'standalone' || $form->_context === 'participant') { + $discountedEvent = CRM_Core_BAO_Discount::getOptionGroup($event['id'], 'civicrm_event'); + if (is_array($discountedEvent)) { + foreach ($discountedEvent as $key => $discountedPriceSetID) { + $discountedPriceSet = CRM_Price_BAO_PriceSet::getSetDetail($discountedPriceSetID); + $discountedPriceSet = $discountedPriceSet[$discountedPriceSetID] ?? NULL; + $form->_values['discount'][$key] = $discountedPriceSet['fields'] ?? NULL; + $fieldID = key($form->_values['discount'][$key]); + // @todo - this may be unused. + $form->_values['discount'][$key][$fieldID]['name'] = CRM_Core_DAO::getFieldValue( + 'CRM_Price_DAO_PriceSet', + $discountedPriceSetID, + 'title' + ); + } + } + } + //if payment done, no need to build the fee block. + if (!empty($form->_paymentId)) { + //fix to display line item in update mode. + $form->assign('priceSet', $form->_priceSet ?? NULL); + } + else { + CRM_Event_Form_Registration_Register::buildAmount($form, TRUE, $form->getDiscountID(), $this->getPriceSetID()); + } $lineItem = []; $totalTaxAmount = 0; if (!CRM_Utils_System::isNull($form->_values['line_items'] ?? NULL)) { @@ -1511,7 +1538,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment // don't show transaction id in batch update mode $path = CRM_Utils_System::currentPath(); $form->assign('showTransactionId', FALSE); - if ($path != 'civicrm/contact/search/basic') { + if ($path !== 'civicrm/contact/search/basic') { $form->add('text', 'trxn_id', ts('Transaction ID')); $form->addRule('trxn_id', ts('Transaction ID already exists in Database.'), 'objectExists', ['CRM_Contribute_DAO_Contribution', $form->_eventId, 'trxn_id'] @@ -1550,9 +1577,9 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $form->add('textarea', 'receipt_text', ts('Confirmation Message')); // Retrieve the name and email of the contact - form will be the TO for receipt email ( only if context is not standalone) - if ($form->_context != 'standalone') { - if ($form->_contactId) { - [$form->_contributorDisplayName, $form->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($form->_contactId); + if ($form->_context !== 'standalone') { + if ($form->getContactID()) { + [, $form->_contributorEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($form->_contactId); $form->assign('email', $form->_contributorEmail); } else { @@ -1628,7 +1655,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment //lineitems with the financial type selected in form $submittedFinancialType = $params['financial_type_id'] ?? NULL; $isPaymentRecorded = $params['record_contribution'] ?? NULL; - if ($isPaymentRecorded && $this->_quickConfig && $submittedFinancialType) { + if ($isPaymentRecorded && $this->isQuickConfig() && $submittedFinancialType) { foreach ($lineItem[0] as &$values) { $values['financial_type_id'] = $submittedFinancialType; } @@ -1636,7 +1663,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $params['fee_level'] = $params['amount_level']; $contributionParams['total_amount'] = $params['amount']; - if ($this->_quickConfig && !empty($params['total_amount']) && + if ($this->isQuickConfig() && !empty($params['total_amount']) && $params['status_id'] != array_search('Partially paid', $participantStatus) ) { $params['fee_amount'] = $params['total_amount']; @@ -1666,7 +1693,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment if (isset($participantCount)) { $this->assign('pricesetFieldsCount', $participantCount); } - $this->assign('lineItem', empty($lineItem[0]) || $this->_quickConfig ? FALSE : $lineItem); + $this->assign('lineItem', empty($lineItem[0]) || $this->isQuickConfig() ? FALSE : $lineItem); } else { $this->assign('amount_level', $params['amount_level']); @@ -1788,7 +1815,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $contribParams['is_test'] = 0; - if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) == 'test') { + if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) === 'test') { $contribParams['is_test'] = 1; } @@ -1937,7 +1964,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment */ protected function getParticipantValue($fieldName) { if (!$this->participantRecord) { - $this->participantRecord = civicrm_api3('Participant', 'getsingle', ['id' => $this->_id]); + $this->participantRecord = civicrm_api3('Participant', 'getsingle', ['id' => $this->getParticipantID()]); } return $this->participantRecord[$fieldName] ?? $this->participantRecord['participant_' . $fieldName]; } @@ -2102,7 +2129,6 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ /** * @param $params - * @param $total_amount * @param array $customFields * @param array $participants * @param $lineItem @@ -2111,7 +2137,7 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ * @return array * @throws \CRM_Core_Exception */ - protected function sendReceipts($params, $total_amount, array $customFields, array $participants, $lineItem, $additionalParticipantDetails): array { + protected function sendReceipts($params, array $customFields, array $participants, $lineItem, $additionalParticipantDetails): array { $sent = []; $notSent = []; $this->assign('module', 'Event Registration'); @@ -2132,10 +2158,9 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ ); } } - - $this->assign('totalAmount', $params['total_amount'] ?? $total_amount); - $this->assign('checkNumber', CRM_Utils_Array::value('check_number', $params)); } + + $this->assign('checkNumber', $params['check_number'] ?? NULL); if ($this->_mode) { $this->assignBillingName($params); $this->assign('address', CRM_Utils_Address::getFormattedBillingAddressFieldsFromParameters( @@ -2168,9 +2193,7 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ foreach ($this->_contactIds as $num => $contactID) { // Retrieve the name and email of the contact - this will be the TO for receipt email - [$this->_contributorDisplayName, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($contactID); - - $this->_contributorDisplayName = ($this->_contributorDisplayName == ' ') ? $this->_contributorEmail : $this->_contributorDisplayName; + [, $this->_contributorEmail, $this->_toDoNotEmail] = CRM_Contact_BAO_Contact::getContactDetails($contactID); $waitStatus = CRM_Event_PseudoConstant::participantStatus(NULL, "class = 'Waiting'"); $waitingStatus = $waitStatus[$params['status_id']] ?? NULL; @@ -2185,6 +2208,16 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ $contributionID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', $participants[$num]->id, '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 = $participants[$num]->id; if ($this->_isPaidEvent) { @@ -2218,9 +2251,6 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ $this->assign('taxTerm', $this->getSalesTaxTerm()); $this->assign('dataArray', $dataArray); } - if (!empty($additionalParticipantDetails)) { - $params['amount_level'] = preg_replace('//', '', $params['amount_level']) . ' - ' . $this->_contributorDisplayName; - } $eventAmount[$num] = [ 'label' => preg_replace('//', '', $params['amount_level']), @@ -2248,20 +2278,18 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ // and the do-not-email option is not checked for that contact if ($this->_contributorEmail and !$this->_toDoNotEmail) { $sendTemplateParams['from'] = $params['from_email_address']; - $sendTemplateParams['toName'] = $this->_contributorDisplayName; + $sendTemplateParams['toName'] = $this->getContactValue('display_name'); $sendTemplateParams['toEmail'] = $this->_contributorEmail; $sendTemplateParams['cc'] = $this->_fromEmails['cc'] ?? NULL; $sendTemplateParams['bcc'] = $this->_fromEmails['bcc'] ?? NULL; } //send email with pdf invoice - $template = CRM_Core_Smarty::singleton(); - $taxAmt = $template->get_template_vars('dataArray'); if (Civi::settings()->get('invoice_is_email_pdf')) { $sendTemplateParams['isEmailPdf'] = TRUE; $sendTemplateParams['contributionId'] = $contributionID; } - [$mailSent, $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); + [$mailSent] = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); if ($mailSent) { $sent[] = $contactID; foreach ($participants as $ids => $values) { @@ -2279,4 +2307,105 @@ INNER JOIN civicrm_price_field_value value ON ( value.id = lineItem.price_field_ return ['sent' => count($sent), 'not_sent' => count($notSent)]; } + /** + * Get the discount 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 PhpDocMissingThrowsInspection + * @noinspection PhpUnhandledExceptionInspection + */ + public function getDiscountID(): ?int { + if ($this->_discountId === NULL) { + if ($this->getParticipantID()) { + $this->_discountId = (int) CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->getParticipantID(), 'discount_id'); + } + else { + $this->_discountId = (int) CRM_Core_BAO_Discount::findSet($this->getEventID(), 'civicrm_event'); + } + } + return $this->_discountId ?: NULL; + } + + /** + * Get the Price Set ID in use. + * + * @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 PhpDocMissingThrowsInspection + * @noinspection PhpUnhandledExceptionInspection + */ + public function getPriceSetID(): ?int { + if ($this->_priceSetId === NULL) { + if ($this->getDiscountID()) { + $this->_priceSetId = (int) CRM_Core_DAO::getFieldValue('CRM_Core_BAO_Discount', $this->getDiscountID(), 'price_set_id'); + } + else { + $this->_priceSetId = (int) CRM_Price_BAO_PriceSet::getFor('civicrm_event', $this->getEventID()); + } + $this->set('priceSetId', $this->_priceSetId); + } + return $this->_priceSetId ?: NULL; + } + + /** + * Is the price set quick config. + * + * @return bool + */ + public function isQuickConfig(): bool { + return $this->getPriceSetID() && CRM_Price_BAO_PriceSet::isQuickConfig($this->getPriceSetID()); + } + + /** + * Is the form being accessed in overload fees mode. + * + * Overload fees mode is when we are accessing the same form for a different + * purpose - to load the fees via ajax. We have historically fixed this for + * some forms by creating a new form class to move the functionality to and + * updating the path to call that (e.g CRM_Financial_Form_Payment was historically + * split in this way). + * + * This is much cleaner but the trap to be + * aware of is that the fields must be added to the quick form. It does require + * a bit of UI testing to do this. For now, adding comment... + * + * @return bool + */ + protected function isOverloadFeesMode(): bool { + return (bool) ($_GET['eventId'] ?? NULL); + } + + /** + * Get the contact ID in use. + * + * Ideally override this as appropriate to the form. + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocSignatureIsNotCompleteInspection + */ + public function getContactID():?int { + if ($this->_contactID === NULL) { + if ($this->getSubmittedValue('contact_id')) { + $contactID = $this->getSubmittedValue('contact_id'); + } + else { + $contactID = CRM_Utils_Request::retrieve('cid', 'Positive', $this); + } + if (!$contactID && $this->getParticipantID()) { + $contactID = $this->getParticipantValue('contact_id'); + } + $this->_contactID = $contactID ? (int) $contactID : NULL; + } + return $this->_contactID; + } + } diff --git a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php index c42cdc721f..7ad90dcc2a 100644 --- a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php +++ b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php @@ -124,7 +124,6 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { $params = ['id' => $this->_participantId]; CRM_Event_BAO_Participant::getValues($params, $defaults, $ids); - $priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_event', $this->_eventId); $priceSetValues = CRM_Event_Form_EventFees::setDefaultPriceSet($this->_participantId, $this->_eventId, FALSE); $priceFieldId = (array_keys($this->_values['fee'])); @@ -172,8 +171,8 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { //retrieve custom information $this->_values = []; - CRM_Event_Form_Registration::initEventFee($this, $event['id'], $this->_action !== CRM_Core_Action::UPDATE); - CRM_Event_Form_Registration_Register::buildAmount($this, TRUE); + CRM_Event_Form_Registration::initEventFee($this, $event['id'], $this->_action !== CRM_Core_Action::UPDATE, $this->getPriceSetID()); + CRM_Event_Form_Registration_Register::buildAmount($this, TRUE, NULL, $this->getPriceSetID()); if (!CRM_Utils_System::isNull($this->_values['line_items'] ?? NULL)) { $lineItem[] = $this->_values['line_items']; @@ -225,6 +224,23 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { $this->addFormRule(['CRM_Event_Form_ParticipantFeeSelection', 'formRule'], $this); } + /** + * Get the discount 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 PhpDocMissingThrowsInspection + * @noinspection PhpUnhandledExceptionInspection + */ + public function getDiscountID(): ?int { + $discountID = (int) CRM_Core_BAO_Discount::findSet($this->getEventID(), 'civicrm_event'); + return $discountID ?: NULL; + } + /** * @param $fields * @param $files @@ -390,4 +406,49 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); } + /** + * Get the event ID. + * + * This function is supported for use outside of core. + * + * @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 + * @throws \CRM_Core_Exception + */ + public function getEventID(): int { + if (!$this->_eventId) { + $this->_eventId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->_participantId, 'event_id'); + } + return $this->_eventId; + } + + /** + * 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. + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocMissingThrowsInspection + */ + public function getPriceSetID(): ?int { + if ($this->getDiscountID()) { + $priceSetID = CRM_Core_DAO::getFieldValue('CRM_Core_BAO_Discount', $this->getDiscountID(), 'price_set_id'); + } + else { + $priceSetID = CRM_Price_BAO_PriceSet::getFor('civicrm_event', $this->getEventID()); + } + // Currently some extensions, eg. civi-discount, might look for this. Once we can be + // sure all financial forms have the api-supported function `getPriceSetID` we can + // add some noise to attempts to get it & move people over. + $this->set('priceSetId', $priceSetID); + return $priceSetID; + } + } diff --git a/civicrm/CRM/Event/Form/ParticipantView.php b/civicrm/CRM/Event/Form/ParticipantView.php index bbb20b45ca..03406163fb 100644 --- a/civicrm/CRM/Event/Form/ParticipantView.php +++ b/civicrm/CRM/Event/Form/ParticipantView.php @@ -59,26 +59,22 @@ class CRM_Event_Form_ParticipantView extends CRM_Core_Form { $this->assign('componentId', $participantID); $this->assign('component', 'event'); - if ($parentParticipantId = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', - $participantID, 'registered_by_id' - ) - ) { - $parentHasPayment = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', - $parentParticipantId, 'id', 'participant_id' - ); - $this->assign('parentHasPayment', $parentHasPayment); - } + $parentParticipantID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', + $participantID, 'registered_by_id'); + $this->assign('parentHasPayment', !$parentParticipantID ? NULL : CRM_Core_DAO::getFieldValue('CRM_Event_DAO_ParticipantPayment', + $parentParticipantID, 'id', 'participant_id' + )); $statusId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantID, 'status_id', 'id'); $status = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_ParticipantStatusType', $statusId, 'name', 'id'); - if ($status == 'Transferred') { + if ($status === 'Transferred') { $transferId = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $participantID, 'transferred_to_contact_id', 'id'); $pid = CRM_Core_DAO::getFieldValue('CRM_Event_BAO_Participant', $transferId, 'id', 'contact_id'); $transferName = current(CRM_Contact_BAO_Contact::getContactDetails($transferId)); $this->assign('pid', $pid); $this->assign('transferId', $transferId); - $this->assign('transferName', $transferName); } + $this->assign('transferName', $transferName ?? NULL); // CRM-20879: Show 'Transfer or Cancel' option beside 'Change fee selection' // only if logged in user have 'edit event participants' permission and @@ -203,9 +199,7 @@ class CRM_Event_Form_ParticipantView extends CRM_Core_Form { if (Civi::settings()->get('invoicing')) { $this->assign('totalTaxAmount', $totalTaxAmount); } - if ($participantCount) { - $this->assign('pricesetFieldsCount', $participantCount); - } + $this->assign('pricesetFieldsCount', $participantCount); $this->assign('displayName', $displayName); // omitting contactImage from title for now since the summary overlay css doesn't work outside of our crm-container $this->setTitle(ts('View Event Registration for') . ' ' . $displayName); diff --git a/civicrm/CRM/Event/Form/Registration.php b/civicrm/CRM/Event/Form/Registration.php index ebde060eb3..79dfd821ee 100644 --- a/civicrm/CRM/Event/Form/Registration.php +++ b/civicrm/CRM/Event/Form/Registration.php @@ -297,8 +297,11 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { )); $this->assignPaymentProcessor($isPayLater); } - //init event fee. - self::initEventFee($this, $this->_eventId); + + $priceSetID = $this->getPriceSetID(); + if ($priceSetID) { + self::initEventFee($this, $this->_eventId, TRUE, $priceSetID); + } // get the profile ids $ufJoinParams = [ @@ -566,92 +569,20 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { /** * Initiate event fee. * - * @param CRM_Core_Form $form + * @param \CRM_Event_Form_Participant|\CRM_Event_Form_Registration|\CRM_Event_Form_ParticipantFeeSelection|\CRM_Event_Form_Task_Register $form * @param int $eventID * @param bool $doNotIncludeExpiredFields * See CRM-16456. + * @param int|null $priceSetId + * ID of the price set in use. * - * @throws Exception + * @throws \CRM_Core_Exception */ - public static function initEventFee(&$form, $eventID, $doNotIncludeExpiredFields = TRUE) { - // get price info - - // retrive all active price set fields. - $discountId = CRM_Core_BAO_Discount::findSet($eventID, 'civicrm_event'); - if (property_exists($form, '_discountId') && $form->_discountId) { - $discountId = $form->_discountId; - } - - if ($discountId) { - $priceSetId = CRM_Core_DAO::getFieldValue('CRM_Core_BAO_Discount', $discountId, 'price_set_id'); - } - else { - $priceSetId = CRM_Price_BAO_PriceSet::getFor('civicrm_event', $eventID); - } - self::initSet($form, $doNotIncludeExpiredFields, $priceSetId); - - if (property_exists($form, '_context') && ($form->_context == 'standalone' - || $form->_context == 'participant') - ) { - $discountedEvent = CRM_Core_BAO_Discount::getOptionGroup($eventID, 'civicrm_event'); - if (is_array($discountedEvent)) { - foreach ($discountedEvent as $key => $priceSetId) { - $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId); - $priceSet = $priceSet[$priceSetId] ?? NULL; - $form->_values['discount'][$key] = $priceSet['fields'] ?? NULL; - $fieldID = key($form->_values['discount'][$key]); - $form->_values['discount'][$key][$fieldID]['name'] = CRM_Core_DAO::getFieldValue( - 'CRM_Price_DAO_PriceSet', - $priceSetId, - 'title' - ); - } - } - } - $eventFee = $form->_values['fee'] ?? NULL; - if (!is_array($eventFee) || empty($eventFee)) { - $form->_values['fee'] = []; - } - - //fix for non-upgraded price sets.CRM-4256. - if (isset($form->_isPaidEvent)) { - $isPaidEvent = $form->_isPaidEvent; - } - else { - $isPaidEvent = $form->_values['event']['is_monetary'] ?? NULL; - } - if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() - && !empty($form->_values['fee']) - ) { - foreach ($form->_values['fee'] as $k => $fees) { - foreach ($fees['options'] as $options) { - if (!CRM_Core_Permission::check('add contributions of type ' . CRM_Contribute_PseudoConstant::financialType($options['financial_type_id']))) { - unset($form->_values['fee'][$k]); - } - } - } - } - if ($isPaidEvent && empty($form->_values['fee'])) { - if (!in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) { - CRM_Core_Error::statusBounce(ts('No Fee Level(s) or Price Set is configured for this event.<br />Click <a href=\'%1\'>CiviEvent >> Manage Event >> Configure >> Event Fees</a> to configure the Fee Level(s) or Price Set for this event.', [1 => CRM_Utils_System::url('civicrm/event/manage/fee', 'reset=1&action=update&id=' . $form->_eventId)])); - } + public static function initEventFee(&$form, $eventID, $doNotIncludeExpiredFields, $priceSetId): void { + if (!$priceSetId) { + CRM_Core_Error::deprecatedWarning('this should not be reachable'); + return; } - } - - /** - * Initiate price set such that various non-BAO things are set on the form. - * - * This function is not really a BAO function so the location is misleading. - * - * @param CRM_Core_Form $form - * Form entity id. - * @param bool $doNotIncludeExpiredFields - * @param int $priceSetId - * Price Set ID - * - * @todo - removed unneeded code from previously-shared function - */ - private static function initSet($form, $doNotIncludeExpiredFields = FALSE, $priceSetId = NULL) { //check if price set is is_config if (is_numeric($priceSetId)) { if (CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config') && $form->getVar('_name') != 'Participant') { @@ -676,7 +607,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { $required = TRUE; } - $form->_priceSetId = $priceSetId; $priceSet = CRM_Price_BAO_PriceSet::getSetDetail($priceSetId, $required, $doNotIncludeExpiredFields); $form->_priceSet = $priceSet[$priceSetId] ?? NULL; $form->_values['fee'] = $form->_priceSet['fields'] ?? NULL; @@ -715,10 +645,37 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { if ($optionsMaxValueTotal) { $form->_priceSet['optionsMaxValueDetails'] = $optionsMaxValueDetails; } - - $form->set('priceSetId', $form->_priceSetId); $form->set('priceSet', $form->_priceSet); } + + $eventFee = $form->_values['fee'] ?? NULL; + if (!is_array($eventFee) || empty($eventFee)) { + $form->_values['fee'] = []; + } + + //fix for non-upgraded price sets.CRM-4256. + if (isset($form->_isPaidEvent)) { + $isPaidEvent = $form->_isPaidEvent; + } + else { + $isPaidEvent = $form->_values['event']['is_monetary'] ?? NULL; + } + if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() + && !empty($form->_values['fee']) + ) { + foreach ($form->_values['fee'] as $k => $fees) { + foreach ($fees['options'] as $options) { + if (!CRM_Core_Permission::check('add contributions of type ' . CRM_Contribute_PseudoConstant::financialType($options['financial_type_id']))) { + unset($form->_values['fee'][$k]); + } + } + } + } + if ($isPaidEvent && empty($form->_values['fee'])) { + if (!in_array(CRM_Utils_System::getClassName($form), ['CRM_Event_Form_Participant', 'CRM_Event_Form_Task_Register'])) { + CRM_Core_Error::statusBounce(ts('No Fee Level(s) or Price Set is configured for this event.<br />Click <a href=\'%1\'>CiviEvent >> Manage Event >> Configure >> Event Fees</a> to configure the Fee Level(s) or Price Set for this event.', [1 => CRM_Utils_System::url('civicrm/event/manage/fee', 'reset=1&action=update&id=' . $form->_eventId)])); + } + } } /** @@ -892,7 +849,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { $participantParams['custom'] = []; foreach ($form->_params as $paramName => $paramValue) { if (strpos($paramName, 'custom_') === 0) { - list($customFieldID, $customValueID) = CRM_Core_BAO_CustomField::getKeyID($paramName, TRUE); + [$customFieldID, $customValueID] = CRM_Core_BAO_CustomField::getKeyID($paramName, TRUE); CRM_Core_BAO_CustomField::formatCustomField($customFieldID, $participantParams['custom'], $paramValue, 'Participant', $customValueID); } @@ -1152,7 +1109,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { */ public function getTemplateFileName() { $fileName = $this->checkTemplateFileExists(); - return $fileName ? $fileName : parent::getTemplateFileName(); + return $fileName ?: parent::getTemplateFileName(); } /** @@ -1162,7 +1119,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { */ public function overrideExtraTemplateFileName() { $fileName = $this->checkTemplateFileExists('extra.'); - return $fileName ? $fileName : parent::overrideExtraTemplateFileName(); + return $fileName ?: parent::overrideExtraTemplateFileName(); } /** @@ -1717,4 +1674,46 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { ); } + /** + * Get the discount 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 + * @noinspection PhpDocMissingThrowsInspection + */ + protected function getDiscountID(): ?int { + $id = CRM_Core_BAO_Discount::findSet($this->getEventID(), 'civicrm_event'); + return $id ?: NULL; + } + + /** + * 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. + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocMissingThrowsInspection + */ + public function getPriceSetID(): ?int { + if ($this->_priceSetId === NULL) { + if ($this->getDiscountID()) { + $this->_priceSetId = (int) CRM_Core_DAO::getFieldValue('CRM_Core_BAO_Discount', $this->getDiscountID(), 'price_set_id'); + } + else { + $this->_priceSetId = (int) CRM_Price_BAO_PriceSet::getFor('civicrm_event', $this->getEventID()); + } + $this->set('priceSetId', $this->_priceSetId); + } + return $this->_priceSetId ?: NULL; + } + } diff --git a/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php b/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php index 46a64f7e5c..81ee3e4d07 100644 --- a/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php +++ b/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php @@ -179,7 +179,7 @@ class CRM_Event_Form_Registration_AdditionalParticipant extends CRM_Event_Form_R $button = substr($this->controller->getButtonName(), -4); if ($this->_values['event']['is_monetary']) { - CRM_Event_Form_Registration_Register::buildAmount($this); + CRM_Event_Form_Registration_Register::buildAmount($this, TRUE, NULL, $this->_priceSetId); } //Add pre and post profiles on the form. @@ -673,6 +673,7 @@ class CRM_Event_Form_Registration_AdditionalParticipant extends CRM_Event_Form_R $params['amount'] = $this->_values['discount'][$discountId][$params['amount']]['value']; } elseif (empty($params['priceSetId'])) { + CRM_Core_Error::deprecatedWarning('unreachable code, prices set always passed as hidden field for monetary events'); $params['amount'] = $this->_values['fee'][$params['amount']]['value']; } else { diff --git a/civicrm/CRM/Event/Form/Registration/Register.php b/civicrm/CRM/Event/Form/Registration/Register.php index 36c86cbeab..82321a0cde 100644 --- a/civicrm/CRM/Event/Form/Registration/Register.php +++ b/civicrm/CRM/Event/Form/Registration/Register.php @@ -34,13 +34,6 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { protected $_waitlistMsg; protected $_requireApprovalMsg; - /** - * Deprecated parameter that we hope to remove. - * - * @var bool - */ - public $_quickConfig; - /** * Skip duplicate check. * @@ -427,7 +420,11 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { // will only work until that is done. // https://github.com/civicrm/civicrm-core/pull/19151 $this->assign('moneyFormat', CRM_Utils_Money::format(1234.56)); - self::buildAmount($this); + // build amount only when needed, skip incase of event full and waitlisting is enabled + // and few other conditions check preProcess() + if (!$this->_noFees) { + self::buildAmount($this, TRUE, NULL, $this->_priceSetId); + } if (!$this->showPaymentOnConfirm) { CRM_Core_Payment_ProcessorForm::buildQuickForm($this); $this->addPaymentProcessorFieldsToForm(); @@ -543,25 +540,13 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { * Form object. * @param bool $required * True if you want to add formRule. - * @param int $discountId + * @param int|null $discountId * Discount id for the event. + * @param int|null $priceSetID * * @throws \CRM_Core_Exception */ - public static function buildAmount(&$form, $required = TRUE, $discountId = NULL) { - // build amount only when needed, skip incase of event full and waitlisting is enabled - // and few other conditions check preProcess() - if (property_exists($form, '_noFees') && $form->_noFees) { - return; - } - - //if payment done, no need to build the fee block. - if (!empty($form->_paymentId)) { - //fix to display line item in update mode. - $form->assign('priceSet', $form->_priceSet ?? NULL); - return; - } - + public static function buildAmount(&$form, $required = TRUE, $discountId = NULL, $priceSetID = NULL) { $feeFields = $form->_values['fee'] ?? NULL; if (is_array($feeFields)) { @@ -594,15 +579,12 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { $className = CRM_Utils_System::getClassName($form); //build the priceset fields. - if (isset($form->_priceSetId) && $form->_priceSetId) { + if ($priceSetID) { //format price set fields across option full. self::formatFieldsForOptionFull($form); - - if (!empty($form->_priceSet['is_quick_config'])) { - $form->_quickConfig = $form->_priceSet['is_quick_config']; - } - $form->add('hidden', 'priceSetId', $form->_priceSetId); + // This is probably not required now - normally loaded from event .... + $form->add('hidden', 'priceSetId', $priceSetID); // CRM-14492 Admin price fields should show up on event registration if user has 'administer CiviCRM' permissions $adminFieldVisible = FALSE; @@ -670,10 +652,11 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } } } - $form->_priceSet['id'] = $form->_priceSet['id'] ?? $form->_priceSetId; + $form->_priceSet['id'] = $form->_priceSet['id'] ?? $priceSetID; $form->assign('priceSet', $form->_priceSet); } else { + // Is this reachable? $eventFeeBlockValues = $elements = $elementJS = []; foreach ($form->_feeBlock as $fee) { if (is_array($fee)) { @@ -1060,6 +1043,7 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { $params['amount'] = $this->_values['discount'][$discountId][$params['amount']]['value']; } elseif (empty($params['priceSetId'])) { + CRM_Core_Error::deprecatedWarning('unreachable code price set is always set here - passed as a hidden field although we could just load...'); if (!empty($params['amount'])) { $params['amount'] = $this->_values['fee'][$params['amount']]['value']; } diff --git a/civicrm/CRM/Event/Form/SearchEvent.php b/civicrm/CRM/Event/Form/SearchEvent.php index 269eeb3650..297e971856 100644 --- a/civicrm/CRM/Event/Form/SearchEvent.php +++ b/civicrm/CRM/Event/Form/SearchEvent.php @@ -46,7 +46,7 @@ class CRM_Event_Form_SearchEvent extends CRM_Core_Form { */ public function buildQuickForm() { $this->add('text', 'title', ts('Event Name'), - [CRM_Core_DAO::getAttribute('CRM_Event_DAO_Event', 'title')] + CRM_Core_DAO::getAttribute('CRM_Event_DAO_Event', 'title') ); $this->addSelect('event_type_id', ['multiple' => TRUE, 'context' => 'search']); diff --git a/civicrm/CRM/Event/Form/Task/Register.php b/civicrm/CRM/Event/Form/Task/Register.php index 2b8d9a12f6..e30f912657 100644 --- a/civicrm/CRM/Event/Form/Task/Register.php +++ b/civicrm/CRM/Event/Form/Task/Register.php @@ -154,6 +154,30 @@ class CRM_Event_Form_Task_Register extends CRM_Event_Form_Participant { CRM_Core_Session::setStatus($statusMsg, ts('Saved'), 'success'); } + /** + * Get status message + * + * @param array $params + * @param int $numberSent + * @param int $numberNotSent + * @param string $updateStatusMsg + * + * @return string + */ + protected function getStatusMsg(array $params, int $numberSent, int $numberNotSent, string $updateStatusMsg): string { + $statusMsg = ''; + if ($this->_action & CRM_Core_Action::ADD) { + $statusMsg = ts('Total Participant(s) added to event: %1.', [1 => count($this->_contactIds)]); + if ($numberNotSent > 0) { + $statusMsg .= ' ' . ts('Email has NOT been sent to %1 contact(s) - communication preferences specify DO NOT EMAIL OR valid Email is NOT present. ', [1 => $numberNotSent]); + } + elseif (isset($params['send_receipt'])) { + $statusMsg .= ' ' . ts('A confirmation email has been sent to ALL participants'); + } + } + return $statusMsg; + } + /** * Add local and global form rules. * diff --git a/civicrm/CRM/Event/Import/Parser/Participant.php b/civicrm/CRM/Event/Import/Parser/Participant.php index 27456bb4db..d780e858bf 100644 --- a/civicrm/CRM/Event/Import/Parser/Participant.php +++ b/civicrm/CRM/Event/Import/Parser/Participant.php @@ -21,14 +21,6 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser { protected $_mapperKeys; - /** - * Array of successfully imported participants id's - * - * @var array - */ - protected $_newParticipants; - - protected $_fileName; /** @@ -147,8 +139,6 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser { ]; CRM_Price_BAO_LineItem::syncLineItems($newParticipant->id, 'civicrm_participant', $newParticipant->fee_amount, $otherParams); } - - $this->_newParticipant[] = $newParticipant->id; $this->setImportStatus($rowNumber, 'IMPORTED', '', $newParticipant->id); return; } @@ -225,10 +215,6 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser { throw new CRM_Core_Exception(ts('Unknown error')); } } - - if (!(is_array($newParticipant) && civicrm_error($newParticipant))) { - $this->_newParticipants[] = $newParticipant['id'] ?? NULL; - } } catch (CRM_Core_Exception $e) { $this->setImportStatus($rowNumber, 'ERROR', $e->getMessage()); @@ -237,15 +223,6 @@ class CRM_Event_Import_Parser_Participant extends CRM_Import_Parser { $this->setImportStatus($rowNumber, 'IMPORTED', '', $newParticipant['id']); } - /** - * Get the array of successfully imported Participation ids. - * - * @return array - */ - public function &getImportedParticipations() { - return $this->_newParticipants; - } - /** * Format values * diff --git a/civicrm/CRM/Event/Page/ManageEvent.php b/civicrm/CRM/Event/Page/ManageEvent.php index 1561f9f390..bee5e2ae2f 100644 --- a/civicrm/CRM/Event/Page/ManageEvent.php +++ b/civicrm/CRM/Event/Page/ManageEvent.php @@ -59,17 +59,20 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Event'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Event'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => CRM_Utils_System::currentPath(), 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Event'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::COPY => [ 'name' => ts('Copy'), @@ -77,6 +80,7 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { 'qs' => 'reset=1&action=copy&id=%%id%%', 'extra' => 'onclick = "return confirm(\'' . $copyExtra . '\');"', 'title' => ts('Copy Event'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::COPY), ], ]; } @@ -91,6 +95,7 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { 'title' => ts('Register Participant'), 'url' => 'civicrm/participant/add', 'qs' => 'reset=1&action=add&context=standalone&eid=%%id%%', + 'weight' => -30, ], 'event_info' => [ 'name' => ts('Event Info'), @@ -98,6 +103,7 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { 'url' => 'civicrm/event/info', 'qs' => 'reset=1&id=%%id%%', 'fe' => TRUE, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], 'online_registration_test' => [ 'name' => ts('Registration (Test-drive)'), @@ -105,6 +111,7 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { 'url' => 'civicrm/event/register', 'qs' => 'reset=1&action=preview&id=%%id%%', 'fe' => TRUE, + 'weight' => 30, ], 'online_registration_live' => [ 'name' => ts('Registration (Live)'), @@ -112,6 +119,7 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { 'url' => 'civicrm/event/register', 'qs' => 'reset=1&id=%%id%%', 'fe' => TRUE, + 'weight' => 40, ], ]; } @@ -312,7 +320,7 @@ class CRM_Event_Page_ManageEvent extends CRM_Core_Page { $params = []; $whereClause = $this->whereClause($params, TRUE, $this->_force); // because is_template != 1 would be to simple - $whereClause .= ' AND (is_template = 0 OR is_template IS NULL)'; + $whereClause .= ' AND is_template = 0'; $this->pager($whereClause, $params); diff --git a/civicrm/CRM/Event/ParticipantTokens.php b/civicrm/CRM/Event/ParticipantTokens.php index 6df913b0ac..1c5d000950 100644 --- a/civicrm/CRM/Event/ParticipantTokens.php +++ b/civicrm/CRM/Event/ParticipantTokens.php @@ -54,7 +54,7 @@ class CRM_Event_ParticipantTokens extends CRM_Core_EntityTokens { public function alterActionScheduleQuery(\Civi\ActionSchedule\Event\MailingQueryEvent $e): void { // When targeting `civicrm_participant` records, we enable both `{participant.*}` (per usual) and the related `{event.*}`. parent::alterActionScheduleQuery($e); - if ($e->mapping->getEntityTable() === $this->getExtendableTableName()) { + if ($e->mapping->getEntityTable($e->actionSchedule) === $this->getExtendableTableName()) { $e->query->select('e.event_id AS tokenContext_eventId'); } } diff --git a/civicrm/CRM/Event/PseudoConstant.php b/civicrm/CRM/Event/PseudoConstant.php index ca1ad28386..b8bd9f11a6 100644 --- a/civicrm/CRM/Event/PseudoConstant.php +++ b/civicrm/CRM/Event/PseudoConstant.php @@ -124,7 +124,7 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { self::$participantStatus = []; } - $index = $cond ? $cond : 'No Condition'; + $index = $cond ?: 'No Condition'; $index = "{$index}_{$retColumn}"; if (empty(self::$participantStatus[$index])) { self::$participantStatus[$index] = []; @@ -183,7 +183,7 @@ class CRM_Event_PseudoConstant extends CRM_Core_PseudoConstant { * array reference of all participant roles if any */ public static function &participantRole($id = NULL, $cond = NULL) { - $index = $cond ? $cond : 'No Condition'; + $index = $cond ?: 'No Condition'; if (empty(self::$participantRole[$index])) { self::$participantRole[$index] = []; diff --git a/civicrm/CRM/Event/Selector/Search.php b/civicrm/CRM/Event/Selector/Search.php index b7f6967f6b..9000dbbf90 100644 --- a/civicrm/CRM/Event/Selector/Search.php +++ b/civicrm/CRM/Event/Selector/Search.php @@ -354,12 +354,13 @@ class CRM_Event_Selector_Search extends CRM_Core_Selector_Base implements CRM_Co $row['checkbox'] = CRM_Core_Form::CB_PREFIX . $result->participant_id; $links = self::links($this->_key, $this->_context, $this->_compContext); - if ($statusTypes[$row['participant_status_id']] == 'Partially paid') { + if ($statusTypes[$row['participant_status_id']] === 'Partially paid') { $links[CRM_Core_Action::ADD] = [ 'name' => ts('Record Payment'), 'url' => 'civicrm/payment', 'qs' => 'reset=1&id=%%id%%&cid=%%cid%%&action=add&component=event', 'title' => ts('Record Payment'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ADD), ]; if (CRM_Core_Config::isEnabledBackOfficeCreditCardPayments()) { $links[CRM_Core_Action::BASIC] = [ @@ -367,16 +368,18 @@ class CRM_Event_Selector_Search extends CRM_Core_Selector_Base implements CRM_Co 'url' => 'civicrm/payment/add', 'qs' => 'reset=1&id=%%id%%&cid=%%cid%%&action=add&component=event&mode=live', 'title' => ts('Submit Credit Card payment'), + 'weight' => 50, ]; } } - if ($statusTypes[$row['participant_status_id']] == 'Pending refund') { + if ($statusTypes[$row['participant_status_id']] === 'Pending refund') { $links[CRM_Core_Action::ADD] = [ 'name' => ts('Record Refund'), 'url' => 'civicrm/payment', 'qs' => 'reset=1&id=%%id%%&cid=%%cid%%&action=add&component=event', 'title' => ts('Record Refund'), + 'weight' => 60, ]; } @@ -391,6 +394,7 @@ class CRM_Event_Selector_Search extends CRM_Core_Selector_Base implements CRM_Co 'url' => 'civicrm/event/selfsvcupdate', 'qs' => 'reset=1&pid=%%id%%&is_backoffice=1&cs=' . CRM_Contact_BAO_Contact_Utils::generateChecksum($result->contact_id, NULL, 'inf'), 'title' => ts('Transfer or Cancel'), + 'weight' => 70, ]; } diff --git a/civicrm/CRM/Event/Tokens.php b/civicrm/CRM/Event/Tokens.php index 3bea327291..286d56cbbf 100644 --- a/civicrm/CRM/Event/Tokens.php +++ b/civicrm/CRM/Event/Tokens.php @@ -148,7 +148,7 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { * @throws \CRM_Core_Exception */ public function evaluateToken(TokenRow $row, $entity, $field, $prefetch = NULL) { - $eventID = $this->getFieldValue($row, 'id'); + $eventID = (int) $this->getFieldValue($row, 'id'); if (array_key_exists($field, $this->getEventTokenValues($eventID))) { foreach ($this->getEventTokenValues($eventID)[$field] as $format => $value) { $row->format($format)->tokens($entity, $field, $value ?? ''); diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php index a739ba1680..92d5409c3a 100644 --- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php +++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php @@ -58,6 +58,17 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { */ public $participants; + /** + * The current participant (if there are multiple this is the one being emailed). + * + * This uses the same format as the participants array. + * + * @var array + * + * @scope tplParams as participant + */ + public $currentParticipant; + /** * Details of the participant contacts. * @@ -114,7 +125,7 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { $participantPayment = civicrm_api3('ParticipantPayment', 'get', ['participant_id' => $participantID])['values']; if (!empty($participantPayment)) { // no ts() since this should be rare - CRM_Core_Session::setStatus('There might be a data problem, contribution id could not be loaded from the line item'); + CRM_Core_Error::deprecatedWarning('There might be a data problem, contribution id could not be loaded from the line item'); $participantPayment = reset($participantPayment); $this->setContributionID((int) $participantPayment['contribution_id']); } @@ -173,6 +184,22 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { return $this->participant; } + /** + * Get the line items and tax information indexed by participant. + * + * We will likely add profile data to this too. This is so we can iterate through + * participants as the primary participant needs to show them all (and the others + * need to be able to filter). + * + * @return array + * @throws \CRM_Core_Exception + */ + public function getCurrentParticipant(): array { + // @todo - it is only because of some messed up tests which use + // the legacy testSubmit function we have ?? [] + return $this->getParticipants()[$this->participantID] ?? []; + } + /** * Get the line items and tax information indexed by participant. * diff --git a/civicrm/CRM/Extension/Container/Basic.php b/civicrm/CRM/Extension/Container/Basic.php index 6d6157c041..5b76597a8c 100644 --- a/civicrm/CRM/Extension/Container/Basic.php +++ b/civicrm/CRM/Extension/Container/Basic.php @@ -214,10 +214,11 @@ class CRM_Extension_Container_Basic implements CRM_Extension_Container_Interface $info = CRM_Extension_Info::loadFromFile($infoPath); } catch (CRM_Extension_Exception_ParseException $e) { - CRM_Core_Session::setStatus(ts('Parse error in extension: %1', [ - 1 => $e->getMessage(), + CRM_Core_Session::setStatus(ts('Parse error in extension %1: %2', [ + 1 => ltrim($relPath, '/'), + 2 => $e->getMessage(), ]), '', 'error'); - CRM_Core_Error::debug_log_message("Parse error in extension: " . $e->getMessage()); + CRM_Core_Error::debug_log_message("Parse error in extension " . ltrim($relPath, '/') . ": " . $e->getMessage()); continue; } $visible = TRUE; diff --git a/civicrm/CRM/Extension/Mapper.php b/civicrm/CRM/Extension/Mapper.php index 87211fc062..53bca81722 100644 --- a/civicrm/CRM/Extension/Mapper.php +++ b/civicrm/CRM/Extension/Mapper.php @@ -452,10 +452,11 @@ class CRM_Extension_Mapper { $this->keyToInfo($key); } catch (CRM_Extension_Exception_ParseException $e) { - CRM_Core_Session::setStatus(ts('Parse error in extension: %1', [ - 1 => $e->getMessage(), + CRM_Core_Session::setStatus(ts('Parse error in extension %1: %2', [ + 1 => $key, + 2 => $e->getMessage(), ]), '', 'error'); - CRM_Core_Error::debug_log_message("Parse error in extension: " . $e->getMessage()); + CRM_Core_Error::debug_log_message("Parse error in extension " . $key . ": " . $e->getMessage()); continue; } } @@ -515,7 +516,7 @@ class CRM_Extension_Mapper { } /** - * Given te class, provides the template name. + * Given the class, provides the template name. * @todo consider multiple templates, support for one template for now * * @@ -576,10 +577,11 @@ class CRM_Extension_Mapper { $info = $this->keyToInfo($key); } catch (CRM_Extension_Exception_ParseException $e) { - CRM_Core_Session::setStatus(ts('Parse error in extension: %1', [ - 1 => $e->getMessage(), + CRM_Core_Session::setStatus(ts('Parse error in extension %1: %2', [ + 1 => $key, + 2 => $e->getMessage(), ]), '', 'error'); - CRM_Core_Error::debug_log_message("Parse error in extension: " . $e->getMessage()); + CRM_Core_Error::debug_log_message("Parse error in extension " . $key . ": " . $e->getMessage()); return NULL; } diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php index 7b1d79ea60..b9643f8243 100644 --- a/civicrm/CRM/Financial/BAO/Payment.php +++ b/civicrm/CRM/Financial/BAO/Payment.php @@ -96,12 +96,15 @@ class CRM_Financial_BAO_Payment { $trxn = CRM_Core_BAO_FinancialTrxn::create($paymentTrxnParams); if ($params['total_amount'] < 0 && !empty($params['cancelled_payment_id'])) { + // Payment was cancelled. Reverse the financial transactions. self::reverseAllocationsFromPreviousPayment($params, $trxn->id); } else { + // Record new "payment" (financial_trxn, financial_item, entity_financial_trxn etc). $salesTaxFinancialAccount = CRM_Contribute_BAO_Contribution::getSalesTaxFinancialAccounts(); + // Get all the lineitems and add financial_item information to them for the contribution on which we are recording a payment. $financialItems = LineItem::get(FALSE) - ->addSelect('tax_amount', 'price_field_value_id', 'financial_item.id', 'financial_item.status_id:name', 'financial_item.financial_account_id') + ->addSelect('tax_amount', 'price_field_value_id', 'financial_item.id', 'financial_item.status_id:name', 'financial_item.financial_account_id', 'financial_item.entity_id') ->addJoin( 'FinancialItem AS financial_item', 'INNER', @@ -112,6 +115,7 @@ class CRM_Financial_BAO_Payment { ->addOrderBy('financial_item.id', 'DESC') ->addWhere('contribution_id', '=', (int) $params['contribution_id'])->execute(); + // Loop through our list of payable lineitems foreach ($lineItems as $lineItem) { if ($lineItem['allocation'] === (float) 0) { continue; @@ -119,29 +123,33 @@ class CRM_Financial_BAO_Payment { $financialItemID = NULL; $currentFinancialItemStatus = NULL; foreach ($financialItems as $financialItem) { - // We check against price_field_value_id rather than line item - // id because that is what the code did previously - but it's - // unclear whether this is for good reason or bad coding. - if ($financialItem['price_field_value_id'] === (int) $lineItem['price_field_value_id'] + // $financialItems is a list of all lineitems for the contribution + // Loop through all of them and match on the first one which is not of type "Sales Tax". + if ($financialItem['financial_item.entity_id'] === (int) $lineItem['id'] && !in_array($financialItem['financial_item.financial_account_id'], $salesTaxFinancialAccount, TRUE) ) { $financialItemID = $financialItem['financial_item.id']; $currentFinancialItemStatus = $financialItem['financial_item.status_id:name']; + // We can break out of the loop because there will only be one lineitem=financial_item.entity_id. + break; } } if (!$financialItemID) { + // If we didn't find a lineitem that is NOT of type "Sales Tax" then create a new one. $financialItemID = self::getNewFinancialItemID($lineItem, $params['trxn_date'], $contribution['contact_id'], $paymentTrxnParams['currency']); } + // Now create an EntityFinancialTrxn record to link the new financial_trxn to the lineitem and mark it as paid. $eftParams = [ 'entity_table' => 'civicrm_financial_item', 'financial_trxn_id' => $trxn->id, 'entity_id' => $financialItemID, 'amount' => $lineItem['allocation'], ]; - civicrm_api3('EntityFinancialTrxn', 'create', $eftParams); - if ($currentFinancialItemStatus && 'Paid' !== $currentFinancialItemStatus) { + + if ($currentFinancialItemStatus && ('Paid' !== $currentFinancialItemStatus)) { + // Did the lineitem get fully paid? $newStatus = $lineItem['allocation'] < $lineItem['balance'] ? 'Partially paid' : 'Paid'; FinancialItem::update(FALSE) ->addValue('status_id:name', $newStatus) @@ -150,9 +158,12 @@ class CRM_Financial_BAO_Payment { } foreach ($financialItems as $financialItem) { - if ($financialItem['price_field_value_id'] === (int) $lineItem['price_field_value_id'] + // $financialItems is a list of all lineitems for the contribution + // Now we loop through all of them and match on the first one which IS of type "Sales Tax". + if ($financialItem['financial_item.entity_id'] === (int) $lineItem['id'] && in_array($financialItem['financial_item.financial_account_id'], $salesTaxFinancialAccount, TRUE) ) { + // If we find a "Sales Tax" lineitem we record a tax entry in entityFiancncialTrxn // @todo - this is expected to be broken - it should be fixed to // a) have the getPayableLineItems add the amount to allocate for tax // b) call EntityFinancialTrxn directly - per above. @@ -596,7 +607,7 @@ class CRM_Financial_BAO_Payment { /** * Reverse the entity financial transactions associated with the cancelled payment. * - * The reversals are linked to the new payemnt. + * The reversals are linked to the new payment. * * @param array $params * @param int $trxnID diff --git a/civicrm/CRM/Financial/Form/BatchTransaction.php b/civicrm/CRM/Financial/Form/BatchTransaction.php index e93585cb56..dee4265809 100644 --- a/civicrm/CRM/Financial/Form/BatchTransaction.php +++ b/civicrm/CRM/Financial/Form/BatchTransaction.php @@ -74,7 +74,7 @@ class CRM_Financial_Form_BatchTransaction extends CRM_Contribute_Form_Search { * Build the form object. */ public function buildQuickForm() { - if ($this->_batchStatus == 'Closed') { + if ($this->_batchStatus === 'Closed') { $this->add('xbutton', 'export_batch', ts('Export Batch'), ['type' => 'submit']); } @@ -166,12 +166,14 @@ class CRM_Financial_Form_BatchTransaction extends CRM_Contribute_Form_Search { 'url' => 'civicrm/contact/view/contribution', 'qs' => 'reset=1&id=%%contid%%&cid=%%cid%%&action=view&context=contribution&selectedChild=contribute', 'title' => ts('View Contribution'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], 'assign' => [ 'name' => ts('Assign'), 'ref' => 'disable-action', 'title' => ts('Assign Transaction'), 'extra' => 'onclick = "assignRemove( %%id%%,\'' . 'assign' . '\' );"', + 'weight' => 50, ], ]; } diff --git a/civicrm/CRM/Financial/Page/AJAX.php b/civicrm/CRM/Financial/Page/AJAX.php index 7bab72bbd2..9dc74798b3 100644 --- a/civicrm/CRM/Financial/Page/AJAX.php +++ b/civicrm/CRM/Financial/Page/AJAX.php @@ -341,12 +341,12 @@ class CRM_Financial_Page_AJAX { while ($financialItem->fetch()) { $row[$financialItem->id] = []; foreach ($columnHeader as $columnKey => $columnValue) { - if ($financialItem->contact_sub_type && $columnKey == 'contact_type') { + if ($financialItem->contact_sub_type && $columnKey === 'contact_type') { $row[$financialItem->id][$columnKey] = $financialItem->contact_sub_type; continue; } $row[$financialItem->id][$columnKey] = $financialItem->$columnKey; - if ($columnKey == 'sort_name' && $financialItem->$columnKey && $financialItem->contact_id) { + if ($columnKey === 'sort_name' && $financialItem->$columnKey && $financialItem->contact_id) { $url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid=" . $financialItem->contact_id); $row[$financialItem->id][$columnKey] = '<a href=' . $url . '>' . $financialItem->$columnKey . '</a>'; } diff --git a/civicrm/CRM/Financial/Page/BatchTransaction.php b/civicrm/CRM/Financial/Page/BatchTransaction.php index 381e5cdf21..39f5606a2e 100644 --- a/civicrm/CRM/Financial/Page/BatchTransaction.php +++ b/civicrm/CRM/Financial/Page/BatchTransaction.php @@ -63,11 +63,13 @@ class CRM_Financial_Page_BatchTransaction extends CRM_Core_Page_Basic { 'url' => 'civicrm/contact/view/contribution', 'qs' => 'reset=1&id=%%contid%%&cid=%%cid%%&action=view&context=contribution&selectedChild=contribute', 'title' => ts('View Contribution'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], 'remove' => [ 'name' => ts('Remove'), 'title' => ts('Remove Transaction'), 'extra' => 'onclick = "removeFromBatch(%%id%%);"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/Financial/Page/FinancialAccount.php b/civicrm/CRM/Financial/Page/FinancialAccount.php index 16e7d6a187..a286705b2e 100644 --- a/civicrm/CRM/Financial/Page/FinancialAccount.php +++ b/civicrm/CRM/Financial/Page/FinancialAccount.php @@ -52,22 +52,26 @@ class CRM_Financial_Page_FinancialAccount extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/financial/financialAccount/edit', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/financial/financialAccount/edit', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/Financial/Page/FinancialType.php b/civicrm/CRM/Financial/Page/FinancialType.php index 00b44d0c6d..05484e8ef5 100644 --- a/civicrm/CRM/Financial/Page/FinancialType.php +++ b/civicrm/CRM/Financial/Page/FinancialType.php @@ -52,28 +52,33 @@ class CRM_Financial_Page_FinancialType extends CRM_Core_Page_Basic { 'url' => 'civicrm/admin/financial/financialType/accounts', 'qs' => 'reset=1&action=browse&aid=%%id%%', 'title' => ts('Accounts'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Edit'), 'url' => 'civicrm/admin/financial/financialType/edit', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/financial/financialType/edit', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Financial Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/Financial/Page/FinancialTypeAccount.php b/civicrm/CRM/Financial/Page/FinancialTypeAccount.php index 75b4d47e2b..53ff637fcc 100644 --- a/civicrm/CRM/Financial/Page/FinancialTypeAccount.php +++ b/civicrm/CRM/Financial/Page/FinancialTypeAccount.php @@ -57,12 +57,14 @@ class CRM_Financial_Page_FinancialTypeAccount extends CRM_Core_Page { 'url' => 'civicrm/admin/financial/financialType/accounts', 'qs' => 'action=update&id=%%id%%&aid=%%aid%%&reset=1', 'title' => ts('Edit Financial Type Account'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/financial/financialType/accounts', 'qs' => 'action=delete&id=%%id%%&aid=%%aid%%', 'title' => ts('Delete Financial Type Account'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/Group/Form/Search.php b/civicrm/CRM/Group/Form/Search.php index 9a6d45cbcd..2d83105928 100644 --- a/civicrm/CRM/Group/Form/Search.php +++ b/civicrm/CRM/Group/Form/Search.php @@ -35,11 +35,11 @@ class CRM_Group_Form_Search extends CRM_Core_Form { } public function buildQuickForm() { - $this->add('text', 'title', ts('Find'), + $this->add('text', 'title', ts('Group Name'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Group', 'title') ); - $this->add('text', 'created_by', ts('Created By'), + $this->add('text', 'created_by', ts('Created By (Name)'), CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Group', 'title') ); diff --git a/civicrm/CRM/Import/Form/MapField.php b/civicrm/CRM/Import/Form/MapField.php index ff1c6d0ca1..cf150e0f23 100644 --- a/civicrm/CRM/Import/Form/MapField.php +++ b/civicrm/CRM/Import/Form/MapField.php @@ -67,6 +67,11 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { $this->assign('highlightedFields', $this->getHighlightedFields()); $this->assign('dataValues', array_values($this->getDataRows([], 2))); $this->_mapperFields = $this->getAvailableFields(); + $fieldMappings = $this->getFieldMappings(); + // Check if the import file headers match the selected import mappings, throw an error if it doesn't. + 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); parent::preProcess(); } @@ -228,7 +233,7 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { // Eventually we hope to phase out the use of the civicrm_mapping data & // just use UserJob and Import Templates (UserJob records with 'is_template' = 1 $mappedFieldData = $this->userJob['metadata']['import_mappings'][$columnNumber]; - $mappedField = array_intersect_key(array_fill_keys(['name', 'column_number', 'entity_data'], TRUE), $mappedFieldData); + $mappedField = array_intersect_key($mappedFieldData, array_fill_keys(['name', 'column_number', 'entity_data'], TRUE)); $mappedField['mapping_id'] = $mappingID; } else { @@ -296,9 +301,6 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { ->execute() ->indexBy('column_number'); - if ((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.')); - } return (array) $fieldMappings; } return []; diff --git a/civicrm/CRM/Import/Parser.php b/civicrm/CRM/Import/Parser.php index f8ec36d4e4..7d327675e0 100644 --- a/civicrm/CRM/Import/Parser.php +++ b/civicrm/CRM/Import/Parser.php @@ -1641,7 +1641,7 @@ abstract class CRM_Import_Parser implements UserJobInterface { $comparisonValue = $this->getComparisonValue($importedValue); return $options[$comparisonValue] ?? 'invalid_import_value'; } - if (!empty($fieldMetadata['FKClassName']) || !empty($fieldMetadata['pseudoconstant']['prefetch'])) { + if (!empty($fieldMetadata['FKClassName']) || ($fieldMetadata['pseudoconstant']['prefetch'] ?? NULL) === 'disabled') { // @todo - make this generic - for fields where getOptions doesn't fetch // getOptions does not retrieve these fields with high potential results if ($fieldName === 'event_id') { @@ -2219,7 +2219,9 @@ abstract class CRM_Import_Parser implements UserJobInterface { } //check if external identifier exists in database if ($contactID && $foundContact['id'] !== $contactID) { - throw new CRM_Core_Exception(ts('Existing external ID does not match the imported contact ID.'), CRM_Import_Parser::ERROR); + throw new CRM_Core_Exception( + ts('Imported external ID already belongs to an existing contact with a different contact ID than the imported contact ID or than the contact ID of the contact matched on the entity imported.'), + CRM_Import_Parser::ERROR); } return (int) $foundContact['id']; } diff --git a/civicrm/CRM/Logging/ReportDetail.php b/civicrm/CRM/Logging/ReportDetail.php index a8cb03d610..8df6ec89e5 100644 --- a/civicrm/CRM/Logging/ReportDetail.php +++ b/civicrm/CRM/Logging/ReportDetail.php @@ -455,7 +455,7 @@ class CRM_Logging_ReportDetail extends CRM_Report_Form { unset($_POST['crmPID_B'], $_POST['crmPID']); } - $pageId = $pageId ? $pageId : 1; + $pageId = $pageId ?: 1; $offset = ($pageId - 1) * $rowCount; $offset = CRM_Utils_Type::escape($offset, 'Int'); diff --git a/civicrm/CRM/Mailing/BAO/MailingJob.php b/civicrm/CRM/Mailing/BAO/MailingJob.php index d8de39f04c..86252a9cf9 100644 --- a/civicrm/CRM/Mailing/BAO/MailingJob.php +++ b/civicrm/CRM/Mailing/BAO/MailingJob.php @@ -351,7 +351,7 @@ class CRM_Mailing_BAO_MailingJob extends CRM_Mailing_DAO_MailingJob { $transaction = new CRM_Core_Transaction(); - $job->split_job($offset); + $job->split_job((int) $offset, (int) $job->id, (int) $job->mailing_id, $job->scheduled_date); // Update the status of the parent job self::create(['id' => $job->id, 'start_date' => date('YmdHis'), 'status' => 'Running']); @@ -365,26 +365,27 @@ class CRM_Mailing_BAO_MailingJob extends CRM_Mailing_DAO_MailingJob { /** * Split the parent job into n number of child job based on an offset. * If null or 0 , we create only one child job + * * @param int $offset + * @param int $jobID + * @param int $mailingID + * @param string $scheduledDate + * + * @throws \Civi\Core\Exception\DBQueryException */ - public function split_job($offset = 200) { - $recipient_count = CRM_Mailing_BAO_MailingRecipients::mailingSize($this->mailing_id); - - $jobTable = CRM_Mailing_DAO_MailingJob::getTableName(); - - $dao = new CRM_Core_DAO(); - - $sql = " + private static function split_job(int $offset, int $jobID, int $mailingID, string $scheduledDate): void { + $recipient_count = CRM_Mailing_BAO_MailingRecipients::mailingSize($mailingID); + $sql = ' INSERT INTO civicrm_mailing_job (`mailing_id`, `scheduled_date`, `status`, `job_type`, `parent_id`, `job_offset`, `job_limit`) VALUES (%1, %2, %3, %4, %5, %6, %7) -"; +'; $params = [ - 1 => [$this->mailing_id, 'Integer'], - 2 => [$this->scheduled_date, 'String'], + 1 => [$mailingID, 'Integer'], + 2 => [$scheduledDate, 'String'], 3 => ['Scheduled', 'String'], 4 => ['child', 'String'], - 5 => [$this->id, 'Integer'], + 5 => [$jobID, 'Integer'], 6 => [0, 'Integer'], 7 => [$recipient_count, 'Integer'], ]; @@ -398,9 +399,9 @@ VALUES (%1, %2, %3, %4, %5, %6, %7) } else { // Creating 'child jobs' - $scheduled_unixtime = strtotime($this->scheduled_date); - for ($i = 0, $s = 0; $i < $recipient_count; $i = $i + $offset, $s++) { - $params[2][0] = date('Y-m-d H:i:s', $scheduled_unixtime + $s); + $scheduled_unix_time = strtotime($scheduledDate); + for ($i = 0, $s = 0; $i < $recipient_count; $i += $offset, $s++) { + $params[2][0] = date('Y-m-d H:i:s', $scheduled_unix_time + $s); $params[6][0] = $i; $params[7][0] = $offset; CRM_Core_DAO::executeQuery($sql, $params); diff --git a/civicrm/CRM/Mailing/DAO/Mailing.php b/civicrm/CRM/Mailing/DAO/Mailing.php index fd8055ccea..894028116b 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:b6497d273cd5ec8c044a5b60c6cd5fea) + * (GenCodeChecksum:7370dea62ce328244525bac141d7fb62) */ /** @@ -1363,7 +1363,7 @@ class CRM_Mailing_DAO_Mailing extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], diff --git a/civicrm/CRM/Mailing/Form/Unsubscribe.php b/civicrm/CRM/Mailing/Form/Unsubscribe.php index e5acb41922..cf17a06f0a 100644 --- a/civicrm/CRM/Mailing/Form/Unsubscribe.php +++ b/civicrm/CRM/Mailing/Form/Unsubscribe.php @@ -66,6 +66,12 @@ class CRM_Mailing_Form_Unsubscribe extends CRM_Core_Form { list($displayName, $email) = CRM_Mailing_Event_BAO_MailingEventQueue::getContactInfo($queue_id); $this->assign('display_name', $displayName); + $nameMasked = ''; + $names = explode(' ', $displayName); + foreach ($names as $name) { + $nameMasked .= substr($name, 0, 2) . '***** '; + } + $this->assign('name_masked', $nameMasked); $emailMasked = CRM_Utils_String::maskEmail($email); $this->assign('email_masked', $emailMasked); $this->assign('email', $email); diff --git a/civicrm/CRM/Mailing/Page/Browse.php b/civicrm/CRM/Mailing/Page/Browse.php index eca527d5dc..6fd93bdfa0 100644 --- a/civicrm/CRM/Mailing/Page/Browse.php +++ b/civicrm/CRM/Mailing/Page/Browse.php @@ -105,13 +105,13 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { if (CRM_Core_Permission::check('access CiviMail')) { $archiveLinks = TRUE; } - if ($archiveLinks == TRUE) { - $this->assign('archiveLinks', $archiveLinks); - } + $this->assign('archiveLinks', $archiveLinks ?? FALSE); } /** * Run this page (figure out the action needed and perform it). + * + * @throws \CRM_Core_Exception */ public function run() { $this->preProcess(); @@ -122,19 +122,19 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { = CRM_Utils_Request::retrieve('sortByCharacter', 'String', $this); // CRM-11920 "all" should set sortByCharacter to null, not empty string - if (strtolower($this->_sortByCharacter ?: '') == 'all' || !empty($_POST)) { + if (strtolower($this->_sortByCharacter ?: '') === 'all' || !empty($_POST)) { $this->_sortByCharacter = NULL; $this->set('sortByCharacter', NULL); } - if (($newArgs[3] ?? NULL) == 'unscheduled') { + if (($newArgs[3] ?? NULL) === 'unscheduled') { $this->_unscheduled = TRUE; } $this->set('unscheduled', $this->_unscheduled); $this->set('archived', $this->isArchived($newArgs)); - if (($newArgs[3] ?? NULL) == 'scheduled') { + if (($newArgs[3] ?? NULL) === 'scheduled') { $this->_scheduled = TRUE; } $this->set('scheduled', $this->_scheduled); @@ -243,7 +243,7 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { if ($this->get('sms')) { $urlParams .= '&sms=1'; } - if (($newArgs[3] ?? NULL) == 'unscheduled') { + if (($newArgs[3] ?? NULL) === 'unscheduled') { $urlString .= '/unscheduled'; $urlParams .= '&scheduled=false'; $this->assign('unscheduled', TRUE); diff --git a/civicrm/CRM/Mailing/Page/Preview.php b/civicrm/CRM/Mailing/Page/Preview.php deleted file mode 100644 index 565388b023..0000000000 --- a/civicrm/CRM/Mailing/Page/Preview.php +++ /dev/null @@ -1,85 +0,0 @@ -<?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 | - +--------------------------------------------------------------------+ - */ - -/** - * - * @package CRM - * @copyright CiviCRM LLC https://civicrm.org/licensing - */ - -/** - * a page for mailing preview - */ -class CRM_Mailing_Page_Preview extends CRM_Core_Page { - - /** - * Run this page (figure out the action needed and perform it). - */ - public function run() { - - $session = CRM_Core_Session::singleton(); - - $qfKey = CRM_Utils_Request::retrieve('qfKey', 'String', CRM_Core_DAO::$_nullObject, FALSE, 'text'); - $type = CRM_Utils_Request::retrieve('type', 'String', CRM_Core_DAO::$_nullObject, FALSE, 'text'); - - $options = []; - $session->getVars($options, "CRM_Mailing_Controller_Send_$qfKey"); - - // get the options if control come from search context, CRM-3711 - if (empty($options)) { - $session->getVars($options, "CRM_Contact_Controller_Search_$qfKey"); - } - - // FIXME: the below and CRM_Mailing_Form_Test::testMail() - // should be refactored - $fromEmail = NULL; - $mailing = new CRM_Mailing_BAO_Mailing(); - if (!empty($options)) { - $mailing->id = $options['mailing_id']; - $fromEmail = $options['from_email'] ?? NULL; - } - - $mailing->find(TRUE); - - CRM_Mailing_BAO_Mailing::tokenReplace($mailing); - - // get and format attachments - $attachments = CRM_Core_BAO_File::getEntityFile('civicrm_mailing', - $mailing->id - ); - - // get details of contact with token value including Custom Field Token Values.CRM-3734 - $returnProperties = $mailing->getReturnProperties(); - $params = ['contact_id' => $session->get('userID')]; - - [$details] = CRM_Utils_Token::getTokenDetails($params, - $returnProperties, - TRUE, TRUE, NULL, - $mailing->getFlattenedTokens(), - get_class($this) - ); - // $details is an array of [ contactID => contactDetails ] - $mime = &$mailing->compose(NULL, NULL, NULL, $session->get('userID'), $fromEmail, $fromEmail, - TRUE, $details[$session->get('userID')], $attachments - ); - - if ($type == 'html') { - CRM_Utils_System::setHttpHeader('Content-Type', 'text/html; charset=utf-8'); - print $mime->getHTMLBody(); - } - else { - CRM_Utils_System::setHttpHeader('Content-Type', 'text/plain; charset=utf-8'); - print $mime->getTXTBody(); - } - CRM_Utils_System::civiExit(); - } - -} diff --git a/civicrm/CRM/Mailing/Page/View.php b/civicrm/CRM/Mailing/Page/View.php index fb7caac10f..2f77598177 100644 --- a/civicrm/CRM/Mailing/Page/View.php +++ b/civicrm/CRM/Mailing/Page/View.php @@ -20,13 +20,6 @@ */ class CRM_Mailing_Page_View extends CRM_Core_Page { - /** - * Signal to Flexmailer that this version of the class is usable. - * - * @var bool - */ - const USES_MAILING_PREVIEW_API = 1; - protected $_mailingID; protected $_mailing; protected $_contactID; diff --git a/civicrm/CRM/Mailing/PseudoConstant.php b/civicrm/CRM/Mailing/PseudoConstant.php index cd8064400c..ea347de44e 100644 --- a/civicrm/CRM/Mailing/PseudoConstant.php +++ b/civicrm/CRM/Mailing/PseudoConstant.php @@ -135,7 +135,7 @@ class CRM_Mailing_PseudoConstant extends CRM_Core_PseudoConstant { * array reference of all mailing components */ public static function &component($type = NULL) { - $name = $type ? $type : 'ALL'; + $name = $type ?: 'ALL'; if (!self::$component || !array_key_exists($name, self::$component)) { if (!self::$component) { diff --git a/civicrm/CRM/Mailing/Selector/Browse.php b/civicrm/CRM/Mailing/Selector/Browse.php index 862ca2e446..d5cf043fb6 100644 --- a/civicrm/CRM/Mailing/Selector/Browse.php +++ b/civicrm/CRM/Mailing/Selector/Browse.php @@ -238,12 +238,14 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul 'url' => 'civicrm/mailing/approve', 'qs' => 'mid=%%mid%%&reset=1', 'title' => ts('Approve/Reject Mailing'), + 'weight' => -50, ], CRM_Core_Action::VIEW => [ 'name' => ts('Report'), 'url' => 'civicrm/mailing/report', 'qs' => 'mid=%%mid%%&reset=1', 'title' => ts('View Mailing Report'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Cancel'), @@ -251,18 +253,21 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul 'qs' => 'action=disable&mid=%%mid%%&reset=1', 'extra' => 'onclick="if (confirm(\'' . $cancelExtra . '\')) this.href+=\'&confirmed=1\'; else return false;"', 'title' => ts('Cancel Mailing'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Continue'), 'url' => 'civicrm/mailing/send', 'qs' => 'mid=%%mid%%&continue=true&reset=1', 'title' => ts('Continue Mailing'), + 'weight' => 50, ], CRM_Core_Action::UPDATE => [ 'name' => ts('Copy'), 'url' => 'civicrm/mailing/send', 'qs' => 'mid=%%mid%%&reset=1', 'title' => ts('Copy Mailing'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), @@ -270,6 +275,7 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul 'qs' => 'action=delete&mid=%%mid%%&reset=1', 'extra' => 'onclick="if (confirm(\'' . $deleteExtra . '\')) this.href+=\'&confirmed=1\'; else return false;"', 'title' => ts('Delete Mailing'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::RENEW => [ 'name' => ts('Archive'), @@ -277,18 +283,21 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul 'qs' => 'action=renew&mid=%%mid%%&reset=1', 'extra' => 'onclick="if (confirm(\'' . $archiveExtra . '\')) this.href+=\'&confirmed=1\'; else return false;"', 'title' => ts('Archive Mailing'), + 'weight' => 110, ], CRM_Core_Action::REOPEN => [ 'name' => ts('Resume'), 'url' => 'civicrm/mailing/browse', 'qs' => 'action=reopen&mid=%%mid%%&reset=1', 'title' => ts('Resume mailing'), + 'weight' => 120, ], CRM_Core_Action::CLOSE => [ 'name' => ts('Pause'), 'url' => 'civicrm/mailing/browse', 'qs' => 'action=close&mid=%%mid%%&reset=1', 'title' => ts('Pause mailing'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::BROWSE), ], ]; } @@ -359,7 +368,7 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul $actionLinks[CRM_Core_Action::PREVIEW]['url'] = 'civicrm/sms/send'; } - if (!($row['status'] == 'Not scheduled') && !$row['sms_provider_id']) { + if (!($row['status'] === 'Not scheduled') && !$row['sms_provider_id']) { if ($allAccess || $showCreateLinks) { $actionMask = CRM_Core_Action::VIEW; } @@ -379,14 +388,14 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul ) { $actionMask |= CRM_Core_Action::DISABLE; - if ($row['status'] == "Paused") { + if ($row['status'] === "Paused") { $actionMask |= CRM_Core_Action::REOPEN; } else { $actionMask |= CRM_Core_Action::CLOSE; } } - if ($row['status'] == 'Scheduled' && + if ($row['status'] === 'Scheduled' && empty($row['approval_status_id']) ) { if ($workFlow && ($allAccess || $showApprovalLinks)) { @@ -429,6 +438,7 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul 'qs' => 'id=%%hashOrMid%%&reset=1', 'title' => ts('Public View'), 'fe' => TRUE, + 'weight' => 150, ]; $actionMask |= CRM_Core_Action::BROWSE; } @@ -439,9 +449,9 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul $actionMask, [ 'mid' => $row['id'], - 'hashOrMid' => $hash ? $hash : $row['id'], + 'hashOrMid' => $hash ?: $row['id'], ], - "more", + 'more', FALSE, $opString, "Mailing", @@ -582,7 +592,7 @@ LEFT JOIN civicrm_contact scheduledContact ON ( $mailing.scheduled_id = schedul $clauses[] = "civicrm_mailing.is_archived = 1"; } else { - $clauses[] = "(civicrm_mailing.is_archived IS NULL OR civicrm_mailing.is_archived = 0)"; + $clauses[] = "civicrm_mailing.is_archived = 0"; } } diff --git a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml index 5e6b7b474e..3067227861 100644 --- a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml +++ b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml @@ -143,13 +143,6 @@ <is_public>true</is_public> <weight>660</weight> </item> - <item> - <path>civicrm/mailing/preview</path> - <title>Preview Mailing</title> - <page_callback>CRM_Mailing_Page_Preview</page_callback> - <access_arguments>access CiviMail;approve mailings;create mailings;schedule mailings</access_arguments> - <weight>670</weight> - </item> <item> <path>civicrm/mailing/report</path> <title>Mailing Report</title> diff --git a/civicrm/CRM/Member/ActionMapping.php b/civicrm/CRM/Member/ActionMapping.php index e81824d490..ff62e653dc 100644 --- a/civicrm/CRM/Member/ActionMapping.php +++ b/civicrm/CRM/Member/ActionMapping.php @@ -27,38 +27,35 @@ class CRM_Member_ActionMapping extends \Civi\ActionSchedule\MappingBase { return self::MEMBERSHIP_TYPE_MAPPING_ID; } + public function getName(): string { + return 'membership_type'; + } + public function getEntityName(): string { return 'Membership'; } - public function getValueHeader(): string { - return ts('Membership Type'); + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + $spec->getFieldByName('entity_value') + ->setLabel(ts('Membership Type')); + $spec->getFieldByName('entity_status') + ->setLabel(ts('Auto Renew Options')); } public function getValueLabels(): array { return CRM_Member_PseudoConstant::membershipType(); } - public function getStatusHeader(): string { - return ts('Auto Renew Options'); - } - - public function getStatusLabels($value): array { - if ($value && \CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $value, 'auto_renew')) { - return \CRM_Core_OptionGroup::values('auto_renew_options'); - } - else { - return []; + public function getStatusLabels(?array $entityValue): array { + foreach ($entityValue ?? [] as $membershipType) { + if (\CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipType', $membershipType, 'auto_renew')) { + return \CRM_Core_OptionGroup::values('auto_renew_options'); + } } + return []; } - /** - * Get a list of available date fields. - * - * @return array - * Array(string $fieldName => string $fieldLabel). - */ - public function getDateFields(): array { + public function getDateFields(?array $entityValue = NULL): array { return [ 'join_date' => ts('Member Since'), 'start_date' => ts('Membership Start Date'), @@ -83,7 +80,7 @@ class CRM_Member_ActionMapping extends \Civi\ActionSchedule\MappingBase { $selectedValues = (array) \CRM_Utils_Array::explodePadded($schedule->entity_value); $selectedStatuses = (array) \CRM_Utils_Array::explodePadded($schedule->entity_status); - $query = \CRM_Utils_SQL_Select::from("{$this->getEntityTable()} e")->param($defaultParams); + $query = \CRM_Utils_SQL_Select::from('civicrm_membership e')->param($defaultParams); $query['casAddlCheckFrom'] = 'civicrm_membership e'; $query['casContactIdField'] = 'e.contact_id'; $query['casEntityIdField'] = 'e.id'; @@ -123,7 +120,7 @@ class CRM_Member_ActionMapping extends \Civi\ActionSchedule\MappingBase { // scheduling another kind of reminder might not expect members to be // excluded if they have status overrides. Ideally there would be some kind // of setting per reminder. - $query->where("( e.is_override IS NULL OR e.is_override = 0 )"); + $query->where("e.is_override = 0"); // FIXME: Similarly to overrides, excluding contacts who can't edit the // primary member makes sense in the context of renewals (see CRM-11342) but diff --git a/civicrm/CRM/Member/BAO/Membership.php b/civicrm/CRM/Member/BAO/Membership.php index f5d2bf8999..7d1ff70887 100644 --- a/civicrm/CRM/Member/BAO/Membership.php +++ b/civicrm/CRM/Member/BAO/Membership.php @@ -819,7 +819,7 @@ INNER JOIN civicrm_membership_type type ON ( type.id = membership.membership_ty $dao->is_test = $isTest; } else { - $dao->whereAdd('is_test IS NULL OR is_test = 0'); + $dao->whereAdd('is_test = 0'); } //avoid pending membership as current membership: CRM-3027 @@ -1027,7 +1027,7 @@ INNER JOIN civicrm_membership_type type ON ( type.id = membership.membership_ty $testClause = 'membership.is_test = 1'; if (!$isTest) { - $testClause = '( membership.is_test IS NULL OR membership.is_test = 0 )'; + $testClause = '( membership.is_test = 0 )'; } if (!self::$_signupActType || !self::$_renewalActType) { @@ -1686,7 +1686,7 @@ WHERE civicrm_membership.contact_id = civicrm_contact.id public static function getMembershipJoins($membershipTypeId, $startDate, $endDate, $isTest = 0) { $testClause = 'membership.is_test = 1'; if (!$isTest) { - $testClause = '( membership.is_test IS NULL OR membership.is_test = 0 )'; + $testClause = '( membership.is_test = 0 )'; } if (!self::$_signupActType) { self::_getActTypes(); @@ -1739,7 +1739,7 @@ INNER JOIN civicrm_contact contact ON ( contact.id = membership.contact_id AND public static function getMembershipRenewals($membershipTypeId, $startDate, $endDate, $isTest = 0) { $testClause = 'membership.is_test = 1'; if (!$isTest) { - $testClause = '( membership.is_test IS NULL OR membership.is_test = 0 )'; + $testClause = '( membership.is_test = 0 )'; } if (!self::$_renewalActType) { self::_getActTypes(); @@ -2282,7 +2282,7 @@ WHERE {$whereClause}"; self::processOverriddenUntilDateMembership($dao1); } - $query = $baseQuery . " AND (civicrm_membership.is_override = 0 OR civicrm_membership.is_override IS NULL) + $query = $baseQuery . " AND civicrm_membership.is_override = 0 AND {$membershipStatusClause} AND civicrm_membership.owner_membership_id IS NULL "; diff --git a/civicrm/CRM/Member/BAO/MembershipType.php b/civicrm/CRM/Member/BAO/MembershipType.php index 690279bd42..0d686deacb 100644 --- a/civicrm/CRM/Member/BAO/MembershipType.php +++ b/civicrm/CRM/Member/BAO/MembershipType.php @@ -521,7 +521,12 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem $date = $membershipDetails->end_date; } $date = explode('-', $date); - // We have to add 1 day first in case it's the end of the month, then subtract afterwards + $year = $date[0]; + $month = $date[1]; + $day = $date[2]; + + // $logStartDate is used for the membership log only, except if the membership is monthly + // then we add 1 day first in case it's the end of the month, then subtract afterwards // eg. 2018-02-28 should renew to 2018-03-31, if we just added 1 month we'd get 2018-03-28 $logStartDate = date('Y-m-d', mktime(0, 0, 0, (double) $date[1], @@ -529,11 +534,6 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem (double) $date[0] )); - $date = explode('-', $logStartDate); - $year = $date[0]; - $month = $date[1]; - $day = $date[2]; - switch ($membershipTypeDetails['duration_unit']) { case 'year': //need to check if the upsell is from rolling to fixed and adjust accordingly @@ -548,6 +548,10 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem break; case 'month': + $date = explode('-', $logStartDate); + $year = $date[0]; + $month = $date[1]; + $day = $date[2] - 1; $month = $month + ($numRenewTerms * $membershipTypeDetails['duration_interval']); break; @@ -561,7 +565,7 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem else { $endDate = date('Y-m-d', mktime(0, 0, 0, $month, - $day - 1, + $day, $year )); } diff --git a/civicrm/CRM/Member/DAO/Membership.php b/civicrm/CRM/Member/DAO/Membership.php index ab3cfafbd5..ffe034d2d6 100644 --- a/civicrm/CRM/Member/DAO/Membership.php +++ b/civicrm/CRM/Member/DAO/Membership.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Member/Membership.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:231656abeadb1c357ccd404b2c02b495) + * (GenCodeChecksum:607cc8bc4dd07d1a87529f923a421937) */ /** @@ -662,7 +662,7 @@ class CRM_Member_DAO_Membership extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php index 08ea8f2d63..c3e1daea7a 100644 --- a/civicrm/CRM/Member/Form/Membership.php +++ b/civicrm/CRM/Member/Form/Membership.php @@ -336,7 +336,7 @@ DESC limit 1"); } $this->set('priceSetId', $this->_priceSetId); - CRM_Price_BAO_PriceSet::buildPriceSet($this); + CRM_Price_BAO_PriceSet::buildPriceSet($this, 'membership', FALSE); $optionsMembershipTypes = []; foreach ($this->_priceSet['fields'] as $pField) { diff --git a/civicrm/CRM/Member/Page/MembershipType.php b/civicrm/CRM/Member/Page/MembershipType.php index ab117fef18..f68ca25da6 100644 --- a/civicrm/CRM/Member/Page/MembershipType.php +++ b/civicrm/CRM/Member/Page/MembershipType.php @@ -45,22 +45,26 @@ class CRM_Member_Page_MembershipType extends CRM_Core_Page { 'url' => 'civicrm/admin/member/membershipType/add', 'qs' => 'action=update&id=%%id%%&reset=1', 'title' => ts('Edit Membership Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Membership Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Membership Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/member/membershipType/add', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete Membership Type'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } @@ -86,9 +90,9 @@ class CRM_Member_Page_MembershipType extends CRM_Core_Page { /** * Browse all membership types. * - * @return void + * @throws \CRM_Core_Exception */ - public function browse() { + public function browse(): void { // Ensure an action is assigned, even null - since this page is overloaded for other uses // we need to avoid e-notices. $this->assign('action'); @@ -137,12 +141,6 @@ class CRM_Member_Page_MembershipType extends CRM_Core_Page { ); } } - if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && !CRM_Core_Permission::check('edit contributions of type ' . CRM_Contribute_PseudoConstant::financialType($type['financial_type_id']))) { - unset($links[CRM_Core_Action::UPDATE], $links[CRM_Core_Action::ENABLE], $links[CRM_Core_Action::DISABLE]); - } - if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && !CRM_Core_Permission::check('delete contributions of type ' . CRM_Contribute_PseudoConstant::financialType($type['financial_type_id']))) { - unset($links[CRM_Core_Action::DELETE]); - } // form all action links $action = array_sum(array_keys($this->links())); diff --git a/civicrm/CRM/Member/Selector/Search.php b/civicrm/CRM/Member/Selector/Search.php index 100f78ea02..6de5c53dec 100644 --- a/civicrm/CRM/Member/Selector/Search.php +++ b/civicrm/CRM/Member/Selector/Search.php @@ -220,12 +220,14 @@ class CRM_Member_Selector_Search extends CRM_Core_Selector_Base implements CRM_C 'url' => 'civicrm/contact/view/membership', 'qs' => 'reset=1&action=renew&id=%%id%%&cid=%%cid%%&context=%%cxt%%' . $extraParams, 'title' => ts('Renew Membership'), + 'weight' => 40, ], CRM_Core_Action::FOLLOWUP => [ 'name' => ts('Renew-Credit Card'), 'url' => 'civicrm/contact/view/membership', 'qs' => 'action=renew&reset=1&cid=%%cid%%&id=%%id%%&context=%%cxt%%&mode=live' . $extraParams, 'title' => ts('Renew Membership Using Credit Card'), + 'weight' => 50, ], ]; if (!$isPaymentProcessor || !$accessContribution) { diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php index 9ceeb01f4b..72a059a708 100644 --- a/civicrm/CRM/PCP/BAO/PCP.php +++ b/civicrm/CRM/PCP/BAO/PCP.php @@ -14,7 +14,7 @@ * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing */ -class CRM_PCP_BAO_PCP extends CRM_PCP_DAO_PCP { +class CRM_PCP_BAO_PCP extends CRM_PCP_DAO_PCP implements \Civi\Core\HookInterface { /** * The action links that we need to display for the browse screen. @@ -24,31 +24,29 @@ class CRM_PCP_BAO_PCP extends CRM_PCP_DAO_PCP { public static $_pcpLinks = NULL; /** - * Add or update either a Personal Campaign Page OR a PCP Block. - * - * @param array $params - * Values to create the pcp. - * - * @return object + * @deprecated + * @return CRM_PCP_DAO_PCP */ public static function create($params) { + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + return self::writeRecord($params); + } - $dao = new CRM_PCP_DAO_PCP(); - $dao->copyValues($params); - - // ensure we set status_id since it is a not null field - // we should change the schema and allow this to be null - if (!$dao->id && !isset($dao->status_id)) { - $dao->status_id = 0; - } - - // set currency for CRM-1496 - if (!isset($dao->currency)) { - $dao->currency = CRM_Core_Config::singleton()->defaultCurrency; + /** + * Callback for hook_civicrm_pre(). + * + * @param \Civi\Core\Event\PreEvent $event + * + * @throws \CRM_Core_Exception + */ + public static function self_hook_civicrm_pre(\Civi\Core\Event\PreEvent $event): void { + if ($event->action === 'create') { + // For some reason `status_id` is allowed to be empty + // FIXME: Why? + $event->params['status_id'] = $event->params['status_id'] ?? 0; + // Supply default for `currency` + $event->params['currency'] = $event->params['currency'] ?? Civi::settings()->get('defaultCurrency'); } - - $dao->save(); - return $dao; } /** @@ -95,13 +93,13 @@ ORDER BY page_type, page_id'; $params = [1 => [$contactId, 'Integer']]; $pcpInfoDao = CRM_Core_DAO::executeQuery($query, $params); - $links = self::pcpLinks(); - $hide = $mask = array_sum(array_keys($links['all'])); $approved = CRM_Core_PseudoConstant::getKey('CRM_PCP_BAO_PCP', 'status_id', 'Approved'); $contactPCPPages = []; $pcpInfo = []; while ($pcpInfoDao->fetch()) { + $links = self::pcpLinks($pcpInfoDao->id); + $hide = $mask = array_sum(array_keys($links['all'])); $mask = $hide; if ($links) { $replace = [ @@ -276,6 +274,9 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; * (reference) of action links */ public static function &pcpLinks($pcpId = NULL) { + if (!$pcpId) { + CRM_Core_Error::deprecatedWarning('pcpId should be provided to render links'); + } if (!(self::$_pcpLinks)) { $deleteExtra = ts('Are you sure you want to delete this Personal Campaign Page?') . '\n' . ts('This action cannot be undone.'); @@ -286,6 +287,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; 'url' => 'civicrm/contribute/campaign', 'qs' => 'action=add&reset=1&pageId=%%pageId%%&component=%%pageComponent%%', 'title' => ts('Configure'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ADD), ], ]; @@ -295,36 +297,42 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; 'url' => 'civicrm/pcp/info', 'qs' => 'action=update&reset=1&id=%%pcpId%%&component=%%pageComponent%%', 'title' => ts('Configure'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DETACH => [ 'name' => ts('Tell Friends'), 'url' => 'civicrm/friend', 'qs' => 'eid=%%pcpId%%&blockId=%%pcpBlock%%&reset=1&pcomponent=pcp&component=%%pageComponent%%', 'title' => ts('Tell Friends'), + 'weight' => -15, ], CRM_Core_Action::VIEW => [ 'name' => ts('URL for this Page'), 'url' => 'civicrm/pcp/info', 'qs' => 'reset=1&id=%%pcpId%%&component=%%pageComponent%%', 'title' => ts('URL for this Page'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::BROWSE => [ 'name' => ts('Update Contact Information'), 'url' => 'civicrm/pcp/info', 'qs' => 'action=browse&reset=1&id=%%pcpId%%&component=%%pageComponent%%', 'title' => ts('Update Contact Information'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::BROWSE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'url' => 'civicrm/pcp', 'qs' => 'action=enable&reset=1&id=%%pcpId%%&component=%%pageComponent%%', 'title' => ts('Enable'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'url' => 'civicrm/pcp', 'qs' => 'action=disable&reset=1&id=%%pcpId%%&component=%%pageComponent%%', 'title' => ts('Disable'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), @@ -332,6 +340,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; 'qs' => 'action=delete&reset=1&id=%%pcpId%%&component=%%pageComponent%%', 'extra' => 'onclick = "return confirm(\'' . $deleteExtra . '\');"', 'title' => ts('Delete'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; @@ -341,24 +350,12 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; } /** - * Delete the campaign page. - * + * @deprecated * @param int $id - * Campaign page id. */ public static function deleteById($id) { - CRM_Utils_Hook::pre('delete', 'Campaign', $id); - - $transaction = new CRM_Core_Transaction(); - - // delete from pcp table - $pcp = new CRM_PCP_DAO_PCP(); - $pcp->id = $id; - $pcp->delete(); - - $transaction->commit(); - - CRM_Utils_Hook::post('delete', 'Campaign', $id, $pcp); + CRM_Core_Error::deprecatedFunctionWarning('deleteRecord'); + return self::deleteRecord(['id' => $id]); } /** diff --git a/civicrm/CRM/PCP/BAO/PCPBlock.php b/civicrm/CRM/PCP/BAO/PCPBlock.php index de88b23318..41b07aa03c 100644 --- a/civicrm/CRM/PCP/BAO/PCPBlock.php +++ b/civicrm/CRM/PCP/BAO/PCPBlock.php @@ -17,17 +17,12 @@ class CRM_PCP_BAO_PCPBlock extends CRM_PCP_DAO_PCPBlock { /** - * Create or update either a Personal Campaign Page OR a PCP Block. - * - * @param array $params - * + * @deprecated * @return CRM_PCP_DAO_PCPBlock */ public static function create($params) { - $dao = new CRM_PCP_DAO_PCPBlock(); - $dao->copyValues($params); - $dao->save(); - return $dao; + CRM_Core_Error::deprecatedFunctionWarning('writeRecord'); + return self::writeRecord($params); } } diff --git a/civicrm/CRM/PCP/Form/Campaign.php b/civicrm/CRM/PCP/Form/Campaign.php index a4b9ff69a4..59fc07b62a 100644 --- a/civicrm/CRM/PCP/Form/Campaign.php +++ b/civicrm/CRM/PCP/Form/Campaign.php @@ -227,7 +227,7 @@ class CRM_PCP_Form_Campaign extends CRM_Core_Form { $params['id'] = $this->_pageId; - $pcp = CRM_PCP_BAO_PCP::create($params); + $pcp = CRM_PCP_BAO_PCP::writeRecord($params); // add attachments as needed CRM_Core_BAO_File::formatAttachment($params, diff --git a/civicrm/CRM/PCP/Form/Contribute.php b/civicrm/CRM/PCP/Form/Contribute.php index c4c58270e3..19f4840996 100644 --- a/civicrm/CRM/PCP/Form/Contribute.php +++ b/civicrm/CRM/PCP/Form/Contribute.php @@ -151,7 +151,7 @@ class CRM_PCP_Form_Contribute extends CRM_Contribute_Form_ContributionPage { $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); - CRM_PCP_BAO_PCPBlock::create($params); + CRM_PCP_BAO_PCPBlock::writeRecord($params); parent::endPostProcess(); } diff --git a/civicrm/CRM/PCP/Form/Event.php b/civicrm/CRM/PCP/Form/Event.php index 158e3ecf34..636968f8a0 100644 --- a/civicrm/CRM/PCP/Form/Event.php +++ b/civicrm/CRM/PCP/Form/Event.php @@ -185,7 +185,7 @@ class CRM_PCP_Form_Event extends CRM_Event_Form_ManageEvent { $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); - CRM_PCP_BAO_PCPBlock::create($params); + CRM_PCP_BAO_PCPBlock::writeRecord($params); // Update tab "disabled" css class $this->ajaxResponse['tabValid'] = !empty($params['is_active']); diff --git a/civicrm/CRM/PCP/Form/PCP.php b/civicrm/CRM/PCP/Form/PCP.php index ca2fb16427..5da4e043ac 100644 --- a/civicrm/CRM/PCP/Form/PCP.php +++ b/civicrm/CRM/PCP/Form/PCP.php @@ -75,7 +75,7 @@ class CRM_PCP_Form_PCP extends CRM_Core_Form { switch ($this->_action) { case CRM_Core_Action::DELETE: case 'delete': - CRM_PCP_BAO_PCP::deleteById($this->_id); + CRM_PCP_BAO_PCP::deleteRecord(['id' => $this->_id]); CRM_Core_Session::setStatus(ts("The Campaign Page '%1' has been deleted.", [1 => $this->_title]), ts('Page Deleted'), 'success'); break; @@ -140,7 +140,7 @@ class CRM_PCP_Form_PCP extends CRM_Core_Form { 'event' => ts('Event'), ]; $contribPages = ['' => ts('- select -')] + CRM_Contribute_PseudoConstant::contributionPage(); - $eventPages = ['' => ts('- select -')] + CRM_Event_PseudoConstant::event(NULL, FALSE, "( is_template IS NULL OR is_template != 1 )"); + $eventPages = ['' => ts('- select -')] + CRM_Event_PseudoConstant::event(NULL, FALSE, "is_template = 0"); $this->addElement('select', 'status_id', ts('Status'), $status); $this->addElement('select', 'page_type', ts('Source Type'), $types); @@ -178,7 +178,7 @@ class CRM_PCP_Form_PCP extends CRM_Core_Form { */ public function postProcess() { if ($this->_action & CRM_Core_Action::DELETE) { - CRM_PCP_BAO_PCP::deleteById($this->_id); + CRM_PCP_BAO_PCP::deleteRecord(['id' => $this->_id]); CRM_Core_Session::setStatus(ts("The Campaign Page '%1' has been deleted.", [1 => $this->_title]), ts('Page Deleted'), 'success'); } else { diff --git a/civicrm/CRM/PCP/Page/PCP.php b/civicrm/CRM/PCP/Page/PCP.php index ce7d9bcb3c..2fb8c5f822 100644 --- a/civicrm/CRM/PCP/Page/PCP.php +++ b/civicrm/CRM/PCP/Page/PCP.php @@ -213,7 +213,7 @@ class CRM_PCP_Page_PCP extends CRM_Core_Page_Basic { // although if target is contribution page this might not be correct. fixme? dgg $query = "SELECT id, title, start_date, end_date, registration_start_date, registration_end_date FROM civicrm_event - WHERE is_template IS NULL OR is_template != 1"; + WHERE is_template = 0"; $epages = CRM_Core_DAO::executeQuery($query); while ($epages->fetch()) { $pages['event'][$epages->id]['id'] = $epages->id; diff --git a/civicrm/CRM/PCP/Page/PCPInfo.php b/civicrm/CRM/PCP/Page/PCPInfo.php index c20e94e56c..18496ef20e 100644 --- a/civicrm/CRM/PCP/Page/PCPInfo.php +++ b/civicrm/CRM/PCP/Page/PCPInfo.php @@ -211,7 +211,7 @@ class CRM_PCP_Page_PCPInfo extends CRM_Core_Page { } $this->assign('honor', $honor); - $this->assign('total', $totalAmount ? $totalAmount : '0.0'); + $this->assign('total', $totalAmount ?: '0.0'); $this->assign('achieved', $achieved <= 100 ? $achieved : 100); if ($achieved <= 100) { diff --git a/civicrm/CRM/Pledge/BAO/Pledge.php b/civicrm/CRM/Pledge/BAO/Pledge.php index c665dc2b1a..1279c56a33 100644 --- a/civicrm/CRM/Pledge/BAO/Pledge.php +++ b/civicrm/CRM/Pledge/BAO/Pledge.php @@ -922,7 +922,7 @@ SELECT pledge.contact_id as contact_id, // 2. send acknowledgement mail if ($toEmail && !($doNotEmail || $onHold)) { // assign value to template - $template->assign('amount_paid', $details['amount_paid'] ? $details['amount_paid'] : 0); + $template->assign('amount_paid', $details['amount_paid'] ?: 0); $template->assign('next_payment', $details['scheduled_date']); $template->assign('amount_due', $details['amount_due']); $template->assign('checksumValue', $details['checksumValue']); diff --git a/civicrm/CRM/Pledge/DAO/Pledge.php b/civicrm/CRM/Pledge/DAO/Pledge.php index 024d82db91..e8d5012217 100644 --- a/civicrm/CRM/Pledge/DAO/Pledge.php +++ b/civicrm/CRM/Pledge/DAO/Pledge.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Pledge/Pledge.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:5a6d7ca8c7749e190b667bf47b1d024a) + * (GenCodeChecksum:91fbbe8481e26df491af63fd07594f20) */ /** @@ -819,6 +819,7 @@ class CRM_Pledge_DAO_Pledge extends CRM_Core_DAO { 'localizable' => 0, 'html' => [ 'type' => 'Select', + 'label' => ts("Status"), ], 'pseudoconstant' => [ 'optionGroupName' => 'pledge_status', @@ -878,7 +879,7 @@ class CRM_Pledge_DAO_Pledge extends CRM_Core_DAO { 'table' => 'civicrm_campaign', 'keyColumn' => 'id', 'labelColumn' => 'title', - 'prefetch' => 'FALSE', + 'prefetch' => 'disabled', ], 'add' => '3.4', ], diff --git a/civicrm/CRM/Pledge/Form/Pledge.php b/civicrm/CRM/Pledge/Form/Pledge.php index 453818e92e..1da913341f 100644 --- a/civicrm/CRM/Pledge/Form/Pledge.php +++ b/civicrm/CRM/Pledge/Form/Pledge.php @@ -79,9 +79,9 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { return; } - $this->userDisplayName = $this->userEmail = NULL; + $displayName = $this->userEmail = NULL; if ($this->_contactID) { - [$this->userDisplayName, $this->userEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID); + [$displayName, $this->userEmail] = CRM_Contact_BAO_Contact_Location::getEmailDetails($this->_contactID); } $this->setPageTitle(ts('Pledge')); diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php index ba1b636649..0fb1c2e609 100644 --- a/civicrm/CRM/Price/BAO/PriceField.php +++ b/civicrm/CRM/Price/BAO/PriceField.php @@ -103,7 +103,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { for ($index = 1; $index <= $maxIndex; $index++) { if (array_key_exists('option_amount', $params) && array_key_exists($index, $params['option_amount']) && - (CRM_Utils_Array::value($index, CRM_Utils_Array::value('option_label', $params)) || !empty($params['is_quick_config'])) && + (!empty($params['option_label'][$index]) || !empty($params['is_quick_config'])) && !CRM_Utils_System::isNull($params['option_amount'][$index]) ) { $options = [ @@ -128,7 +128,7 @@ class CRM_Price_BAO_PriceField extends CRM_Price_DAO_PriceField { $options['is_default'] = !empty($defaultArray[$params['membership_type_id'][$index]]) ? $defaultArray[$params['membership_type_id'][$index]] : 0; } - if (CRM_Utils_Array::value($index, CRM_Utils_Array::value('option_financial_type_id', $params))) { + if (!empty($params['option_financial_type_id'][$index])) { $options['financial_type_id'] = $params['option_financial_type_id'][$index]; } elseif (!empty($params['financial_type_id'])) { diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php index f2c2aa892f..f7ca200819 100644 --- a/civicrm/CRM/Price/BAO/PriceSet.php +++ b/civicrm/CRM/Price/BAO/PriceSet.php @@ -386,7 +386,7 @@ WHERE cpf.price_set_id = %1"; * @param int $setID * Price Set ID. * @param bool $required - * Appears to have no effect based on reading the code. + * Deprecated. * @param bool $doNotIncludeExpiredFields * Should only fields where today's date falls within the valid range be returned? * @@ -415,9 +415,6 @@ WHERE cpf.price_set_id = %1"; 'visibility_id', 'is_required', ]; - if ($required == TRUE) { - $priceFields[] = 'is_required'; - } // create select $select = 'SELECT ' . implode(',', $priceFields); @@ -458,7 +455,7 @@ AND ( expire_on IS NULL OR expire_on >= {$currentTime} ) $setTree[$setID]['fields'][$fieldID]['id'] = $fieldID; foreach ($priceFields as $field) { - if ($field == 'id' || is_null($dao->$field)) { + if ($field === 'id') { continue; } @@ -796,33 +793,23 @@ WHERE id = %1"; * * @param CRM_Core_Form $form * @param string|null $component + * @param bool $validFieldsOnly * * @return void + * @throws \CRM_Core_Exception */ - public static function buildPriceSet(&$form, $component = NULL) { + public static function buildPriceSet(&$form, $component = NULL, $validFieldsOnly = TRUE) { $priceSetId = $form->get('priceSetId'); if (!$priceSetId) { return; } - $validFieldsOnly = TRUE; $className = CRM_Utils_System::getClassName($form); - if (in_array($className, [ - 'CRM_Contribute_Form_Contribution', - 'CRM_Member_Form_Membership', - ])) { - $validFieldsOnly = FALSE; - } $priceSet = self::getSetDetail($priceSetId, TRUE, $validFieldsOnly); $form->_priceSet = $priceSet[$priceSetId] ?? NULL; $validPriceFieldIds = array_keys($form->_priceSet['fields']); - $form->_quickConfig = $quickConfig = 0; - if (CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config')) { - $quickConfig = 1; - } - - $form->assign('quickConfig', $quickConfig); + $form->assign('quickConfig', (int) CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config')); // Mark which field should have the auto-renew checkbox, if any. CRM-18305 if (!empty($form->_membershipTypeValues) && is_array($form->_membershipTypeValues)) { @@ -849,10 +836,6 @@ WHERE id = %1"; $form->_priceSet['id'] = $form->_priceSet['id'] ?? $priceSetId; $form->assign('priceSet', $form->_priceSet); - if ($className == 'CRM_Member_Form_Membership') { - $component = 'membership'; - } - if ($className == 'CRM_Contribute_Form_Contribution_Main') { $feeBlock = &$form->_values['fee']; } diff --git a/civicrm/CRM/Price/DAO/LineItem.php b/civicrm/CRM/Price/DAO/LineItem.php index 5d2c38134f..8a27c972f7 100644 --- a/civicrm/CRM/Price/DAO/LineItem.php +++ b/civicrm/CRM/Price/DAO/LineItem.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Price/LineItem.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:c3718ec4bc3ea2ef523c5c0be917d207) + * (GenCodeChecksum:5ff7f8ccd9299fcbdb2b4e56ec0bc8a4) */ /** @@ -158,7 +158,7 @@ class CRM_Price_DAO_LineItem extends CRM_Core_DAO { /** * tax of each item * - * @var float|string|null + * @var float|string * (SQL type: decimal(20,2)) * Note that values will be retrieved from the database as a string. */ @@ -550,6 +550,7 @@ class CRM_Price_DAO_LineItem extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_MONEY, 'title' => ts('Tax Amount'), 'description' => ts('tax of each item'), + 'required' => TRUE, 'precision' => [ 20, 2, @@ -565,6 +566,7 @@ class CRM_Price_DAO_LineItem extends CRM_Core_DAO { 'headerPattern' => '/tax(.?am(ou)?nt)?/i', 'dataPattern' => '/^\d+(\.\d{2})?$/', 'export' => TRUE, + 'default' => '0', 'table_name' => 'civicrm_line_item', 'entity' => 'LineItem', 'bao' => 'CRM_Price_BAO_LineItem', diff --git a/civicrm/CRM/Price/Page/Set.php b/civicrm/CRM/Price/Page/Set.php index 039952f44b..860b6f9e08 100644 --- a/civicrm/CRM/Price/Page/Set.php +++ b/civicrm/CRM/Price/Page/Set.php @@ -50,28 +50,33 @@ class CRM_Price_Page_Set extends CRM_Core_Page { 'url' => 'civicrm/admin/price/field', 'qs' => 'reset=1&action=browse&sid=%%sid%%', 'title' => ts('View and Edit Price Fields'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/price/edit', 'qs' => 'action=preview&reset=1&sid=%%sid%%', 'title' => ts('Preview Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Settings'), 'url' => 'civicrm/admin/price/edit', 'qs' => 'action=update&reset=1&sid=%%sid%%', 'title' => ts('Edit Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Price Set'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), @@ -79,6 +84,7 @@ class CRM_Price_Page_Set extends CRM_Core_Page { 'qs' => 'action=delete&reset=1&sid=%%sid%%', 'title' => ts('Delete Price Set'), 'extra' => 'onclick = "return confirm(\'' . $deleteExtra . '\');"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::COPY => [ 'name' => ts('Copy Price Set'), @@ -86,6 +92,7 @@ class CRM_Price_Page_Set extends CRM_Core_Page { 'qs' => 'action=copy&sid=%%sid%%', 'title' => ts('Make a Copy of Price Set'), 'extra' => 'onclick = "return confirm(\'' . $copyExtra . '\');"', + 'weight' => 120, ], ]; } diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php index 9ba8bc0ee7..247f41705b 100644 --- a/civicrm/CRM/Profile/Form.php +++ b/civicrm/CRM/Profile/Form.php @@ -492,7 +492,6 @@ class CRM_Profile_Form extends CRM_Core_Form { $page->run(); } } - $this->assign('multiRecordFieldListing', $multiRecordFieldListing); // is profile double-opt in? if (!empty($this->_fields['group']) && @@ -521,7 +520,7 @@ class CRM_Profile_Form extends CRM_Core_Form { CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm', 'reset=1')); } } - + $this->assign('multiRecordFieldListing', $multiRecordFieldListing ?? NULL); if (!is_array($this->_fields)) { CRM_Core_Session::setStatus(ts('This feature is not currently available.'), ts('Sorry'), 'error'); CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm', 'reset=1')); @@ -770,7 +769,7 @@ class CRM_Profile_Form extends CRM_Core_Form { $return = TRUE; if (!$statusMessage) { $statusMessage = ts("This profile is configured for contact type '%1'. It cannot be used to edit contacts of other types.", - [1 => $profileSubType ? $profileSubType : $profileType]); + [1 => $profileSubType ?: $profileType]); } } } @@ -1367,7 +1366,7 @@ class CRM_Profile_Form extends CRM_Core_Form { */ public function getTemplateFileName() { $fileName = $this->checkTemplateFileExists(); - return $fileName ? $fileName : parent::getTemplateFileName(); + return $fileName ?: parent::getTemplateFileName(); } /** @@ -1378,7 +1377,7 @@ class CRM_Profile_Form extends CRM_Core_Form { */ public function overrideExtraTemplateFileName() { $fileName = $this->checkTemplateFileExists('extra.'); - return $fileName ? $fileName : parent::overrideExtraTemplateFileName(); + return $fileName ?: parent::overrideExtraTemplateFileName(); } /** diff --git a/civicrm/CRM/Profile/Page/Dynamic.php b/civicrm/CRM/Profile/Page/Dynamic.php index d17f37d43f..d6009aa02d 100644 --- a/civicrm/CRM/Profile/Page/Dynamic.php +++ b/civicrm/CRM/Profile/Page/Dynamic.php @@ -420,7 +420,7 @@ class CRM_Profile_Page_Dynamic extends CRM_Core_Page { */ public function getTemplateFileName() { $fileName = $this->checkTemplateFileExists(); - return $fileName ? $fileName : parent::getTemplateFileName(); + return $fileName ?: parent::getTemplateFileName(); } /** @@ -431,7 +431,7 @@ class CRM_Profile_Page_Dynamic extends CRM_Core_Page { */ public function overrideExtraTemplateFileName() { $fileName = $this->checkTemplateFileExists('extra.'); - return $fileName ? $fileName : parent::overrideExtraTemplateFileName(); + return $fileName ?: parent::overrideExtraTemplateFileName(); } /** diff --git a/civicrm/CRM/Profile/Page/Listings.php b/civicrm/CRM/Profile/Page/Listings.php index 4ad6a75771..9bfcebd601 100644 --- a/civicrm/CRM/Profile/Page/Listings.php +++ b/civicrm/CRM/Profile/Page/Listings.php @@ -483,7 +483,7 @@ class CRM_Profile_Page_Listings extends CRM_Core_Page { */ public function getTemplateFileName() { $fileName = $this->checkTemplateFileExists(); - return $fileName ? $fileName : parent::getTemplateFileName(); + return $fileName ?: parent::getTemplateFileName(); } /** @@ -494,7 +494,7 @@ class CRM_Profile_Page_Listings extends CRM_Core_Page { */ public function overrideExtraTemplateFileName() { $fileName = $this->checkTemplateFileExists('extra.'); - return $fileName ? $fileName : parent::overrideExtraTemplateFileName(); + return $fileName ?: parent::overrideExtraTemplateFileName(); } } diff --git a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php index dd521bd1d7..00e507f139 100644 --- a/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php +++ b/civicrm/CRM/Profile/Page/MultipleRecordFieldsListing.php @@ -70,20 +70,23 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { $links[CRM_Core_Action::VIEW] = [ 'name' => ts('View'), 'title' => ts('View %1', [1 => $this->_customGroupTitle . ' record']), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ]; $links[CRM_Core_Action::UPDATE] = [ 'name' => ts('Edit'), 'title' => ts('Edit %1', [1 => $this->_customGroupTitle . ' record']), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ]; $links[CRM_Core_Action::DELETE] = [ 'name' => ts('Delete'), 'title' => ts('Delete %1', [1 => $this->_customGroupTitle . ' record']), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ]; // urls and queryStrings - if ($this->_pageViewType == 'profileDataView') { + if ($this->_pageViewType === 'profileDataView') { $links[CRM_Core_Action::VIEW]['url'] = 'civicrm/profile/view'; $links[CRM_Core_Action::VIEW]['qs'] = "reset=1&id=%%id%%&recordId=%%recordId%%&gid=%%gid%%&multiRecord={$view}"; @@ -94,7 +97,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { $links[CRM_Core_Action::DELETE]['qs'] = "reset=1&id=%%id%%&recordId=%%recordId%%&gid=%%gid%%&multiRecord={$delete}"; } - elseif ($this->_pageViewType == 'customDataView') { + elseif ($this->_pageViewType === 'customDataView') { // custom data specific view links $links[CRM_Core_Action::VIEW]['url'] = 'civicrm/contact/view/cd'; $links[CRM_Core_Action::VIEW]['qs'] = 'reset=1&gid=%%gid%%&cid=%%cid%%&recId=%%recId%%&cgcount=%%cgcount%%&multiRecordDisplay=single&mode=view'; @@ -110,6 +113,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { 'title' => ts('Copy %1', [1 => $this->_customGroupTitle . ' record']), 'url' => 'civicrm/contact/view/cd/edit', 'qs' => 'reset=1&type=%%type%%&groupID=%%groupID%%&entityID=%%entityID%%&cgcount=%%newCgCount%%&multiRecordDisplay=single©ValueId=%%cgcount%%&mode=copy', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::COPY), ]; } @@ -154,12 +158,12 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { * Browse the listing. * */ - public function browse() { + public function browse(): array { $dateFields = NULL; $newCgCount = $cgcount = 0; $attributes = $result = $headerAttr = []; $dateFieldsVals = NULL; - if ($this->_pageViewType == 'profileDataView' && $this->_profileId) { + if ($this->_pageViewType === 'profileDataView' && $this->_profileId) { $fields = CRM_Core_BAO_UFGroup::getFields($this->_profileId, FALSE, NULL, NULL, NULL, FALSE, NULL, @@ -265,7 +269,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { unset($result['count']); unset($result['sortedResult']); - if ($this->_pageViewType == 'profileDataView') { + if ($this->_pageViewType === 'profileDataView') { if (!empty($fieldIDs)) { //get the group info of multi rec fields in listing view $fieldInput = $fieldIDs; @@ -290,8 +294,8 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { $cgcount = 1; $newCgCount = (!$reached) ? $resultCount + 1 : NULL; if (!empty($result) && empty($this->_headersOnly)) { - $links = self::links(); - if ($this->_pageViewType == 'profileDataView') { + $links = $this->links(); + if ($this->_pageViewType === 'profileDataView') { $pageCheckSum = $this->get('pageCheckSum'); if ($pageCheckSum) { foreach ($links as $key => $link) { @@ -404,6 +408,7 @@ class CRM_Profile_Page_MultipleRecordFieldsListing extends CRM_Core_Page_Basic { $links[CRM_Core_Action::DELETE]['url'] = '#'; $links[CRM_Core_Action::DELETE]['extra'] = ' data-delete_params="' . htmlspecialchars(json_encode($deleteData)) . '"'; $links[CRM_Core_Action::DELETE]['class'] = 'delete-custom-row'; + $links[CRM_Core_Action::DELETE]['weight'] = CRM_Core_Action::getWeight(CRM_Core_Action::DELETE); } if (!empty($pageCheckSum)) { $actionParams['cs'] = $pageCheckSum; diff --git a/civicrm/CRM/Profile/Page/View.php b/civicrm/CRM/Profile/Page/View.php index 90d8351496..5ecdb3b58f 100644 --- a/civicrm/CRM/Profile/Page/View.php +++ b/civicrm/CRM/Profile/Page/View.php @@ -195,7 +195,7 @@ class CRM_Profile_Page_View extends CRM_Core_Page { */ public function getTemplateFileName() { $fileName = $this->checkTemplateFileExists(); - return $fileName ? $fileName : parent::getTemplateFileName(); + return $fileName ?: parent::getTemplateFileName(); } /** @@ -206,7 +206,7 @@ class CRM_Profile_Page_View extends CRM_Core_Page { */ public function overrideExtraTemplateFileName() { $fileName = $this->checkTemplateFileExists('extra.'); - return $fileName ? $fileName : parent::overrideExtraTemplateFileName(); + return $fileName ?: parent::overrideExtraTemplateFileName(); } } diff --git a/civicrm/CRM/Queue/Runner.php b/civicrm/CRM/Queue/Runner.php index dfbb37328a..f89e319127 100644 --- a/civicrm/CRM/Queue/Runner.php +++ b/civicrm/CRM/Queue/Runner.php @@ -352,6 +352,7 @@ class CRM_Queue_Runner { if (!empty($this->onEndUrl)) { $result['redirect_url'] = $this->onEndUrl; } + $this->enableBackgroundExecution(); return $result; } @@ -521,4 +522,24 @@ class CRM_Queue_Runner { ]); } + /** + * Ensure that background workers will not try to run this queue. + */ + protected function enableBackgroundExecution(): void { + if (CRM_Core_Config::isUpgradeMode()) { + // Versions <=5.50 do not have `status` column. + if (!CRM_Core_DAO::checkTableExists('civicrm_queue') || !CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_queue', 'status')) { + // The system doesn't have automatic background workers yet. Neither necessary nor possible to toggle `status`. + // See also: https://lab.civicrm.org/dev/core/-/issues/3653 + return; + } + } + + // If it was disabled for background processing & has not been otherwise altered then + // re-enable it as it might be a persistent queue. + CRM_Core_DAO::executeQuery('UPDATE civicrm_queue SET status = "active" WHERE name = %1 AND status IS NULL', [ + 1 => [$this->queue->getName(), 'String'], + ]); + } + } diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 768e13c274..29f0a4dad8 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -1026,7 +1026,7 @@ class CRM_Report_Form extends CRM_Core_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { if (isset($field['default'])) { - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE + if (($field['type'] ?? 0) & CRM_Utils_Type::T_DATE ) { if (is_array($field['default'])) { $this->_defaults["{$fieldName}_from"] = $field['default']['from'] ?? NULL; @@ -3711,7 +3711,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND unset($_POST['crmPID_B'], $_POST['crmPID']); } - $pageId = $pageId ? $pageId : 1; + $pageId = $pageId ?: 1; $this->set(CRM_Utils_Pager::PAGE_ID, $pageId); $offset = ($pageId - 1) * $rowCount; @@ -5118,7 +5118,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a * @param string $table */ public function setEntityRefDefaults(&$field, $table) { - $field['attributes'] = $field['attributes'] ? $field['attributes'] : []; + $field['attributes'] = $field['attributes'] ?: []; $field['attributes'] += [ 'entity' => CRM_Core_DAO_AllCoreTables::getEntityNameForTable($table), 'multiple' => TRUE, @@ -5839,6 +5839,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'options' => CRM_Core_PseudoConstant::stateProvince(), 'is_fields' => TRUE, 'is_filters' => TRUE, + 'is_order_bys' => TRUE, 'is_group_bys' => TRUE, ], $options['prefix'] . 'country_id' => [ @@ -5847,6 +5848,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'name' => 'country_id', 'is_fields' => TRUE, 'is_filters' => TRUE, + 'is_order_bys' => TRUE, 'is_group_bys' => TRUE, 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, @@ -6064,7 +6066,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a * Relevant where clause. */ protected function generateFilterClause($field, $fieldName) { - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + if (($field['type'] ?? 0) & CRM_Utils_Type::T_DATE) { if (($field['operatorType'] ?? NULL) == CRM_Report_Form::OP_MONTH ) { diff --git a/civicrm/CRM/Report/Form/Activity.php b/civicrm/CRM/Report/Form/Activity.php index 17eda67bf1..395a9e863c 100644 --- a/civicrm/CRM/Report/Form/Activity.php +++ b/civicrm/CRM/Report/Form/Activity.php @@ -544,7 +544,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { ) { continue; } - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/ActivitySummary.php b/civicrm/CRM/Report/Form/ActivitySummary.php index d66b710d7a..d61beb941f 100644 --- a/civicrm/CRM/Report/Form/ActivitySummary.php +++ b/civicrm/CRM/Report/Form/ActivitySummary.php @@ -363,7 +363,7 @@ class CRM_Report_Form_ActivitySummary extends CRM_Report_Form { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php index cd5f64153c..0f8cc4fc34 100644 --- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php @@ -306,7 +306,7 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Case/Detail.php b/civicrm/CRM/Report/Form/Case/Detail.php index 6d89b22e74..f6307b1656 100644 --- a/civicrm/CRM/Report/Form/Case/Detail.php +++ b/civicrm/CRM/Report/Form/Case/Detail.php @@ -428,7 +428,7 @@ class CRM_Report_Form_Case_Detail extends CRM_Report_Form { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Case/TimeSpent.php b/civicrm/CRM/Report/Form/Case/TimeSpent.php index 25a4eaded2..432bf8d706 100644 --- a/civicrm/CRM/Report/Form/Case/TimeSpent.php +++ b/civicrm/CRM/Report/Form/Case/TimeSpent.php @@ -239,7 +239,7 @@ class CRM_Report_Form_Case_TimeSpent extends CRM_Report_Form { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php index 7ad996b7a7..be2d0ef48c 100644 --- a/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php +++ b/civicrm/CRM/Report/Form/Contact/CurrentEmployer.php @@ -236,7 +236,7 @@ FROM civicrm_contact {$this->_aliases['civicrm_contact']} if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('operatorType', $field) & CRM_Report_Form::OP_DATE + if (($field['operatorType'] ?? 0) & CRM_Report_Form::OP_DATE ) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; diff --git a/civicrm/CRM/Report/Form/Contact/Detail.php b/civicrm/CRM/Report/Form/Contact/Detail.php index 0d82c2b2c1..ac71cce245 100644 --- a/civicrm/CRM/Report/Form/Contact/Detail.php +++ b/civicrm/CRM/Report/Form/Contact/Detail.php @@ -16,7 +16,15 @@ */ class CRM_Report_Form_Contact_Detail extends CRM_Report_Form { - protected $_summary = NULL; + protected $_summary; + + private $_columnHeadersComponent; + + private $_selectComponent; + + private $_formComponent; + + private $_contactSelected; protected $_customGroupExtends = [ 'Contact', @@ -423,27 +431,15 @@ class CRM_Report_Form_Contact_Detail extends CRM_Report_Form { foreach ($this->getAvailableComponents() as $val) { if (!empty($select[$val])) { - $this->_selectComponent[$val] = "SELECT " . implode(', ', $select[$val]) . " "; + $this->_selectComponent[$val] = 'SELECT ' . implode(', ', $select[$val]) . ' '; unset($select[$val]); } } - $this->_select = "SELECT " . implode(', ', $select) . " "; - } - - /** - * @param $fields - * @param $files - * @param self $self - * - * @return array - */ - public static function formRule($fields, $files, $self) { - $errors = []; - return $errors; + $this->_select = 'SELECT ' . implode(', ', $select) . ' '; } - public function from() { + public function from(): void { $this->_from = " FROM civicrm_contact {$this->_aliases['civicrm_contact']} {$this->_aclFrom} "; @@ -557,7 +553,7 @@ HERESQL; $componentsList[] = $compObj->componentID; } } - $componentClause = "civicrm_option_value.component_id IS NULL"; + $componentClause = 'civicrm_option_value.component_id IS NULL'; if (!empty($componentsList)) { $componentsIn = implode(', ', $componentsList); $componentClause = <<<HERESQL @@ -592,14 +588,13 @@ HERESQL; } } - public function where() { + public function where(): void { $clauses = []; - 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 (CRM_Utils_Array::value('operatorType', $field) & CRM_Report_Form::OP_DATE + if (($field['operatorType'] ?? 0) & CRM_Report_Form::OP_DATE ) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; @@ -624,10 +619,10 @@ HERESQL; } if (empty($clauses)) { - $this->_where = "WHERE ( 1 ) "; + $this->_where = 'WHERE ( 1 ) '; } else { - $this->_where = "WHERE " . implode(' AND ', $clauses); + $this->_where = 'WHERE ' . implode(' AND ', $clauses); } if ($this->_aclWhere) { @@ -637,8 +632,9 @@ HERESQL; /** * @return array + * @throws \Civi\Core\Exception\DBQueryException */ - public function clauseComponent() { + public function clauseComponent(): array { $selectedContacts = implode(',', $this->_contactSelected); $eligibleResult = $rows = $tempArray = []; foreach ($this->getAvailableComponents() as $val) { @@ -698,7 +694,7 @@ HERESQL; $row[$key] = $dao->$key; } - $relTitle = "" . $dao->civicrm_relationship_relationship_type_id . + $relTitle = '' . $dao->civicrm_relationship_relationship_type_id . '_a_b'; $row['civicrm_relationship_relationship_type_id'] = $relTypes[$relTitle]; @@ -747,7 +743,7 @@ HERESQL; $dao = CRM_Core_DAO::executeQuery($sql); while ($dao->fetch()) { foreach ($this->_columnHeadersComponent[$val] as $key => $value) { - if ($key == 'civicrm_activity_source_contact_id') { + if ($key === 'civicrm_activity_source_contact_id') { $row[$key] = $dao->added_by; continue; } @@ -782,7 +778,7 @@ HERESQL; * * @return array */ - public function statistics(&$rows) { + public function statistics(&$rows): array { $statistics = []; $count = count($rows); @@ -809,12 +805,15 @@ HERESQL; * Override to set pager with limit is 10 * @param int|null $rowCount */ - public function setPager($rowCount = NULL) { + public function setPager($rowCount = NULL): void { $rowCount = $rowCount ?? $this->getRowCount(); parent::setPager($rowCount); } - public function postProcess() { + /** + * @throws \Civi\Core\Exception\DBQueryException + */ + public function postProcess(): void { $this->beginPostProcess(); $sql = $this->buildQuery(TRUE); @@ -861,7 +860,7 @@ HERESQL; * @param array $rows * Rows generated by SQL, with an array for each row. */ - public function alterDisplay(&$rows) { + public function alterDisplay(&$rows): void { $entryFound = FALSE; @@ -898,25 +897,21 @@ HERESQL; /** * @param array $componentRows */ - public function alterComponentDisplay(&$componentRows) { - // custom code to alter rows - $activityTypes = CRM_Core_PseudoConstant::activityType(TRUE, TRUE, FALSE, 'label', TRUE); - $activityStatus = CRM_Core_PseudoConstant::activityStatus(); - + public function alterComponentDisplay(array &$componentRows): void { $entryFound = FALSE; foreach ($componentRows as $contactID => $components) { foreach ($components as $component => $rows) { foreach ($rows as $rowNum => $row) { // handle contribution - if ($component == 'contribution_civireport') { + if ($component === 'contribution_civireport') { $val = $row['civicrm_contribution_financial_type_id'] ?? NULL; if ($val) { - $componentRows[$contactID][$component][$rowNum]['civicrm_contribution_financial_type_id'] = CRM_Contribute_PseudoConstant::financialType($val, FALSE); + $componentRows[$contactID][$component][$rowNum]['civicrm_contribution_financial_type_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'financial_type_id', $val); } $val = $row['civicrm_contribution_contribution_status_id'] ?? NULL; if ($val) { - $componentRows[$contactID][$component][$rowNum]['civicrm_contribution_contribution_status_id'] = CRM_Contribute_PseudoConstant::contributionStatus($val, 'label'); + $componentRows[$contactID][$component][$rowNum]['civicrm_contribution_contribution_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $val); } $entryFound = TRUE; } @@ -924,27 +919,26 @@ HERESQL; if ($component === 'membership_civireport') { $val = $row['civicrm_membership_membership_type_id'] ?? NULL; if ($val) { - $componentRows[$contactID][$component][$rowNum]['civicrm_membership_membership_type_id'] = CRM_Member_PseudoConstant::membershipType($val, FALSE); + $componentRows[$contactID][$component][$rowNum]['civicrm_membership_membership_type_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'membership_type_id', $val); } $val = $row['civicrm_membership_status_id'] ?? NULL; if ($val) { - $componentRows[$contactID][$component][$rowNum]['civicrm_membership_status_id'] = CRM_Member_PseudoConstant::membershipStatus($val, FALSE); + $componentRows[$contactID][$component][$rowNum]['civicrm_membership_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Member_BAO_Membership', 'membership_status_id', $val); } $entryFound = TRUE; } - if ($component == 'participant_civireport') { + if ($component === 'participant_civireport') { $val = $row['civicrm_participant_event_id'] ?? NULL; if ($val) { - $componentRows[$contactID][$component][$rowNum]['civicrm_participant_event_id'] = CRM_Event_PseudoConstant::event($val, FALSE); + $componentRows[$contactID][$component][$rowNum]['civicrm_participant_event_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Event_BAO_Participant', 'event_id', $val); $url = CRM_Report_Utils_Report::getNextUrl('event/income', 'reset=1&force=1&id_op=in&id_value=' . $val, $this->_absoluteUrl, $this->_id ); $componentRows[$contactID][$component][$rowNum]['civicrm_participant_event_id_link'] = $url; $componentRows[$contactID][$component][$rowNum]['civicrm_participant_event_id_hover'] = ts('View Event Income details for this Event.'); - $entryFound = TRUE; } $val = $row['civicrm_participant_participant_status_id'] ?? NULL; @@ -964,19 +958,19 @@ HERESQL; $entryFound = TRUE; } - if ($component == 'activity_civireport') { + if ($component === 'activity_civireport') { $val = $row['civicrm_activity_activity_type_id'] ?? NULL; if ($val) { - $componentRows[$contactID][$component][$rowNum]['civicrm_activity_activity_type_id'] = $activityTypes[$val]; + $componentRows[$contactID][$component][$rowNum]['civicrm_activity_activity_type_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'activity_type_id', $val); } $val = $row['civicrm_activity_activity_status_id'] ?? NULL; if ($val) { - $componentRows[$contactID][$component][$rowNum]['civicrm_activity_activity_status_id'] = $activityStatus[$val]; + $componentRows[$contactID][$component][$rowNum]['civicrm_activity_activity_status_id'] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'activity_status_id', $val); } $entryFound = TRUE; } - if ($component == 'membership_civireport') { + if ($component === 'membership_civireport') { $val = $row['civicrm_membership_membership_status_id'] ?? NULL; if ($val) { $componentRows[$contactID][$component][$rowNum]['civicrm_membership_membership_status_id'] = CRM_Member_PseudoConstant::membershipStatus($val); diff --git a/civicrm/CRM/Report/Form/Contact/Log.php b/civicrm/CRM/Report/Form/Contact/Log.php index a7bfc26a76..65589629d7 100644 --- a/civicrm/CRM/Report/Form/Contact/Log.php +++ b/civicrm/CRM/Report/Form/Contact/Log.php @@ -181,7 +181,7 @@ class CRM_Report_Form_Contact_Log extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('operatorType', $field) & CRM_Report_Form::OP_DATE + if (($field['operatorType'] ?? 0) & CRM_Report_Form::OP_DATE ) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index 8707e371f1..4cc4512c71 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -443,7 +443,7 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php b/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php index 5dc5634f6a..f76b8292e0 100644 --- a/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php +++ b/civicrm/CRM/Report/Form/Contribute/DeferredRevenue.php @@ -448,10 +448,10 @@ class CRM_Report_Form_Contribute_DeferredRevenue extends CRM_Report_Form { $arraykey = $dao->civicrm_financial_account_id . '_' . $dao->civicrm_financial_account_1_id; if (property_exists($dao, $key)) { - if (CRM_Utils_Array::value('type', $value) & CRM_Utils_Type::T_DATE) { + if (($value['type'] ?? 0) & CRM_Utils_Type::T_DATE) { $row[$key] = CRM_Utils_Date::customFormat($dao->$key, $dateFormat); } - elseif (CRM_Utils_Array::value('type', $value) & CRM_Utils_Type::T_MONEY) { + elseif (($value['type'] ?? 0) & CRM_Utils_Type::T_MONEY) { $values = []; foreach (explode(',', $dao->$key) as $moneyValue) { $values[] = CRM_Utils_Money::format($moneyValue); diff --git a/civicrm/CRM/Report/Form/Contribute/History.php b/civicrm/CRM/Report/Form/Contribute/History.php index 900454e192..fb2141aa22 100644 --- a/civicrm/CRM/Report/Form/Contribute/History.php +++ b/civicrm/CRM/Report/Form/Contribute/History.php @@ -411,7 +411,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { if ($fieldName == 'this_year' || $fieldName == 'other_year') { continue; } - elseif (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE + elseif (($field['type'] ?? 0) & CRM_Utils_Type::T_DATE ) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; diff --git a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php index 9d08b36e52..474ce68efc 100644 --- a/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/HouseholdSummary.php @@ -258,7 +258,7 @@ class CRM_Report_Form_Contribute_HouseholdSummary extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php b/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php index c6ac398258..109eb68841 100644 --- a/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/OrganizationSummary.php @@ -275,7 +275,7 @@ class CRM_Report_Form_Contribute_OrganizationSummary extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Contribute/PCP.php b/civicrm/CRM/Report/Form/Contribute/PCP.php index 37edb4eedc..f3effc38a3 100644 --- a/civicrm/CRM/Report/Form/Contribute/PCP.php +++ b/civicrm/CRM/Report/Form/Contribute/PCP.php @@ -247,7 +247,7 @@ LEFT JOIN civicrm_event {$this->_aliases['civicrm_event']} foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Contribute/RecurSummary.php b/civicrm/CRM/Report/Form/Contribute/RecurSummary.php index 74d2bc35e6..7cb5190442 100644 --- a/civicrm/CRM/Report/Form/Contribute/RecurSummary.php +++ b/civicrm/CRM/Report/Form/Contribute/RecurSummary.php @@ -225,10 +225,10 @@ class CRM_Report_Form_Contribute_RecurSummary extends CRM_Report_Form { $startDateRelative = $this->_params["start_date_relative"] ?? NULL; $startedDateSql = $this->dateClause('start_date', $startDateRelative, $startDateFrom, $startDateTo); - $startedDateSql = $startedDateSql ? $startedDateSql : " ( 1 ) "; + $startedDateSql = $startedDateSql ?: " ( 1 ) "; $cancelledDateSql = $this->dateClause('cancel_date', $startDateRelative, $startDateFrom, $startDateTo); - $cancelledDateSql = $cancelledDateSql ? $cancelledDateSql : " ( cancel_date IS NOT NULL ) "; + $cancelledDateSql = $cancelledDateSql ?: " ( cancel_date IS NOT NULL ) "; $started = $cancelled = $active = $total = 0; diff --git a/civicrm/CRM/Report/Form/Contribute/Repeat.php b/civicrm/CRM/Report/Form/Contribute/Repeat.php index f8be583a37..f5e33a14ef 100644 --- a/civicrm/CRM/Report/Form/Contribute/Repeat.php +++ b/civicrm/CRM/Report/Form/Contribute/Repeat.php @@ -395,7 +395,7 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 foreach ($this->_columns['civicrm_contribution']['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Contribute/Sybunt.php b/civicrm/CRM/Report/Form/Contribute/Sybunt.php index 5bad43bde2..ed9a2080a1 100644 --- a/civicrm/CRM/Report/Form/Contribute/Sybunt.php +++ b/civicrm/CRM/Report/Form/Contribute/Sybunt.php @@ -355,7 +355,7 @@ class CRM_Report_Form_Contribute_Sybunt extends CRM_Report_Form { self::fiscalYearOffset('contri.receive_date') . " = {$this->_params['yid_value']} AND contri.is_test = 0 AND contri.is_template = 0 )"; } - elseif (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE + elseif (($field['type'] ?? 0) & CRM_Utils_Type::T_DATE ) { $relative = $this->_params["{$fieldName}_relative"] ?? NULL; $from = $this->_params["{$fieldName}_from"] ?? NULL; diff --git a/civicrm/CRM/Report/Form/Contribute/TopDonor.php b/civicrm/CRM/Report/Form/Contribute/TopDonor.php index fa40ee3d8b..0dcff4a211 100644 --- a/civicrm/CRM/Report/Form/Contribute/TopDonor.php +++ b/civicrm/CRM/Report/Form/Contribute/TopDonor.php @@ -252,7 +252,7 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; @@ -362,7 +362,7 @@ class CRM_Report_Form_Contribute_TopDonor extends CRM_Report_Form { } } - $pageId = $pageId ? $pageId : 1; + $pageId = $pageId ?: 1; $this->set(CRM_Utils_Pager::PAGE_ID, $pageId); $offset = ($pageId - 1) * $rowCount; diff --git a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php index b440dacbe1..e42e0036fa 100644 --- a/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php +++ b/civicrm/CRM/Report/Form/Event/IncomeCountSummary.php @@ -204,7 +204,7 @@ class CRM_Report_Form_Event_IncomeCountSummary extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Event/Summary.php b/civicrm/CRM/Report/Form/Event/Summary.php index edb3b0776a..ca86340dcd 100644 --- a/civicrm/CRM/Report/Form/Event/Summary.php +++ b/civicrm/CRM/Report/Form/Event/Summary.php @@ -143,7 +143,7 @@ class CRM_Report_Form_Event_Summary extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Mailing/Bounce.php b/civicrm/CRM/Report/Form/Mailing/Bounce.php index 45f23d00ca..ebe9d1a846 100644 --- a/civicrm/CRM/Report/Form/Mailing/Bounce.php +++ b/civicrm/CRM/Report/Form/Mailing/Bounce.php @@ -336,7 +336,7 @@ class CRM_Report_Form_Mailing_Bounce extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Mailing/Summary.php b/civicrm/CRM/Report/Form/Mailing/Summary.php index 61a6424aae..d2e4e61942 100644 --- a/civicrm/CRM/Report/Form/Mailing/Summary.php +++ b/civicrm/CRM/Report/Form/Mailing/Summary.php @@ -419,7 +419,7 @@ class CRM_Report_Form_Mailing_Summary extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php index 9cc87fc1e7..748b644f96 100644 --- a/civicrm/CRM/Report/Form/Member/Detail.php +++ b/civicrm/CRM/Report/Form/Member/Detail.php @@ -119,6 +119,18 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { 'default_weight' => '1', 'default_order' => 'ASC', ], + 'status_id' => [ + 'title' => ts('Membership Status'), + ], + 'membership_start_date' => [ + 'title' => ts('Membership Start Date'), + ], + 'membership_end_date' => [ + 'title' => ts('Membership End Date'), + ], + 'contribution_recur_id' => [ + 'title' => ts('Auto-renew'), + ], ], 'grouping' => 'member-fields', 'group_bys' => [ @@ -235,6 +247,12 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { 'type' => CRM_Utils_Type::T_INT, ], ], + 'order_bys' => [ + 'autorenew_status_id' => [ + 'name' => 'contribution_status_id', + 'title' => ts('Auto-Renew Subscription Status'), + ], + ], 'grouping' => 'member-fields', ], ] + $this->getAddressColumns([ @@ -379,18 +397,13 @@ HERESQL; } } - public function getOperationPair($type = "string", $fieldName = NULL) { + public function getOperationPair($type = 'string', $fieldName = NULL) { //re-name IS NULL/IS NOT NULL for clarity if ($fieldName === 'owner_membership_id') { $result = []; + $result[''] = ts('Any'); $result['nll'] = ts('Primary members only'); $result['nnll'] = ts('Non-primary members only'); - $options = parent::getOperationPair($type, $fieldName); - foreach ($options as $key => $label) { - if (!array_key_exists($key, $result)) { - $result[$key] = $label; - } - } } else { $result = parent::getOperationPair($type, $fieldName); diff --git a/civicrm/CRM/Report/Form/Pledge/Detail.php b/civicrm/CRM/Report/Form/Pledge/Detail.php index 21ca22a036..73ce3b6701 100644 --- a/civicrm/CRM/Report/Form/Pledge/Detail.php +++ b/civicrm/CRM/Report/Form/Pledge/Detail.php @@ -330,7 +330,7 @@ class CRM_Report_Form_Pledge_Detail extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Form/Pledge/Summary.php b/civicrm/CRM/Report/Form/Pledge/Summary.php index c49e7b5a7f..e22300560f 100644 --- a/civicrm/CRM/Report/Form/Pledge/Summary.php +++ b/civicrm/CRM/Report/Form/Pledge/Summary.php @@ -305,7 +305,7 @@ class CRM_Report_Form_Pledge_Summary extends CRM_Report_Form { if (array_key_exists('filters', $table)) { foreach ($table['filters'] as $fieldName => $field) { $clause = NULL; - if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { + 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; diff --git a/civicrm/CRM/Report/Page/Instance.php b/civicrm/CRM/Report/Page/Instance.php index fe10f9270e..a2dfca995e 100644 --- a/civicrm/CRM/Report/Page/Instance.php +++ b/civicrm/CRM/Report/Page/Instance.php @@ -44,6 +44,7 @@ class CRM_Report_Page_Instance extends CRM_Core_Page { $optionVal = CRM_Report_Utils_Report::getValueFromUrl($instanceId); $templateInfo = CRM_Core_OptionGroup::getRowValues('report_template', "{$optionVal}", 'value'); if (empty($templateInfo)) { + CRM_Core_Session::singleton()->replaceUserContext(CRM_Utils_System::url('civicrm/report/list', 'reset=1')); CRM_Core_Error::statusBounce(ts('You have tried to access a report that does not exist.')); } diff --git a/civicrm/CRM/Report/Utils/Report.php b/civicrm/CRM/Report/Utils/Report.php index 6f837dc9ad..2f91c687b8 100644 --- a/civicrm/CRM/Report/Utils/Report.php +++ b/civicrm/CRM/Report/Utils/Report.php @@ -253,7 +253,7 @@ WHERE inst.report_id = %1"; // Remove HTML, unencode entities, and escape quotation marks. $value = str_replace('"', '""', html_entity_decode(strip_tags($value), ENT_QUOTES | ENT_HTML401)); - if (CRM_Utils_Array::value('type', $form->_columnHeaders[$v]) & 4) { + if (($form->_columnHeaders[$v]['type'] ?? 0) & 4) { if (($form->_columnHeaders[$v]['group_by'] ?? NULL) == 'MONTH' || ($form->_columnHeaders[$v]['group_by'] ?? NULL) == 'QUARTER' ) { @@ -395,45 +395,49 @@ WHERE inst.report_id = %1"; $optionVal = self::getValueFromUrl($instanceId); $messages = ['Report Mail Triggered...']; - - $templateInfo = CRM_Core_OptionGroup::getRowValues('report_template', $optionVal, 'value'); - $obj = new CRM_Report_Page_Instance(); - $is_error = 0; - if (strstr(CRM_Utils_Array::value('name', $templateInfo), '_Form')) { - $instanceInfo = []; - CRM_Report_BAO_ReportInstance::retrieve(['id' => $instanceId], $instanceInfo); - - if (!empty($instanceInfo['title'])) { - $obj->assign('reportTitle', $instanceInfo['title']); - } - else { - $obj->assign('reportTitle', $templateInfo['label']); - } - - $wrapper = new CRM_Utils_Wrapper(); - $arguments = [ - 'urlToSession' => [ - [ - 'urlVar' => 'instanceId', - 'type' => 'Positive', - 'sessionVar' => 'instanceId', - 'default' => 'null', - ], - ], - 'ignoreKey' => TRUE, - ]; - $messages[] = $wrapper->run($templateInfo['name'], NULL, $arguments); + if (empty($optionVal)) { + $is_error = 1; + $messages[] = 'Did not find a valid instance to execute'; } else { - $is_error = 1; - if (!$instanceId) { - $messages[] = 'Required parameter missing: instanceId'; + $templateInfo = CRM_Core_OptionGroup::getRowValues('report_template', $optionVal, 'value'); + $obj = new CRM_Report_Page_Instance(); + $is_error = 0; + if (strstr(CRM_Utils_Array::value('name', $templateInfo), '_Form')) { + $instanceInfo = []; + CRM_Report_BAO_ReportInstance::retrieve(['id' => $instanceId], $instanceInfo); + + if (!empty($instanceInfo['title'])) { + $obj->assign('reportTitle', $instanceInfo['title']); + } + else { + $obj->assign('reportTitle', $templateInfo['label']); + } + + $wrapper = new CRM_Utils_Wrapper(); + $arguments = [ + 'urlToSession' => [ + [ + 'urlVar' => 'instanceId', + 'type' => 'Positive', + 'sessionVar' => 'instanceId', + 'default' => 'null', + ], + ], + 'ignoreKey' => TRUE, + ]; + $messages[] = $wrapper->run($templateInfo['name'], NULL, $arguments); } else { - $messages[] = 'Did not find valid instance to execute'; + $is_error = 1; + if (!$instanceId) { + $messages[] = 'Required parameter missing: instanceId'; + } + else { + $messages[] = 'Did not find valid instance to execute'; + } } } - $result = [ 'is_error' => $is_error, 'messages' => implode("\n", $messages), diff --git a/civicrm/CRM/SMS/BAO/Provider.php b/civicrm/CRM/SMS/BAO/Provider.php index 11b16e97fb..72158e34c2 100644 --- a/civicrm/CRM/SMS/BAO/Provider.php +++ b/civicrm/CRM/SMS/BAO/Provider.php @@ -17,12 +17,11 @@ class CRM_SMS_BAO_Provider extends CRM_SMS_DAO_Provider { /** - * @return null|string + * @return int */ - public static function activeProviderCount() { - $activeProviders = CRM_Core_DAO::singleValueQuery('SELECT count(id) FROM civicrm_sms_provider WHERE is_active = 1 AND (domain_id = %1 OR domain_id IS NULL)', + public static function activeProviderCount(): int { + return (int) CRM_Core_DAO::singleValueQuery('SELECT count(id) FROM civicrm_sms_provider WHERE is_active = 1 AND (domain_id = %1 OR domain_id IS NULL)', [1 => [CRM_Core_Config::domainID(), 'Positive']]); - return $activeProviders; } /** diff --git a/civicrm/CRM/SMS/Form/Upload.php b/civicrm/CRM/SMS/Form/Upload.php index da40e49a7a..ae52483822 100644 --- a/civicrm/CRM/SMS/Form/Upload.php +++ b/civicrm/CRM/SMS/Form/Upload.php @@ -56,7 +56,7 @@ class CRM_SMS_Form_Upload extends CRM_Core_Form { // We don't want to retrieve template details once it is // set in session. $templateId = $this->get('template'); - $this->assign('templateSelected', $templateId ? $templateId : 0); + $this->assign('templateSelected', $templateId ?: 0); if (isset($defaults['msg_template_id']) && !$templateId) { $defaults['SMStemplate'] = $defaults['msg_template_id']; $messageTemplate = new CRM_Core_DAO_MessageTemplate(); diff --git a/civicrm/CRM/UF/Page/Field.php b/civicrm/CRM/UF/Page/Field.php index b939f01fc5..04ff5eb776 100644 --- a/civicrm/CRM/UF/Page/Field.php +++ b/civicrm/CRM/UF/Page/Field.php @@ -54,28 +54,33 @@ class CRM_UF_Page_Field extends CRM_Core_Page { 'url' => 'civicrm/admin/uf/group/field/update', 'qs' => 'reset=1&action=update&id=%%id%%&gid=%%gid%%', 'title' => ts('Edit CiviCRM Profile Field'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/uf/group/preview', 'qs' => 'action=preview&gid=%%gid%%&fieldId=%%id%%', 'title' => ts('Preview CiviCRM Profile Field'), + 'weight' => 0, ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable CiviCRM Profile Field'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable CiviCRM Profile Field'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/uf/group/field', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Enable CiviCRM Profile Field'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; } diff --git a/civicrm/CRM/UF/Page/Group.php b/civicrm/CRM/UF/Page/Group.php index de929317ef..2f92e29629 100644 --- a/civicrm/CRM/UF/Page/Group.php +++ b/civicrm/CRM/UF/Page/Group.php @@ -48,18 +48,21 @@ class CRM_UF_Page_Group extends CRM_Core_Page { 'url' => 'civicrm/admin/uf/group/field', 'qs' => 'reset=1&action=browse&gid=%%id%%', 'title' => ts('View and Edit Fields'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::BROWSE), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Settings'), 'url' => 'civicrm/admin/uf/group/update', 'qs' => 'action=update&id=%%id%%&context=group', 'title' => ts('Edit CiviCRM Profile Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::PREVIEW => [ 'name' => ts('Preview'), 'url' => 'civicrm/admin/uf/group/preview', 'qs' => 'action=preview&gid=%%id%%&context=group', 'title' => ts('Edit CiviCRM Profile Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PREVIEW), ], CRM_Core_Action::ADD => [ 'name' => ts('Use - Create Mode'), @@ -67,6 +70,7 @@ class CRM_UF_Page_Group extends CRM_Core_Page { 'qs' => 'gid=%%id%%&reset=1', 'title' => ts('Use - Create Mode'), 'fe' => TRUE, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ADD), ], CRM_Core_Action::ADVANCED => [ 'name' => ts('Use - Edit Mode'), @@ -74,6 +78,7 @@ class CRM_UF_Page_Group extends CRM_Core_Page { 'qs' => 'gid=%%id%%&reset=1', 'title' => ts('Use - Edit Mode'), 'fe' => TRUE, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ADVANCED), ], CRM_Core_Action::BASIC => [ 'name' => ts('Use - Listings Mode'), @@ -81,22 +86,26 @@ class CRM_UF_Page_Group extends CRM_Core_Page { 'qs' => 'gid=%%id%%&reset=1', 'title' => ts('Use - Listings Mode'), 'fe' => TRUE, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::BASIC), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable CiviCRM Profile Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable CiviCRM Profile Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/admin/uf/group', 'qs' => 'action=delete&id=%%id%%', 'title' => ts('Delete CiviCRM Profile Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], CRM_Core_Action::COPY => [ 'name' => ts('Copy'), @@ -104,6 +113,7 @@ class CRM_UF_Page_Group extends CRM_Core_Page { 'qs' => 'action=copy&gid=%%id%%', 'title' => ts('Make a Copy of CiviCRM Profile Group'), 'extra' => 'onclick = "return confirm(\'' . $copyExtra . '\');"', + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::COPY), ], ]; $allowRemoteSubmit = Civi::settings()->get('remote_profile_submissions'); @@ -113,6 +123,7 @@ class CRM_UF_Page_Group extends CRM_Core_Page { 'url' => 'civicrm/admin/uf/group', 'qs' => 'action=profile&gid=%%id%%', 'title' => ts('HTML Form Snippet for this Profile'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::PROFILE), ]; } } diff --git a/civicrm/CRM/Upgrade/Incremental/General.php b/civicrm/CRM/Upgrade/Incremental/General.php index 38f9cd01e6..9d87705777 100644 --- a/civicrm/CRM/Upgrade/Incremental/General.php +++ b/civicrm/CRM/Upgrade/Incremental/General.php @@ -26,14 +26,14 @@ class CRM_Upgrade_Incremental_General { * The point release will be dropped in recommendations unless it's .1 or * higher. */ - const RECOMMENDED_PHP_VER = '7.4.0'; + const RECOMMENDED_PHP_VER = '8.1.0'; /** * The minimum recommended PHP version. * * A site running an earlier version will be told to upgrade. */ - const MIN_RECOMMENDED_PHP_VER = '7.4.0'; + const MIN_RECOMMENDED_PHP_VER = '8.0.0'; /** * The minimum PHP version required to install Civi. diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php index 0b31540361..fd4520893f 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php @@ -127,7 +127,7 @@ class CRM_Upgrade_Incremental_php_FiveFiftyOne extends CRM_Upgrade_Incremental_B ->setSelect(['id', 'name']) ->addWhere('mapping_id.mapping_type_id:name', '=', 'Import Membership') ->execute(); - $fields = self::getImportableMembershipFields('All');; + $fields = self::getImportableMembershipFields('All'); $fieldMap = []; foreach ($fields as $fieldName => $field) { $fieldMap[$field['title']] = $fieldName; diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtySix.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtySix.php new file mode 100644 index 0000000000..55c6d1df36 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtySix.php @@ -0,0 +1,270 @@ +<?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.66.x series. + * + * Each minor version in the series is handled by either a `5.66.x.mysql.tpl` file, + * or a function in this class named `upgrade_5_66_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_FiveSixtySix extends CRM_Upgrade_Incremental_Base { + + public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL): void { + if ($rev === '5.66.alpha1') { + $preUpgradeMessage .= '<p>' . ts('If your site uses custom code to inject tracking fields into messages, it may need updating. See <a %1>this issue for details</a>.', + [1 => 'href="https://github.com/civicrm/civicrm-core/pull/27233" target="_blank"']) . '</p>'; + } + } + + /** + * Upgrade step; adds tasks including 'runSql'. + * + * @param string $rev + * The version number matching this function name + */ + public function upgrade_5_66_alpha1($rev): void { + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Make Contribution.tax_amount required', 'alterColumn', 'civicrm_contribution', 'tax_amount', "decimal(20,2) DEFAULT 0 NOT NULL COMMENT 'Total tax amount of this contribution.'"); + $this->addTask('Make LineItem.tax_amount required', 'alterColumn', 'civicrm_line_item', 'tax_amount', "decimal(20,2) DEFAULT 0 NOT NULL COMMENT 'tax of each item'"); + // These run after the sql file + $this->addTask('Make Discount.entity_table required', 'alterColumn', 'civicrm_discount', 'entity_table', "varchar(64) NOT NULL COMMENT 'Name of the action(reminder)'"); + $this->addTask('Make ActionSchedule.name required', 'alterColumn', 'civicrm_action_schedule', 'name', "varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event'"); + $this->addTask(ts('Create index %1', [1 => 'civicrm_action_schedule.UI_name']), 'addIndex', 'civicrm_action_schedule', 'name', 'UI'); + $this->addTask('Add fields to civicrm_mail_settings to allow more flexibility for email to activity', 'addMailSettingsFields'); + $this->addTask('Move serialized contents of civicrm_survey.recontact_interval into civicrm_option_value.filter', 'migrateRecontactInterval'); + $this->addTask('Drop column civicrm_survey.recontact_interval', 'dropColumn', 'civicrm_survey', 'recontact_interval'); + $this->addTask('Update afform tab names', 'updateAfformTabs'); + $this->addTask('Add in Client Removed Activity Type', 'addCaseClientRemovedActivity'); + $this->addTask('Update quicksearch options to v4 format', 'updateQuicksearchOptions'); + } + + /** + * Upgrade step; adds tasks including 'runSql'. + * + * @param string $rev + * The version number matching this function name + */ + public function upgrade_5_66_beta1($rev): void { + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $locales = CRM_Core_I18n::getMultilingual(); + if ($locales) { + // Note these are localizable so need the last param + $this->addTask('civicrm_location_type.display_name default', 'alterColumn', 'civicrm_location_type', 'display_name', "varchar(64) NOT NULL DEFAULT '' COMMENT 'Location Type Display Name.'", TRUE); + $this->addTask('civicrm_survey.title default', 'alterColumn', 'civicrm_survey', 'title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Title of the Survey.'", TRUE); + $this->addTask('civicrm_case_type.title default', 'alterColumn', 'civicrm_case_type', 'title', "varchar(64) NOT NULL DEFAULT '' COMMENT 'Natural language name for Case Type'", TRUE); + $this->addTask('civicrm_custom_group.title default', 'alterColumn', 'civicrm_custom_group', 'title', "varchar(64) NOT NULL DEFAULT '' COMMENT 'Friendly Name.'", TRUE); + $this->addTask('civicrm_custom_field.label default', 'alterColumn', 'civicrm_custom_field', 'label', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Text for form field label (also friendly name for administering this custom property).'", TRUE); + $this->addTask('civicrm_option_value.label default', 'alterColumn', 'civicrm_option_value', 'label', "varchar(512) NOT NULL DEFAULT '' COMMENT 'Option string as displayed to users - e.g. the label in an HTML OPTION tag.'", TRUE); + $this->addTask('civicrm_group.title default', 'alterColumn', 'civicrm_group', 'title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of Group.'", TRUE); + $this->addTask('civicrm_group.frontend_title default', 'alterColumn', 'civicrm_group', 'frontend_title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Alternative public title for this Group.'", TRUE); + $this->addTask('civicrm_contribution_page.title default', 'alterColumn', 'civicrm_contribution_page', 'title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Contribution Page title. For top of page display'", TRUE); + $this->addTask('civicrm_contribution_page.frontend_title default', 'alterColumn', 'civicrm_contribution_page', 'frontend_title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Contribution Page Public title'", TRUE); + $this->addTask('civicrm_product.name default', 'alterColumn', 'civicrm_product', 'name', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Required product/premium name'", TRUE); + $this->addTask('civicrm_payment_processor.title default', 'alterColumn', 'civicrm_payment_processor', 'title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of processor when shown to CiviCRM administrators.'", TRUE); + $this->addTask('civicrm_payment_processor.frontend_title default', 'alterColumn', 'civicrm_payment_processor', 'frontend_title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Name of processor when shown to users making a payment.'", TRUE); + $this->addTask('civicrm_membership_type.name default', 'alterColumn', 'civicrm_membership_type', 'name', "varchar(128) NOT NULL DEFAULT '' COMMENT 'Name of Membership Type'", TRUE); + $this->addTask('civicrm_price_set.title default', 'alterColumn', 'civicrm_price_set', 'title', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Displayed title for the Price Set.'", TRUE); + $this->addTask('civicrm_uf_group.title default', 'alterColumn', 'civicrm_uf_group', 'title', "varchar(64) NOT NULL DEFAULT '' COMMENT 'Form title.'", TRUE); + $this->addTask('civicrm_uf_field.label default', 'alterColumn', 'civicrm_uf_field', 'label', "varchar(255) NOT NULL DEFAULT '' COMMENT 'To save label for fields.'", TRUE); + $this->addTask('civicrm_price_field.label default', 'alterColumn', 'civicrm_price_field', 'label', "varchar(255) NOT NULL DEFAULT '' COMMENT 'Text for form field label (also friendly name for administering this field).'", TRUE); + // END localizable field updates + } + } + + /** + * Add fields to civicrm_mail_settings to allow more flexibility for email to activity + * + * @param \CRM_Queue_TaskContext $ctx + * + * @return bool + */ + public static function addMailSettingsFields(CRM_Queue_TaskContext $ctx) { + $ctx->log->info('Adding field is_active'); + self::addColumn($ctx, 'civicrm_mail_settings', 'is_active', 'tinyint NOT NULL DEFAULT 1 COMMENT "Ignored for bounce processing, only for email-to-activity"'); + $ctx->log->info('Adding field activity_type_id'); + self::addColumn($ctx, 'civicrm_mail_settings', 'activity_type_id', 'int unsigned COMMENT "Implicit FK to civicrm_option_value where option_group = activity_type"'); + $ctx->log->info('Adding field campaign_id'); + self::addColumn($ctx, 'civicrm_mail_settings', 'campaign_id', 'int unsigned DEFAULT NULL COMMENT "Foreign key to the Campaign."'); + $ctx->log->info('Adding field activity_source'); + self::addColumn($ctx, 'civicrm_mail_settings', 'activity_source', 'varchar(4) COMMENT "Which email recipient to add as the activity source (from, to, cc, bcc)."'); + $ctx->log->info('Adding field activity_targets'); + self::addColumn($ctx, 'civicrm_mail_settings', 'activity_targets', 'varchar(16) COMMENT "Which email recipients to add as the activity targets (from, to, cc, bcc)."'); + $ctx->log->info('Adding field activity_assignees'); + self::addColumn($ctx, 'civicrm_mail_settings', 'activity_assignees', 'varchar(16) COMMENT "Which email recipients to add as the activity assignees (from, to, cc, bcc)."'); + + $ctx->log->info('Adding FK_civicrm_mail_settings_campaign_id'); + if (!self::checkFKExists('civicrm_mail_settings', 'FK_civicrm_mail_settings_campaign_id')) { + CRM_Core_DAO::executeQuery(" + ALTER TABLE `civicrm_mail_settings` + ADD CONSTRAINT `FK_civicrm_mail_settings_campaign_id` + FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) + ON DELETE SET NULL; + "); + } + + $ctx->log->info('Setting default activity_source'); + CRM_Core_DAO::executeQuery('UPDATE civicrm_mail_settings SET `activity_source` = "from" WHERE `activity_source` IS NULL;'); + $ctx->log->info('Setting default activity_targets'); + CRM_Core_DAO::executeQuery('UPDATE civicrm_mail_settings SET `activity_targets` = "to,cc,bcc" WHERE `activity_targets` IS NULL;'); + $ctx->log->info('Setting default activity_assignees'); + CRM_Core_DAO::executeQuery('UPDATE civicrm_mail_settings SET `activity_assignees` = "from" WHERE `activity_assignees` IS NULL;'); + $ctx->log->info('Setting default activity_type_id'); + $inboundEmailActivity = CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email'); + if ($inboundEmailActivity) { + CRM_Core_DAO::executeQuery('UPDATE civicrm_mail_settings SET `activity_type_id` = ' . $inboundEmailActivity . ' WHERE `activity_type_id` IS NULL;'); + } + return TRUE; + } + + /** + * If the ContactLayout extension is installed, update its stored tab names to keep up + * with core changes to Afform tabs. + * + * @see https://github.com/civicrm/civicrm-core/pull/27196 + * + * @param \CRM_Queue_TaskContext $ctx + * + * @return bool + */ + public static function updateAfformTabs(CRM_Queue_TaskContext $ctx) { + $convert = function($id) { + if ($id === 'afsearchGrants') { + return 'grant'; + } + if (preg_match('#^(afform|afsearch)#i', $id)) { + return CRM_Utils_String::convertStringToSnakeCase(preg_replace('#^(afformtab|afsearchtab|afform|afsearch)#i', '', $id)); + } + return $id; + }; + + $setting = \Civi::settings()->get('contactlayout_default_tabs'); + if ($setting && is_array($setting)) { + foreach ($setting as $index => $tab) { + $setting[$index]['id'] = $convert($tab['id']); + } + \Civi::settings()->set('contactlayout_default_tabs', $setting); + } + if (CRM_Core_DAO::checkTableExists('civicrm_contact_layout')) { + // Can't use the api due to extension loading issues + $dao = CRM_Core_DAO::executeQuery('SELECT * FROM civicrm_contact_layout'); + while ($dao->fetch()) { + if (!empty($dao->tabs)) { + $tabs = CRM_Core_DAO::unSerializeField($dao->tabs, CRM_Core_DAO::SERIALIZE_JSON); + foreach ($tabs as $index => $tab) { + $tabs[$index]['id'] = $convert($tab['id']); + } + CRM_Core_DAO::executeQuery('UPDATE civicrm_contact_layout SET tabs = %1 WHERE id = %2', [ + 1 => [CRM_Core_DAO::serializeField($tabs, CRM_Core_DAO::SERIALIZE_JSON), 'String'], + 2 => [$dao->id, 'Integer'], + ]); + } + } + } + return TRUE; + } + + public static function addCaseClientRemovedActivity() { + CRM_Core_BAO_OptionValue::ensureOptionValueExists([ + 'option_group_id' => 'activity_type', + 'name' => 'Case Client Removed', + 'label' => ts('Case Client was removed from Case'), + 'description' => ts('Case client was removed from a case'), + 'is_active' => TRUE, + 'component_id' => CRM_Core_DAO::singleValueQuery("SELECT id FROM civicrm_component WHERE name = 'CiviCase'"), + 'icon' => 'fa-trash', + ]); + return TRUE; + } + + /** + * Move serialized contents of Survey.recontact_interval into OptionValue.filter + * + * @param \CRM_Queue_TaskContext $ctx + * @return bool + */ + public static function migrateRecontactInterval($ctx): bool { + if (!CRM_Core_BAO_SchemaHandler::checkIfFieldExists('civicrm_survey', 'recontact_interval')) { + // Upgrade has already run, nothing to do. + return TRUE; + } + $surveys = CRM_Core_DAO::executeQuery('SELECT result_id, recontact_interval FROM civicrm_survey')->fetchAll(); + foreach ($surveys as $survey) { + if (empty($survey['recontact_interval']) || empty($survey['result_id'])) { + continue; + } + foreach (unserialize($survey['recontact_interval']) as $label => $interval) { + CRM_Core_DAO::executeQuery('UPDATE civicrm_option_value SET filter = %1 WHERE option_group_id = %2 AND label = %3', [ + 1 => [$interval, 'Integer'], + 2 => [$survey['result_id'], 'Positive'], + 3 => [$label, 'String'], + ]); + } + } + return TRUE; + } + + /** + * Convert `quicksearch_options` setting to use new APIv4 field names + * + * @param \CRM_Queue_TaskContext $ctx + * @return bool + */ + public static function updateQuicksearchOptions($ctx): bool { + $oldOpts = Civi::settings()->get('quicksearch_options'); + if ($oldOpts) { + // Map old quicksearch options to new APIv4 format + $map = [ + 'sort_name' => 'sort_name', + 'contact_id' => 'id', + 'external_identifier' => 'external_identifier', + 'first_name' => 'first_name', + 'last_name' => 'last_name', + 'email' => 'email_primary.email', + 'phone_numeric' => 'phone_primary.phone_numeric', + 'street_address' => 'address_primary.street_address', + 'city' => 'address_primary.city', + 'postal_code' => 'address_primary.postal_code', + 'job_title' => 'job_title', + ]; + + $newOpts = []; + foreach ($oldOpts as $oldOpt) { + // Convert custom fields + if (str_starts_with($oldOpt, 'custom_')) { + $fieldName = substr($oldOpt, 7); + try { + $optionGroupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', $fieldName, 'option_group_id', 'name'); + $customGroupId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', $fieldName, 'custom_group_id', 'name'); + $customGroupName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $customGroupId, 'name'); + $newOpts[] = $customGroupName . '.' . $fieldName . ($optionGroupId ? ':label' : ''); + } + catch (CRM_Core_Exception $e) { + // Field not found or something... just drop it + } + } + // Core fields. In case the upgrade has run already, check new and old options + elseif (in_array($oldOpt, $map) || array_key_exists($oldOpt, $map)) { + $newOpts[] = $map[$oldOpt] ?? $oldOpt; + } + } + Civi::settings()->set('quicksearch_options', $newOpts); + } + else { + Civi::settings()->revert('quicksearch_options'); + } + return TRUE; + } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.63.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.63.alpha1.mysql.tpl index d96fd227a1..62361f6bb0 100644 --- a/civicrm/CRM/Upgrade/Incremental/sql/5.63.alpha1.mysql.tpl +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.63.alpha1.mysql.tpl @@ -21,11 +21,19 @@ UPDATE civicrm_contribution_page SET `name` = `id`; -- Add name field, make frontend_title required (in conjunction with php function) {if $multilingual} {foreach from=$locales item=locale} + UPDATE `civicrm_contribution_page` + SET `title_{$locale}` = '' + WHERE `title_{$locale}` IS NULL; + UPDATE `civicrm_contribution_page` SET `frontend_title_{$locale}` = `title_{$locale}` WHERE `frontend_title_{$locale}` IS NULL OR `frontend_title_{$locale}` = ''; {/foreach} {else} + UPDATE `civicrm_contribution_page` + SET `title` = '' + WHERE `title` IS NULL; + UPDATE `civicrm_contribution_page` SET `frontend_title` = `title` WHERE `frontend_title` IS NULL OR `frontend_title` = ''; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.66.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.66.alpha1.mysql.tpl new file mode 100644 index 0000000000..325ab4c919 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.66.alpha1.mysql.tpl @@ -0,0 +1,13 @@ +{* file to handle db changes in 5.66.alpha1 during upgrade *} + +{* Ensure action_schedule.name has a unique value *} +UPDATE `civicrm_action_schedule` SET name = COALESCE(CONCAT('repeat_', used_for, '_', entity_value), CONCAT('schedule_', id)) WHERE name IS NULL OR name = ''; +UPDATE `civicrm_action_schedule` a1, `civicrm_action_schedule` a2 +SET a2.name = CONCAT(a2.name, '_', a2.id) +WHERE a2.name = a1.name AND a2.id > a1.id; + +{* Set default value for Discount.entity_table *} +UPDATE `civicrm_discount` SET `entity_table` = 'civicrm_event' WHERE `entity_table` IS NULL; + +UPDATE civicrm_contribution SET tax_amount = 0 WHERE tax_amount IS NULL; +UPDATE civicrm_line_item SET tax_amount = 0 WHERE tax_amount IS NULL; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.66.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.66.beta1.mysql.tpl new file mode 100644 index 0000000000..df59de8658 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.66.beta1.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.66.beta1 during upgrade *} diff --git a/civicrm/CRM/Upgrade/Snapshot.php b/civicrm/CRM/Upgrade/Snapshot.php index 4e1addf2fa..fd0bd75f0f 100644 --- a/civicrm/CRM/Upgrade/Snapshot.php +++ b/civicrm/CRM/Upgrade/Snapshot.php @@ -44,8 +44,20 @@ class CRM_Upgrade_Snapshot { public static function getActivationIssues(): array { if (static::$activationIssues === NULL) { $policy = CRM_Utils_Constant::value('CIVICRM_UPGRADE_SNAPSHOT', 'auto'); + static::$activationIssues = []; + + $version = CRM_Utils_SQL::getDatabaseVersion(); + if ((stripos($version, 'mariadb') !== FALSE) && version_compare($version, '10.6.0', '>=')) { + // MariaDB briefly (10.6.0-10.6.5) flirted with the idea of phasing-out `COMPRESSED`. By default, snapshots won't work on those versions. + // https://mariadb.com/kb/en/innodb-compressed-row-format/#read-only + $roCompressed = CRM_Core_DAO::singleValueQuery('SELECT @@innodb_read_only_compressed'); + if (in_array($roCompressed, ['on', 'ON', 1, '1'])) { + static::$activationIssues['row_compressed'] = ts('This MariaDB instance does not allow creating compressed snapshots.'); + } + } + if ($policy === TRUE) { - return []; + return static::$activationIssues; } $limits = [ @@ -57,7 +69,6 @@ class CRM_Upgrade_Snapshot { 'civicrm_event' => 200 * 1000, ]; - static::$activationIssues = []; foreach ($limits as $table => $limit) { try { // Use select MAX(id) rather than COUNT as COUNT is slow on large databases. diff --git a/civicrm/CRM/Utils/API/AbstractFieldCoder.php b/civicrm/CRM/Utils/API/AbstractFieldCoder.php index f99293f9e8..99ce120f1a 100644 --- a/civicrm/CRM/Utils/API/AbstractFieldCoder.php +++ b/civicrm/CRM/Utils/API/AbstractFieldCoder.php @@ -117,7 +117,7 @@ abstract class CRM_Utils_API_AbstractFieldCoder implements API_Wrapper { */ public function toApiOutput($apiRequest, $result) { $lowerAction = strtolower($apiRequest['action']); - if ($apiRequest['version'] == 3 && in_array($lowerAction, ['get', 'create', 'setvalue', 'getquick'])) { + if ($apiRequest['version'] == 3 && in_array($lowerAction, ['get', 'create', 'setvalue'])) { foreach ($result as $key => $value) { // Don't apply escaping to API control parameters (e.g. 'api.foo' or 'options.foo') // and don't apply to other skippable fields diff --git a/civicrm/CRM/Utils/Check/Component/Security.php b/civicrm/CRM/Utils/Check/Component/Security.php index 0225471e47..d9fe90a8c5 100644 --- a/civicrm/CRM/Utils/Check/Component/Security.php +++ b/civicrm/CRM/Utils/Check/Component/Security.php @@ -287,10 +287,6 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { "{$packages_path}/OpenFlashChart/php-ofc-library/ofc_upload_image.php", \Psr\Log\LogLevel::CRITICAL, ], - [ - "{$packages_path}/html2text/class.html2text.inc", - \Psr\Log\LogLevel::CRITICAL, - ], ]; foreach ($files as $file) { if (file_exists($file[0])) { diff --git a/civicrm/CRM/Utils/Date.php b/civicrm/CRM/Utils/Date.php index 68cb109fe3..2434fb33e0 100644 --- a/civicrm/CRM/Utils/Date.php +++ b/civicrm/CRM/Utils/Date.php @@ -1987,6 +1987,7 @@ class CRM_Utils_Date { $field['smarty_view_format'] = $dateAttributes['smarty_view_format']; } $field['datepicker']['extra'] = self::getDatePickerExtra($field); + $field['datepicker']['extra']['time'] = $fieldMetaData['type'] == CRM_Utils_Type::T_TIMESTAMP; $field['datepicker']['attributes'] = self::getDatePickerAttributes($field); } } diff --git a/civicrm/CRM/Utils/File.php b/civicrm/CRM/Utils/File.php index 373b0b29da..37f2522a43 100644 --- a/civicrm/CRM/Utils/File.php +++ b/civicrm/CRM/Utils/File.php @@ -90,12 +90,12 @@ class CRM_Utils_File { * @param bool $rmdir * @param bool $verbose * - * @throws Exception + * @throws \CRM_Core_Exception */ - public static function cleanDir($target, $rmdir = TRUE, $verbose = TRUE) { + public static function cleanDir(string $target, bool $rmdir = TRUE, bool $verbose = TRUE) { static $exceptions = ['.', '..']; - if ($target == '' || $target == '/' || !$target) { - throw new Exception("Overly broad deletion"); + if (!$target || $target === '/') { + throw new CRM_Core_Exception('Overly broad deletion'); } if ($dh = @opendir($target)) { @@ -794,6 +794,11 @@ HTACCESS; return FALSE; } } + + // windows fix + $parent = str_replace(DIRECTORY_SEPARATOR, '/', $parent); + $child = str_replace(DIRECTORY_SEPARATOR, '/', $child); + $parentParts = explode('/', rtrim($parent, '/')); $childParts = explode('/', rtrim($child, '/')); while (($parentPart = array_shift($parentParts)) !== NULL) { @@ -889,8 +894,8 @@ HTACCESS; case 'image/x-png': case 'image/png': case 'image/jpg': - list($imageWidth, $imageHeight) = getimagesize($path); - list($imageThumbWidth, $imageThumbHeight) = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight); + [$imageWidth, $imageHeight] = getimagesize($path); + [$imageThumbWidth, $imageThumbHeight] = CRM_Contact_BAO_Contact::getThumbSize($imageWidth, $imageHeight); $url = "<a href=\"$url\" class='crm-image-popup'> <img src=\"$url\" width=$imageThumbWidth height=$imageThumbHeight/> </a>"; diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index d3b4417f60..a7ab628d48 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -414,7 +414,7 @@ abstract class CRM_Utils_Hook { * The unique identifier for the object. * @param array $links * (optional) the links array (introduced in v3.2). - * @param int $mask + * @param int|null $mask * (optional) the bitmask to show/hide links. * @param array $values * (optional) the values to fill the links. diff --git a/civicrm/CRM/Utils/Mail.php b/civicrm/CRM/Utils/Mail.php index f3a0559381..63e14b7000 100644 --- a/civicrm/CRM/Utils/Mail.php +++ b/civicrm/CRM/Utils/Mail.php @@ -43,8 +43,8 @@ class CRM_Utils_Mail { throw new CRM_Core_Exception(ts('There is no valid smtp server setting. Click <a href=\'%1\'>Administer >> System Setting >> Outbound Email</a> to set the SMTP Server.', [1 => CRM_Utils_System::url('civicrm/admin/setting/smtp', 'reset=1')])); } - $params['host'] = $mailingInfo['smtpServer'] ? $mailingInfo['smtpServer'] : 'localhost'; - $params['port'] = $mailingInfo['smtpPort'] ? $mailingInfo['smtpPort'] : 25; + $params['host'] = $mailingInfo['smtpServer'] ?: 'localhost'; + $params['port'] = $mailingInfo['smtpPort'] ?: 25; if ($mailingInfo['smtpAuth']) { $params['username'] = $mailingInfo['smtpUsername']; @@ -357,16 +357,6 @@ class CRM_Utils_Mail { return $message; } - /** - * @param $to - * @param $headers - * @param $message - * @deprecated - */ - public static function logger(&$to, &$headers, &$message) { - CRM_Utils_Mail_Logger::log($to, $headers, $message); - } - /** * Get the email address itself from a formatted full name + address string * diff --git a/civicrm/CRM/Utils/Mail/EmailProcessor.php b/civicrm/CRM/Utils/Mail/EmailProcessor.php index a31bef4d3d..813dc1d15a 100644 --- a/civicrm/CRM/Utils/Mail/EmailProcessor.php +++ b/civicrm/CRM/Utils/Mail/EmailProcessor.php @@ -15,9 +15,9 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ -// we should consider moving these to the settings table -// before the 4.1 release -define('EMAIL_ACTIVITY_TYPE_ID', NULL); +// we should consider moving this to the settings table +use Civi\Api4\Activity; + define('MAIL_BATCH_SIZE', 50); /** @@ -55,6 +55,7 @@ class CRM_Utils_Mail_EmailProcessor { $dao = new CRM_Core_DAO_MailSettings(); $dao->domain_id = CRM_Core_Config::domainID(); $dao->is_default = FALSE; + $dao->is_active = TRUE; $dao->find(); $found = FALSE; while ($dao->fetch()) { @@ -67,21 +68,6 @@ class CRM_Utils_Mail_EmailProcessor { return $found; } - /** - * Process the mailbox for all the settings from civicrm_mail_settings. - * - * @param bool|string $civiMail if true, processing is done in CiviMail context, or Activities otherwise. - */ - public static function process($civiMail = TRUE) { - $dao = new CRM_Core_DAO_MailSettings(); - $dao->domain_id = CRM_Core_Config::domainID(); - $dao->find(); - - while ($dao->fetch()) { - self::_process($civiMail, $dao); - } - } - /** * @param $civiMail * @param CRM_Core_DAO_MailSettings $dao @@ -91,38 +77,32 @@ class CRM_Utils_Mail_EmailProcessor { * @throws Exception * @throws CRM_Core_Exception */ - public static function _process($civiMail, $dao, $is_create_activities) { + private static function _process($civiMail, $dao, $is_create_activities) { // 0 = activities; 1 = bounce; - $usedfor = $dao->is_default; - - $emailActivityTypeId - = (defined('EMAIL_ACTIVITY_TYPE_ID') && EMAIL_ACTIVITY_TYPE_ID) - ? EMAIL_ACTIVITY_TYPE_ID - : CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound Email'); - - if (!$emailActivityTypeId) { - throw new CRM_Core_Exception(ts('Could not find a valid Activity Type ID for Inbound Email')); + $isBounceProcessing = $dao->is_default; + $targetFields = array_filter(explode(',', $dao->activity_targets)); + $assigneeFields = array_filter(explode(",", $dao->activity_assignees)); + $sourceFields = array_filter(explode(",", $dao->activity_source)); + // create an array of all of to, from, cc, bcc that are in use for this Mail Account, so we don't create contacts for emails we aren't adding to the activity. + $emailFields = array_merge($targetFields, $assigneeFields, $sourceFields); + $createContact = !($dao->is_contact_creation_disabled_if_no_match) && !$isBounceProcessing; + $bounceActivityTypeID = $activityTypeID = (int) $dao->activity_type_id; + $activityTypes = Activity::getFields(TRUE) + ->setLoadOptions(['id', 'name']) + ->addWhere('name', '=', 'activity_type_id') + ->execute()->first()['options']; + foreach ($activityTypes as $activityType) { + if ($activityType['name'] === 'Bounce') { + $bounceActivityTypeID = (int) $activityType['id']; + } + } + $bounceTypes = []; + if ($isBounceProcessing) { + $result = CRM_Core_DAO::executeQuery('SELECT * FROM civicrm_mailing_bounce_type'); + while ($result->fetch()) { + $bounceTypes[$result->id] = ['id' => $result->id, 'name' => $result->name, 'description' => $result->description, 'hold_threshold' => $result->hold_threshold]; + } } - - $config = CRM_Core_Config::singleton(); - $verpSeparator = preg_quote($config->verpSeparator ?? ''); - $twoDigitStringMin = $verpSeparator . '(\d+)' . $verpSeparator . '(\d+)'; - $twoDigitString = $twoDigitStringMin . $verpSeparator; - $threeDigitString = $twoDigitString . '(\d+)' . $verpSeparator; - - // FIXME: legacy regexen to handle CiviCRM 2.1 address patterns, with domain id and possible VERP part - $commonRegex = '/^' . preg_quote($dao->localpart ?? '') . '(b|bounce|c|confirm|o|optOut|r|reply|re|e|resubscribe|u|unsubscribe)' . $threeDigitString . '([0-9a-f]{16})(-.*)?@' . preg_quote($dao->domain ?? '') . '$/'; - $subscrRegex = '/^' . preg_quote($dao->localpart ?? '') . '(s|subscribe)' . $twoDigitStringMin . '@' . preg_quote($dao->domain ?? '') . '$/'; - - // a common-for-all-actions regex to handle CiviCRM 2.2 address patterns - $regex = '/^' . preg_quote($dao->localpart ?? '') . '(b|c|e|o|r|u)' . $twoDigitString . '([0-9a-f]{16})@' . preg_quote($dao->domain ?? '') . '$/'; - - // a tighter regex for finding bounce info in soft bounces’ mail bodies - $rpRegex = '/Return-Path:\s*' . preg_quote($dao->localpart ?? '') . '(b)' . $twoDigitString . '([0-9a-f]{16})@' . preg_quote($dao->domain ?? '') . '/'; - - // a regex for finding bound info X-Header - $rpXheaderRegex = '/X-CiviMail-Bounce: ' . preg_quote($dao->localpart ?? '') . '(b)' . $twoDigitString . '([0-9a-f]{16})@' . preg_quote($dao->domain ?? '') . '/i'; - // CiviMail in regex and Civimail in header !!! // retrieve the emails try { @@ -138,63 +118,14 @@ class CRM_Utils_Mail_EmailProcessor { // process fifty at a time, CRM-4002 while ($mails = $store->fetchNext(MAIL_BATCH_SIZE)) { foreach ($mails as $key => $mail) { - - // for every addressee: match address elements if it's to CiviMail - $matches = []; - $action = NULL; - - if ($usedfor == 1) { - foreach ($mail->to as $address) { - if (preg_match($regex, ($address->email ?? ''), $matches)) { - [$match, $action, $job, $queue, $hash] = $matches; - break; - // FIXME: the below elseifs should be dropped when we drop legacy support - } - elseif (preg_match($commonRegex, ($address->email ?? ''), $matches)) { - [$match, $action, $_, $job, $queue, $hash] = $matches; - break; - } - elseif (preg_match($subscrRegex, ($address->email ?? ''), $matches)) { - [$match, $action, $_, $job] = $matches; - break; - } - } - - // CRM-5471: if $matches is empty, it still might be a soft bounce sent - // to another address, so scan the body for ‘Return-Path: …bounce-pattern…’ - if (!$matches and preg_match($rpRegex, ($mail->generateBody() ?? ''), $matches)) { - [$match, $action, $job, $queue, $hash] = $matches; - } - - // if $matches is still empty, look for the X-CiviMail-Bounce header - // CRM-9855 - if (!$matches and preg_match($rpXheaderRegex, ($mail->generateBody() ?? ''), $matches)) { - [$match, $action, $job, $queue, $hash] = $matches; - } - // With Mandrilla, the X-CiviMail-Bounce header is produced by generateBody - // is base64 encoded - // Check all parts - if (!$matches) { - $all_parts = $mail->fetchParts(); - foreach ($all_parts as $k_part => $v_part) { - if ($v_part instanceof ezcMailFile) { - $p_file = $v_part->__get('fileName'); - $c_file = file_get_contents($p_file); - if (preg_match($rpXheaderRegex, ($c_file ?? ''), $matches)) { - [$match, $action, $job, $queue, $hash] = $matches; - } - } - } - } - - // if all else fails, check Delivered-To for possible pattern - if (!$matches and preg_match($regex, ($mail->getHeader('Delivered-To') ?? ''), $matches)) { - [$match, $action, $job, $queue, $hash] = $matches; - } - } - - // preseve backward compatibility - if ($usedfor == 0 || $is_create_activities) { + $incomingMail = new CRM_Utils_Mail_IncomingMail($mail, (string) $dao->domain, (string) $dao->localpart); + $action = $incomingMail->getAction(); + $job = $incomingMail->getJobID(); + $queue = $incomingMail->getQueueID(); + $hash = $incomingMail->getHash(); + + // preserve backward compatibility + if (!$isBounceProcessing || $is_create_activities) { // Mail account may have 'Skip emails which do not have a Case ID // or Case hash' option, if its enabled and email is not related // to cases - then we need to put email to ignored folder. @@ -204,39 +135,97 @@ class CRM_Utils_Mail_EmailProcessor { continue; } + $bounceString = ''; // if its the activities that needs to be processed .. try { - $createContact = !($dao->is_contact_creation_disabled_if_no_match ?? FALSE); - $mailParams = CRM_Utils_Mail_Incoming::parseMailingObject($mail, $createContact, FALSE); - } - catch (Exception $e) { - echo $e->getMessage(); - $store->markIgnored($key); - continue; - } - - $params = self::deprecated_activity_buildmailparams($mailParams, $emailActivityTypeId); - - $params['version'] = 3; - if (!empty($dao->activity_status)) { - $params['status_id'] = $dao->activity_status; - } + if ($incomingMail->isBounce()) { + $activityTypeID = $bounceActivityTypeID; + $bounce = CRM_Mailing_BAO_BouncePattern::match($incomingMail->getBody()); + if (!empty($bounce['bounce_type_id'])) { + $bounceType = $bounceTypes[$bounce['bounce_type_id']]; + $bounceString = ts('Bounce type: %1. %2', [1 => $bounceType['name'], 2 => $bounceType['description']]) + . '<br>' + . ts('Email will be put on hold after %1 of this type of bounce', [1 => $bounceType['hold_threshold']]) + . "\n"; + } + else { + $bounceString = ts('Bounce type not identified, email will not be put on hold') + . "\n"; + } + } + $mailParams = CRM_Utils_Mail_Incoming::parseMailingObject($mail, $incomingMail->getAttachments(), $createContact, $emailFields, [$incomingMail->getFrom()]); + $activityParams = [ + 'activity_type_id' => $activityTypeID, + 'campaign_id' => $dao->campaign_id ? (int) $dao->campaign_id : NULL, + 'status_id' => $dao->activity_status, + 'subject' => $incomingMail->getSubject(), + 'activity_date_time' => $incomingMail->getDate(), + 'details' => $bounceString . $incomingMail->getBody(), + ]; + if ($incomingMail->isVerp()) { + $activityParams['source_contact_id'] = $incomingMail->lookup('Queue', 'contact_id'); + } + else { + $activityParams['source_contact_id'] = $mailParams[$dao->activity_source][0]['id']; - $result = civicrm_api('activity', 'create', $params); + $activityContacts = [ + 'target_contact_id' => $targetFields, + 'assignee_contact_id' => $assigneeFields, + ]; + // @todo - if the function that gets/ creates emails were more sane it would return + // an array of ids rather than a mutli-value array from which the id can be + // extracted... + foreach ($activityContacts as $activityContact => $activityKeys) { + $activityParams[$activityContact] = []; + foreach ($activityKeys as $activityKey) { + if (is_array($mailParams[$activityKey])) { + foreach ($mailParams[$activityKey] as $keyValue) { + if (!empty($keyValue['id'])) { + $activityParams[$activityContact][] = $keyValue['id']; + } + } + } + } + } + } + // @todo the IncomingMail class should have `getAttachments` - retrieving from + // the email & moving to the file system should be separate to formatting + // array for api + $numAttachments = Civi::settings()->get('max_attachments_backend') ?? CRM_Core_BAO_File::DEFAULT_MAX_ATTACHMENTS_BACKEND; + for ($i = 1; $i <= $numAttachments; $i++) { + if (isset($mailParams["attachFile_$i"])) { + $activityParams["attachFile_$i"] = $mailParams["attachFile_$i"]; + } + else { + // No point looping 100 times if there's only one attachment + break; + } + } - if ($result['is_error']) { - $matches = FALSE; - echo "Failed Processing: {$mail->subject}. Reason: {$result['error_message']}\n"; - } - else { + $result = civicrm_api3('Activity', 'create', $activityParams); $matches = TRUE; - CRM_Utils_Hook::emailProcessor('activity', $params, $mail, $result); + CRM_Utils_Hook::emailProcessor('activity', $activityParams, $mail, $result); echo "Processed as Activity: {$mail->subject}\n"; } + catch (Exception $e) { + // Try again with just the bounceString as the details. + // This allows us to still process even if we hit https://lab.civicrm.org/dev/mail/issues/36 + // as tested in testBounceProcessingInvalidCharacter. + $activityParams['details'] = trim($bounceString); + try { + civicrm_api3('Activity', 'create', $activityParams); + $matches = TRUE; + } + catch (CRM_Core_Exception $e) { + echo "Failed Processing: {$mail->subject}. Reason: " . $e->getMessage() . "\n"; + $store->markIgnored($key); + continue; + } + } } - // if $matches is empty, this email is not CiviMail-bound - if (!$matches) { + // This is an awkward exit when processing is done. It probably needs revisiting + if (!$incomingMail->isVerp() && empty($matches)) { $store->markIgnored($key); continue; } @@ -246,61 +235,18 @@ class CRM_Utils_Mail_EmailProcessor { $replyTo = $mail->getHeader('Reply-To') ? $mail->getHeader('Reply-To') : ($mail->from ? $mail->from->email : ""); // handle the action by passing it to the proper API call - // FIXME: leave only one-letter cases when dropping legacy support if (!empty($action)) { $result = NULL; switch ($action) { case 'b': - case 'bounce': - $text = ''; - if ($mail->body instanceof ezcMailText) { - $text = $mail->body->text; - } - elseif ($mail->body instanceof ezcMailMultipart) { - $text = self::getTextFromMultipart($mail->body); - } - elseif ($mail->body instanceof ezcMailFile) { - $text = file_get_contents($mail->body->__get('fileName')); - } + $text = $incomingMail->getBody(); - if ( - empty($text) && - $mail->subject == "Delivery Status Notification (Failure)" - ) { - // Exchange error - CRM-9361 - foreach ($mail->body->getParts() as $part) { - if ($part instanceof ezcMailDeliveryStatus) { - foreach ($part->recipients as $rec) { - if ($rec["Status"] == "5.1.1") { - if (isset($rec["Description"])) { - $text = $rec["Description"]; - } - else { - $text = $rec["Status"] . " Delivery to the following recipients failed"; - } - break; - } - } - } - } - } - - if (empty($text)) { - // If bounce processing fails, just take the raw body. Cf. CRM-11046 - $text = $mail->generateBody(); - - // if text is still empty, lets fudge a blank text so the api call below will succeed - if (empty($text)) { - $text = ts('We could not extract the mail body from this bounce message.'); - } - } - - $params = [ + $activityParams = [ 'job_id' => $job, 'event_queue_id' => $queue, 'hash' => $hash, - 'body' => $text, + 'body' => $text ?: ts('We could not extract the mail body from this bounce message.'), 'version' => 3, // Setting is_transactional means it will rollback if // it crashes part way through creating the bounce. @@ -311,36 +257,33 @@ class CRM_Utils_Mail_EmailProcessor { // a quick hack. 'is_transactional' => 1, ]; - $result = civicrm_api('Mailing', 'event_bounce', $params); + $result = civicrm_api('Mailing', 'event_bounce', $activityParams); break; case 'c': - case 'confirm': // CRM-7921 - $params = [ + $activityParams = [ 'contact_id' => $job, 'subscribe_id' => $queue, 'hash' => $hash, 'version' => 3, ]; - $result = civicrm_api('Mailing', 'event_confirm', $params); + $result = civicrm_api('Mailing', 'event_confirm', $activityParams); break; case 'o': - case 'optOut': - $params = [ + $activityParams = [ 'job_id' => $job, 'event_queue_id' => $queue, 'hash' => $hash, 'version' => 3, ]; - $result = civicrm_api('MailingGroup', 'event_domain_unsubscribe', $params); + $result = civicrm_api('MailingGroup', 'event_domain_unsubscribe', $activityParams); break; case 'r': - case 'reply': // instead of text and HTML parts (4th and 6th params) send the whole email as the last param - $params = [ + $activityParams = [ 'job_id' => $job, 'event_queue_id' => $queue, 'hash' => $hash, @@ -350,40 +293,36 @@ class CRM_Utils_Mail_EmailProcessor { 'fullEmail' => $mail->generate(), 'version' => 3, ]; - $result = civicrm_api('Mailing', 'event_reply', $params); + $result = civicrm_api('Mailing', 'event_reply', $activityParams); break; case 'e': - case 're': - case 'resubscribe': - $params = [ + $activityParams = [ 'job_id' => $job, 'event_queue_id' => $queue, 'hash' => $hash, 'version' => 3, ]; - $result = civicrm_api('MailingGroup', 'event_resubscribe', $params); + $result = civicrm_api('MailingGroup', 'event_resubscribe', $activityParams); break; case 's': - case 'subscribe': - $params = [ + $activityParams = [ 'email' => $mail->from->email, 'group_id' => $job, 'version' => 3, ]; - $result = civicrm_api('MailingGroup', 'event_subscribe', $params); + $result = civicrm_api('MailingGroup', 'event_subscribe', $activityParams); break; case 'u': - case 'unsubscribe': - $params = [ + $activityParams = [ 'job_id' => $job, 'event_queue_id' => $queue, 'hash' => $hash, 'version' => 3, ]; - $result = civicrm_api('MailingGroup', 'event_unsubscribe', $params); + $result = civicrm_api('MailingGroup', 'event_unsubscribe', $activityParams); break; } @@ -391,7 +330,7 @@ class CRM_Utils_Mail_EmailProcessor { echo "Failed Processing: {$mail->subject}, Action: $action, Job ID: $job, Queue ID: $queue, Hash: $hash. Reason: {$result['error_message']}\n"; } else { - CRM_Utils_Hook::emailProcessor('mailing', $params, $mail, $result, $action); + CRM_Utils_Hook::emailProcessor('mailing', $activityParams, $mail, $result, $action); } } @@ -505,50 +444,4 @@ class CRM_Utils_Mail_EmailProcessor { return $text; } - /** - * @param array $result - * @param int $activityTypeID - * - * @return array - * <type> $params - */ - protected static function deprecated_activity_buildmailparams($result, $activityTypeID) { - // get ready for collecting data about activity to be created - $params = []; - - $params['activity_type_id'] = $activityTypeID; - - $params['status_id'] = 'Completed'; - if (!empty($result['from']['id'])) { - $params['source_contact_id'] = $params['assignee_contact_id'] = $result['from']['id']; - } - $params['target_contact_id'] = []; - $keys = ['to', 'cc', 'bcc']; - foreach ($keys as $key) { - if (is_array($result[$key])) { - foreach ($result[$key] as $key => $keyValue) { - if (!empty($keyValue['id'])) { - $params['target_contact_id'][] = $keyValue['id']; - } - } - } - } - $params['subject'] = $result['subject']; - $params['activity_date_time'] = $result['date']; - $params['details'] = $result['body']; - - $numAttachments = Civi::settings()->get('max_attachments_backend') ?? CRM_Core_BAO_File::DEFAULT_MAX_ATTACHMENTS_BACKEND; - for ($i = 1; $i <= $numAttachments; $i++) { - if (isset($result["attachFile_$i"])) { - $params["attachFile_$i"] = $result["attachFile_$i"]; - } - else { - // No point looping 100 times if there's only one attachment - break; - } - } - - return $params; - } - } diff --git a/civicrm/CRM/Utils/Mail/Incoming.php b/civicrm/CRM/Utils/Mail/Incoming.php index 86b80dd733..fe21b726a8 100644 --- a/civicrm/CRM/Utils/Mail/Incoming.php +++ b/civicrm/CRM/Utils/Mail/Incoming.php @@ -285,88 +285,40 @@ class CRM_Utils_Mail_Incoming { return $name . "<{$address->email}>"; } - /** - * @param $file - * - * @return array - * @throws Exception - */ - public function &parse(&$file) { - - // check that the file exists and has some content - if (!file_exists($file) || - !trim(file_get_contents($file)) - ) { - return CRM_Core_Error::createAPIError(ts('%1 does not exists or is empty', - [1 => $file] - )); - } - - // explode email to digestable format - $set = new ezcMailFileSet([$file]); - $parser = new ezcMailParser(); - $mail = $parser->parseMail($set); - - if (!$mail) { - return CRM_Core_Error::createAPIError(ts('%1 could not be parsed', - [1 => $file] - )); - } - - // since we only have one fileset - $mail = $mail[0]; - - $mailParams = self::parseMailingObject($mail); - return $mailParams; - } - /** * @param $mail - * @param $createContact - * @param $requireContact + * @param $attachments + * @param bool $createContact + * @param array $emailFields + * Which fields to process and create contacts for - subset of [from, to, cc, bcc], + * @param array $from * * @return array */ - public static function parseMailingObject(&$mail, $createContact = TRUE, $requireContact = TRUE) { - - $config = CRM_Core_Config::singleton(); - - // get ready for collecting data about this email - // and put it in a standardized format - $params = ['is_error' => 0]; - - // Sometimes $mail->from is unset because ezcMail didn't handle format - // of From header. CRM-19215. - if (!isset($mail->from)) { - if (preg_match('/^([^ ]*)( (.*))?$/', $mail->getHeader('from'), $matches)) { - $mail->from = new ezcMailAddress($matches[1], trim($matches[2])); - } - } - - $params['from'] = []; - self::parseAddress($mail->from, $field, $params['from'], $mail, $createContact); - - // we definitely need a contact id for the from address - // if we dont have one, skip this email - if ($requireContact && empty($params['from']['id'])) { - return NULL; - } - - $emailFields = ['to', 'cc', 'bcc']; + public static function parseMailingObject(&$mail, $attachments, $createContact, $emailFields, $from) { + $params = []; foreach ($emailFields as $field) { - $value = $mail->$field; - self::parseAddresses($value, $field, $params, $mail, $createContact); + // to, bcc, cc are arrays of objects, but from is an object, so make it an array of one object so we can handle it the same + if ($field === 'from') { + $value = $from; + } + else { + $value = $mail->$field; + } + $params[$field] = []; + foreach ($value as $address) { + $subParam = []; + // @todo - stop creating a complex array here - $params[$field][] is + // an array with name, email & id. The calling function only wants the + // id & does quite a bit of work to extract it.... + self::parseAddress($address, $subParam, $mail, $createContact); + $params[$field][] = $subParam; + } } - - // define other parameters - $params['subject'] = $mail->subject; - $params['date'] = date("YmdHi00", - strtotime($mail->getHeader("Date")) - ); - $attachments = []; - $params['body'] = self::formatMailPart($mail->body, $attachments); - - // format and move attachments to the civicrm area + // @todo mode this code to be a `getAttachments` function on the IncomingMail class + // which would get attachments & move the files to the civicrm area. + // The formatting to api array should go back to the calling function on + // EmailProcessor. if (!empty($attachments)) { $date = date('YmdHis'); $config = CRM_Core_Config::singleton(); @@ -395,12 +347,11 @@ class CRM_Utils_Mail_Incoming { /** * @param ezcMailAddress $address - * @param array $params * @param $subParam * @param $mail * @param $createContact */ - private static function parseAddress(&$address, &$params, &$subParam, &$mail, $createContact = TRUE) { + private static function parseAddress($address, &$subParam, &$mail, $createContact = TRUE) { // CRM-9484 if (empty($address->email)) { return; @@ -411,27 +362,9 @@ class CRM_Utils_Mail_Incoming { $contactID = self::getContactID($subParam['email'], $subParam['name'], - $createContact, - $mail + $createContact ); - $subParam['id'] = $contactID ? $contactID : NULL; - } - - /** - * @param ezcMailAddress[] $addresses - * @param $token - * @param array $params - * @param $mail - * @param $createContact - */ - public static function parseAddresses(&$addresses, $token, &$params, &$mail, $createContact = TRUE) { - $params[$token] = []; - - foreach ($addresses as $address) { - $subParam = []; - self::parseAddress($address, $params, $subParam, $mail, $createContact); - $params[$token][] = $subParam; - } + $subParam['id'] = $contactID ?: NULL; } /** @@ -442,11 +375,12 @@ class CRM_Utils_Mail_Incoming { * @param string $email * @param string $name * @param bool $create - * @param string $mail + * + * @internal core use only (only use outside this class is in core unit tests). * * @return int|null */ - public static function getContactID($email, $name, $create, &$mail) { + public static function getContactID($email, $name, $create) { $dao = CRM_Contact_BAO_Contact::matchContactOnEmail($email, 'Individual'); $contactID = NULL; diff --git a/civicrm/CRM/Utils/Mail/IncomingMail.php b/civicrm/CRM/Utils/Mail/IncomingMail.php new file mode 100644 index 0000000000..04eeb841b9 --- /dev/null +++ b/civicrm/CRM/Utils/Mail/IncomingMail.php @@ -0,0 +1,233 @@ +<?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 | + +--------------------------------------------------------------------+ + */ + +use Civi\API\EntityLookupTrait; +use Civi\Api4\MailingJob; + +/** + * Incoming mail class. + * + * @internal - this is not supported for use from outside of code. + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ +class CRM_Utils_Mail_IncomingMail { + + use EntityLookupTrait; + + /** + * @var \ezcMail + */ + private $mail; + + /** + * @var string + */ + private $action; + + /** + * @var int + */ + private $queueID; + + /** + * @var int + */ + private $jobID; + + /** + * @var string + */ + private $hash; + + /** + * @var string|null + */ + private $body; + + /** + * @return string|null + */ + public function getBody(): ?string { + return $this->body; + } + + /** + * @return array + */ + public function getAttachments(): array { + return $this->attachments; + } + + private $attachments = []; + + public function getAction() : ?string { + return $this->action; + } + + /** + * @return int|null + */ + public function getQueueID(): ?int { + return $this->queueID; + } + + /** + * @return int|null + */ + public function getJobID(): ?int { + return $this->jobID; + } + + /** + * @return string|null + */ + public function getHash(): ?string { + return $this->hash; + } + + /** + * @return ezcMailAddress + */ + public function getFrom(): ezcMailAddress { + return $this->mail->from; + } + + /** + * @return string + */ + public function getSubject(): string { + return (string) $this->mail->subject; + } + + public function getDate(): string { + return date('YmdHis', strtotime($this->mail->getHeader('Date'))); + } + + /** + * Is this a verp email. + * + * If the regex didn't find a match then no. + * + * @return bool + */ + public function isVerp(): bool { + return (bool) $this->action; + } + + /** + * Is this a bounce email. + * + * At the moment we are only able to detect verp bounces but maybe in the future... + * + * @return bool + */ + public function isBounce() : bool { + return $this->getAction() === 'b'; + } + + /** + * @param \ezcMail $mail + * @param string $emailDomain + * @param string $emailLocalPart + * + * @throws \ezcBasePropertyNotFoundException + * @throws \CRM_Core_Exception + */ + public function __construct(ezcMail $mail, string $emailDomain, string $emailLocalPart) { + // Sometimes $mail->from is unset because ezcMail didn't handle format + // of From header. CRM-19215 (https://issues.civicrm.org/jira/browse/CRM-19215). + if (!isset($mail->from)) { + if (preg_match('/^([^ ]*)( (.*))?$/', $mail->getHeader('from'), $matches)) { + $mail->from = new ezcMailAddress($matches[1], trim($matches[2])); + } + } + $this->mail = $mail; + $this->body = CRM_Utils_Mail_Incoming::formatMailPart($mail->body, $this->attachments); + + $verpSeparator = preg_quote(\Civi::settings()->get('verpSeparator') ?: ''); + $emailDomain = preg_quote($emailDomain); + $emailLocalPart = preg_quote($emailLocalPart); + $twoDigitStringMin = $verpSeparator . '(\d+)' . $verpSeparator . '(\d+)'; + $twoDigitString = $twoDigitStringMin . $verpSeparator; + + // a common-for-all-actions regex to handle CiviCRM 2.2 address patterns + $regex = '/^' . $emailLocalPart . '(b|c|e|o|r|u)' . $twoDigitString . '([0-9a-f]{16})@' . $emailDomain . '$/'; + + // a tighter regex for finding bounce info in soft bounces’ mail bodies + $rpRegex = '/Return-Path:\s*' . $emailLocalPart . '(b)' . $twoDigitString . '([0-9a-f]{16})@' . $emailDomain . '/'; + + // a regex for finding bound info X-Header + $rpXHeaderRegex = '/X-CiviMail-Bounce: ' . $emailLocalPart . '(b)' . $twoDigitString . '([0-9a-f]{16})@' . $emailDomain . '/i'; + // CiviMail in regex and Civimail in header !!! + $matches = NULL; + foreach ($this->mail->to as $address) { + if (preg_match($regex, ($address->email ?? ''), $matches)) { + [, $this->action, $this->jobID, $this->queueID, $this->hash] = $matches; + break; + } + } + + // CRM-5471: if $matches is empty, it still might be a soft bounce sent + // to another address, so scan the body for ‘Return-Path: …bounce-pattern…’ + if (!$matches && preg_match($rpRegex, ($mail->generateBody() ?? ''), $matches)) { + [, $this->action, $this->jobID, $this->queueID, $this->hash] = $matches; + } + + // if $matches is still empty, look for the X-CiviMail-Bounce header + // CRM-9855 + if (!$matches && preg_match($rpXHeaderRegex, ($mail->generateBody() ?? ''), $matches)) { + [, $this->action, $this->jobID, $this->queueID, $this->hash] = $matches; + } + // With Mandrill, the X-CiviMail-Bounce header is produced by generateBody + // is base64 encoded + // Check all parts + if (!$matches) { + $all_parts = $mail->fetchParts(); + foreach ($all_parts as $v_part) { + if ($v_part instanceof ezcMailFile) { + $p_file = $v_part->__get('fileName'); + $c_file = file_get_contents($p_file); + if (preg_match($rpXHeaderRegex, ($c_file ?? ''), $matches)) { + [, $this->action, $this->jobID, $this->queueID, $this->hash] = $matches; + } + } + } + } + + // if all else fails, check Delivered-To for possible pattern + if (!$matches && preg_match($regex, ($mail->getHeader('Delivered-To') ?? ''), $matches)) { + [, $this->action, $this->jobID, $this->queueID, $this->hash] = $matches; + } + if ($this->isVerp()) { + $queue = CRM_Mailing_Event_BAO_MailingEventQueue::verify($this->getJobID(), $this->getQueueID(), $this->getHash()); + if (!$queue) { + throw new CRM_Core_Exception('Contact could not be found from civimail response'); + } + $this->define('Queue', 'Queue', [ + 'id' => $queue->id, + 'hash' => $queue->hash, + 'contact_id' => $queue->contact_id, + 'job_id' => $queue->contact_id, + ]); + $this->define('Mailing', 'Mailing', [ + 'id' => MailingJob::get(FALSE) + ->addWhere('id', '=', $this->getJobID()) + ->addSelect('mailing_id') + ->execute() + ->first()['mailing_id'], + ]); + } + + } + +} diff --git a/civicrm/CRM/Utils/Migrate/Import.php b/civicrm/CRM/Utils/Migrate/Import.php index 33154adbaf..866fa3c392 100644 --- a/civicrm/CRM/Utils/Migrate/Import.php +++ b/civicrm/CRM/Utils/Migrate/Import.php @@ -295,7 +295,7 @@ AND v.name = %1 case 2: // ParticipantEventName - $condition = "( is_template IS NULL OR is_template != 1 ) AND title IN( '{$optValues}' )"; + $condition = "is_template = 0 AND title IN( '{$optValues}' )"; $optionIDs = CRM_Event_PseudoConstant::event(NULL, FALSE, $condition); break; diff --git a/civicrm/CRM/Utils/SQL/Select.php b/civicrm/CRM/Utils/SQL/Select.php index 3915c117d1..2e93386531 100644 --- a/civicrm/CRM/Utils/SQL/Select.php +++ b/civicrm/CRM/Utils/SQL/Select.php @@ -647,4 +647,11 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { $freeDAO, $i18nRewrite, $trapException); } + /** + * @return string + */ + public function getFrom(): string { + return $this->from; + } + } diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php index 5570eff8cb..c70d83af3a 100644 --- a/civicrm/CRM/Utils/System.php +++ b/civicrm/CRM/Utils/System.php @@ -39,6 +39,7 @@ * @method static void appendCoreResources(\Civi\Core\Event\GenericHookEvent $e) Callback for hook_civicrm_coreResourceList. * @method static void alterAssetUrl(\Civi\Core\Event\GenericHookEvent $e) Callback for hook_civicrm_getAssetUrl. * @method static bool shouldExitAfterFatal() Should the current execution exit after a fatal error? + * @method static string|null currentPath() Path of the current page e.g. 'civicrm/contact/view' */ class CRM_Utils_System { @@ -433,17 +434,6 @@ class CRM_Utils_System { return "<a href=\"$url\">$text</a>"; } - /** - * Path of the current page e.g. 'civicrm/contact/view' - * - * @return string|null - * the current menu path - */ - public static function currentPath() { - $config = CRM_Core_Config::singleton(); - return isset($_GET[$config->userFrameworkURLVar]) ? trim($_GET[$config->userFrameworkURLVar], '/') : NULL; - } - /** * Compose a URL. This is a wrapper for `url()` which is optimized for use in Smarty. * diff --git a/civicrm/CRM/Utils/System/Backdrop.php b/civicrm/CRM/Utils/System/Backdrop.php index d8d1b8636f..98b6a601bc 100644 --- a/civicrm/CRM/Utils/System/Backdrop.php +++ b/civicrm/CRM/Utils/System/Backdrop.php @@ -490,7 +490,7 @@ AND u.status = 1 global $language; $langcode = substr($civicrm_language, 0, 2); - $languages = language_list(FALSE, TRUE); + $languages = language_list(); if (isset($languages[$langcode])) { $language = $languages[$langcode]; diff --git a/civicrm/CRM/Utils/System/Base.php b/civicrm/CRM/Utils/System/Base.php index c78f72c0c9..83490874f9 100644 --- a/civicrm/CRM/Utils/System/Base.php +++ b/civicrm/CRM/Utils/System/Base.php @@ -136,6 +136,42 @@ abstract class CRM_Utils_System_Base { $forceBackend = FALSE ); + /** + * Compose the URL for a page/route. + * + * @internal + * @see \Civi\Core\Url::__toString + * @param string $scheme + * Ex: 'frontend', 'backend', 'service' + * @param string $path + * Ex: 'civicrm/event/info' + * @param string|null $query + * Ex: 'id=100&msg=Hello+world' + * @return string|null + * Absolute URL, or NULL if scheme is unsupported. + * Ex: 'https://subdomain.example.com/index.php?q=civicrm/event/info&id=100&msg=Hello+world' + */ + public function getRouteUrl(string $scheme, string $path, ?string $query): ?string { + switch ($scheme) { + case 'frontend': + return $this->url($path, $query, TRUE, NULL, TRUE, FALSE, FALSE); + + case 'service': + // The original `url()` didn't have an analog for "service://". But "frontend" is probably the closer bet? + // Or maybe getNotifyUrl() makes sense? + return $this->url($path, $query, TRUE, NULL, TRUE, FALSE, FALSE); + + case 'backend': + return $this->url($path, $query, TRUE, NULL, FALSE, TRUE, FALSE); + + // If the UF defines other major UI/URL conventions, then you might hypothetically handle + // additional schemes. + + default: + return NULL; + } + } + /** * Return the Notification URL for Payments. * @@ -172,6 +208,17 @@ abstract class CRM_Utils_System_Base { return $this->url($path, $query, $absolute, $fragment, $frontend, $forceBackend); } + /** + * Path of the current page e.g. 'civicrm/contact/view' + * + * @return string|null + * the current menu path + */ + public static function currentPath() { + $config = CRM_Core_Config::singleton(); + return isset($_GET[$config->userFrameworkURLVar]) ? trim($_GET[$config->userFrameworkURLVar], '/') : NULL; + } + /** * Authenticate the user against the CMS db. * diff --git a/civicrm/CRM/Utils/System/Standalone.php b/civicrm/CRM/Utils/System/Standalone.php index c0070e3681..6c18d7b4d6 100644 --- a/civicrm/CRM/Utils/System/Standalone.php +++ b/civicrm/CRM/Utils/System/Standalone.php @@ -205,6 +205,18 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { } } + /** + * Path of the current page e.g. 'civicrm/contact/view' + * + * @return string|null + * the current menu path + */ + public static function currentPath() { + $path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); + $path = trim($path, '/'); + return $path; + } + /** * @inheritDoc * Authenticate the user against the CMS db. @@ -560,7 +572,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { */ public function getCMSPermissionsUrlParams() { if ($this->missingStandaloneExtension()) { - return ['ufAccessURL' => '/fixme/standalone/permissions/url/params']; + return ['ufAccessURL' => '/civicrm/admin/roles']; } return Security::singleton()->getCMSPermissionsUrlParams(); } diff --git a/civicrm/CRM/Utils/System/WordPress.php b/civicrm/CRM/Utils/System/WordPress.php index a8ec227893..d4da15e4ad 100644 --- a/civicrm/CRM/Utils/System/WordPress.php +++ b/civicrm/CRM/Utils/System/WordPress.php @@ -300,7 +300,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { $forceBackend = FALSE ) { $config = CRM_Core_Config::singleton(); - $script = ''; + $frontend_url = ''; $separator = '&'; $fragment = isset($fragment) ? ('#' . $fragment) : ''; $path = CRM_Utils_String::stripPathChars($path); @@ -318,8 +318,8 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { // Try and find the "calling" page/post. global $post; if ($post) { - $script = get_permalink($post->ID); - if ($config->wpBasePage == $post->post_name) { + $frontend_url = get_permalink($post->ID); + if (civi_wp()->basepage->is_match($post->ID)) { $basepage = TRUE; } } @@ -329,7 +329,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { // Get the Base Page URL for building front-end URLs. if ($frontend && !$forceBackend) { - $script = $this->getBasePageUrl(); + $frontend_url = $this->getBasePageUrl(); $basepage = TRUE; } @@ -339,20 +339,30 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { $base = $this->getBaseUrl($absolute, $frontend, $forceBackend); // Overwrite base URL if we already have a front-end URL. - if (!$forceBackend && $script != '') { - $base = $script; + if (!$forceBackend && $frontend_url != '') { + $base = $frontend_url; } $queryParts = []; $admin_request = ((is_admin() && !$frontend) || $forceBackend); + /** + * Filter the Base URL. + * + * @since 5.66 + * + * @param str $base The Base URL. + * @param bool $admin_request True if building an admin URL, false otherwise. + */ + $base = apply_filters('civicrm/core/url/base', $base, $admin_request); + if ( // If not using Clean URLs. !$config->cleanURL // Or requesting an admin URL. || $admin_request // Or this is a Shortcode. - || (!$basepage && $script != '') + || (!$basepage && $frontend_url != '') ) { // Build URL according to pre-existing logic. @@ -431,37 +441,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { * The Base Page URL, or false on failure. */ public function getBasePageUrl() { - static $basepage_url = ''; - if ($basepage_url === '') { - - // Get the Base Page config setting. - $config = CRM_Core_Config::singleton(); - $basepage_slug = $config->wpBasePage; - - // Did we get a value? - if (!empty($basepage_slug)) { - - // Query for our Base Page. - $pages = get_posts([ - 'post_type' => 'page', - 'name' => strtolower($basepage_slug), - 'post_status' => 'publish', - 'posts_per_page' => 1, - ]); - - // Find the Base Page object and set the URL. - if (!empty($pages) && is_array($pages)) { - $basepage = array_pop($pages); - if ($basepage instanceof WP_Post) { - $basepage_url = get_permalink($basepage->ID); - } - } - - } - - } - - return $basepage_url; + return civi_wp()->basepage->url_get(); } /** @@ -636,11 +616,14 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { * @inheritDoc */ public function getUFLocale() { - // Bail early if method is called when WordPress isn't bootstrapped. - // Additionally, the function checked here is located in pluggable.php - // and is required by wp_get_referer() - so this also bails early if it is - // called too early in the request lifecycle. - // @see https://core.trac.wordpress.org/ticket/25294 + /* + * Bail early if method is called when WordPress isn't bootstrapped. + * Additionally, the function checked here is located in pluggable.php + * and is required by wp_get_referer() - so this also bails early if it is + * called too early in the request lifecycle. + * + * @see https://core.trac.wordpress.org/ticket/25294 + */ if (!function_exists('wp_validate_redirect')) { return NULL; } @@ -662,28 +645,16 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { // Default to WordPress locale. $locale = get_locale(); - // Maybe override with the locale that Polylang reports. - if (function_exists('pll_current_language')) { - $pll_locale = pll_current_language('locale'); - if (!empty($pll_locale)) { - $locale = $pll_locale; - } - } - - // Maybe override with the locale that WPML reports. - elseif (defined('ICL_LANGUAGE_CODE')) { - $languages = apply_filters('wpml_active_languages', NULL); - foreach ($languages as $language) { - if ($language['active']) { - $locale = $language['default_locale']; - break; - } - } - } - - // TODO: Set locale for other WordPress plugins. - // @see https://wordpress.org/plugins/tags/multilingual/ - // A hook would be nice here. + /** + * Filter the default WordPress locale. + * + * The CiviCRM-WordPress plugin supports Polylang and WPML via this filter. + * + * @since 5.66 + * + * @param str $locale The WordPress locale. + */ + $locale = apply_filters('civicrm/core/locale', $locale); } diff --git a/civicrm/Civi.php b/civicrm/Civi.php index d582bba2b0..7c86845541 100644 --- a/civicrm/Civi.php +++ b/civicrm/Civi.php @@ -218,4 +218,89 @@ class Civi { return \Civi\Core\Container::getBootService('settings_manager')->getBagByDomain($domainID); } + /** + * Construct a URL based on a logical service address. For example: + * + * Civi::url('frontend://civicrm/user?reset=1'); + * + * Civi::url() + * ->setScheme('frontend') + * ->setPath(['civicrm', 'user']) + * ->setQuery(['reset' => 1]) + * + * URL building follows a few rules: + * + * 1. You may initialize with a baseline URL. + * 2. The scheme indicates the general type of URL ('frontend://', 'backend://', 'asset://', 'assetBuilder://'). + * 3. The result object provides getters, setters, and adders (e.g. `getScheme()`, `setPath(...)`, `addQuery(...)`) + * 4. Strings are raw. Arrays are auto-encoded. (`addQuery('name=John+Doughnut')` or `addQuery(['name' => 'John Doughnut'])`) + * 5. You may use variable expressions (`id=[contact]&gid=[profile]`). + * 6. The URL can be cast to string (aka `__toString()`). + * + * If you are converting from `CRM_Utils_System::url()` to `Civi::url()`, then be sure to: + * + * - Pay attention to the scheme (eg 'current://' vs 'frontend://') + * - Pay attention to HTML escaping, as the behavior changed: + * - Civi::url() returns plain URLs (eg "id=100&gid=200") by default + * - CRM_Utils_System::url() returns HTML-escaped URLs (eg "id=100&gid=200") by default + * + * Here are several examples: + * + * Ex: Link to constituent's dashboard (on frontend UI or backend UI -- based on the active scheme of current page-view) + * $url = Civi::url('current://civicrm/user?reset=1'); + * $url = Civi::url('//civicrm/user?reset=1'); + * + * Ex: Link to constituent's dashboard (with method calls - good for dynamic options) + * $url = Civi::url('frontend:') + * ->setPath('civicrm/user') + * ->addQuery(['reset' => 1]); + * + * Ex: Link to constituent's dashboard (with quick flags: absolute URL, SSL required, HTML escaping) + * $url = Civi::url('frontend://civicrm/user?reset=1', 'ash'); + * + * Ex: Link to constituent's dashboard (with method flags - good for dynamic options) + * $url = Civi::url('frontend://civicrm/user?reset=1') + * ->setPreferFormat('absolute') + * ->setSsl(TRUE) + * ->setHtmlEscape(TRUE); + * + * Ex: Link to a dynamically generated asset-file. + * $url = Civi::url('assetBuilder://crm-l10n.js?locale=en_US'); + * + * Ex: Link to a static asset (resource-file) in one of core's configurable paths. + * $url = Civi::url('[civicrm.root]/js/Common.js'); + * + * Ex: Link to a static asset (resource-file) in an extension. + * $url = Civi::url('ext://org.civicrm.search_kit/css/crmSearchTasks.css'); + * + * Ex: Link with variable substitution + * $url = Civi::url('frontend://civicrm/ajax/api4/[entity]/[action]') + * ->addVars(['entity' => 'Foo', 'action' => 'bar']); + * + * @param string|null $logicalUri + * Logical URI. The scheme of the URI may be one of: + * - 'frontend://' (Front-end page-route for constituents) + * - 'backend://' (Back-end page-route for staff) + * - 'service://' (Web-service page-route for automated integrations; aka webhooks and IPNs) + * - 'current://' (Whichever UI is currently active) + * - 'default://' (Whichever UI is recorded in the metadata) + * - 'asset://' (Static asset-file; see \Civi::paths()) + * - 'assetBuilder://' (Dynamically-generated asset-file; see \Civi\Core\AssetBuilder) + * - 'ext://' (Static asset-file provided by an extension) + * An empty scheme (`//hello.txt`) is equivalent to `current://hello.txt`. + * @param string|null $flags + * List of flags. Some combination of the following: + * - 'a': absolute (aka `setPreferFormat('absolute')`) + * - 'r': relative (aka `setPreferFormat('relative')`) + * - 'h': html (aka `setHtmlEscape(TRUE)`) + * - 't': text (aka `setHtmlEscape(FALSE)`) + * - 's': ssl (aka `setSsl(TRUE)`) + * - 'c': cache code for resources (aka Civi::resources()->addCacheCode()) + * @return \Civi\Core\Url + * URL object which may be modified or rendered as text. + */ + public static function url(?string $logicalUri = NULL, ?string $flags = NULL): \Civi\Core\Url { + return new \Civi\Core\Url($logicalUri, $flags); + } + } diff --git a/civicrm/Civi/API/EntityLookupTrait.php b/civicrm/Civi/API/EntityLookupTrait.php new file mode 100644 index 0000000000..7f452a3c2a --- /dev/null +++ b/civicrm/Civi/API/EntityLookupTrait.php @@ -0,0 +1,116 @@ +<?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\API; + +trait EntityLookupTrait { + + /** + * Array of defined entity identifiers. + * + * @var array + */ + private $entityLookupDefinitions = []; + + /** + * Array of defined entity values. + * + * @var array + */ + private $entityLookupValues = []; + + /** + * Defines a record so its values can be retrieved using `$this->lookup()` + * + * @param string $apiEntityName + * @param string $nickname + * Handle to use to retrieve values with `$this->lookup()` + * @param array $identifier + * A unique key or combination of keys to uniquely identify the record (usually id) + * Most commonly looks like `['id' => 123]` + */ + protected function define(string $apiEntityName, string $nickname, array $identifier): void { + $this->entityLookupDefinitions[$nickname] = [ + 'entityName' => $apiEntityName, + 'identifier' => $identifier, + ]; + $this->entityLookupValues[$nickname] = []; + } + + /** + * Check if an entity can be looked up + * + * @param string $nickname + * @return bool + */ + public function isDefined(string $nickname): bool { + return !is_null($this->getDefinition($nickname)); + } + + /** + * Retrieve entity definition (entityName string, identifier [keys/values]) + * + * @param string $nickname + * @return array{entityName: string, identifier: array}|null + */ + protected function getDefinition(string $nickname): ?array { + return $this->entityLookupDefinitions[$nickname] ?? NULL; + } + + /** + * Retrieve a field value for a defined entity + * + * @param string $nickname + * Handle set by `$this->define()` + * @param string $fieldName + * @return mixed + * @throws \CRM_Core_Exception + */ + public function lookup(string $nickname, string $fieldName) { + $definition = $this->getDefinition($nickname); + if (!$definition) { + throw new \CRM_Core_Exception(sprintf('Cannot lookup entity "%s" before it has been defined.', $nickname)); + } + // Simply return an id - no need for any queries + if (isset($definition['identifier'][$fieldName])) { + return $definition['identifier'][$fieldName]; + } + // Return stored value from previous lookup + if (array_key_exists($fieldName, $this->entityLookupValues[$nickname])) { + return $this->entityLookupValues[$nickname][$fieldName]; + } + $params = [ + 'select' => [$fieldName], + 'where' => [], + 'checkPermissions' => FALSE, + ]; + foreach ($definition['identifier'] as $key => $val) { + $params['where'][] = [$key, '=', $val]; + } + // Initial load - prefetch all core fields to reduce # of subsequent queries + if (!$this->entityLookupValues[$nickname]) { + $params['select'][] = '*'; + // Contact email is commonly needed by forms so prefetch it as well + if ($definition['entityName'] === 'Contact') { + $params['select'][] = 'email_primary.*'; + } + } + // If requesting a join or a custom field, prefetch all using `select 'join_entity.*'` + if (str_contains($fieldName, '.')) { + $parts = explode('.', $fieldName); + $parts[count($parts) - 1] = '*'; + $params['select'][] = implode('.', $parts); + } + $retrieved = civicrm_api4($definition['entityName'], 'get', $params)->single(); + $this->entityLookupValues[$nickname] += $retrieved; + return $this->entityLookupValues[$nickname][$fieldName] ?? NULL; + } + +} diff --git a/civicrm/Civi/API/ExternalBatch.php b/civicrm/Civi/API/ExternalBatch.php index f9ea3ae69c..5a88395076 100644 --- a/civicrm/Civi/API/ExternalBatch.php +++ b/civicrm/Civi/API/ExternalBatch.php @@ -217,7 +217,7 @@ class ExternalBatch { $env = array_merge($this->env, [ 'CIVICRM_SETTINGS' => $this->settingsPath, ]); - return new Process($command, $this->root, $env); + return Process::fromShellCommandline($command, $this->root, $env); } /** diff --git a/civicrm/Civi/API/Kernel.php b/civicrm/Civi/API/Kernel.php index 8e67c3142c..9630e8c60b 100644 --- a/civicrm/Civi/API/Kernel.php +++ b/civicrm/Civi/API/Kernel.php @@ -34,9 +34,7 @@ class Kernel { /** * @param \Civi\Core\CiviEventDispatcherInterface $dispatcher - * The event dispatcher which receives kernel events. - * @param array $apiProviders - * Array of ProviderInterface. + * @param \Civi\API\Provider\ProviderInterface[] $apiProviders */ public function __construct($dispatcher, $apiProviders = []) { $this->apiProviders = $apiProviders; @@ -271,14 +269,12 @@ class Kernel { /** * @param int $version * API version. - * @return array - * Array<string>. + * @return string[] */ public function getEntityNames($version) { // Question: Would it better to eliminate $this->apiProviders and just use $this->dispatcher? $entityNames = []; foreach ($this->getApiProviders() as $provider) { - /** @var \Civi\API\Provider\ProviderInterface $provider */ $entityNames = array_merge($entityNames, $provider->getEntityNames($version)); } $entityNames = array_unique($entityNames); @@ -291,14 +287,12 @@ class Kernel { * API version. * @param string $entity * API entity. - * @return array - * Array<string> + * @return string[] */ public function getActionNames($version, $entity) { // Question: Would it better to eliminate $this->apiProviders and just use $this->dispatcher? $actionNames = []; foreach ($this->getApiProviders() as $provider) { - /** @var \Civi\API\Provider\ProviderInterface $provider */ $actionNames = array_merge($actionNames, $provider->getActionNames($version, $entity)); } $actionNames = array_unique($actionNames); @@ -321,7 +315,7 @@ class Kernel { if (!empty($apiRequest['params']['debug'])) { $data['trace'] = $e->getTraceAsString(); } - return $this->createError($e->getMessage(), $data, $apiRequest, $e->getCode()); + return $this->createError($e->getMessage(), $data, $apiRequest); } /** @@ -336,9 +330,7 @@ class Kernel { */ public function formatApiException($e, $apiRequest) { $data = $e->getExtraParams(); - $errorCode = $e->getCode(); if (($data['exception'] ?? NULL) instanceof \DB_Error) { - $errorCode = $e->getDBErrorMessage(); $data['sql'] = $e->getSQL(); $data['debug_info'] = $e->getUserInfo(); } @@ -346,14 +338,14 @@ class Kernel { $data['entity'] = $apiRequest['entity'] ?? NULL; $data['action'] = $apiRequest['action'] ?? NULL; - if (\CRM_Utils_Array::value('debug', \CRM_Utils_Array::value('params', $apiRequest)) + if (!empty($apiRequest['params']['debug']) // prevent recursion && empty($data['trace']) ) { $data['trace'] = $e->getTraceAsString(); } - return $this->createError($e->getMessage(), $data, $apiRequest, $errorCode); + return $this->createError($e->getMessage(), $data, $apiRequest); } /** @@ -397,15 +389,11 @@ class Kernel { * Error data. * @param array $apiRequest * The full description of the API request. - * @param mixed $code - * Doesn't appear to be used. * * @throws \CRM_Core_Exception * @return array - * Array<type>. */ - public function createError($msg, $data, $apiRequest, $code = NULL) { - // FIXME what to do with $code? + public function createError($msg, $data, $apiRequest) { if ($msg === 'DB Error: constraint violation' || substr($msg, 0, 9) == 'DB Error:' || $msg == 'DB Error: already exists') { try { $fields = _civicrm_api3_api_getfields($apiRequest); @@ -448,15 +436,14 @@ class Kernel { } /** - * @return array<ProviderInterface> + * @return \Civi\API\Provider\ProviderInterface[] */ public function getApiProviders() { return $this->apiProviders; } /** - * @param array $apiProviders - * Array<ProviderInterface>. + * @param \Civi\API\Provider\ProviderInterface[] $apiProviders * @return Kernel */ public function setApiProviders($apiProviders) { diff --git a/civicrm/Civi/ActionSchedule/Mapping.php b/civicrm/Civi/ActionSchedule/Mapping.php new file mode 100644 index 0000000000..82f18404c1 --- /dev/null +++ b/civicrm/Civi/ActionSchedule/Mapping.php @@ -0,0 +1,4 @@ +<?php + +// Empty file to ensure the old one is overwritten on Joomla! installs. +// It otherwise causes Declaration of Civi\\ActionSchedule\\Mapping::getValueHeader() must be compatible with Civi\\ActionSchedule\\MappingInterface::getValueHeader(): diff --git a/civicrm/Civi/ActionSchedule/MappingBase.php b/civicrm/Civi/ActionSchedule/MappingBase.php index 66391b7a10..419f5c6114 100644 --- a/civicrm/Civi/ActionSchedule/MappingBase.php +++ b/civicrm/Civi/ActionSchedule/MappingBase.php @@ -22,6 +22,10 @@ use Civi\Core\Service\AutoSubscriber; */ abstract class MappingBase extends AutoSubscriber implements MappingInterface { + public function getId() { + return $this->getName(); + } + public static function getSubscribedEvents(): array { return [ 'civi.actionSchedule.getMappings' => 'onRegisterActionMappings', @@ -37,7 +41,7 @@ abstract class MappingBase extends AutoSubscriber implements MappingInterface { $registrations->register(new static()); } - public function getEntityTable(): string { + public function getEntityTable(\CRM_Core_DAO_ActionSchedule $actionSchedule): string { return \CRM_Core_DAO_AllCoreTables::getTableForEntityName($this->getEntityName()); } @@ -48,30 +52,44 @@ abstract class MappingBase extends AutoSubscriber implements MappingInterface { */ public function getEntity(): string { \CRM_Core_Error::deprecatedFunctionWarning('getEntityTable'); - return $this->getEntityTable(); + return \CRM_Core_DAO_AllCoreTables::getTableForEntityName($this->getEntityName()); } public function getLabel(): string { return CoreUtil::getInfoItem($this->getEntityName(), 'title') ?: ts('Unknown'); } - public function getValueHeader(): string { - return $this->getLabel(); + public static function getLimitToOptions(): array { + return [ + [ + 'id' => 1, + 'name' => 'limit', + 'label' => ts('Limit to'), + ], + [ + 'id' => 2, + 'name' => 'add', + 'label' => ts('Also include'), + ], + ]; } public function getRecipientListing($recipientType): array { return []; } - public function getRecipientTypes(): array { - return []; + public static function getRecipientTypes(): array { + return [ + 'manual' => ts('Choose Recipient(s)'), + 'group' => ts('Select Group'), + ]; } - public function validateSchedule($schedule): array { - return []; + public function checkAccess(array $entityValue): bool { + return FALSE; } - public function getDateFields(): array { + public function getDateFields(?array $entityValue = NULL): array { return []; } @@ -83,4 +101,10 @@ abstract class MappingBase extends AutoSubscriber implements MappingInterface { return TRUE; } + final public function applies(string $entity, string $action, array $values = []) { + return $entity === 'ActionSchedule' && + in_array($action, ['create', 'get', 'update', 'save'], TRUE) && + $this->getId() == ($values['mapping_id'] ?? NULL); + } + } diff --git a/civicrm/Civi/ActionSchedule/MappingInterface.php b/civicrm/Civi/ActionSchedule/MappingInterface.php index 42fe2e8a1f..609d40f7f1 100644 --- a/civicrm/Civi/ActionSchedule/MappingInterface.php +++ b/civicrm/Civi/ActionSchedule/MappingInterface.php @@ -11,25 +11,37 @@ namespace Civi\ActionSchedule; +use Civi\Api4\Service\Spec\Provider\Generic\SpecProviderInterface; + /** * Interface MappingInterface * @package Civi\ActionSchedule */ -interface MappingInterface { +interface MappingInterface extends SpecProviderInterface { /** * Unique identifier of this mapping type. * - * Should return a "machine name" style string (older implementations return an int -- don't follow their example). + * Should return a "machine_name" style string (same output as `getName()`) + * Note: Some legacy implementations return an int. Don't follow those examples. * @return string|int */ public function getId(); + /** + * Unique name of this mapping type. + * + * Should return a "machine_name" style string (should be the same as `getId()`). + * @return string + */ + public function getName(): string; + /** * Name of the table belonging to the main entity e.g. `civicrm_activity` + * @param \CRM_Core_DAO_ActionSchedule $actionSchedule * @return string */ - public function getEntityTable(): string; + public function getEntityTable(\CRM_Core_DAO_ActionSchedule $actionSchedule): string; /** * Main entity name e.g. `Activity` @@ -44,84 +56,72 @@ interface MappingInterface { public function getLabel(); /** - * Label of the primary filter field on the form, e.g. "Activity Type" - * @return string - */ - public function getValueHeader(): string; - - /** - * Get a printable label to use as the header on the 'status' filter. - * - * @return string + * Get option list for the `entity_value` field. */ - public function getStatusHeader(): string; + public function getValueLabels(): array; /** - * Get a list of value options. + * Get option list for the `entity_status` field. * - * @return array - * Array(string $value => string $label). - * Ex: array(123 => 'Phone Call', 456 => 'Meeting'). + * @param array|null $entityValue + * Selected value(s) of the `entity_value` field. */ - public function getValueLabels(): array; + public function getStatusLabels(?array $entityValue): array; /** - * Get a list of status options. + * Get option list for `start_action_date` & `end_date` fields. * - * @param string|int $value - * The list of status options may be contingent upon the selected filter value. - * This is the selected filter value. + * @param array|null $entityValue + * Selected value(s) of the `entity_value` field. * @return array - * Array(string $value => string $label). - * Ex: Array(123 => 'Completed', 456 => 'Scheduled'). */ - public function getStatusLabels($value): array; + public function getDateFields(?array $entityValue = NULL): array; /** - * Get a list of available date fields. + * Get the option list for `limit_to` (non-associative format) * * @return array - * Array(string $fieldName => string $fieldLabel). */ - public function getDateFields(): array; + public static function getLimitToOptions(): array; /** - * Get a list of recipient types. + * Get option list for `recipient` field. * * Note: A single schedule may filter on *zero* or *one* recipient types. * When an admin chooses a value, it's stored in $schedule->recipient. * * @return array - * array(string $value => string $label). - * Ex: array('assignee' => 'Activity Assignee'). + * Ex: ['assignee' => 'Activity Assignee', ...]. */ - public function getRecipientTypes(): array; + public static function getRecipientTypes(): array; /** - * Get a list of recipients which match the given type. - * - * Note: A single schedule may filter on *multiple* recipients. - * When an admin chooses value(s), it's stored in $schedule->recipient_listing. + * Get option list for `recipient_listing` field. * * @param string $recipientType - * Ex: 'participant_role'. + * Value of `recipient` field * @return array - * Array(mixed $name => string $label). - * Ex: array(1 => 'Attendee', 2 => 'Volunteer'). + * Ex: [1 => 'Attendee', 2 => 'Volunteer', ...]. * @see getRecipientTypes */ public function getRecipientListing($recipientType): array; /** - * Determine whether a schedule based on this mapping is sufficiently - * complete. + * Check if the user has permission to create a reminder for given `entity_value`. * - * @param \CRM_Core_DAO_ActionSchedule $schedule - * @return array - * Array (string $code => string $message). - * List of error messages. + * This function is called by the form to escalate permissions so that less-privileged users can + * create a reminder for a particular entity even if they do not have 'administer CiviCRM data'. + * + * Return FALSE and the default permission of 'administer CiviCRM data' will be enforced. + * + * Note that `entity_value` is a serialized field, so will be passed as an array, even though + * more than one value doesn't make sense in the context of embedding the ScheduledReminder form + * on a page belonging to a single entity. + * + * @param array $entityValue + * @return bool */ - public function validateSchedule($schedule): array; + public function checkAccess(array $entityValue): bool; /** * Generate a query to locate contacts who match the given diff --git a/civicrm/Civi/ActionSchedule/RecipientBuilder.php b/civicrm/Civi/ActionSchedule/RecipientBuilder.php index 959baf56f0..c58fa8b50c 100644 --- a/civicrm/Civi/ActionSchedule/RecipientBuilder.php +++ b/civicrm/Civi/ActionSchedule/RecipientBuilder.php @@ -190,9 +190,9 @@ class RecipientBuilder { ->merge($this->prepareAddlFilter('c.id')) ->where("c.id NOT IN ( SELECT rem.contact_id - FROM civicrm_action_log rem INNER JOIN {$this->mapping->getEntityTable()} e ON rem.entity_id = e.id + FROM civicrm_action_log rem INNER JOIN {$this->getMappingTable()} e ON rem.entity_id = e.id WHERE rem.action_schedule_id = {$this->actionSchedule->id} - AND rem.entity_table = '{$this->mapping->getEntityTable()}' + AND rem.entity_table = '{$this->getMappingTable()}' )") // Where does e.id come from here? ^^^ ->groupBy("c.id") @@ -276,7 +276,7 @@ class RecipientBuilder { $defaultParams = [ 'casActionScheduleId' => $this->actionSchedule->id, 'casMappingId' => $this->mapping->getId(), - 'casMappingEntity' => $this->mapping->getEntityTable(), + 'casMappingEntity' => $this->getMappingTable(), 'casNow' => $this->now, ]; @@ -402,7 +402,7 @@ class RecipientBuilder { $date = $operator . "(!casDateField, INTERVAL {$actionSchedule->start_action_offset} {$actionSchedule->start_action_unit})"; $startDateClauses[] = "'!casNow' >= {$date}"; // This is weird. Waddupwidat? - if ($this->mapping->getEntityTable() == 'civicrm_participant') { + if ($this->getMappingTable() == 'civicrm_participant') { $startDateClauses[] = $operator . "(!casNow, INTERVAL 1 DAY ) {$op} " . '!casDateField'; } else { @@ -566,7 +566,7 @@ WHERE $group.id = {$groupId} switch ($for) { case 'rel': $contactIdField = $query['casContactIdField']; - $entityName = $this->mapping->getEntityTable(); + $entityName = $this->getMappingTable(); $entityIdField = $query['casEntityIdField']; break; @@ -608,4 +608,8 @@ reminder.action_schedule_id = {$this->actionSchedule->id}"; return $this->mapping->resetOnTriggerDateChange($this->actionSchedule); } + protected function getMappingTable(): string { + return $this->mapping->getEntityTable($this->actionSchedule); + } + } diff --git a/civicrm/Civi/Angular/Manager.php b/civicrm/Civi/Angular/Manager.php index 3fb77b0f5d..9daf7ca622 100644 --- a/civicrm/Civi/Angular/Manager.php +++ b/civicrm/Civi/Angular/Manager.php @@ -56,7 +56,7 @@ class Manager { */ public function __construct($res, \CRM_Utils_Cache_Interface $cache = NULL) { $this->res = $res; - $this->cache = $cache ? $cache : new \CRM_Utils_Cache_ArrayCache([]); + $this->cache = $cache ?: new \CRM_Utils_Cache_ArrayCache([]); } /** diff --git a/civicrm/Civi/Api4/Action/GetActions.php b/civicrm/Civi/Api4/Action/GetActions.php index 1442543308..f1419fb4c3 100644 --- a/civicrm/Civi/Api4/Action/GetActions.php +++ b/civicrm/Civi/Api4/Action/GetActions.php @@ -35,7 +35,7 @@ class GetActions extends BasicGetAction { $entityReflection = new \ReflectionClass($className); foreach ($entityReflection->getMethods(\ReflectionMethod::IS_STATIC | \ReflectionMethod::IS_PUBLIC) as $method) { $actionName = $method->getName(); - if ($actionName != 'permissions' && $actionName != 'getInfo' && $actionName[0] != '_') { + if (!in_array($actionName, ['permissions', 'getInfo', 'getEntityName'], TRUE) && !str_starts_with($actionName, '_')) { $this->loadAction($actionName, $method); } } diff --git a/civicrm/Civi/Api4/Contact.php b/civicrm/Civi/Api4/Contact.php index b8ddca6aa0..eeb05eb9a1 100644 --- a/civicrm/Civi/Api4/Contact.php +++ b/civicrm/Civi/Api4/Contact.php @@ -21,6 +21,7 @@ namespace Civi\Api4; * @see https://docs.civicrm.org/user/en/latest/organising-your-data/contacts/ * @searchable primary * @orderBy sort_name + * @searchFields sort_name * @iconField contact_sub_type:icon,contact_type:icon * @since 5.19 * @package Civi\Api4 diff --git a/civicrm/templates/CRM/common/TrackingFields.tpl b/civicrm/Civi/Api4/Discount.php similarity index 61% rename from civicrm/templates/CRM/common/TrackingFields.tpl rename to civicrm/Civi/Api4/Discount.php index fa20918aac..f319b89d27 100644 --- a/civicrm/templates/CRM/common/TrackingFields.tpl +++ b/civicrm/Civi/Api4/Discount.php @@ -1,4 +1,5 @@ -{* +<?php +/* +--------------------------------------------------------------------+ | Copyright CiviCRM LLC. All rights reserved. | | | @@ -6,18 +7,17 @@ | permitted exceptions and without any warranty. For full license | | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ -*} -{if $trackingFields and ! empty($trackingFields)} -{literal} -<script type="text/javascript"> -CRM.$(function($) { -{/literal} - {foreach from=$trackingFields key=trackingFieldName item=dontCare} - $("#{$trackingFieldName}").parent().parent().hide( ); - {/foreach} -{literal} - } -); -</script> -{/literal} -{/if} + */ +namespace Civi\Api4; + +/** + * Discounts - time based discounts for events. + * + * @see https://docs.civicrm.org/user/en/latest/events/complex-event-fees/ + * @searchable none + * @since 5.66 + * @package Civi\Api4 + */ +class Discount extends Generic\DAOEntity { + +} diff --git a/civicrm/Civi/Api4/Entity.php b/civicrm/Civi/Api4/Entity.php index 5f36793aa7..fb2b4780e9 100644 --- a/civicrm/Civi/Api4/Entity.php +++ b/civicrm/Civi/Api4/Entity.php @@ -74,6 +74,11 @@ class Entity extends Generic\AbstractEntity { 'name' => 'label_field', 'description' => 'Field to show when displaying a record', ], + [ + 'name' => 'search_fields', + 'data_type' => 'Array', + 'description' => 'Fields to show in search context', + ], [ 'name' => 'icon_field', 'data_type' => 'Array', diff --git a/civicrm/Civi/Api4/EntitySet.php b/civicrm/Civi/Api4/EntitySet.php index b77fdae15a..f25208137c 100644 --- a/civicrm/Civi/Api4/EntitySet.php +++ b/civicrm/Civi/Api4/EntitySet.php @@ -39,6 +39,7 @@ class EntitySet extends Generic\AbstractEntity { } /** + * This isn't a "real" entity and doesn't have any fields * @return \Civi\Api4\Generic\BasicGetFieldsAction */ public static function getFields($checkPermissions = TRUE) { @@ -61,4 +62,11 @@ class EntitySet extends Generic\AbstractEntity { return $plural ? ts('Entity Sets') : ts('Entity Set'); } + public static function getInfo(): array { + $info = parent::getInfo(); + // This isn't a "real" entity and doesn't have any fields, so no primary key + $info['primary_key'] = []; + return $info; + } + } diff --git a/civicrm/Civi/Api4/Event/Subscriber/AutocompleteFieldSubscriber.php b/civicrm/Civi/Api4/Event/Subscriber/AutocompleteFieldSubscriber.php index 6afc71a2ed..3943c2a299 100644 --- a/civicrm/Civi/Api4/Event/Subscriber/AutocompleteFieldSubscriber.php +++ b/civicrm/Civi/Api4/Event/Subscriber/AutocompleteFieldSubscriber.php @@ -11,6 +11,8 @@ namespace Civi\Api4\Event\Subscriber; +use Civi\Api4\Generic\AutocompleteAction; +use Civi\Api4\Utils\CoreUtil; use Civi\Core\Service\AutoService; use Symfony\Component\EventDispatcher\EventSubscriberInterface; @@ -26,7 +28,7 @@ class AutocompleteFieldSubscriber extends AutoService implements EventSubscriber */ public static function getSubscribedEvents() { return [ - 'civi.api.prepare' => ['onApiPrepare', -50], + 'civi.api.prepare' => ['onApiPrepare', 150], ]; } @@ -48,6 +50,7 @@ class AutocompleteFieldSubscriber extends AutoService implements EventSubscriber public function onApiPrepare(\Civi\API\Event\PrepareEvent $event): void { $apiRequest = $event->getApiRequest(); if (is_object($apiRequest) && is_a($apiRequest, 'Civi\Api4\Generic\AutocompleteAction')) { + [$formType, $formName] = array_pad(explode(':', (string) $apiRequest->getFormName()), 2, ''); [$entityName, $fieldName] = array_pad(explode('.', (string) $apiRequest->getFieldName(), 2), 2, ''); if (!$fieldName) { @@ -64,6 +67,9 @@ class AutocompleteFieldSubscriber extends AutoService implements EventSubscriber $apiRequest->addFilter($key, $value); } + if ($formType === 'qf') { + $this->autocompleteProfilePermissions($apiRequest, $formName, $fieldSpec); + } } catch (\Exception $e) { // Ignore anything else. Extension using their own $fieldName notation can do their own handling. @@ -71,4 +77,81 @@ class AutocompleteFieldSubscriber extends AutoService implements EventSubscriber } } + /** + * This function opens up permissions for APIv4 Autocompletes to be used on public-facing profile forms. + * + * This is far from perfect because it tries to bridge two very different architectures. + * APIv4 Autocomplete callbacks receive the name of the form and the name of the field for validation purposes. + * This works for Afforms (see AfformAutocompleteSubscriber) but QuickForms lack a central API + * for looking up which fields belong to which form and whether a form is accessible to the current user. + * + * So this involves some verbose hard-coding and some guesswork... + */ + private function autocompleteProfilePermissions(AutocompleteAction $apiRequest, string $formName, array $fieldSpec): void { + // This only supports "Autocomplete-Select" custom field options for now. + // Be careful if opening this up to other types of entities, it could lead to unwanted permission bypass! + if ($apiRequest->getEntityName() !== 'OptionValue') { + return; + } + // For lack of any smarter way to do this, here's a <ugh> hard-coded list of public forms that allow profile fields + $publicForms = [ + 'CRM_Event_Form_Registration_Register' => 'civicrm_event', + 'CRM_Contribute_Form_ContributionBase' => 'civicrm_contribution_page', + 'CRM_Profile_Form' => NULL, + ]; + // Verify this form is one of the whitelisted public forms (or a subclass of it) + foreach (array_keys($publicForms) as $publicForm) { + if (is_a($formName, $publicForm, TRUE)) { + $formClass = $publicForm; + $entityTableName = $publicForms[$publicForm]; + } + } + if (!isset($formClass)) { + return; + } + $fieldName = !empty($fieldSpec['custom_field_id']) ? 'custom_' . $fieldSpec['custom_field_id'] : $fieldSpec['name']; + + // Verify this field belongs to an active profile embedded on the specified form + $profileFields = \Civi\Api4\UFField::get(FALSE) + ->addSelect('uf_group_id', 'is_searchable', 'uf_join.entity_table', 'uf_join.entity_id') + ->addJoin('UFJoin AS uf_join', 'INNER', ['uf_group_id', '=', 'uf_join.uf_group_id']) + ->addWhere('field_name', '=', $fieldName) + ->addWhere('is_active', '=', TRUE) + ->addWhere('uf_group_id.is_active', '=', TRUE) + ->addWhere('uf_join.is_active', '=', TRUE) + ->addWhere('uf_join.entity_table', $entityTableName ? '=' : 'IS NULL', $entityTableName) + ->execute(); + // Validate entity_id + foreach ($profileFields as $profileField) { + // For profiles embedded on an event/contribution page, verify the page is active. + // It would be nice if we could do a full-stack permission check here to see if the current + // user may to use the form for the given entity_id (e.g. is the event currently open) + // but that logic is stuck in the form layer and there's no api for it. + // Since this function only deals custom field option values, it's "secure enough" to verify + // the page is active. + if ($entityTableName) { + $enabled = civicrm_api4(CoreUtil::getApiNameFromTableName($entityTableName), 'get', [ + 'checkPermissions' => FALSE, + 'select' => ['row_count'], + 'where' => [ + ['is_active', '=', TRUE], + ['id', '=', $profileField['uf_join.entity_id']], + ], + ]); + if ($enabled->count()) { + $apiRequest->setCheckPermissions(FALSE); + } + } + // Standalone profiles - verify the user has permission to use them + else { + if ( + \CRM_Core_Permission::check('profile create') || + ($profileField['is_searchable'] && \CRM_Core_Permission::check('profile view')) + ) { + $apiRequest->setCheckPermissions(FALSE); + } + } + } + } + } diff --git a/civicrm/Civi/Api4/Generic/AbstractAction.php b/civicrm/Civi/Api4/Generic/AbstractAction.php index bef7843610..6e2d48ace8 100644 --- a/civicrm/Civi/Api4/Generic/AbstractAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractAction.php @@ -485,7 +485,7 @@ abstract class AbstractAction implements \ArrayAccess { $unmatched[] = $fieldName; } elseif (!empty($fieldInfo['required_if'])) { - if ($this->evaluateCondition($fieldInfo['required_if'], ['values' => $values])) { + if (self::evaluateCondition($fieldInfo['required_if'], ['values' => $values])) { $unmatched[] = $fieldName; } } @@ -549,7 +549,7 @@ abstract class AbstractAction implements \ArrayAccess { * @throws \CRM_Core_Exception * @throws \Exception */ - protected function evaluateCondition($expr, $vars) { + public static function evaluateCondition($expr, $vars) { if (strpos($expr, '}') !== FALSE || strpos($expr, '{') !== FALSE) { throw new \CRM_Core_Exception('Illegal character in expression'); } diff --git a/civicrm/Civi/Api4/Generic/AbstractEntity.php b/civicrm/Civi/Api4/Generic/AbstractEntity.php index 083e3359e2..cf5066410b 100644 --- a/civicrm/Civi/Api4/Generic/AbstractEntity.php +++ b/civicrm/Civi/Api4/Generic/AbstractEntity.php @@ -74,7 +74,7 @@ abstract class AbstractEntity { * * @return string */ - protected static function getEntityName() { + public static function getEntityName(): string { return self::stripNamespace(static::class); } @@ -177,7 +177,10 @@ abstract class AbstractEntity { $info[$field['name']] = $val; } } - + // search_fields defaults to label_field + if (empty($info['search_fields']) && !empty($info['label_field'])) { + $info['search_fields'] = [$info['label_field']]; + } if ($dao) { $info['description'] = $dao::getEntityDescription() ?? $info['description'] ?? NULL; } diff --git a/civicrm/Civi/Api4/Generic/AbstractGetAction.php b/civicrm/Civi/Api4/Generic/AbstractGetAction.php index 41b9c2d818..06af935336 100644 --- a/civicrm/Civi/Api4/Generic/AbstractGetAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractGetAction.php @@ -39,7 +39,7 @@ abstract class AbstractGetAction extends AbstractQueryAction { * * @throws \CRM_Core_Exception */ - protected function setDefaultWhereClause() { + public function setDefaultWhereClause() { if (!$this->_itemsToGet('id')) { $fields = $this->entityFields(); foreach ($fields as $field) { diff --git a/civicrm/Civi/Api4/Generic/AutocompleteAction.php b/civicrm/Civi/Api4/Generic/AutocompleteAction.php index 7a70d4d2fe..73ce6e9d4d 100644 --- a/civicrm/Civi/Api4/Generic/AutocompleteAction.php +++ b/civicrm/Civi/Api4/Generic/AutocompleteAction.php @@ -149,26 +149,32 @@ class AutocompleteAction extends AbstractAction { else { // Default search and sort field $labelField = $this->display['settings']['columns'][0]['key']; - $idField = CoreUtil::getIdFieldName($this->savedSearch['api_entity']); + $primaryKeys = CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'primary_key'); $this->display['settings'] += [ 'sort' => [$labelField, 'ASC'], ]; // Always search on the first line of the display $searchFields = [$labelField]; - // If input is an integer, search by id - $numericInput = $this->page == 1 && \CRM_Utils_Rule::positiveInteger($this->input); - if ($numericInput) { - $searchFields = [$idField]; + // If input is an integer... + $searchById = \CRM_Utils_Rule::positiveInteger($this->input) && + // ...and there is exactly one primary key (e.g. EntitySet has zero, others might have compound keys) + count($primaryKeys) === 1 && + // ...and the primary key field is type Integer (e.g. Afform.name is a String) + ($this->getField($primaryKeys[0])['data_type'] ?? NULL) === 'Integer'; + // ...then search by primary key on first page + $initialSearchById = $searchById && $this->page == 1; + if ($initialSearchById) { + $searchFields = $primaryKeys; } - // For subsequent pages when searching numeric input - elseif ($this->page > 1 && \CRM_Utils_Rule::positiveInteger($this->input)) { + // For subsequent pages when searching by id, subtract the "extra" first page + elseif ($searchById && $this->page > 1) { $this->page -= 1; } // If first line uses a rewrite, search on those fields too - if (!empty($this->display['settings']['columns'][0]['rewrite'])) { + if (!$initialSearchById && !empty($this->display['settings']['columns'][0]['rewrite'])) { $searchFields = array_merge($searchFields, $this->getTokens($this->display['settings']['columns'][0]['rewrite'])); } - $this->display['settings']['limit'] = $this->display['settings']['limit'] ?? \Civi::settings()->get('search_autocomplete_count') ?: 10; + $this->display['settings']['limit'] = $this->display['settings']['limit'] ?? \Civi::settings()->get('search_autocomplete_count'); $this->display['settings']['pager'] = []; $return = 'scroll:' . $this->page; // SearchKit treats comma-separated fieldnames as OR clauses @@ -198,7 +204,7 @@ class AutocompleteAction extends AbstractAction { $result[] = $item; } $result->setCountMatched($apiResult->count()); - if (!empty($numericInput)) { + if (!empty($initialSearchById)) { // Trigger "more results" after searching by exact id $result->setCountMatched($apiResult->count() + 1); } diff --git a/civicrm/Civi/Api4/Generic/BasicGetAction.php b/civicrm/Civi/Api4/Generic/BasicGetAction.php index 15c9951d8a..1a70866d18 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetAction.php @@ -47,7 +47,6 @@ class BasicGetAction extends AbstractGetAction { * @param \Civi\Api4\Generic\Result $result */ public function _run(Result $result) { - $this->setDefaultWhereClause(); $this->expandSelectClauseWildcards(); $values = $this->getRecords(); $this->formatRawValues($values); @@ -106,9 +105,9 @@ class BasicGetAction extends AbstractGetAction { $fields = $this->entityFields(); foreach ($records as &$values) { foreach ($this->entityFields() as $field) { - $values += [$field['name'] => NULL]; + $values += [$field['name'] => $field['default_value'] ?? NULL]; if (!empty($field['options'])) { - foreach (FormattingUtil::$pseudoConstantSuffixes as $suffix) { + foreach ($field['suffixes'] ?? FormattingUtil::$pseudoConstantSuffixes as $suffix) { $pseudofield = $field['name'] . ':' . $suffix; if (!isset($values[$pseudofield]) && isset($values[$field['name']]) && $this->_isFieldSelected($pseudofield)) { $values[$pseudofield] = $values[$field['name']]; diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php index acf0f27854..895701f2ad 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -171,7 +171,7 @@ class BasicGetFieldsAction extends BasicGetAction { $field['options'] = self::pseudoconstantOptions($field['pseudoconstant']['optionGroupName']); } elseif (!empty($field['pseudoconstant']['callback'])) { - $field['options'] = call_user_func(\Civi\Core\Resolver::singleton()->get($field['pseudoconstant']['callback']), $field['name'], []); + $field['options'] = call_user_func(\Civi\Core\Resolver::singleton()->get($field['pseudoconstant']['callback']), $field['name'], ['values' => $this->getValues()]); } else { throw new \CRM_Core_Exception('Unsupported pseudoconstant type for field "' . $field['name'] . '"'); @@ -327,8 +327,10 @@ class BasicGetFieldsAction extends BasicGetAction { 'Location' => ts('Address Location'), 'Number' => ts('Number'), 'Radio' => ts('Radio Buttons'), + 'RichTextEditor' => ts('Rich Text Editor'), 'Select' => ts('Select'), - 'Text' => ts('Text'), + 'Text' => ts('Single-Line Text'), + 'TextArea' => ts('Multi-Line Text'), ], ], [ @@ -363,6 +365,10 @@ class BasicGetFieldsAction extends BasicGetAction { 'data_type' => 'Boolean', 'default_value' => FALSE, ], + [ + 'name' => 'permission', + 'data_type' => 'Array', + ], [ 'name' => 'output_formatters', 'data_type' => 'Array', diff --git a/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php b/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php index 97f75e6cce..af58d1fc06 100644 --- a/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/DAOGetFieldsAction.php @@ -138,10 +138,6 @@ class DAOGetFieldsAction extends BasicGetFieldsAction { 'name' => 'custom_field_id', 'data_type' => 'Integer', ]; - $fields[] = [ - 'name' => 'custom_group_id', - 'data_type' => 'Integer', - ]; $fields[] = [ 'name' => 'sql_filters', 'data_type' => 'Array', diff --git a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php index 4f034e5bd2..f42d77a15e 100644 --- a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php @@ -4,7 +4,10 @@ namespace Civi\Api4\Generic\Traits; use Civi\API\Exception\UnauthorizedException; use Civi\API\Request; +use Civi\Api4\Query\SqlEquation; use Civi\Api4\Query\SqlExpression; +use Civi\Api4\Query\SqlField; +use Civi\Api4\Query\SqlFunction; use Civi\Api4\SavedSearch; use Civi\Api4\Utils\CoreUtil; @@ -44,6 +47,11 @@ trait SavedSearchInspectorTrait { */ private $_searchEntityFields; + /** + * @var array + */ + private $_joinMap; + /** * If SavedSearch is supplied as a string, this will load it as an array * @param int|null $id @@ -66,7 +74,7 @@ trait SavedSearchInspectorTrait { $this->savedSearch['api_params'] += ['version' => 4, 'select' => [], 'where' => []]; } // Reset internal cached metadata - $this->_selectQuery = $this->_selectClause = $this->_searchEntityFields = NULL; + $this->_selectQuery = $this->_selectClause = $this->_searchEntityFields = $this->_joinMap = NULL; $this->_apiParams = ($this->savedSearch['api_params'] ?? []) + ['select' => [], 'where' => []]; } @@ -118,11 +126,12 @@ trait SavedSearchInspectorTrait { } /** - * @param $joinAlias + * @param string $joinAlias + * Alias of the join, with or without the trailing dot * @return array{entity: string, alias: string, table: string, bridge: string|NULL}|NULL */ - protected function getJoin($joinAlias) { - return $this->getQuery() ? $this->getQuery()->getExplicitJoin($joinAlias) : NULL; + protected function getJoin(string $joinAlias) { + return $this->getQuery() ? $this->getQuery()->getExplicitJoin(rtrim($joinAlias, '.')) : NULL; } /** @@ -360,4 +369,67 @@ trait SavedSearchInspectorTrait { } } + /** + * @param \Civi\Api4\Query\SqlExpression $expr + * @return string + */ + protected function getColumnLabel(SqlExpression $expr) { + if ($expr instanceof SqlFunction) { + $args = []; + foreach ($expr->getArgs() as $arg) { + foreach ($arg['expr'] ?? [] as $ex) { + $args[] = $this->getColumnLabel($ex); + } + } + return '(' . $expr->getTitle() . ')' . ($args ? ' ' . implode(',', array_filter($args)) : ''); + } + if ($expr instanceof SqlEquation) { + $args = []; + foreach ($expr->getArgs() as $arg) { + if (is_array($arg) && !empty($arg['expr'])) { + $args[] = $this->getColumnLabel(SqlExpression::convert($arg['expr'])); + } + } + return '(' . implode(',', array_filter($args)) . ')'; + } + elseif ($expr instanceof SqlField) { + $field = $this->getField($expr->getExpr()); + $label = ''; + if (!empty($field['explicit_join'])) { + $label = $this->getJoinLabel($field['explicit_join']) . ': '; + } + if (!empty($field['implicit_join']) && empty($field['custom_field_id'])) { + $field = $this->getField(substr($expr->getAlias(), 0, -1 - strlen($field['name']))); + } + return $label . $field['label']; + } + else { + return NULL; + } + } + + /** + * @param string $joinAlias + * @return string + */ + protected function getJoinLabel($joinAlias) { + if (!isset($this->_joinMap)) { + $this->_joinMap = []; + $joinCount = [$this->savedSearch['api_entity'] => 1]; + foreach ($this->savedSearch['api_params']['join'] ?? [] as $join) { + [$entityName, $alias] = explode(' AS ', $join[0]); + $num = ''; + if (!empty($joinCount[$entityName])) { + $num = ' ' . (++$joinCount[$entityName]); + } + else { + $joinCount[$entityName] = 1; + } + $label = CoreUtil::getInfoItem($entityName, 'title'); + $this->_joinMap[$alias] = $label . $num; + } + } + return $this->_joinMap[$joinAlias]; + } + } diff --git a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php index 82bb3bf5d0..91c30f9784 100644 --- a/civicrm/Civi/Api4/Provider/ActionObjectProvider.php +++ b/civicrm/Civi/Api4/Provider/ActionObjectProvider.php @@ -172,7 +172,7 @@ class ActionObjectProvider extends AutoService implements EventSubscriberInterfa * Scan all api directories to discover entities * @return \Civi\Api4\Generic\AbstractEntity[] */ - private function getAllApiClasses() { + public function getAllApiClasses(): array { $classNames = []; $locations = array_merge([\Civi::paths()->getPath('[civicrm.root]/Civi.php')], array_column(\CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles(), 'filePath') diff --git a/civicrm/Civi/Api4/Query/Api4EntitySetQuery.php b/civicrm/Civi/Api4/Query/Api4EntitySetQuery.php index 5e553f2217..3be5f7c2ce 100644 --- a/civicrm/Civi/Api4/Query/Api4EntitySetQuery.php +++ b/civicrm/Civi/Api4/Query/Api4EntitySetQuery.php @@ -119,7 +119,7 @@ class Api4EntitySetQuery extends Api4Query { $expr = SqlExpression::convert($item, TRUE); $alias = $expr->getAlias(); $this->selectAliases[$alias] = $expr->getExpr(); - $this->query->select($expr->render($this) . " AS `$alias`"); + $this->query->select($expr->render($this, TRUE)); } } diff --git a/civicrm/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/Civi/Api4/Query/Api4SelectQuery.php index 26d09e1897..95de27e36e 100644 --- a/civicrm/Civi/Api4/Query/Api4SelectQuery.php +++ b/civicrm/Civi/Api4/Query/Api4SelectQuery.php @@ -46,7 +46,7 @@ class Api4SelectQuery extends Api4Query { public $forceSelectId = TRUE; /** - * @var array + * @var array{entity: string, alias: string, table: string, on: array, bridge: string|NULL}[] */ private $explicitJoins = []; @@ -198,7 +198,7 @@ class Api4SelectQuery extends Api4Query { throw new \CRM_Core_Exception('Cannot use existing field name as alias'); } $this->selectAliases[$alias] = $expr->getExpr(); - $this->query->select($expr->render($this) . " AS `$alias`"); + $this->query->select($expr->render($this, TRUE)); } } } @@ -897,19 +897,43 @@ class Api4SelectQuery extends Api4Query { /** * @param string $alias - * @return array{entity: string, alias: string, table: string, bridge: string|NULL}|NULL + * @return array{entity: string, alias: string, table: string, on: array, bridge: string|NULL}|NULL */ public function getExplicitJoin($alias) { return $this->explicitJoins[$alias] ?? NULL; } /** - * @return array{entity: string, alias: string, table: string, bridge: string|NULL}[] + * @return array{entity: string, alias: string, table: string, on: array, bridge: string|NULL}[] */ - public function getExplicitJoins() { + public function getExplicitJoins(): array { return $this->explicitJoins; } + /** + * If a join is based on another join, return the name of the other. + * + * @param string $joinAlias + * @return string|null + */ + public function getJoinParent(string $joinAlias): ?string { + $join = $this->getExplicitJoin($joinAlias); + foreach ($join['on'] ?? [] as $clause) { + $prefix = $join['alias'] . '.'; + if ( + count($clause) === 3 && $clause[1] === '=' && + (str_starts_with($clause[0], $prefix) || str_starts_with($clause[2], $prefix)) + ) { + $otherField = str_starts_with($clause[0], $prefix) ? $clause[2] : $clause[0]; + [$otherJoin] = explode('.', $otherField); + if (str_contains($otherField, '.') && $this->getExplicitJoin($otherJoin)) { + return $otherJoin; + } + } + } + return NULL; + } + /** * Returns rendered expression or alias if it is already aliased in the SELECT clause. * diff --git a/civicrm/Civi/Api4/Query/SqlBool.php b/civicrm/Civi/Api4/Query/SqlBool.php index 36aeb3ee1f..3577a31eb1 100644 --- a/civicrm/Civi/Api4/Query/SqlBool.php +++ b/civicrm/Civi/Api4/Query/SqlBool.php @@ -21,8 +21,8 @@ class SqlBool extends SqlExpression { protected function initialize() { } - public function render(Api4Query $query): string { - return $this->expr === 'TRUE' ? '1' : '0'; + public function render(Api4Query $query, bool $includeAlias = FALSE): string { + return ($this->expr === 'TRUE' ? '1' : '0') . ($includeAlias ? " AS `{$this->getAlias()}`" : ''); } public static function getTitle(): string { diff --git a/civicrm/Civi/Api4/Query/SqlEquation.php b/civicrm/Civi/Api4/Query/SqlEquation.php index a6dd5f564f..04f08cbe15 100644 --- a/civicrm/Civi/Api4/Query/SqlEquation.php +++ b/civicrm/Civi/Api4/Query/SqlEquation.php @@ -77,9 +77,10 @@ class SqlEquation extends SqlExpression { * Render the expression for insertion into the sql query * * @param \Civi\Api4\Query\Api4Query $query + * @param bool $includeAlias * @return string */ - public function render(Api4Query $query): string { + public function render(Api4Query $query, bool $includeAlias = FALSE): string { $output = []; foreach ($this->args as $i => $arg) { // Just an operator @@ -98,7 +99,7 @@ class SqlEquation extends SqlExpression { $output[] = $arg->render($query); } } - return '(' . implode(' ', $output) . ')'; + return '(' . implode(' ', $output) . ')' . ($includeAlias ? " AS `{$this->getAlias()}`" : ''); } /** @@ -133,11 +134,10 @@ class SqlEquation extends SqlExpression { * Change $dataType according to operator used in equation * * @see \Civi\Api4\Utils\FormattingUtil::formatOutputValues - * @param string $value - * @param string $dataType - * @return string + * @param string|null $dataType + * @param array $values */ - public function formatOutputValue($value, &$dataType) { + public function formatOutputValue(?string &$dataType, array &$values) { foreach (self::$comparisonOperators as $op) { if (strpos($this->expr, " $op ")) { $dataType = 'Boolean'; @@ -148,7 +148,6 @@ class SqlEquation extends SqlExpression { $dataType = 'Float'; } } - return $value; } public static function getTitle(): string { diff --git a/civicrm/Civi/Api4/Query/SqlExpression.php b/civicrm/Civi/Api4/Query/SqlExpression.php index 9416a9aa3a..9555152db6 100644 --- a/civicrm/Civi/Api4/Query/SqlExpression.php +++ b/civicrm/Civi/Api4/Query/SqlExpression.php @@ -145,9 +145,12 @@ abstract class SqlExpression { * Renders expression to a sql string, replacing field names with column names. * * @param \Civi\Api4\Query\Api4Query $query + * @param bool $includeAlias * @return string */ - abstract public function render(Api4Query $query): string; + public function render(Api4Query $query, bool $includeAlias = FALSE): string { + return $this->expr . ($includeAlias ? " AS `{$this->getAlias()}`" : ''); + } /** * @return string diff --git a/civicrm/Civi/Api4/Query/SqlField.php b/civicrm/Civi/Api4/Query/SqlField.php index 862f67aea0..0f2fb26aba 100644 --- a/civicrm/Civi/Api4/Query/SqlField.php +++ b/civicrm/Civi/Api4/Query/SqlField.php @@ -25,13 +25,13 @@ class SqlField extends SqlExpression { $this->fields[] = $this->expr; } - public function render(Api4Query $query): string { + public function render(Api4Query $query, bool $includeAlias = FALSE): string { $field = $query->getField($this->expr, TRUE); + $rendered = $field['sql_name']; if (!empty($field['sql_renderer'])) { - $renderer = $field['sql_renderer']; - return $renderer($field, $query); + $rendered = $field['sql_renderer']($field, $query); } - return $field['sql_name']; + return $rendered . ($includeAlias ? " AS `{$this->getAlias()}`" : ''); } public static function getTitle(): string { diff --git a/civicrm/Civi/Api4/Query/SqlFunction.php b/civicrm/Civi/Api4/Query/SqlFunction.php index a766e95bbd..44a0b097d5 100644 --- a/civicrm/Civi/Api4/Query/SqlFunction.php +++ b/civicrm/Civi/Api4/Query/SqlFunction.php @@ -109,43 +109,42 @@ abstract class SqlFunction extends SqlExpression { /** * Set $dataType and convert value by suffix * + * @param string|null $dataType + * @param array $values + * @param string $key * @see \Civi\Api4\Utils\FormattingUtil::formatOutputValues - * @param string $value - * @param string $dataType - * @return string */ - public function formatOutputValue($value, &$dataType) { + public function formatOutputValue(?string &$dataType, array &$values, string $key): void { if (static::$dataType) { $dataType = static::$dataType; } - if (isset($value) && $this->suffix && $this->suffix !== 'id') { + if (isset($values[$key]) && $this->suffix && $this->suffix !== 'id') { $dataType = 'String'; + $value =& $values[$key]; $option = $this->getOptions()[$value] ?? NULL; // Option contains an array of suffix keys if (is_array($option)) { - return $option[$this->suffix] ?? NULL; + $value = $option[$this->suffix] ?? NULL; } // Flat arrays are name/value pairs elseif ($this->suffix === 'label') { - return $option; - } - elseif ($this->suffix === 'name') { - return $value; + $value = $option; } - else { - return NULL; + // Name needs no transformation, and any other suffix is invalid + elseif ($this->suffix !== 'name') { + $value = NULL; } } - return $value; } /** * Render the expression for insertion into the sql query * * @param \Civi\Api4\Query\Api4Query $query + * @param bool $includeAlias * @return string */ - public function render(Api4Query $query): string { + public function render(Api4Query $query, bool $includeAlias = FALSE): string { $output = ''; foreach ($this->args as $arg) { $rendered = $this->renderArg($arg, $query); @@ -153,7 +152,7 @@ abstract class SqlFunction extends SqlExpression { $output .= (strlen($output) ? ' ' : '') . $rendered; } } - return $this->renderExpression($output); + return $this->renderExpression($output) . ($includeAlias ? " AS `{$this->getAlias()}`" : ''); } /** @@ -162,7 +161,7 @@ abstract class SqlFunction extends SqlExpression { * @param string $output * @return string */ - protected function renderExpression($output): string { + protected function renderExpression(string $output): string { return $this->getName() . '(' . $output . ')'; } diff --git a/civicrm/Civi/Api4/Query/SqlFunctionDAYSTOANNIV.php b/civicrm/Civi/Api4/Query/SqlFunctionDAYSTOANNIV.php index b47a4a1b31..14f85b2ccc 100644 --- a/civicrm/Civi/Api4/Query/SqlFunctionDAYSTOANNIV.php +++ b/civicrm/Civi/Api4/Query/SqlFunctionDAYSTOANNIV.php @@ -46,7 +46,7 @@ class SqlFunctionDAYSTOANNIV extends SqlFunction { /** * @inheritDoc */ - protected function renderExpression($output): string { + protected function renderExpression(string $output): string { return "DATEDIFF( IF( DATE(CONCAT(YEAR(CURDATE()), '-', MONTH({$output}), '-', DAY({$output}))) < CURDATE(), diff --git a/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php index e9f72907cc..7af9a2f64d 100644 --- a/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php +++ b/civicrm/Civi/Api4/Query/SqlFunctionGROUP_CONCAT.php @@ -11,6 +11,8 @@ namespace Civi\Api4\Query; +use Civi\Api4\Utils\CoreUtil; + /** * Sql function */ @@ -23,9 +25,9 @@ class SqlFunctionGROUP_CONCAT extends SqlFunction { protected static function params(): array { return [ [ - 'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct')], + 'flag_before' => ['' => NULL, 'DISTINCT' => ts('Distinct Value'), 'UNIQUE' => ts('Unique Record')], 'max_expr' => 1, - 'must_be' => ['SqlField', 'SqlFunction'], + 'must_be' => ['SqlField', 'SqlFunction', 'SqlEquation'], 'optional' => FALSE, ], [ @@ -52,26 +54,38 @@ class SqlFunctionGROUP_CONCAT extends SqlFunction { /** * Reformat result as array if using default separator * + * @param string|null $dataType + * @param array $values + * @param string $key * @see \Civi\Api4\Utils\FormattingUtil::formatOutputValues - * @param string $value - * @param string $dataType - * @return string|array */ - public function formatOutputValue($value, &$dataType) { + public function formatOutputValue(?string &$dataType, array &$values, string $key): void { $exprArgs = $this->getArgs(); // By default, values are split into an array and formatted according to the field's dataType if (isset($exprArgs[2]['expr'][0]->expr) && $exprArgs[2]['expr'][0]->expr === \CRM_Core_DAO::VALUE_SEPARATOR) { - $value = explode(\CRM_Core_DAO::VALUE_SEPARATOR, $value); - // If the first expression is another sqlFunction, allow it to control the dataType - if ($exprArgs[0]['expr'][0] instanceof SqlFunction) { - $exprArgs[0]['expr'][0]->formatOutputValue(NULL, $dataType); + $values[$key] = explode(\CRM_Core_DAO::VALUE_SEPARATOR, $values[$key]); + // If the first expression is a SqlFunction/SqlEquation, allow it to control the dataType + if (method_exists($exprArgs[0]['expr'][0], 'formatOutputValue')) { + foreach (array_keys($values[$key]) as $index) { + $exprArgs[0]['expr'][0]->formatOutputValue($dataType, $values[$key], $index); + } + } + // Perform deduping by unique id + if ($this->args[0]['prefix'] === ['UNIQUE'] && isset($values["_$key"])) { + $ids = \CRM_Utils_Array::explodePadded($values["_$key"]); + unset($values["_$key"]); + foreach ($ids as $index => $id) { + if (in_array($id, array_slice($ids, 0, $index))) { + unset($values[$key][$index]); + } + } + $values[$key] = array_values($values[$key]); } } // If using custom separator, preserve raw string else { $dataType = 'String'; } - return $value; } /** @@ -88,4 +102,40 @@ class SqlFunctionGROUP_CONCAT extends SqlFunction { return ts('All values in the grouping.'); } + public function render(Api4Query $query, bool $includeAlias = FALSE): string { + $result = ''; + // Handle pseudo-prefix `UNIQUE` which is like `DISTINCT` but based on the record id rather than the field value + if ($this->args[0]['prefix'] === ['UNIQUE']) { + $this->args[0]['prefix'] = []; + $expr = $this->args[0]['expr'][0]; + $field = $query->getField($expr->getFields()[0]); + if ($field) { + $idField = CoreUtil::getIdFieldName($field['entity']); + $idFieldKey = substr($expr->getFields()[0], 0, 0 - strlen($field['name'])) . $idField; + // Keep the ordering consistent + if (empty($this->args[1]['prefix'])) { + $this->args[1] = [ + 'prefix' => ['ORDER BY'], + 'expr' => [SqlExpression::convert($idFieldKey)], + 'suffix' => [], + ]; + } + // Already a unique field, so DISTINCT will work fine + if ($field['name'] === $idField) { + $this->args[0]['prefix'] = ['DISTINCT']; + } + // Add a unique field on which to dedupe in postprocessing (@see self::formatOutputValue) + elseif ($includeAlias) { + $orderByKey = $this->args[1]['expr'][0]->getFields()[0]; + $extraSelectAlias = '_' . $this->getAlias(); + $extraSelect = SqlExpression::convert("GROUP_CONCAT($idFieldKey ORDER BY $orderByKey) AS $extraSelectAlias", TRUE); + $query->selectAliases[$extraSelectAlias] = $extraSelect->getExpr(); + $result .= $extraSelect->render($query, TRUE) . ','; + } + } + } + $result .= parent::render($query, $includeAlias); + return $result; + } + } diff --git a/civicrm/Civi/Api4/Query/SqlNull.php b/civicrm/Civi/Api4/Query/SqlNull.php index 312f01fa4b..935ff6cdf2 100644 --- a/civicrm/Civi/Api4/Query/SqlNull.php +++ b/civicrm/Civi/Api4/Query/SqlNull.php @@ -19,10 +19,6 @@ class SqlNull extends SqlExpression { protected function initialize() { } - public function render(Api4Query $query): string { - return 'NULL'; - } - public static function getTitle(): string { return ts('Null'); } diff --git a/civicrm/Civi/Api4/Query/SqlNumber.php b/civicrm/Civi/Api4/Query/SqlNumber.php index 82c784a845..d8e301f53c 100644 --- a/civicrm/Civi/Api4/Query/SqlNumber.php +++ b/civicrm/Civi/Api4/Query/SqlNumber.php @@ -22,10 +22,6 @@ class SqlNumber extends SqlExpression { \CRM_Utils_Type::validate($this->expr, 'Float'); } - public function render(Api4Query $query): string { - return $this->expr; - } - public static function getTitle(): string { return ts('Number'); } diff --git a/civicrm/Civi/Api4/Query/SqlString.php b/civicrm/Civi/Api4/Query/SqlString.php index 1efcaf15bb..cd6db545e5 100644 --- a/civicrm/Civi/Api4/Query/SqlString.php +++ b/civicrm/Civi/Api4/Query/SqlString.php @@ -27,8 +27,8 @@ class SqlString extends SqlExpression { $this->expr = str_replace(['\\\\', "\\$quot", $backslash], [$backslash, $quot, '\\\\'], $str); } - public function render(Api4Query $query): string { - return '"' . \CRM_Core_DAO::escapeString($this->expr) . '"'; + public function render(Api4Query $query, bool $includeAlias = FALSE): string { + return '"' . \CRM_Core_DAO::escapeString($this->expr) . '"' . ($includeAlias ? " AS `{$this->getAlias()}`" : ''); } /** diff --git a/civicrm/Civi/Api4/Query/SqlWild.php b/civicrm/Civi/Api4/Query/SqlWild.php index 972c47f1d8..f59bcf1208 100644 --- a/civicrm/Civi/Api4/Query/SqlWild.php +++ b/civicrm/Civi/Api4/Query/SqlWild.php @@ -19,10 +19,6 @@ class SqlWild extends SqlExpression { protected function initialize() { } - public function render(Api4Query $query): string { - return '*'; - } - public static function getTitle(): string { return ts('Wild'); } diff --git a/civicrm/Civi/Api4/Relationship.php b/civicrm/Civi/Api4/Relationship.php index bed75391c4..0be9f893ef 100644 --- a/civicrm/Civi/Api4/Relationship.php +++ b/civicrm/Civi/Api4/Relationship.php @@ -15,6 +15,7 @@ namespace Civi\Api4; * * @see https://docs.civicrm.org/user/en/latest/organising-your-data/relationships/ * @searchable none + * @searchFields contact_id_a.sort_name,relationship_type_id.label_a_b,contact_id_b.sort_name * @since 5.19 * @package Civi\Api4 */ @@ -29,4 +30,16 @@ class Relationship extends Generic\DAOEntity { ->setCheckPermissions($checkPermissions); } + /** + * @return array + */ + public static function permissions(): array { + return [ + 'meta' => ['access CiviCRM'], + // get managed by CRM_Core_BAO::addSelectWhereClause + // create/update/delete managed by CRM_Contact_BAO_Relationship::_checkAccess + 'default' => [], + ]; + } + } diff --git a/civicrm/Civi/Api4/RelationshipCache.php b/civicrm/Civi/Api4/RelationshipCache.php index 3beee1ab43..1b3e350fcf 100644 --- a/civicrm/Civi/Api4/RelationshipCache.php +++ b/civicrm/Civi/Api4/RelationshipCache.php @@ -14,6 +14,7 @@ namespace Civi\Api4; * RelationshipCache - readonly table to facilitate joining and finding contacts by relationship. * * @searchable secondary + * @searchFields near_contact_id.sort_name,near_relation:label,far_contact_id.sort_name * @see \Civi\Api4\Relationship * @ui_join_filters near_relation * @since 5.29 diff --git a/civicrm/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php index 144035c90a..843ef5fea3 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/ActivityAutocompleteProvider.php @@ -36,7 +36,7 @@ class ActivityAutocompleteProvider extends \Civi\Core\Service\AutoService implem 'id', 'subject', 'activity_date_time', - 'Activity_ActivityContact_Contact_01.display_name', + 'Activity_ActivityContact_Contact_01.sort_name', 'activity_type_id:label', ], 'orderBy' => [], @@ -97,8 +97,8 @@ class ActivityAutocompleteProvider extends \Civi\Core\Service\AutoService implem [$entity, $contactAlias] = explode(' AS ', $join[0]); if ($entity === 'Contact') { array_unshift($e->display['settings']['sort'], ["$contactAlias.sort_name", 'ASC']); - $e->display['settings']['columns'][0]['rewrite'] = "[$contactAlias.display_name] - [subject]"; - $e->display['settings']['columns'][0]['empty_value'] = "[$contactAlias.display_name] (" . ts('no subject') . ')'; + $e->display['settings']['columns'][0]['rewrite'] = "[$contactAlias.sort_name] - [subject]"; + $e->display['settings']['columns'][0]['empty_value'] = "[$contactAlias.sort_name] (" . ts('no subject') . ')'; break; } } diff --git a/civicrm/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php index ed13b5c951..e28e6fbaf9 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/CaseAutocompleteProvider.php @@ -35,7 +35,7 @@ class CaseAutocompleteProvider extends \Civi\Core\Service\AutoService implements 'select' => [ 'id', 'subject', - 'Case_CaseContact_Contact_01.display_name', + 'Case_CaseContact_Contact_01.sort_name', 'case_type_id:label', 'status_id:label', 'start_date', @@ -94,8 +94,8 @@ class CaseAutocompleteProvider extends \Civi\Core\Service\AutoService implements [$entity, $contactAlias] = explode(' AS ', $join[0]); if ($entity === 'Contact') { array_unshift($e->display['settings']['sort'], ["$contactAlias.sort_name", 'ASC']); - $e->display['settings']['columns'][0]['rewrite'] = "[$contactAlias.display_name] - [subject]"; - $e->display['settings']['columns'][0]['empty_value'] = "[$contactAlias.display_name] (" . ts('no subject') . ')'; + $e->display['settings']['columns'][0]['rewrite'] = "[$contactAlias.sort_name] - [subject]"; + $e->display['settings']['columns'][0]['empty_value'] = "[$contactAlias.sort_name] (" . ts('no subject') . ')'; break; } } diff --git a/civicrm/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php index 1aadc64464..b676baa692 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/ContactAutocompleteProvider.php @@ -12,6 +12,7 @@ namespace Civi\Api4\Service\Autocomplete; +use Civi\API\Event\PrepareEvent; use Civi\Core\Event\GenericHookEvent; use Civi\Core\HookInterface; @@ -21,6 +22,27 @@ use Civi\Core\HookInterface; */ class ContactAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface { + /** + * Set filters for the menubar quicksearch. + * + * @param \Civi\API\Event\PrepareEvent $event + */ + public static function on_civi_api_prepare(PrepareEvent $event) { + $apiRequest = $event->getApiRequest(); + if (is_object($apiRequest) && + is_a($apiRequest, 'Civi\Api4\Generic\AutocompleteAction') && + $apiRequest->getFormName() === 'crmMenubar' && + $apiRequest->getFieldName() === 'crm-qsearch-input' + ) { + $allowedFilters = \Civi::settings()->get('quicksearch_options'); + foreach ($apiRequest->getFilters() as $fieldName => $val) { + if (in_array($fieldName, $allowedFilters)) { + $apiRequest->addFilter($fieldName, $val); + } + } + } + } + /** * Provide default SearchDisplay for Contact autocompletes * @@ -37,7 +59,7 @@ class ContactAutocompleteProvider extends \Civi\Core\Service\AutoService impleme 'columns' => [ [ 'type' => 'field', - 'key' => 'display_name', + 'key' => 'sort_name', 'icons' => [ ['field' => 'contact_sub_type:icon'], ['field' => 'contact_type:icon'], @@ -51,6 +73,27 @@ class ContactAutocompleteProvider extends \Civi\Core\Service\AutoService impleme ], ], ]; + // Adjust display for quicksearch input - the display only needs one column + // as the menubar autocomplete does not support descriptions + if (($e->context['formName'] ?? NULL) === 'crmMenubar' && ($e->context['fieldName'] ?? NULL) === 'crm-qsearch-input') { + $column = ['type' => 'field']; + // If doing a search by a field other than the default + if (!empty($e->context['filters'])) { + $filterField = array_keys($e->context['filters'])[0]; + } + elseif (\Civi::settings()->get('includeEmailInName')) { + $filterField = 'email_primary.email'; + } + if ($filterField) { + $column['key'] = $filterField; + $column['rewrite'] = "[sort_name] :: [$filterField]"; + $column['empty_value'] = '[sort_name]'; + } + else { + $column['key'] = 'sort_name'; + } + $e->display['settings']['columns'] = [$column]; + } } } diff --git a/civicrm/Civi/Api4/Service/Autocomplete/ContributionAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/ContributionAutocompleteProvider.php index 916a6c56d6..114b3f4b29 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/ContributionAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/ContributionAutocompleteProvider.php @@ -34,7 +34,7 @@ class ContributionAutocompleteProvider extends \Civi\Core\Service\AutoService im 'version' => 4, 'select' => [ 'id', - 'contact_id.display_name', + 'contact_id.sort_name', 'total_amount', 'receive_date', 'financial_type_id:label', @@ -66,8 +66,8 @@ class ContributionAutocompleteProvider extends \Civi\Core\Service\AutoService im 'columns' => [ [ 'type' => 'field', - 'key' => 'contact_id.display_name', - 'rewrite' => '[contact_id.display_name] - [total_amount]', + 'key' => 'contact_id.sort_name', + 'rewrite' => '[contact_id.sort_name] - [total_amount]', ], [ 'type' => 'field', diff --git a/civicrm/Civi/Api4/Service/Autocomplete/ContributionRecurAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/ContributionRecurAutocompleteProvider.php index 4f845248cb..7d3ddae797 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/ContributionRecurAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/ContributionRecurAutocompleteProvider.php @@ -34,7 +34,7 @@ class ContributionRecurAutocompleteProvider extends \Civi\Core\Service\AutoServi 'version' => 4, 'select' => [ 'id', - 'contact_id.display_name', + 'contact_id.sort_name', 'frequency_unit:label', 'frequency_interval', 'amount', @@ -68,8 +68,8 @@ class ContributionRecurAutocompleteProvider extends \Civi\Core\Service\AutoServi 'columns' => [ [ 'type' => 'field', - 'key' => 'contact_id.display_name', - 'rewrite' => '[contact_id.display_name] - [amount]', + 'key' => 'contact_id.sort_name', + 'rewrite' => '[contact_id.sort_name] - [amount]', ], [ 'type' => 'field', diff --git a/civicrm/Civi/Api4/Service/Autocomplete/EventAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/EventAutocompleteProvider.php new file mode 100644 index 0000000000..43a00c424f --- /dev/null +++ b/civicrm/Civi/Api4/Service/Autocomplete/EventAutocompleteProvider.php @@ -0,0 +1,62 @@ +<?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\Autocomplete; + +use Civi\API\Events; +use Civi\Core\Event\GenericHookEvent; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * @service + * @internal + */ +class EventAutocompleteProvider extends \Civi\Core\Service\AutoService implements EventSubscriberInterface { + + public static function getSubscribedEvents() { + return [ + 'civi.api.prepare' => ['onApiPrepare', 140], + 'civi.search.defaultDisplay' => ['alterDefaultDisplay', Events::W_LATE], + ]; + } + + /** + * Add is_template filter to event template autocompletes + * @param \Civi\API\Event\PrepareEvent $event + */ + public function onApiPrepare(\Civi\API\Event\PrepareEvent $event): void { + $apiRequest = $event->getApiRequest(); + if (is_object($apiRequest) && is_a($apiRequest, 'Civi\Api4\Generic\AutocompleteAction')) { + [$entityName, $fieldName] = array_pad(explode('.', (string) $apiRequest->getFieldName(), 2), 2, ''); + + if ($entityName === 'Event' && $fieldName === 'template_id') { + $apiRequest->addFilter('is_template', TRUE); + } + } + } + + /** + * Alter default display of events based on the is_template filter. + * + * @param \Civi\Core\Event\GenericHookEvent $e + */ + public static function alterDefaultDisplay(GenericHookEvent $e) { + if ($e->display['type'] !== 'autocomplete' || $e->savedSearch['api_entity'] !== 'Event') { + return; + } + $filters = $e->context['filters'] ?? []; + if (!empty($filters['is_template'])) { + $e->display['settings']['columns'][0]['key'] = 'template_title'; + } + } + +} diff --git a/civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php index 6e687e1582..54fa71f9e6 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php @@ -70,6 +70,7 @@ class MailingRecipientsAutocompleteProvider extends AutoService implements Event ], 'join' => [], 'where' => [ + ['is_active', '=', TRUE], ['group_type:name', 'CONTAINS', 'Mailing List'], ['OR', [['saved_search_id.expires_date', 'IS NULL'], ['saved_search_id.expires_date', '>', 'NOW()', TRUE]]], ['OR', [['is_hidden', '=', FALSE], [($mode === 'include' ? 'mailing_group.id' : '(NULL)'), 'IS NOT NULL']]], diff --git a/civicrm/Civi/Api4/Service/Autocomplete/ParticipantAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php similarity index 67% rename from civicrm/Civi/Api4/Service/Autocomplete/ParticipantAutocompleteProvider.php rename to civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php index 2131e3cd8d..08e327c3bf 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/ParticipantAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/OptionValueAutocompleteProvider.php @@ -19,36 +19,34 @@ use Civi\Core\HookInterface; * @service * @internal */ -class ParticipantAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface { +class OptionValueAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface { /** - * Provide default SearchDisplay for Participant autocompletes + * Provide default SearchDisplay for Country autocompletes * * @param \Civi\Core\Event\GenericHookEvent $e */ public static function on_civi_search_defaultDisplay(GenericHookEvent $e) { - if ($e->display['settings'] || $e->display['type'] !== 'autocomplete' || $e->savedSearch['api_entity'] !== 'Participant') { + if ($e->display['settings'] || $e->display['type'] !== 'autocomplete' || $e->savedSearch['api_entity'] !== 'OptionValue') { return; } $e->display['settings'] = [ 'sort' => [ - ['contact_id.sort_name', 'ASC'], - ['event_id.title', 'ASC'], + ['weight', 'ASC'], + ['label', 'ASC'], ], + 'extra' => ['color' => 'color'], 'columns' => [ [ 'type' => 'field', - 'key' => 'contact_id.display_name', - 'rewrite' => '[contact_id.display_name] - [event_id.title]', + 'key' => 'label', + 'icons' => [ + ['field' => 'icon'], + ], ], [ 'type' => 'field', - 'key' => 'role_id:label', - 'rewrite' => '#[id] [role_id:label]', - ], - [ - 'type' => 'field', - 'key' => 'status_id:label', + 'key' => 'description', ], ], ]; diff --git a/civicrm/Civi/Api4/Service/Autocomplete/PledgeAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/PledgeAutocompleteProvider.php index 7e7e22964b..3a38d53956 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/PledgeAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/PledgeAutocompleteProvider.php @@ -34,7 +34,7 @@ class PledgeAutocompleteProvider extends \Civi\Core\Service\AutoService implemen 'version' => 4, 'select' => [ 'id', - 'contact_id.display_name', + 'contact_id.sort_name', 'amount', 'start_date', 'end_date', @@ -66,8 +66,8 @@ class PledgeAutocompleteProvider extends \Civi\Core\Service\AutoService implemen 'columns' => [ [ 'type' => 'field', - 'key' => 'contact_id.display_name', - 'rewrite' => '[contact_id.display_name] - [amount]', + 'key' => 'contact_id.sort_name', + 'rewrite' => '[contact_id.sort_name] - [amount]', ], [ 'type' => 'field', diff --git a/civicrm/Civi/Api4/Service/Autocomplete/RelationshipAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/RelationshipAutocompleteProvider.php index f86bcbaae6..bbae3255cf 100644 --- a/civicrm/Civi/Api4/Service/Autocomplete/RelationshipAutocompleteProvider.php +++ b/civicrm/Civi/Api4/Service/Autocomplete/RelationshipAutocompleteProvider.php @@ -38,7 +38,7 @@ class RelationshipAutocompleteProvider extends \Civi\Core\Service\AutoService im [ 'type' => 'field', 'key' => 'relationship_type_id.label_a_b', - 'rewrite' => '[contact_id_a.display_name] [relationship_type_id.label_a_b] [contact_id_b.display_name]', + 'rewrite' => '[contact_id_a.sort_name] [relationship_type_id.label_a_b] [contact_id_b.sort_name]', ], [ 'type' => 'field', diff --git a/civicrm/Civi/Api4/Service/Schema/Joiner.php b/civicrm/Civi/Api4/Service/Schema/Joiner.php index 4d96d3461c..d42caa1708 100644 --- a/civicrm/Civi/Api4/Service/Schema/Joiner.php +++ b/civicrm/Civi/Api4/Service/Schema/Joiner.php @@ -78,6 +78,7 @@ class Joiner { */ public static function getExtraJoinSql(array $field, Api4SelectQuery $query): string { $prefix = empty($field['explicit_join']) ? '' : $field['explicit_join'] . '.'; + $prefix .= (empty($field['implicit_join']) ? '' : $field['implicit_join'] . '.'); $idField = $query->getField($prefix . $field['name'] . '.id'); return $idField['sql_name']; } diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ACLEntityRoleCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ACLEntityRoleCreationSpecProvider.php deleted file mode 100644 index c6da836a71..0000000000 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ACLEntityRoleCreationSpecProvider.php +++ /dev/null @@ -1,37 +0,0 @@ -<?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 ACLEntityRoleCreationSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { - - /** - * @inheritDoc - */ - public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('is_active')->setDefaultValue(1); - } - - /** - * @inheritDoc - */ - public function applies($entity, $action) { - return $entity === 'ACLEntityRole' && $action === 'create'; - } - -} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php deleted file mode 100644 index 32173c1ca7..0000000000 --- a/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleCreationSpecProvider.php +++ /dev/null @@ -1,41 +0,0 @@ -<?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 ActionScheduleCreationSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { - - /** - * @inheritDoc - */ - public function modifySpec(RequestSpec $spec) { - $spec->getFieldByName('title')->setRequired(TRUE); - $spec->getFieldByName('mapping_id')->setRequired(TRUE); - $spec->getFieldByName('entity_value')->setRequired(TRUE); - $spec->getFieldByName('start_action_date')->setRequiredIf('empty($values.absolute_date)'); - $spec->getFieldByName('absolute_date')->setRequiredIf('empty($values.start_action_date)'); - } - - /** - * @inheritDoc - */ - public function applies($entity, $action) { - return $entity === 'ActionSchedule' && $action === 'create'; - } - -} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleSpecProvider.php new file mode 100644 index 0000000000..01e84cb3f2 --- /dev/null +++ b/civicrm/Civi/Api4/Service/Spec/Provider/ActionScheduleSpecProvider.php @@ -0,0 +1,55 @@ +<?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 ActionScheduleSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { + + /** + * @inheritDoc + */ + public function modifySpec(RequestSpec $spec) { + if ($spec->getAction() === 'create') { + $spec->getFieldByName('title')->setRequired(TRUE); + $spec->getFieldByName('name')->setRequired(FALSE); + $spec->getFieldByName('mapping_id')->setRequired(TRUE); + $spec->getFieldByName('entity_value')->setRequired(TRUE); + $spec->getFieldByName('start_action_offset')->setRequiredIf('empty($values.absolute_date)'); + $spec->getFieldByName('start_action_unit')->setRequiredIf('empty($values.absolute_date)'); + $spec->getFieldByName('start_action_condition')->setRequiredIf('empty($values.absolute_date)'); + $spec->getFieldByName('start_action_date')->setRequiredIf('empty($values.absolute_date)'); + $spec->getFieldByName('absolute_date')->setRequiredIf('empty($values.start_action_date)'); + $spec->getFieldByName('group_id')->setRequiredIf('!empty($values.limit_to) && !empty($values.recipient) && $values.recipient === "group"'); + $spec->getFieldByName('recipient_manual')->setRequiredIf('!empty($values.limit_to) && !empty($values.recipient) && $values.recipient === "manual"'); + $spec->getFieldByName('subject')->setRequiredIf('!empty($values.is_active) && (empty($values.mode) || $values.mode !== "SMS")'); + $spec->getFieldByName('body_html')->setRequiredIf('!empty($values.is_active) && (empty($values.mode) || $values.mode !== "SMS")'); + $spec->getFieldByName('sms_body_text')->setRequiredIf('!empty($values.is_active) && !empty($values.mode) && $values.mode !== "Email"'); + $spec->getFieldByName('sms_provider_id')->setRequiredIf('!empty($values.is_active) && !empty($values.mode) && $values.mode !== "Email"'); + $spec->getFieldByName('repetition_frequency_interval')->setRequiredIf('!empty($values.is_repeat)'); + $spec->getFieldByName('end_frequency_interval')->setRequiredIf('!empty($values.is_repeat)'); + } + } + + /** + * @inheritDoc + */ + public function applies($entity, $action) { + return $entity === 'ActionSchedule'; + } + +} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/AddressGetSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/AddressGetSpecProvider.php index 82cdd50cf6..9c66e59627 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/AddressGetSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/AddressGetSpecProvider.php @@ -27,11 +27,6 @@ class AddressGetSpecProvider extends \Civi\Core\Service\AutoService implements G * @param \Civi\Api4\Service\Spec\RequestSpec $spec */ public function modifySpec(RequestSpec $spec) { - // These fields do not have any sensible "name" pseudoconstant so should just use the ID - foreach (['state_province_id', 'country_id', 'county_id'] as $name) { - $spec->getFieldByName($name)->setSuffixes(['label', 'abbr']); - } - // Proximity search field $field = new FieldSpec('proximity', 'Address', 'Boolean'); $field->setLabel(ts('Address Proximity')) diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupSpecProvider.php deleted file mode 100644 index 9d967305d8..0000000000 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomGroupSpecProvider.php +++ /dev/null @@ -1,40 +0,0 @@ -<?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 CustomGroupSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { - - /** - * @inheritDoc - */ - public function modifySpec(RequestSpec $spec) { - $action = $spec->getAction(); - - $spec->getFieldByName('extends') - ->setSuffixes(['name', 'label', 'grouping']); - } - - /** - * @inheritDoc - */ - public function applies($entity, $action) { - return $entity === 'CustomGroup'; - } - -} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php index 2cb57becd1..1da2127af6 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/CustomValueSpecProvider.php @@ -31,8 +31,10 @@ class CustomValueSpecProvider extends \Civi\Core\Service\AutoService implements $idField->setType('Field'); $idField->setInputType('Number'); $idField->setColumnName('id'); + $idField->setNullable('false'); $idField->setTitle(ts('Custom Value ID')); $idField->setReadonly(TRUE); + $idField->setNullable(FALSE); $spec->addFieldSpec($idField); $entityField = new FieldSpec('entity_id', $spec->getEntity(), 'Integer'); @@ -43,6 +45,7 @@ class CustomValueSpecProvider extends \Civi\Core\Service\AutoService implements $entityField->setRequired($action === 'create'); $entityField->setFkEntity('Contact'); $entityField->setReadonly(TRUE); + $entityField->setNullable(FALSE); $entityField->setInputType('EntityRef'); $spec->addFieldSpec($entityField); } diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php index 761df4da39..83598ae350 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/EmailCreationSpecProvider.php @@ -30,7 +30,7 @@ class EmailCreationSpecProvider extends \Civi\Core\Service\AutoService implement $spec->getFieldByName('is_primary')->setRequired(FALSE); $defaultLocationType = \CRM_Core_BAO_LocationType::getDefault()->id ?? NULL; - $spec->getFieldByName('location_type_id')->setDefaultValue($defaultLocationType); + $spec->getFieldByName('location_type_id')->setDefaultValue($defaultLocationType ? (int) $defaultLocationType : NULL); } /** diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php b/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php index 1f2fe6671e..b66fb6d485 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/Generic/SpecProviderInterface.php @@ -29,9 +29,12 @@ interface SpecProviderInterface { /** * @param string $entity * @param string $action + * Optional @param array $values + * $values from the api getFields request. + * This param works but has not been added to the interface for the sake of backward-compatability. * * @return bool */ - public function applies($entity, $action); + public function applies(string $entity, string $action/*, array $values = []*/); } diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php index a8e8616531..45b14c25a5 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php +++ b/civicrm/Civi/Api4/Service/Spec/Provider/GetActionDefaultsProvider.php @@ -27,18 +27,18 @@ class GetActionDefaultsProvider extends \Civi\Core\Service\AutoService implement // Exclude deleted records from api Get by default $isDeletedField = $spec->getFieldByName('is_deleted'); if ($isDeletedField) { - $isDeletedField->setDefaultValue('0'); + $isDeletedField->setDefaultValue(FALSE); } // Exclude test records from api Get by default $isTestField = $spec->getFieldByName('is_test'); if ($isTestField) { - $isTestField->setDefaultValue('0'); + $isTestField->setDefaultValue(FALSE); } $isTemplateField = $spec->getFieldByName('is_template'); if ($isTemplateField) { - $isTemplateField->setDefaultValue('0'); + $isTemplateField->setDefaultValue(FALSE); } } diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/UserJobSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/UserJobSpecProvider.php deleted file mode 100644 index e15274f755..0000000000 --- a/civicrm/Civi/Api4/Service/Spec/Provider/UserJobSpecProvider.php +++ /dev/null @@ -1,39 +0,0 @@ -<?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; -use Civi\Core\Service\AutoService; - -/** - * @service - * @internal - */ -class UserJobSpecProvider extends AutoService implements Generic\SpecProviderInterface { - - /** - * @inheritDoc - */ - public function modifySpec(RequestSpec $spec): void { - $spec->getFieldByName('job_type') - ->setSuffixes(['name', 'label', 'url']); - } - - /** - * @inheritDoc - */ - public function applies($entity, $action): bool { - return $entity === 'UserJob'; - } - -} diff --git a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php index efcb8b0d65..1b21b781e2 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecFormatter.php @@ -26,6 +26,8 @@ class SpecFormatter { public static function arrayToField(array $data, $entity) { $dataTypeName = self::getDataType($data); + $hasDefault = isset($data['default']) && $data['default'] !== ''; + // Custom field if (!empty($data['custom_group_id'])) { $field = new CustomFieldSpec($data['name'], $entity, $dataTypeName); if (strpos($entity, 'Custom_') !== 0) { @@ -57,38 +59,47 @@ class SpecFormatter { } $field->setReadonly($data['is_view']); } + // Core field else { $name = $data['name'] ?? NULL; $field = new FieldSpec($name, $entity, $dataTypeName); $field->setType('Field'); $field->setColumnName($name); $field->setNullable(empty($data['required'])); - $field->setRequired(!empty($data['required']) && empty($data['default'])); + $field->setRequired(!empty($data['required']) && !$hasDefault && $name !== 'id'); $field->setTitle($data['title'] ?? NULL); $field->setLabel($data['html']['label'] ?? NULL); $field->setLocalizable($data['localizable'] ?? FALSE); if (!empty($data['pseudoconstant'])) { - // Do not load options if 'prefetch' is explicitly FALSE - if (!isset($data['pseudoconstant']['prefetch']) || $data['pseudoconstant']['prefetch'] === FALSE) { + // Do not load options if 'prefetch' is disabled + if (($data['pseudoconstant']['prefetch'] ?? NULL) !== 'disabled') { $field->setOptionsCallback([__CLASS__, 'getOptions']); } - // These suffixes are always supported if a field has options - $suffixes = ['name', 'label']; - // Add other columns specified in schema (e.g. 'abbrColumn') - foreach (array_diff(FormattingUtil::$pseudoConstantSuffixes, $suffixes) as $suffix) { - if (!empty($data['pseudoconstant'][$suffix . 'Column'])) { - $suffixes[] = $suffix; - } + // Explicitly declared suffixes + if (!empty($data['pseudoconstant']['suffixes'])) { + $suffixes = $data['pseudoconstant']['suffixes']; } - if (!empty($data['pseudoconstant']['optionGroupName'])) { - $suffixes = CoreUtil::getOptionValueFields($data['pseudoconstant']['optionGroupName'], 'name'); + else { + // These suffixes are always supported if a field has options + $suffixes = ['name', 'label']; + // Add other columns specified in schema (e.g. 'abbrColumn') + foreach (array_diff(FormattingUtil::$pseudoConstantSuffixes, $suffixes) as $suffix) { + if (!empty($data['pseudoconstant'][$suffix . 'Column'])) { + $suffixes[] = $suffix; + } + } + if (!empty($data['pseudoconstant']['optionGroupName'])) { + $suffixes = CoreUtil::getOptionValueFields($data['pseudoconstant']['optionGroupName'], 'name'); + } } $field->setSuffixes($suffixes); } $field->setReadonly(!empty($data['readonly'])); } + if ($hasDefault) { + $field->setDefaultValue(FormattingUtil::convertDataType($data['default'], $dataTypeName)); + } $field->setSerialize($data['serialize'] ?? NULL); - $field->setDefaultValue($data['default'] ?? NULL); $field->setDescription($data['description'] ?? NULL); $field->setDeprecated($data['deprecated'] ?? FALSE); self::setInputTypeAndAttrs($field, $data, $dataTypeName); @@ -276,6 +287,7 @@ class SpecFormatter { $map = [ 'Select Date' => 'Date', 'Link' => 'Url', + 'Autocomplete-Select' => 'EntityRef', ]; $inputType = $map[$inputType] ?? $inputType; if ($dataTypeName === 'ContactReference' || $dataTypeName === 'EntityReference') { @@ -335,6 +347,11 @@ class SpecFormatter { $inputAttrs['filter'] = $filters; } } + // Custom autocompletes + if (!empty($data['option_group_id']) && $inputType === 'EntityRef') { + $fieldSpec->setFkEntity('OptionValue'); + $inputAttrs['filter']['option_group_id'] = $data['option_group_id']; + } $fieldSpec ->setInputType($inputType) ->setInputAttrs($inputAttrs); diff --git a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php index b59426551a..80ce71555a 100644 --- a/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php +++ b/civicrm/Civi/Api4/Service/Spec/SpecGatherer.php @@ -66,7 +66,7 @@ class SpecGatherer extends AutoService { } foreach ($this->specProviders as $provider) { - if ($provider->applies($entity, $action)) { + if ($provider->applies($entity, $action, $specification->getValues())) { $provider->modifySpec($specification); } } @@ -91,9 +91,6 @@ class SpecGatherer extends AutoService { $DAOFields = $this->getDAOFields($entity); foreach ($DAOFields as $DAOField) { - if ($DAOField['name'] == 'id' && $action == 'create') { - $DAOField['required'] = FALSE; - } if (array_key_exists('contactType', $DAOField) && $spec->getValue('contact_type') && $DAOField['contactType'] != $spec->getValue('contact_type')) { continue; } diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php index 865aa7be14..473c6ff803 100644 --- a/civicrm/Civi/Api4/Utils/CoreUtil.php +++ b/civicrm/Civi/Api4/Utils/CoreUtil.php @@ -81,6 +81,15 @@ class CoreUtil { return self::getInfoItem($entityName, 'primary_key')[0] ?? 'id'; } + /** + * Get name of field(s) to display in search context + * @param string $entityName + * @return array + */ + public static function getSearchFields(string $entityName): array { + return self::getInfoItem($entityName, 'search_fields') ?: []; + } + /** * Get table name of given entity * @@ -366,20 +375,28 @@ class CoreUtil { */ public static function getSqlFunctions(): array { $fns = []; - foreach (glob(\Civi::paths()->getPath('[civicrm.root]/Civi/Api4/Query/SqlFunction*.php')) as $file) { - $matches = []; - if (preg_match('/(SqlFunction[A-Z_]+)\.php$/', $file, $matches)) { - $className = '\Civi\Api4\Query\\' . $matches[1]; - if (is_subclass_of($className, '\Civi\Api4\Query\SqlFunction')) { - $fns[] = [ - 'name' => $className::getName(), - 'title' => $className::getTitle(), - 'description' => $className::getDescription(), - 'params' => $className::getParams(), - 'category' => $className::getCategory(), - 'dataType' => $className::getDataType(), - 'options' => CoreUtil::formatOptionList($className::getOptions(), ['id', 'name', 'label']), - ]; + $path = 'Civi/Api4/Query/SqlFunction*.php'; + // Search CiviCRM core + all active extensions + $directories = [\Civi::paths()->getPath("[civicrm.root]/$path")]; + foreach (\CRM_Extension_System::singleton()->getMapper()->getActiveModuleFiles() as $ext) { + $directories[] = \CRM_Utils_File::addTrailingSlash(dirname($ext['filePath'])) . $path; + } + foreach ($directories as $directory) { + foreach (glob($directory) as $file) { + $matches = []; + if (preg_match('/(SqlFunction[A-Z_]+)\.php$/', $file, $matches)) { + $className = '\Civi\Api4\Query\\' . $matches[1]; + if (is_subclass_of($className, '\Civi\Api4\Query\SqlFunction')) { + $fns[] = [ + 'name' => $className::getName(), + 'title' => $className::getTitle(), + 'description' => $className::getDescription(), + 'params' => $className::getParams(), + 'category' => $className::getCategory(), + 'dataType' => $className::getDataType(), + 'options' => CoreUtil::formatOptionList($className::getOptions(), ['id', 'name', 'label']), + ]; + } } } } diff --git a/civicrm/Civi/Api4/Utils/FormattingUtil.php b/civicrm/Civi/Api4/Utils/FormattingUtil.php index ca0a681260..4a63e4db41 100644 --- a/civicrm/Civi/Api4/Utils/FormattingUtil.php +++ b/civicrm/Civi/Api4/Utils/FormattingUtil.php @@ -232,14 +232,19 @@ class FormattingUtil { } } foreach ($result as $key => $value) { + // Skip null values or values that have already been unset by `formatOutputValue` functions + if (!isset($result[$key])) { + continue; + } $fieldExpr = SqlExpression::convert($selectAliases[$key] ?? $key); $fieldName = \CRM_Utils_Array::first($fieldExpr->getFields() ?? ''); $baseName = $fieldName ? \CRM_Utils_Array::first(explode(':', $fieldName)) : NULL; $field = $fields[$fieldName] ?? $fields[$baseName] ?? NULL; $dataType = $field['data_type'] ?? ($fieldName == 'id' ? 'Integer' : NULL); - // Allow Sql Functions to do special formatting and/or alter the $dataType + // Allow Sql Functions to do alter the value and/or $dataType if (method_exists($fieldExpr, 'formatOutputValue') && is_string($value)) { - $result[$key] = $value = $fieldExpr->formatOutputValue($value, $dataType); + $fieldExpr->formatOutputValue($dataType, $result, $key); + $value = $result[$key]; } if (!empty($field['output_formatters'])) { self::applyFormatters($result, $fieldName, $field, $value); diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php index c229d8d814..bbe0527653 100644 --- a/civicrm/Civi/Core/Container.php +++ b/civicrm/Civi/Core/Container.php @@ -248,11 +248,23 @@ class Container { $container->setDefinition('crypto.jwt', new Definition('Civi\Crypto\CryptoJwt', [])) ->setPublic(TRUE); + $bootServiceTypes = [ + 'cache.settings' => \CRM_Utils_Cache_Interface::class, + 'dispatcher.boot' => CiviEventDispatcher::class, + 'lockManager' => LockManager::class, + 'paths' => Paths::class, + 'runtime' => \CRM_Core_Config_Runtime::class, + 'settings_manager' => SettingsManager::class, + 'userPermissionClass' => \CRM_Core_Permission_Base::class, + 'userSystem' => \CRM_Utils_System_Base::class, + ]; if (empty(\Civi::$statics[__CLASS__]['boot'])) { throw new \RuntimeException('Cannot initialize container. Boot services are undefined.'); } foreach (\Civi::$statics[__CLASS__]['boot'] as $bootService => $def) { - $container->setDefinition($bootService, new Definition())->setSynthetic(TRUE)->setPublic(TRUE); + $container->setDefinition($bootService, new Definition($bootServiceTypes[$bootService] ?? NULL)) + ->setSynthetic(TRUE) + ->setPublic(TRUE); } // Expose legacy singletons as services in the container. diff --git a/civicrm/Civi/Core/Themes.php b/civicrm/Civi/Core/Themes.php index ebf6982227..05469ba937 100644 --- a/civicrm/Civi/Core/Themes.php +++ b/civicrm/Civi/Core/Themes.php @@ -57,7 +57,7 @@ class Themes extends \Civi\Core\Service\AutoService { * @param \CRM_Utils_Cache_Interface $cache */ public function __construct($cache = NULL) { - $this->cache = $cache ? $cache : Civi::cache('long'); + $this->cache = $cache ?: Civi::cache('long'); } /** diff --git a/civicrm/Civi/Core/Url.php b/civicrm/Civi/Core/Url.php new file mode 100644 index 0000000000..7d7ee73cf4 --- /dev/null +++ b/civicrm/Civi/Core/Url.php @@ -0,0 +1,713 @@ +<?php + +namespace Civi\Core; + +/** + * Generate a URL. + * + * As input, this class takes a *logical URI*, which may include a range of configurable sub-parts (path, query, fragment, etc). + * + * As output, it provides a *concrete URL* that can be used by a web-browser to make requests. + * + * The typical way to construct a URL object is through `Civi::url()`, which features more + * documentation and examples. + * + * This class-model has several properties. Most properties follow one of two patterns: + * + * - URL components (such as `path`, `query`, `fragment`, `fragmentQuery`). + * These have getter/setter/adder methods. They are stored as raw URL substrings. + * - Smart flags (such as `preferFormat`, `ssl`, `cacheCode`). + * These have getter/setter methods. They are stored as simple types (booleans or strings). + * They also have aliases via `__construct(...$flags)` and `useFlags($flags)` + * + * URI components (`path`, `query`, etc) can be understood as raw-strings or data-arrays. Compare: + * + * - "Path": "civicrm/foo+bar/whiz+bang" vs ['civicrm', 'foo bar', 'whiz bang'] + * - "Query: "a=100&b=Hello+world" vs ["a" => 100, "b" => "Hello world"] + * - "Fragment": "#/mailing/new" vs ["/mailing", "/new"] + * - "Fragment Query": "angularDebug=1" vs ["angularDebug" => 1] + * + * The raw-string is supported from all angles (storage+getters+setters+adders). + * Additionally, the setters+adders accept arrays. + * + * This cl + * @see \Civi::url() + */ +final class Url implements \JsonSerializable { + + /** + * @var string + * Ex: 'frontend', 'backend' + */ + private $scheme; + + /** + * @var string + * Ex: 'civicrm/dashboard' + */ + private $path; + + /** + * @var string + * Ex: abc=123&xyz=456 + */ + private $query; + + /** + * @var string|null + */ + private $fragment; + + /** + * @var string|null + */ + private $fragmentQuery; + + /** + * Whether to auto-append the cache-busting resource code. + * + * @var bool|null + * NULL definition TBD (either "off" or "automatic"?) + */ + private $cacheCode; + + /** + * Preferred format. + * + * Note that this is not strictly guaranteed. It may sometimes return absolute URLs even if you + * prefer relative URLs (e.g. if there's no easy/correct way to form a relative URL). + * + * @var string|null + * 'relative' or 'absolute' + * NULL means "decide automatically" + */ + private $preferFormat; + + /** + * Whether to HTML-encode the output. + * + * Note: Why does this exist? It's insane, IMHO. There's nothing intrinsically HTML-y about URLs. + * However, practically speaking, this class aims to replace `CRM_Utils_System::url()` which + * performed HTML encoding by default. Retaining some easy variant of this flag should make the + * off-ramp a bit smoother. + * + * @var bool + */ + private $htmlEscape = FALSE; + + /** + * @var bool|null + * NULL means "decide automatically" + */ + private $ssl = NULL; + + /** + * List of values to mix-in to the final/rendered URL. + * + * @var string[]|null + */ + private $vars; + + /** + * Define a dynamic lookup for variables. + * + * @var callable|null + */ + private $varsCallback; + + /** + * @param string|null $logicalUri + * @param string|null $flags + * @see \Civi::url() + */ + public function __construct(?string $logicalUri = NULL, ?string $flags = NULL) { + if ($logicalUri !== NULL) { + $this->useUri($logicalUri); + } + if ($flags !== NULL) { + $this->useFlags($flags); + } + } + + /** + * Parse a logical URI. + * + * @param string $logicalUri + * @return void + */ + protected function useUri(string $logicalUri): void { + if ($logicalUri[0] === '/') { + // Scheme-relative path implies a preferences to inherit current scheme. + $logicalUri = 'current:' . $logicalUri; + } + elseif ($logicalUri[0] === '[') { + $logicalUri = 'asset://' . $logicalUri; + } + // else: Should we fill in scheme when there is NO indicator (eg $logicalUri===`civicrm/event/info')? + // It could be a little annoying to write `frontend://` everywhere. It's not hard to add this. + // But it's ambiguous whether `current://` or `default://` is the better interpretation. + // I'd sooner vote for something explicit but short -- eg aliases (f<=>frontend; d<=>default) + // - `Civi::url('f://civicrm/event/info')` + // - `Civi::url('civicrm/event/info', 'f')`. + + $parsed = parse_url($logicalUri); + $this->scheme = $parsed['scheme'] ?? NULL; + $this->path = $parsed['host'] ?? NULL; + if (isset($parsed['path'])) { + $this->path .= $parsed['path']; + } + $this->query = $parsed['query'] ?? NULL; + $fragmentParts = isset($parsed['fragment']) ? explode('?', $parsed['fragment'], 2) : []; + $this->fragment = $fragmentParts[0] ?? NULL; + $this->fragmentQuery = $fragmentParts[1] ?? NULL; + } + + /** + * @return string + * Ex: 'frontend' or 'backend' + */ + public function getScheme() { + return $this->scheme; + } + + /** + * @param string $scheme + * Ex: 'frontend' or 'backend' + */ + public function setScheme(string $scheme): Url { + $this->scheme = $scheme; + return $this; + } + + /** + * @return string|null + * Ex: 'civicrm/event/info' + * Ex: 'civicrm/hello+world%3F' + */ + public function getPath() { + return $this->path; + } + + /** + * @param string|string[]|null $path + * Ex: 'civicrm/event/info' + * Ex: 'civicrm/hello+world%3F' + * Ex: ['civicrm', 'hello world?'] + */ + public function setPath($path): Url { + $this->path = static::encodePath($path); + return $this; + } + + /** + * Add new sections to the path. + * + * When adding new parts to the path, there is an implicit delimiter ('/') between parts. + * + * @param string|string[] $path + * Ex: 'civicrm/event/info' + * Ex: 'civicrm/hello+world%3F' + * Ex: ['civicrm', 'hello world?'] + * @return $this + */ + public function addPath($path): Url { + static::appendString($this->path, '/', static::encodePath($path)); + return $this; + } + + /** + * @return string|null + * Ex: 'name=John+Doughnut&id=9' + */ + public function getQuery(): ?string { + return $this->query; + } + + /** + * @param string|string[]|null $query + * Ex: 'name=John+Doughnut&id=9' + * Ex: ['name' => 'John Doughnut', 'id' => 9] + * @return $this + */ + public function setQuery($query): Url { + if (is_array($query)) { + $query = \CRM_Utils_System::makeQueryString($query); + } + $this->query = $query; + return $this; + } + + /** + * @param string|string[] $query + * Ex: 'name=John+Doughnut&id=9' + * Ex: ['name' => 'John Doughnut', 'id' => 9] + * @return $this + */ + public function addQuery($query): Url { + if (is_array($query)) { + $query = \CRM_Utils_System::makeQueryString($query); + } + static::appendString($this->query, '&', $query); + return $this; + } + + /** + * Get the primary fragment. + * + * NOTE: This is the primary fragment identifier (as in `#id` or `#/client/side/route`). + * and does not include fregment queries. (as in '#?angularDebug=1'). + * + * @return string|null + * Ex: '/mailing/new' + * Ex: '/foo+bar%3F/newish%3F' + * @see Url::getFragmentQuery() + * @see Url::composeFragment() + */ + public function getFragment(): ?string { + return $this->fragment; + } + + /** + * Replace the fragment. + * + * NOTE: This is the primary fragment identifier (as in `#id` or `#/client/side/route`). + * and does not include fregment queries. (as in '#?angularDebug=1'). + * + * @param string|string[]|null $fragment + * Ex: '/mailing/new' + * Ex: '/foo+bar/newish%3F' + * Ex: ['', 'foo bar', 'newish?'] + * @return $this + * @see Url::setFragmentQuery() + * @see url::composeFragment() + */ + public function setFragment($fragment): Url { + $this->fragment = static::encodePath($fragment); + return $this; + } + + /** + * Add to fragment. + * + * @param string|string[] $fragment + * Ex: 'mailing/new' + * Ex: 'foo+bar/newish%3F' + * Ex: ['foo bar', 'newish?'] + * @return $this + */ + public function addFragment($fragment): Url { + static::appendString($this->fragment, '/', static::encodePath($fragment)); + return $this; + } + + /** + * @return string|null + * Ex: 'name=John+Doughnut&id=9' + */ + public function getFragmentQuery(): ?string { + return $this->fragmentQuery; + } + + /** + * @param string|string[]|null $fragmentQuery + * Ex: 'name=John+Doughnut&id=9' + * Ex: ['name' => 'John Doughnut', 'id' => 9] + * @return $this + */ + public function setFragmentQuery($fragmentQuery) { + if (is_array($fragmentQuery)) { + $fragmentQuery = \CRM_Utils_System::makeQueryString($fragmentQuery); + } + $this->fragmentQuery = $fragmentQuery; + return $this; + } + + /** + * @param string|array $fragmentQuery + * Ex: 'name=John+Doughnut&id=9' + * Ex: ['name' => 'John Doughnut', 'id' => 9] + * @return $this + */ + public function addFragmentQuery($fragmentQuery): Url { + if (is_array($fragmentQuery)) { + $fragmentQuery = \CRM_Utils_System::makeQueryString($fragmentQuery); + } + static::appendString($this->fragmentQuery, '&', $fragmentQuery); + return $this; + } + + /** + * @return bool|null + */ + public function getCacheCode(): ?bool { + return $this->cacheCode; + } + + /** + * Specify whether to append a cache-busting code. + * + * @param bool|null $cacheCode + * TRUE: Do append + * FALSE: Do not append + * @return $this; + */ + public function setCacheCode(?bool $cacheCode) { + $this->cacheCode = $cacheCode; + return $this; + } + + /** + * @return string|null + * 'relative' or 'absolute' + */ + public function getPreferFormat(): ?string { + return $this->preferFormat; + } + + /** + * Specify whether to prefer absolute or relative formatting. + * + * @param string|null $preferFormat + * One of: + * - 'relative': Prefer relative format, if available + * - 'absolute': Prefer absolute format + * - NULL: Decide format based on current environment/request. (Ordinary web UI requests prefer 'relative'.) + */ + public function setPreferFormat(?string $preferFormat): Url { + $this->preferFormat = $preferFormat; + return $this; + } + + /** + * @return bool + */ + public function getHtmlEscape(): bool { + return $this->htmlEscape; + } + + /** + * Specify whether to enable HTML escaping of the final output. + * + * @param bool $htmlEscape + * @return $this + */ + public function setHtmlEscape(bool $htmlEscape): Url { + $this->htmlEscape = $htmlEscape; + return $this; + } + + /** + * @return bool|null + */ + public function getSsl(): ?bool { + return $this->ssl; + } + + /** + * Specify whether the hyperlink should use SSL. + * + * @param bool|null $ssl + * TRUE: Force SSL on. (Convert "http:" to "https:") + * FALSE: Force SSL off. (Convert "https:" to "http:") + * NULL: Inherit current SSL-ness + */ + public function setSsl(?bool $ssl): Url { + $this->ssl = $ssl; + return $this; + } + + /** + * @return string[]|null + */ + public function getVars(): ?array { + return $this->vars; + } + + /** + * Specify a list of variables. After composing all parts of the URL, variables will be replaced + * with their URL-encoded values. + * + * Example: + * Civi::url('frontend://civicrm/greeter?cid=[contact]&msg=[message]') + * ->setVars(['contact' => 123, 'message' => 'Hello to you & you & you!'); + * + * @param string[]|null $vars + * @return $this + */ + public function setVars(?array $vars): Url { + $this->vars = $vars; + return $this; + } + + /** + * Add more variables. After composing all parts of the URL, variables will be replaced + * with their URL-encoded values. + * + * Example: + * Civi::url('frontend://civicrm/greeter?cid=[contact]&msg=[message]') + * ->addVars(['contact' => 123, 'message' => 'Hello to you & you & you!'); + * + * @param string[] $vars + * @return $this + */ + public function addVars(array $vars): Url { + $this->vars = $vars + ($this->vars ?: []); + return $this; + } + + /** + * @return callable|null + */ + public function getVarsCallback(): ?callable { + return $this->varsCallback; + } + + /** + * Configure dynamic lookup for variables. + * + * @param callable|null $varsCallback + * Function(string $varName): ?string + * Determine the string-value of the variable. (May be ''.) + * If the variable is unavailable, return NULL. + * @return $this + */ + public function setVarsCallback(?callable $varsCallback) { + $this->varsCallback = $varsCallback; + return $this; + } + + /** + * Apply a series of flags using short-hand notation. + * + * @param string $flags + * List of flag-letters, such as (a)bsolute or (r)elative + * For a full list, see Civi::url(). + * @see Civi::url() + * @return $this + */ + public function useFlags(string $flags): Url { + $len = strlen($flags); + for ($i = 0; $i < $len; $i++) { + switch ($flags[$i]) { + // (a)bsolute url + case 'a': + $this->preferFormat = 'absolute'; + break; + + // (r)elative url + case 'r': + $this->preferFormat = 'relative'; + break; + + // (h)tml encoding + case 'h': + $this->htmlEscape = TRUE; + break; + + // (t)ext encoding (canonical URL form) + case 't': + $this->htmlEscape = FALSE; + break; + + // (s)sl + case 's'; + $this->ssl = TRUE; + break; + + // (c)ache code for resources + case 'c': + $this->cacheCode = TRUE; + break; + } + } + return $this; + } + + /** + * Render the final URL as a string. + * + * @return string + */ + public function __toString(): string { + $userSystem = \CRM_Core_Config::singleton()->userSystem; + $preferFormat = $this->getPreferFormat() ?: static::detectFormat(); + $scheme = $this->getScheme(); + + if ($scheme === NULL || $scheme === 'current') { + $scheme = static::detectScheme(); + } + + if ($scheme === 'default') { + $scheme = \CRM_Core_Menu::isPublicRoute($this->getPath()) ? 'frontend' : 'backend'; + } + + // Goal: After this switch(), we should have the $scheme, $path, and $query combined. + switch ($scheme) { + case 'assetBuilder': + $assetName = $this->getPath(); + $assetParams = []; + parse_str('' . $this->getQuery(), $assetParams); + $result = \Civi::service('asset_builder')->getUrl($assetName, $assetParams); + break; + + case 'asset': + if (preg_match(';^\[([\w\.]+)\](.*)$;', $this->getPath(), $m)) { + [, $var, $rest] = $m; + $varValue = rtrim(\Civi::paths()->getVariable($var, 'url'), '/'); + $result = $varValue . $rest . $this->composeQuery(); + } + else { + throw new \RuntimeException("Malformed asset path: {$this->getPath()}"); + } + break; + + case 'ext': + $parts = explode('/', $this->getPath(), 2); + $result = \Civi::resources()->getUrl($parts[0], $parts[1] ?? NULL, FALSE) . $this->composeQuery(); + break; + + // Handle 'frontend', 'backend', 'service', and any extras. + default: + $result = $userSystem->getRouteUrl($scheme, $this->getPath(), $this->getQuery()); + if ($result === NULL) { + throw new \RuntimeException("Unknown URL scheme: $scheme"); + } + break; + } + + if ($this->cacheCode) { + $result = \Civi::resources()->addCacheCode($result); + } + + $result .= $this->composeFragment(); + + if ($preferFormat === 'relative') { + $result = \CRM_Utils_Url::toRelative($result); + } + + // TODO decide if the current default is good enough for future + $ssl = $this->getSsl() ?: \CRM_Utils_System::isSSL(); + if ($ssl && str_starts_with($result, 'http:')) { + $result = 'https:' . substr($result, 5); + } + elseif (!$ssl && str_starts_with($result, 'https:')) { + $result = 'http:' . substr($result, 6); + } + + if ($this->vars !== NULL) { + // Replace variables + $result = preg_replace_callback('/\[(\w+)\]/', function($m) { + $var = $m[1]; + if (isset($this->vars[$var])) { + return urlencode($this->vars[$var]); + } + if ($this->varsCallback !== NULL) { + $value = call_user_func($this->varsCallback, $var); + if ($value !== NULL) { + return urlencode($value); + } + } + return "[$var]"; + }, $result); + } + + return $this->htmlEscape ? htmlentities($result) : $result; + } + + #[\ReturnTypeWillChange] + public function jsonSerialize() { + return $this->__toString(); + } + + /** + * @return string + * '' or '?foo=bar' + */ + private function composeQuery(): string { + if ($this->query !== NULL && $this->query !== '') { + return '?' . $this->query; + } + else { + return ''; + } + } + + /** + * @return string + * '' or '#foobar' + */ + private function composeFragment(): string { + $fragment = $this->fragment ?: ''; + if ($this->fragmentQuery !== NULL && $this->fragmentQuery !== '') { + $fragment .= '?' . $this->fragmentQuery; + } + return ($fragment === '') ? '' : "#$fragment"; + } + + private static function detectFormat(): string { + // Some environments may override default - e.g. cv-cli prefers absolute URLs + // WISHLIST: If handling `Job.*`, then 'absolute' + // WISHLIST: If active route is a web-service/web-hook/IPN, then 'absolute' + foreach ($GLOBALS['civicrm_url_defaults'] ?? [] as $default) { + if (isset($default['format'])) { + return $default['format']; + } + } + + // Web UI: Most CiviCRM routes (`CRM_Core_Invoke::invoke()`) and CMS blocks + return 'relative'; + } + + private static function detectScheme(): string { + // Some environments may override default - e.g. cv-cli prefers 'default://'. + // WISHLIST: If handling `Job.*`, then `default://' + // WISHLIST: If active route is a web-service/web-hook/IPN, then 'default://' + foreach ($GLOBALS['civicrm_url_defaults'] ?? [] as $default) { + if (isset($default['scheme'])) { + return $default['scheme']; + } + } + + // Web UI: Most CiviCRM routes (`CRM_Core_Invoke::invoke()`) and CMS blocks + return \CRM_Core_Config::singleton()->userSystem->isFrontEndPage() ? 'frontend' : 'backend'; + } + + /** + * @param string|string[]|null $path + * Ex: 'greet/hello+world/en' + * Ex: ['greet', 'hello world', 'en'] + * @return string|null + * Ex: 'greet/hello+world/en' + */ + private static function encodePath($path): ?string { + if (is_array($path)) { + $encodedArray = array_map('urlencode', $path); + return implode('/', $encodedArray); + } + else { + return $path; + } + } + + private static function appendString(?string &$var, string $separator, ?string $value): void { + if ($value === NULL) { + return; + } + + if ($var === NULL) { + $var = $value; + return; + } + + // Dedupe separators + if (str_ends_with($var, $separator)) { + $var = rtrim($var, $separator); + } + if ($value[0] === $separator) { + $value = ltrim($value, $separator); + } + + $var = $var . $separator . $value; + } + +} diff --git a/civicrm/Civi/Schema/Traits/GuiSpecTrait.php b/civicrm/Civi/Schema/Traits/GuiSpecTrait.php index 888c71d2ae..36bd073dc8 100644 --- a/civicrm/Civi/Schema/Traits/GuiSpecTrait.php +++ b/civicrm/Civi/Schema/Traits/GuiSpecTrait.php @@ -100,6 +100,16 @@ trait GuiSpecTrait { return $this; } + /** + * @param string $attrName + * @param $attrValue + * @return $this + */ + public function setInputAttr(string $attrName, $attrValue) { + $this->inputAttrs[$attrName] = $attrValue; + return $this; + } + /** * @return bool */ diff --git a/civicrm/Civi/Test/ACLPermissionTrait.php b/civicrm/Civi/Test/ACLPermissionTrait.php index 415a8f6aae..23368a02a9 100644 --- a/civicrm/Civi/Test/ACLPermissionTrait.php +++ b/civicrm/Civi/Test/ACLPermissionTrait.php @@ -120,6 +120,21 @@ trait ACLPermissionTrait { $where = ' contact_a.id > ' . $this->allowedContactId; } + /** + * Only specified contact returned. + * + * @implements CRM_Utils_Hook::aclWhereClause + * + * @param $type + * @param $tables + * @param $whereTables + * @param $contactID + * @param $where + */ + public function aclWhereMultipleContacts($type, &$tables, &$whereTables, &$contactID, &$where) { + $where = " contact_a.id IN (" . implode(', ', $this->allowedContacts) . ")"; + } + /** * Set up a core ACL. * diff --git a/civicrm/Civi/Test/Api3DocTrait.php b/civicrm/Civi/Test/Api3DocTrait.php deleted file mode 100644 index 27440f70fa..0000000000 --- a/civicrm/Civi/Test/Api3DocTrait.php +++ /dev/null @@ -1,211 +0,0 @@ -<?php - -namespace Civi\Test; - -/** - * Class Api3DocTrait - * @package Civi\Test - * - * This trait defines helper functions for testing and documenting APIv3. In - * particular, it supports a workflow that links a unit-test file to an - * example data file: - * - * - When defining a new API, write a unit test for it. - * - As part of the unit test, use `callAPIAndDocument($entity, $action, ...)`. - * - When the test executes, the inputs and outputs are logged to an example file. - * - You can commit this file to git. - * - Whenever the inputs/output change, they'll be visible in SCM/git because - * the example file also changes. - * - * This trait is intended for use with PHPUnit-based test cases. - */ -trait Api3DocTrait { - use Api3TestTrait; - - /** - * This function exists to wrap api functions. - * so we can ensure they succeed, generate and example & throw exceptions without litterering the test with checks - * - * @param string $entity - * @param string $action - * @param array $params - * @param string $function - * Pass this in to create a generated example. - * @param string $file - * Pass this in to create a generated example. - * @param string $description - * @param string|null $exampleName - * - * @return array|int - */ - public function callAPIAndDocument($entity, $action, $params, $function, $file, $description = "", $exampleName = NULL) { - $params['version'] = $this->_apiversion; - $result = $this->callAPISuccess($entity, $action, $params); - $this->documentMe($entity, $action, $params, $result, $function, $file, $description, $exampleName); - return $result; - } - - /** - * Create test generated example in api/v3/examples. - * - * To turn this off (e.g. on the server) set - * define(DONT_DOCUMENT_TEST_CONFIG ,1); - * in your settings file - * - * @param string $entity - * @param string $action - * @param array $params - * Array as passed to civicrm_api function. - * @param array $result - * Array as received from the civicrm_api function. - * @param string $testFunction - * Calling function - generally __FUNCTION__. - * @param string $testFile - * Called from file - generally __FILE__. - * @param string $description - * Descriptive text for the example file. - * @param string $exampleName - * Name for this example file (CamelCase) - if omitted the action name will be substituted. - */ - private function documentMe($entity, $action, $params, $result, $testFunction, $testFile, $description = "", $exampleName = NULL) { - if ($params['version'] != 3 || (defined('DONT_DOCUMENT_TEST_CONFIG') && DONT_DOCUMENT_TEST_CONFIG)) { - return; - } - $entity = _civicrm_api_get_camel_name($entity); - $action = strtolower($action); - - if (empty($exampleName)) { - // Attempt to convert lowercase action name to CamelCase. - // This is clunky/imperfect due to the convention of all lowercase actions. - $exampleName = \CRM_Utils_String::convertStringToCamel($action); - $knownPrefixes = [ - 'Get', - 'Set', - 'Create', - 'Update', - 'Send', - ]; - foreach ($knownPrefixes as $prefix) { - if (strpos($exampleName, $prefix) === 0 && $prefix != $exampleName) { - $exampleName[strlen($prefix)] = strtoupper($exampleName[strlen($prefix)]); - } - } - } - - $this->tidyExampleResult($result); - if (isset($params['version'])) { - unset($params['version']); - } - // Format multiline description as array - $desc = []; - if (is_string($description) && strlen($description)) { - foreach (explode("\n", $description) as $line) { - $desc[] = trim($line); - } - } - $smarty = \CRM_Core_Smarty::singleton(); - $smarty->assign('testFunction', $testFunction); - $smarty->assign('function', _civicrm_api_get_entity_name_from_camel($entity) . "_$action"); - foreach ($params as $index => $param) { - if (is_string($param)) { - $params[$index] = addslashes($param); - } - } - $smarty->assign('params', $params); - $smarty->assign('entity', $entity); - $smarty->assign('testFile', basename($testFile)); - $smarty->assign('description', $desc); - $smarty->assign('result', $result); - $smarty->assign('action', $action); - - global $civicrm_root; - if (file_exists($civicrm_root . '/tests/templates/documentFunction.tpl')) { - if (!is_dir($civicrm_root . "/api/v3/examples/$entity")) { - mkdir($civicrm_root . "/api/v3/examples/$entity"); - } - $f = fopen($civicrm_root . "/api/v3/examples/$entity/$exampleName.ex.php", "w+b"); - $contents = $smarty->fetch($civicrm_root . '/tests/templates/documentFunction.tpl'); - $contents = \CRM_Core_CodeGen_Util_ArraySyntaxConverter::convert($contents); - fwrite($f, $contents); - fclose($f); - } - } - - /** - * Tidy up examples array so that fields that change often ..don't - * and debug related fields are unset - * - * @param array $result - */ - public function tidyExampleResult(&$result) { - if (!is_array($result)) { - return; - } - $fieldsToChange = [ - 'hash' => '67eac7789eaee00', - 'modified_date' => '2012-11-14 16:02:35', - 'created_date' => '2013-07-28 08:49:19', - 'create_date' => '20120130621222105', - 'application_received_date' => '20130728084957', - 'in_date' => '2013-07-28 08:50:19', - 'scheduled_date' => '20130728085413', - 'approval_date' => '20130728085413', - 'pledge_start_date_high' => '20130726090416', - 'start_date' => '2013-07-29 00:00:00', - 'event_start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'event_end_date' => '2013-08-04 00:00:00', - 'decision_date' => '20130805000000', - ]; - - $keysToUnset = ['xdebug', 'undefined_fields']; - foreach ($keysToUnset as $unwantedKey) { - if (isset($result[$unwantedKey])) { - unset($result[$unwantedKey]); - } - } - if (isset($result['values'])) { - if (!is_array($result['values'])) { - return; - } - $resultArray = &$result['values']; - } - elseif (is_array($result)) { - $resultArray = &$result; - } - else { - return; - } - - foreach ($resultArray as $index => &$values) { - if (!is_array($values)) { - continue; - } - foreach ($values as $key => &$value) { - if (substr($key, 0, 3) == 'api' && is_array($value)) { - if (isset($value['is_error'])) { - // we have a std nested result format - $this->tidyExampleResult($value); - } - else { - foreach ($value as &$nestedResult) { - // this is an alternative syntax for nested results a keyed array of results - $this->tidyExampleResult($nestedResult); - } - } - } - if (in_array($key, $keysToUnset)) { - unset($values[$key]); - break; - } - if (array_key_exists($key, $fieldsToChange) && !empty($value)) { - $value = $fieldsToChange[$key]; - } - if (is_string($value)) { - $value = addslashes($value); - } - } - } - } - -} diff --git a/civicrm/Civi/Test/Api3TestTrait.php b/civicrm/Civi/Test/Api3TestTrait.php index e00452ab97..d12f912bdb 100644 --- a/civicrm/Civi/Test/Api3TestTrait.php +++ b/civicrm/Civi/Test/Api3TestTrait.php @@ -54,7 +54,7 @@ trait Api3TestTrait { unset($expected[$value]); } } - $this->assertEquals($result, $expected, "api result array comparison failed " . $prefix . print_r($result, TRUE) . ' was compared to ' . print_r($expected, TRUE)); + $this->assertEquals($result, $expected, 'api result array comparison failed ' . $prefix . print_r($result, TRUE) . ' was compared to ' . print_r($expected, TRUE)); } /** @@ -142,6 +142,17 @@ trait Api3TestTrait { return $result; } + /** + * @deprecated + * @param string $entity + * @param string $action + * @param array $params + * @return array|int + */ + public function callAPIAndDocument($entity, $action, $params) { + return $this->callAPISuccess($entity, $action, $params); + } + /** * wrap api functions. * so we can ensure they succeed & throw exceptions without litterering the test with checks diff --git a/civicrm/Civi/Test/Api4TestTrait.php b/civicrm/Civi/Test/Api4TestTrait.php index 88d52ce210..0bfe6bc9d1 100644 --- a/civicrm/Civi/Test/Api4TestTrait.php +++ b/civicrm/Civi/Test/Api4TestTrait.php @@ -2,6 +2,7 @@ namespace Civi\Test; +use Civi\Api4\Generic\AbstractAction; use Civi\Api4\Generic\Result; use Civi\Api4\Service\Spec\Provider\FinancialItemCreationSpecProvider; use Civi\Api4\Utils\CoreUtil; @@ -123,12 +124,16 @@ trait Api4TestTrait { ['default_value', 'IS EMPTY'], ['readonly', 'IS EMPTY'], ], + 'orderBy' => ['required' => 'DESC'], ], 'name'); $extraValues = []; - foreach ($requiredFields as $fieldName => $requiredField) { - if (!isset($values[$fieldName])) { - $extraValues[$fieldName] = $this->getRequiredValue($requiredField); + foreach ($requiredFields as $fieldName => $field) { + if ( + !isset($values[$fieldName]) && + ($field['required'] || AbstractAction::evaluateCondition($field['required_if'], $values + $extraValues)) + ) { + $extraValues[$fieldName] = $this->getRequiredValue($field); } } diff --git a/civicrm/Civi/Test/DbTestTrait.php b/civicrm/Civi/Test/DbTestTrait.php index ff81b0e0d5..bdfcbfe9a8 100644 --- a/civicrm/Civi/Test/DbTestTrait.php +++ b/civicrm/Civi/Test/DbTestTrait.php @@ -111,7 +111,7 @@ trait DbTestTrait { * @param null $message */ public function assertDBRowNotExist($daoName, $id, $message = NULL) { - $message = $message ? $message : "$daoName (#$id) should not exist"; + $message = $message ?: "$daoName (#$id) should not exist"; $value = \CRM_Core_DAO::getFieldValue($daoName, $id, 'id', 'id', TRUE); $this->assertNull($value, $message); } @@ -123,7 +123,7 @@ trait DbTestTrait { * @param null $message */ public function assertDBRowExist($daoName, $id, $message = NULL) { - $message = $message ? $message : "$daoName (#$id) should exist"; + $message = $message ?: "$daoName (#$id) should exist"; $value = \CRM_Core_DAO::getFieldValue($daoName, $id, 'id', 'id', TRUE); $this->assertEquals($id, $value, $message); } diff --git a/civicrm/Civi/Test/EntityTrait.php b/civicrm/Civi/Test/EntityTrait.php index 1dfe24cbfa..6a3f0707b9 100644 --- a/civicrm/Civi/Test/EntityTrait.php +++ b/civicrm/Civi/Test/EntityTrait.php @@ -47,15 +47,15 @@ trait EntityTrait { * Create an entity, recording it's details for tearDown. * * @param string $entity - * @param array $params + * @param array $values * @param string $identifier * * @return array */ - protected function createTestEntity(string $entity, array $params, string $identifier = 'default'): array { + protected function createTestEntity(string $entity, array $values, string $identifier = 'default'): array { $result = NULL; try { - $result = \civicrm_api4($entity, 'create', ['values' => $params, 'checkPermissions' => FALSE])->first(); + $result = \civicrm_api4($entity, 'create', ['values' => $values, 'checkPermissions' => FALSE])->single(); $this->setTestEntityID($entity, $result['id'], $identifier); } catch (\CRM_Core_Exception $e) { diff --git a/civicrm/Civi/Test/EventTestTrait.php b/civicrm/Civi/Test/EventTestTrait.php index 73682c12a6..c494e94707 100644 --- a/civicrm/Civi/Test/EventTestTrait.php +++ b/civicrm/Civi/Test/EventTestTrait.php @@ -13,9 +13,7 @@ namespace Civi\Test; use Civi\Api4\Event; use Civi\Api4\ExampleData; -use Civi\Api4\PriceField; use Civi\Api4\PriceFieldValue; -use Civi\Api4\PriceSet; use Civi\Api4\PriceSetEntity; use Civi\Api4\UFField; use Civi\Api4\UFGroup; @@ -57,9 +55,9 @@ trait EventTestTrait { protected function eventCreatePaid(array $eventParameters = [], array $priceSetParameters = [], string $identifier = 'PaidEvent'): array { $eventParameters = array_merge($this->getEventExampleData(), $eventParameters); $event = $this->eventCreate($eventParameters, $identifier); - if (array_keys($priceSetParameters) !== ['id']) { + if (empty($priceSetParameters['id'])) { try { - $this->eventCreatePriceSet([], $identifier); + $this->eventCreatePriceSet($priceSetParameters, $identifier); $this->setTestEntityID('PriceSetEntity', PriceSetEntity::create(FALSE) ->setValues([ 'entity_table' => 'civicrm_event', @@ -77,6 +75,37 @@ trait EventTestTrait { return $event; } + /** + * Add a discount price set to the given event. + * + * @param string $eventIdentifier + * @param array $discountParameters + * @param array $priceSetParameters + * @param string $identifier + * @param float $fraction + * + * @noinspection PhpUnhandledExceptionInspection + * @noinspection PhpDocMissingThrowsInspection + */ + public function addDiscountPriceSet(string $eventIdentifier = 'PaidEvent', array $discountParameters = [], array $priceSetParameters = [], string $identifier = 'discount', $fraction = .5): void { + $this->eventCreatePriceSet($priceSetParameters, $identifier); + $discountParameters = array_merge([ + 'start_date' => '1 week ago', + 'end_date' => 'tomorrow', + 'entity_id' => $this->getEventID($eventIdentifier), + 'entity_table' => 'civicrm_event', + 'price_set_id' => $this->ids['PriceSet'][$identifier], + ], $discountParameters); + $this->createTestEntity('Discount', $discountParameters, $identifier); + $priceOptions = PriceFieldValue::get(FALSE) + ->addWhere('price_field_id.price_set_id', '=', $this->ids['PriceSet'][$identifier]) + ->execute(); + foreach ($priceOptions as $price) { + PriceFieldValue::update(FALSE)->addWhere('id', '=', $price['id']) + ->setValues(['amount' => round($price['amount'] * $fraction)])->execute(); + } + } + /** * Create an unpaid event. * @@ -281,20 +310,18 @@ trait EventTestTrait { * * @param array $priceSetParameters * @param string $identifier - * - * @throws \CRM_Core_Exception */ private function eventCreatePriceSet(array $priceSetParameters, string $identifier): void { $priceSetParameters = array_merge($priceSetParameters, [ 'min_amount' => 0, 'title' => 'Fundraising dinner', - 'name' => 'fundraising_dinner', + 'name' => $identifier, 'extends:name' => 'CiviEvent', 'financial_type_id:name' => 'Event Fee', ]); - $this->setTestEntityID('PriceSet', PriceSet::create(FALSE)->setValues($priceSetParameters)->execute()->first()['id'], $identifier); - $this->setTestEntityID('PriceField', PriceField::create(FALSE)->setValues([ + $this->createTestEntity('PriceSet', $priceSetParameters, $identifier); + $this->createTestEntity('PriceField', [ 'label' => 'Fundraising Dinner', 'name' => 'fundraising_dinner', 'html_type' => 'Radio', @@ -303,15 +330,14 @@ trait EventTestTrait { 'price_set_id' => $this->ids['PriceSet'][$identifier], 'is_enter_qty' => 1, 'financial_type_id:name' => 'Event Fee', - ])->execute()->first()['id'], $identifier); + ], $identifier); foreach ($this->getPriceFieldOptions() as $optionIdentifier => $priceFieldOption) { - $this->setTestEntityID('PriceFieldValue', PriceFieldValue::create(FALSE)->setValues( + $this->createTestEntity('PriceFieldValue', array_merge([ 'price_field_id' => $this->ids['PriceField'][$identifier], 'financial_type_id:name' => 'Event Fee', - ], $priceFieldOption), - )->execute()->first()['id'], $identifier . '_' . $optionIdentifier); + ], $priceFieldOption), $identifier . '_' . $optionIdentifier); } } @@ -323,12 +349,10 @@ trait EventTestTrait { * functions and would allow over-riding. * * @return array[] - * - * @throws \CRM_Core_Exception */ protected function getPriceFieldOptions(string $identifier = 'PaidEvent'): array { if ($identifier !== 'PaidEvent') { - throw new \CRM_Core_Exception('Only paid event currently supported'); + $this->fail('Only paid event currently supported'); } return [ 'free' => ['name' => 'free', 'label' => 'Complementary', 'amount' => 0], diff --git a/civicrm/Civi/Test/FormTrait.php b/civicrm/Civi/Test/FormTrait.php new file mode 100644 index 0000000000..799a586a2b --- /dev/null +++ b/civicrm/Civi/Test/FormTrait.php @@ -0,0 +1,39 @@ +<?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; + +use Civi\Test\FormWrappers\EventFormOnline; +use Civi\Test\FormWrappers\EventFormParticipant; + +/** + * Trait for writing tests interacting with QuickForm. + */ +trait FormTrait { + + /** + * @param $formName + * @param $submittedValues + * @param array $urlParameters + * + * @return \Civi\Test\FormWrapper + */ + public function getTestForm($formName, $submittedValues, array $urlParameters = []) { + if ($formName === 'CRM_Event_Form_Participant') { + return new EventFormParticipant($formName, $submittedValues, $urlParameters); + } + if ($formName === 'CRM_Event_Form_Registration_Register') { + return new EventFormOnline($formName, $submittedValues, $urlParameters); + } + return new FormWrapper($formName, $submittedValues, $urlParameters); + } + +} diff --git a/civicrm/Civi/Test/FormWrapper.php b/civicrm/Civi/Test/FormWrapper.php new file mode 100644 index 0000000000..737ebb9389 --- /dev/null +++ b/civicrm/Civi/Test/FormWrapper.php @@ -0,0 +1,342 @@ +<?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; + +use Civi\Api4\Utils\ReflectionUtils; + +class FormWrapper { + + /** + * @var array + */ + private $formValues; + + /** + * @var \CRM_Core_Form + */ + protected $form; + + /** + * @var \CRM_Core_Form[] + */ + protected $subsequentForms = []; + + private $output; + + private $templateVariables; + + private $mail; + + /** + * @return null|array + */ + public function getMail(): ?array { + return $this->mail; + } + + /** + * @return array + */ + public function getFirstMail(): array { + return $this->mail ? (array) reset($this->mail) : []; + } + + public function getFirstMailBody() : string { + return $this->getFirstMail()['body'] ?? ''; + } + + private $redirects; + + private $mailSpoolID; + + private $validation; + + private $originalMailSetting; + + public const CONSTRUCTED = 0; + public const PREPROCESSED = 1; + public const BUILT = 3; + public const VALIDATED = 4; + public const SUBMITTED = 5; + + /** + * @var \CRM_Contribute_Import_Controller|\CRM_Core_Controller|\CRM_Event_Controller_Registration + */ + private $formController; + + /** + * @param string $formName + * @param array $formValues + * @param array $urlParameters + */ + public function __construct(string $formName, array $formValues = [], array $urlParameters = []) { + $this->formValues = $formValues; + $this->setFormObject($formName, $this->formValues, $urlParameters); + } + + /** + * Process a CiviCRM form. + * + * @param int $state + * + * @return \Civi\Test\FormWrapper + */ + public function processForm(int $state = self::SUBMITTED): self { + if ($state > self::CONSTRUCTED) { + $this->form->preProcess(); + } + if ($state > self::PREPROCESSED) { + $this->form->buildForm(); + } + if ($state > self::BUILT) { + $this->validation = $this->form->validate(); + } + if ($state > self::VALIDATED) { + $this->postProcess(); + } + return $this; + } + + /** + * Add another form to process. + * + * @param string $formName + * @param array $formValues + * + * @return $this + */ + public function addSubsequentForm(string $formName, array $formValues = []): FormWrapper { + /* @var \CRM_Core_Form */ + $form = new $formName(); + $form->controller = $this->form->controller; + $_SESSION['_' . $this->form->controller->_name . '_container']['values'][$form->getName()] = $formValues; + $this->subsequentForms[$form->getName()] = $form; + return $this; + } + + /** + * Call a function declared as externally accessible on the form. + * + * This will only call a limited number of form functions that are either + * a) supported from use from outside of core or + * b) direct form flow functions + * + * As this class is expected to be used in extension tests we don't want to + * perpetuate the current issue with internal / unsupported properties being + * accessed willy nilly - so this provides testing support using supported + * or intrinsic functions only. + * + * @param string $name + * @param array $arguments + * + * @return mixed + * @throws \CRM_Core_Exception + * @throws \ReflectionException + */ + public function __call(string $name, array $arguments) { + if (!empty(ReflectionUtils::getCodeDocs((new \ReflectionMethod($this->form, $name)), 'Method')['api'])) { + return call_user_func([$this->form, $name], $arguments); + } + throw new \CRM_Core_Exception($name . ' method not supported for external use'); + } + + /** + * Call form post process function. + * + * @return $this + */ + public function postProcess(): self { + $this->startTrackingMail(); + $this->form->postProcess(); + foreach ($this->subsequentForms as $form) { + $form->preProcess(); + $form->buildForm(); + $form->postProcess(); + } + $this->stopTrackingMail(); + return $this; + } + + /** + * Instantiate form object. + * + * We need to instantiate the form to run preprocess, which means we have to trick it about the request method. + * + * @param string $class + * Name of form class. + * + * @param array $formValues + * + * @param array $urlParameters + */ + private function setFormObject(string $class, array $formValues = [], array $urlParameters = []): void { + $_POST = $formValues; + $this->form = new $class(); + $_SERVER['REQUEST_METHOD'] = 'GET'; + $_REQUEST += $urlParameters; + switch ($class) { + case 'CRM_Event_Cart_Form_Checkout_Payment': + case 'CRM_Event_Cart_Form_Checkout_ParticipantsAndPrices': + $this->form->controller = new \CRM_Event_Cart_Controller_Checkout(); + break; + + case 'CRM_Event_Form_Registration_Register': + $this->form->controller = $this->formController = new \CRM_Event_Controller_Registration(); + break; + + case 'CRM_Event_Form_Registration_Confirm': + case 'CRM_Event_Form_Registration_AdditionalParticipant': + if ($this->formController) { + // Add to the existing form controller. + $this->form->controller = $this->formController; + } + else { + $this->form->controller = $this->formController = new \CRM_Event_Controller_Registration(); + } + break; + + case 'CRM_Contribute_Form_Contribution_Main': + $this->form->controller = new \CRM_Contribute_Controller_Contribution(); + break; + + case 'CRM_Contribute_Form_Contribution_Confirm': + $this->form->controller = new \CRM_Contribute_Controller_Contribution(); + $this->form->controller->setStateMachine(new \CRM_Contribute_StateMachine_Contribution($this->form->controller)); + // The submitted values are on the Main form. + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['Main'] = $formValues; + return; + + case 'CRM_Contact_Import_Form_DataSource': + case 'CRM_Contact_Import_Form_MapField': + case 'CRM_Contact_Import_Form_Preview': + $this->form->controller = new \CRM_Contact_Import_Controller(); + $this->form->controller->setStateMachine(new \CRM_Core_StateMachine($this->form->controller)); + // The submitted values should be set on one or the other of the forms in the flow. + // For test simplicity we set on all rather than figuring out which ones go where.... + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['DataSource'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['MapField'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['Preview'] = $formValues; + return; + + case 'CRM_Contribute_Import_Form_DataSource': + case 'CRM_Contribute_Import_Form_MapField': + case 'CRM_Contribute_Import_Form_Preview': + if ($this->formController) { + // Add to the existing form controller. + $this->form->controller = $this->formController; + } + else { + $this->form->controller = new \CRM_Contribute_Import_Controller(); + $this->form->controller->setStateMachine(new \CRM_Core_StateMachine($this->form->controller)); + $this->formController = $this->form->controller; + } + // The submitted values should be set on one or the other of the forms in the flow. + // For test simplicity we set on all rather than figuring out which ones go where.... + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['DataSource'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['MapField'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['Preview'] = $formValues; + return; + + case 'CRM_Member_Import_Form_DataSource': + case 'CRM_Member_Import_Form_MapField': + case 'CRM_Member_Import_Form_Preview': + $this->form->controller = new \CRM_Member_Import_Controller(); + $this->form->controller->setStateMachine(new \CRM_Core_StateMachine($this->form->controller)); + // The submitted values should be set on one or the other of the forms in the flow. + // For test simplicity we set on all rather than figuring out which ones go where.... + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['DataSource'] = $this->formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['MapField'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['Preview'] = $formValues; + return; + + case 'CRM_Event_Import_Form_DataSource': + case 'CRM_Event_Import_Form_MapField': + case 'CRM_Event_Import_Form_Preview': + $this->form->controller = new \CRM_Event_Import_Controller(); + $this->form->controller->setStateMachine(new \CRM_Core_StateMachine($this->form->controller)); + // The submitted values should be set on one or the other of the forms in the flow. + // For test simplicity we set on all rather than figuring out which ones go where.... + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['DataSource'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['MapField'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['Preview'] = $formValues; + return; + + case 'CRM_Activity_Import_Form_DataSource': + case 'CRM_Activity_Import_Form_MapField': + case 'CRM_Activity_Import_Form_Preview': + $this->form->controller = new \CRM_Activity_Import_Controller(); + $this->form->controller->setStateMachine(new \CRM_Core_StateMachine($this->form->controller)); + // The submitted values should be set on one or the other of the forms in the flow. + // For test simplicity we set on all rather than figuring out which ones go where.... + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['DataSource'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['MapField'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['Preview'] = $formValues; + return; + + case 'CRM_Custom_Import_Form_DataSource': + case 'CRM_Custom_Import_Form_MapField': + case 'CRM_Custom_Import_Form_Preview': + $this->form->controller = new \CRM_Custom_Import_Controller(); + $this->form->controller->setStateMachine(new \CRM_Core_StateMachine($this->form->controller)); + // The submitted values should be set on one or the other of the forms in the flow. + // For test simplicity we set on all rather than figuring out which ones go where.... + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['DataSource'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['MapField'] = $formValues; + $_SESSION['_' . $this->form->controller->_name . '_container']['values']['Preview'] = $formValues; + return; + + case strpos($class, 'Search') !== FALSE: + $this->form->controller = new \CRM_Contact_Controller_Search(); + break; + + case strpos($class, '_Form_') !== FALSE: + $this->form->controller = new \CRM_Core_Controller_Simple($class, $this->form->getName()); + break; + + default: + $this->form->controller = new \CRM_Core_Controller(); + } + + $this->form->controller->setStateMachine(new \CRM_Core_StateMachine($this->form->controller)); + $_SESSION['_' . $this->form->controller->_name . '_container']['values'][$this->form->getName()] = $formValues; + if (isset($formValues['_qf_button_name'])) { + $_SESSION['_' . $this->form->controller->_name . '_container']['_qf_button_name'] = $this->formValues['_qf_button_name']; + } + } + + /** + * Start tracking any emails sent by this form. + * + * @noinspection PhpUnhandledExceptionInspection + */ + private function startTrackingMail(): void { + $this->originalMailSetting = \Civi::settings()->get('mailing_backend'); + \Civi::settings() + ->set('mailing_backend', array_merge((array) $this->originalMailSetting, ['outBound_option' => \CRM_Mailing_Config::OUTBOUND_OPTION_REDIRECT_TO_DB])); + $this->mailSpoolID = (int) \CRM_Core_DAO::singleValueQuery('SELECT MAX(id) FROM civicrm_mailing_spool'); + } + + /** + * Store any mails sent & revert to pre-test behaviour. + * + * @noinspection PhpUnhandledExceptionInspection + */ + private function stopTrackingMail(): void { + $dao = \CRM_Core_DAO::executeQuery('SELECT headers, body FROM civicrm_mailing_spool WHERE id > ' . $this->mailSpoolID . ' ORDER BY id'); + \CRM_Core_DAO::executeQuery('DELETE FROM civicrm_mailing_spool WHERE id > ' . $this->mailSpoolID); + while ($dao->fetch()) { + $this->mail[] = ['headers' => $dao->headers, 'body' => $dao->body]; + } + \Civi::settings()->set('mailing_backend', $this->originalMailSetting); + } + +} diff --git a/civicrm/Civi/Test/FormWrappers/EventFormOnline.php b/civicrm/Civi/Test/FormWrappers/EventFormOnline.php new file mode 100644 index 0000000000..be3ae7e81c --- /dev/null +++ b/civicrm/Civi/Test/FormWrappers/EventFormOnline.php @@ -0,0 +1,36 @@ +<?php + +namespace Civi\Test\FormWrappers; + +use Civi\Test\FormWrapper; + +/** + * + */ +class EventFormOnline extends FormWrapper { + + /** + * Add another form to process. + * + * @param string $formName + * @param array $formValues + * + * @return $this + */ + public function addSubsequentForm(string $formName, array $formValues = []): FormWrapper { + if ($formName !== 'CRM_Event_Form_Registration_AdditionalParticipant') { + return parent::addSubsequentForm($formName, $formValues); + } + $formNumber = 1; + while (!empty($this->subsequentForms['Participant_' . $formNumber])) { + $formNumber++; + } + /* @var \CRM_Core_Form */ + $form = new $formName(NULL, \CRM_Core_Action::NONE, 'post', 'Participant_' . $formNumber); + $form->controller = $this->form->controller; + $_SESSION['_' . $this->form->controller->_name . '_container']['values'][$form->getName()] = $formValues; + $this->subsequentForms[$form->getName()] = $form; + return $this; + } + +} diff --git a/civicrm/Civi/Test/FormWrappers/EventFormParticipant.php b/civicrm/Civi/Test/FormWrappers/EventFormParticipant.php new file mode 100644 index 0000000000..f79eb10e0c --- /dev/null +++ b/civicrm/Civi/Test/FormWrappers/EventFormParticipant.php @@ -0,0 +1,33 @@ +<?php + +namespace Civi\Test\FormWrappers; + +use Civi\Test\FormWrapper; + +class EventFormParticipant extends FormWrapper { + + /** + * @var \CRM_Event_Form_Participant + */ + protected $form; + + /** + * @return int + */ + public function getEventID(): int { + return $this->form->getEventID(); + } + + public function getParticipantID(): int { + return $this->form->getEventID(); + } + + public function getDiscountID(): int { + return $this->form->getDiscountID(); + } + + public function getPriceSetID(): int { + return $this->form->getPriceSetID(); + } + +} diff --git a/civicrm/Civi/Token/TokenRow.php b/civicrm/Civi/Token/TokenRow.php index 0ef5b067e3..abaedda56e 100644 --- a/civicrm/Civi/Token/TokenRow.php +++ b/civicrm/Civi/Token/TokenRow.php @@ -188,11 +188,17 @@ class TokenRow { 'id' => $entityID, ]); $fieldValue = \CRM_Utils_Array::value($customFieldName, $record, ''); - + $originalValue = $fieldValue; // format the raw custom field value into proper display value if (isset($fieldValue)) { $fieldValue = (string) \CRM_Core_BAO_CustomField::displayValue($fieldValue, $customFieldID); } + // This is a bit of a clumsy wy of detecting a link field but if you look into the displayValue + // function you will understand.... By assigning the url as a plain token the text version can + // use it as plain text (not html re-converted which kinda works but not in subject lines) + if (is_string($fieldValue) && is_string($originalValue) && strpos($fieldValue, '<a href') !== FALSE && strpos($originalValue, '<a href') === FALSE) { + $this->format('text/plain')->tokens($entity, $customFieldName, $originalValue); + } return $this->format('text/html')->tokens($entity, $customFieldName, $fieldValue); } @@ -280,7 +286,7 @@ class TokenRow { $htmlTokens[$entity][$field] = \CRM_Utils_String::purifyHTML($value); } else { - $htmlTokens[$entity][$field] = is_object($value) ? $value : htmlentities($value, ENT_QUOTES); + $htmlTokens[$entity][$field] = is_object($value) ? $value : nl2br(htmlentities($value, ENT_QUOTES)); } } } @@ -292,7 +298,8 @@ class TokenRow { foreach ($htmlTokens as $entity => $values) { foreach ($values as $field => $value) { if (!$value instanceof \DateTime && !$value instanceof Money) { - $value = html_entity_decode(strip_tags($value)); + // rtrim removes trailing lines from <p> tags. + $value = rtrim(\CRM_Utils_String::htmlToText($value)); } if (!isset($textTokens[$entity][$field])) { $textTokens[$entity][$field] = $value; diff --git a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php index efec672168..b2e7148e19 100644 --- a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php +++ b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php @@ -112,6 +112,8 @@ class GenericWorkflowMessage implements WorkflowMessageInterface { protected function exportExtraTokenContext(array &$export): void { // Tax term is exposed at the generic level as so many templates use it // (e.g. Membership, participant, pledge as well as contributions). + // However, these basically now all implement the ContributionTrait so we + // can hopefully remove from here (after some checking). $export['smartyTokenAlias']['taxTerm'] = 'domain.tax_term'; } diff --git a/civicrm/ang/api4Explorer/Explorer.js b/civicrm/ang/api4Explorer/Explorer.js index 5e13dcb626..48180a0f1d 100644 --- a/civicrm/ang/api4Explorer/Explorer.js +++ b/civicrm/ang/api4Explorer/Explorer.js @@ -560,7 +560,7 @@ false, true, ['id', 'name', 'label'], - ['id', 'name', 'label', 'abbr', 'description', 'color', 'icon'] + CRM.vars.api4.suffixes ]; format = 'json'; defaultVal = false; diff --git a/civicrm/ang/crmMailing/EditUnsubGroupCtrl.js b/civicrm/ang/crmMailing/EditUnsubGroupCtrl.js index 56070e03e6..587e0faeee 100644 --- a/civicrm/ang/crmMailing/EditUnsubGroupCtrl.js +++ b/civicrm/ang/crmMailing/EditUnsubGroupCtrl.js @@ -1,10 +1,12 @@ (function(angular, $, _) { - angular.module('crmMailing').controller('EditUnsubGroupCtrl', function EditUnsubGroupCtrl($scope) { + angular.module('crmMailing').controller('EditUnsubGroupCtrl', function EditUnsubGroupCtrl($scope, crmMailingLoader) { // CRM.crmMailing.groupNames is a global constant - since it doesn't change, we can digest & cache. var mandatoryIds = []; $scope.isUnsubGroupRequired = function isUnsubGroupRequired(mailing) { + crmMailingLoader.getGroupNames(mailing); + if (!_.isEmpty(CRM.crmMailing.groupNames)) { _.each(CRM.crmMailing.groupNames, function(grp) { if (grp.is_hidden == "1") { diff --git a/civicrm/ang/crmMailing/ViewRecipCtrl.js b/civicrm/ang/crmMailing/ViewRecipCtrl.js index 5d137ce603..05f5463512 100644 --- a/civicrm/ang/crmMailing/ViewRecipCtrl.js +++ b/civicrm/ang/crmMailing/ViewRecipCtrl.js @@ -1,81 +1,12 @@ (function(angular, $, _) { - angular.module('crmMailing').controller('ViewRecipCtrl', function ViewRecipCtrl($scope) { - var mids = []; - var gids = []; - var groupNames = []; - var mailings = []; - var civimailings = []; - var civimails = []; - - function getGroupNames(mailing) { - if (-1 == mailings.indexOf(mailing.id)) { - mailings.push(mailing.id); - _.each(mailing.recipients.groups.include, function(id) { - if (-1 == gids.indexOf(id)) { - gids.push(id); - } - }); - _.each(mailing.recipients.groups.exclude, function(id) { - if (-1 == gids.indexOf(id)) { - gids.push(id); - } - }); - _.each(mailing.recipients.groups.base, function(id) { - if (-1 == gids.indexOf(id)) { - gids.push(id); - } - }); - if (!_.isEmpty(gids)) { - CRM.api3('Group', 'get', {'id': {"IN": gids}}).then(function(result) { - _.each(result.values, function(grp) { - if (_.isEmpty(_.where(groupNames, {id: parseInt(grp.id)}))) { - groupNames.push({id: parseInt(grp.id), title: grp.title, is_hidden: grp.is_hidden}); - } - }); - CRM.crmMailing.groupNames = groupNames; - $scope.$parent.crmMailingConst.groupNames = groupNames; - }); - } - } - } - - function getCiviMails(mailing) { - if (-1 == civimailings.indexOf(mailing.id)) { - civimailings.push(mailing.id); - _.each(mailing.recipients.mailings.include, function(id) { - if (-1 == mids.indexOf(id)) { - mids.push(id); - } - }); - _.each(mailing.recipients.mailings.exclude, function(id) { - if (-1 == mids.indexOf(id)) { - mids.push(id); - } - }); - if (!_.isEmpty(mids)) { - CRM.api3('Mailing', 'get', {'id': {"IN": mids}}).then(function(result) { - _.each(result.values, function(mail) { - if (_.isEmpty(_.where(civimails, {id: parseInt(mail.id)}))) { - civimails.push({id: parseInt(mail.id), name: mail.name}); - } - }); - CRM.crmMailing.civiMails = civimails; - $scope.$parent.crmMailingConst.civiMails = civimails; - }); - } - } - } + angular.module('crmMailing').controller('ViewRecipCtrl', function ViewRecipCtrl($scope, crmMailingLoader) { $scope.getIncludesAsString = function(mailing) { var first = true; var names = ''; - if (_.isEmpty(CRM.crmMailing.groupNames)) { - getGroupNames(mailing); - } - if (_.isEmpty(CRM.crmMailing.civiMails)) { - getCiviMails(mailing); - } + crmMailingLoader.getGroupNames(mailing); + crmMailingLoader.getCiviMails(mailing); _.each(mailing.recipients.groups.include, function(id) { var group = _.where(CRM.crmMailing.groupNames, {id: parseInt(id)}); if (group.length) { diff --git a/civicrm/ang/crmMailing/services.js b/civicrm/ang/crmMailing/services.js index 6db1484af5..f72a12712f 100644 --- a/civicrm/ang/crmMailing/services.js +++ b/civicrm/ang/crmMailing/services.js @@ -436,6 +436,79 @@ }; }); + // @deprecated This code was moved from ViewRecipCtrl and is quarantined in this service. + // It's used to fetch data that ought to be available in other ways. + // It would be nice to refactor it out completely. + angular.module('crmMailing').factory('crmMailingLoader', function ($q, crmApi, crmFromAddresses, crmQueue) { + + var mids = []; + var gids = []; + var groupNames = []; + var mailings = []; + var civimailings = []; + var civimails = []; + + return { + // Populates the CRM.crmMailing.groupNames global + getGroupNames: function(mailing) { + if (-1 == mailings.indexOf(mailing.id)) { + mailings.push(mailing.id); + _.each(mailing.recipients.groups.include, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + _.each(mailing.recipients.groups.exclude, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + _.each(mailing.recipients.groups.base, function(id) { + if (-1 == gids.indexOf(id)) { + gids.push(id); + } + }); + if (!_.isEmpty(gids)) { + CRM.api3('Group', 'get', {'id': {"IN": gids}}).then(function(result) { + _.each(result.values, function(grp) { + if (_.isEmpty(_.where(groupNames, {id: parseInt(grp.id)}))) { + groupNames.push({id: parseInt(grp.id), title: grp.title, is_hidden: grp.is_hidden}); + } + }); + CRM.crmMailing.groupNames = groupNames; + }); + } + } + }, + // Populates the CRM.crmMailing.civiMails global + getCiviMails: function(mailing) { + if (-1 == civimailings.indexOf(mailing.id)) { + civimailings.push(mailing.id); + _.each(mailing.recipients.mailings.include, function(id) { + if (-1 == mids.indexOf(id)) { + mids.push(id); + } + }); + _.each(mailing.recipients.mailings.exclude, function(id) { + if (-1 == mids.indexOf(id)) { + mids.push(id); + } + }); + if (!_.isEmpty(mids)) { + CRM.api3('Mailing', 'get', {'id': {"IN": mids}}).then(function(result) { + _.each(result.values, function(mail) { + if (_.isEmpty(_.where(civimails, {id: parseInt(mail.id)}))) { + civimails.push({id: parseInt(mail.id), name: mail.name}); + } + }); + CRM.crmMailing.civiMails = civimails; + }); + } + } + } + }; + }); + // The preview manager performs preview actions while putting up a visible UI (e.g. dialogs & status alerts) angular.module('crmMailing').factory('crmMailingPreviewMgr', function (dialogService, crmMailingMgr, crmStatus) { return { diff --git a/civicrm/api/api.php b/civicrm/api/api.php index 670e6ee5fe..42ebc7e36d 100644 --- a/civicrm/api/api.php +++ b/civicrm/api/api.php @@ -7,14 +7,20 @@ */ /** - * CiviCRM API wrapper function. + * The original API wrapper. + * + * @deprecated + * Not recommended for new code but ok for existing code to continue using. + * + * Calling `civicrm_api()` is functionally identical to `civicrm_api3()` or `civicrm_api4()` except: + * 1. It requires `$params['version']`. + * 2. It catches exceptions and returns an array like `['is_error' => 1, 'error_message' => ...]`. + * This is disfavored for typical business-logic/hooks/forms/etc. + * However, if an existing caller handles `civicrm_api()`-style errors, then there is no functional benefit to reworking it. * * @param string $entity - * type of entities to deal with * @param string $action - * create, get, delete or some special action name. * @param array $params - * array to be passed to function * * @return array|int|Civi\Api4\Generic\Result */ @@ -117,16 +123,13 @@ function civicrm_api4(string $entity, string $action, array $params = [], $index * Throws exception. * * @param string $entity - * Type of entities to deal with. * @param string $action - * Create, get, delete or some special action name. * @param array $params - * Array to be passed to function. * * @throws CRM_Core_Exception * * @return array|int - * Dependant on the $action + * Dependent on the $action */ function civicrm_api3(string $entity, string $action, array $params = []) { $params['version'] = 3; @@ -159,10 +162,6 @@ function _civicrm_api3_api_getfields(&$apiRequest) { if (strtolower($apiRequest['action'] == 'getfields')) { // the main param getfields takes is 'action' - however this param is not compatible with REST // so we accept 'api_action' as an alias of action on getfields - if (!empty($apiRequest['params']['api_action'])) { - // $apiRequest['params']['action'] = $apiRequest['params']['api_action']; - // unset($apiRequest['params']['api_action']); - } return ['action' => ['api.aliases' => ['api_action']]]; } $getFieldsParams = ['action' => $apiRequest['action']]; diff --git a/civicrm/api/v3/ActionSchedule.php b/civicrm/api/v3/ActionSchedule.php index 0931d67247..2fb0dae647 100644 --- a/civicrm/api/v3/ActionSchedule.php +++ b/civicrm/api/v3/ActionSchedule.php @@ -36,9 +36,6 @@ function civicrm_api3_action_schedule_get($params) { */ function civicrm_api3_action_schedule_create($params) { civicrm_api3_verify_one_mandatory($params, NULL, ['start_action_date', 'absolute_date']); - if (!array_key_exists('name', $params) && !array_key_exists('id', $params)) { - $params['name'] = CRM_Utils_String::munge($params['title']); - } return _civicrm_api3_basic_create(_civicrm_api3_get_BAO(__FUNCTION__), $params, 'ActionSchedule'); } @@ -54,6 +51,17 @@ function _civicrm_api3_action_schedule_create_spec(&$params) { $params['title']['api.required'] = TRUE; $params['mapping_id']['api.required'] = TRUE; $params['entity_value']['api.required'] = TRUE; + + // APIv3 doesn't understand dynamic pseudoconstants so just remove them + // to prevent false-positive validation errors. + $params['entity_value']['pseudoconstant'] = NULL; + $params['entity_status']['pseudoconstant'] = NULL; + $params['recipient']['pseudoconstant'] = NULL; + $params['recipient_listing']['pseudoconstant'] = NULL; + $params['start_action_date']['pseudoconstant'] = NULL; + $params['end_date']['pseudoconstant'] = NULL; + $params['filter_contact_language']['pseudoconstant'] = NULL; + $params['communication_language']['pseudoconstant'] = NULL; } /** diff --git a/civicrm/api/v3/Activity.php b/civicrm/api/v3/Activity.php index 98e8f33969..415f59876d 100644 --- a/civicrm/api/v3/Activity.php +++ b/civicrm/api/v3/Activity.php @@ -641,7 +641,7 @@ function _civicrm_api3_activity_check_params(&$params) { $activityTypeId = $params['activity_type_id'] ?? NULL; if ($activityName || $activityLabel) { - $activityTypeIdInList = array_search(($activityName ? $activityName : $activityLabel), $activityTypes); + $activityTypeIdInList = array_search(($activityName ?: $activityLabel), $activityTypes); if (!$activityTypeIdInList) { $errorString = $activityName ? "Invalid Activity Name : $activityName" : "Invalid Activity Type Label"; diff --git a/civicrm/api/v3/Contact.php b/civicrm/api/v3/Contact.php index 0fc2ca5b66..d3e35192ef 100644 --- a/civicrm/api/v3/Contact.php +++ b/civicrm/api/v3/Contact.php @@ -691,397 +691,6 @@ function _civicrm_api3_greeting_format_params($params) { } } -/** - * Adjust Metadata for Get action. - * - * @param array $params - * Array of parameters determined by getfields. - */ -function _civicrm_api3_contact_getquick_spec(&$params) { - $params['name']['api.required'] = TRUE; - $params['name']['title'] = ts('String to search on'); - $params['name']['type'] = CRM_Utils_Type::T_STRING; - $params['field']['type'] = CRM_Utils_Type::T_STRING; - $params['field']['title'] = ts('Field to search on'); - $params['field']['options'] = [ - '', - 'id', - 'contact_id', - 'external_identifier', - 'first_name', - 'last_name', - 'job_title', - 'postal_code', - 'street_address', - 'email', - 'city', - 'phone_numeric', - ]; - $params['table_name']['type'] = CRM_Utils_Type::T_STRING; - $params['table_name']['title'] = ts('Table alias to search on'); - $params['table_name']['api.default'] = 'cc'; -} - -/** - * Old Contact quick search api. - * - * @deprecated - * - * @param array $params - * - * @return array - * @throws \CRM_Core_Exception - */ -function civicrm_api3_contact_getquick($params) { - $name = CRM_Utils_Type::escape(CRM_Utils_Array::value('name', $params), 'String'); - $table_name = CRM_Utils_String::munge($params['table_name']); - // get the autocomplete options from settings - $acpref = explode(CRM_Core_DAO::VALUE_SEPARATOR, - CRM_Core_BAO_Setting::getItem(CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, - 'contact_autocomplete_options' - ) - ); - - $table_names = [ - 'email' => 'eml', - 'phone_numeric' => 'phe', - 'street_address' => 'sts', - 'city' => 'sts', - 'postal_code' => 'sts', - ]; - - // get the option values for contact autocomplete - $acOptions = CRM_Core_OptionGroup::values('contact_autocomplete_options', FALSE, FALSE, FALSE, NULL, 'name'); - - $list = $from = []; - foreach ($acpref as $value) { - if ($value && !empty($acOptions[$value])) { - $list[$value] = $acOptions[$value]; - } - } - // If we are doing quicksearch by a field other than name, make sure that field is added to results - if (!empty($params['field_name'])) { - $field_name = CRM_Utils_String::munge($params['field_name']); - // there is no good reason to request api_key via getquick - if ($field_name == 'api_key') { - throw new CRM_Core_Exception('Illegal value "api_key" for parameter "field_name"'); - } - // Unique name contact_id = id - if ($field_name == 'contact_id') { - $field_name = 'id'; - } - // dev/core#1420 : trim non-numeric character from phone search string - elseif ($field_name == 'phone_numeric') { - $name = preg_replace('/[^\d]/', '', $name); - } - if (isset($table_names[$field_name])) { - $table_name = $table_names[$field_name]; - } - elseif (strpos($field_name, 'custom_') === 0) { - $customField = civicrm_api3('CustomField', 'getsingle', [ - 'id' => substr($field_name, 7), - 'return' => [ - 'custom_group_id.table_name', - 'column_name', - 'data_type', - 'option_group_id', - 'html_type', - ], - ]); - $field_name = $customField['column_name']; - $table_name = CRM_Utils_String::munge($customField['custom_group_id.table_name']); - $from[$field_name] = "LEFT JOIN `$table_name` ON cc.id = `$table_name`.entity_id"; - if (CRM_Core_BAO_CustomField::hasOptions($customField)) { - $customOptionsWhere = []; - $customFieldOptions = CRM_Contact_BAO_Contact::buildOptions('custom_' . $customField['id'], 'search'); - $isMultivalueField = CRM_Core_BAO_CustomField::isSerialized($customField); - $sep = CRM_Core_DAO::VALUE_SEPARATOR; - foreach ($customFieldOptions as $optionKey => $optionLabel) { - if (mb_stripos($optionLabel, $name) !== FALSE) { - $customOptionsWhere[$optionKey] = "$table_name.$field_name " . ($isMultivalueField ? "LIKE '%{$sep}{$optionKey}{$sep}%'" : "= '$optionKey'"); - } - } - } - } - // phone_numeric should be phone - $searchField = str_replace('_numeric', '', $field_name); - if (!in_array($searchField, $list)) { - $list[] = $searchField; - } - } - else { - // Set field name to first name for exact match checking. - $field_name = 'sort_name'; - } - - $select = $actualSelectElements = ['sort_name']; - - foreach ($list as $value) { - $suffix = substr($value, 0, 2) . substr($value, -1); - switch ($value) { - case 'street_address': - case 'city': - case 'postal_code': - $selectText = $value; - $value = "address"; - $suffix = 'sts'; - case 'phone': - case 'email': - $actualSelectElements[] = $select[] = ($value == 'address') ? $selectText : $value; - if ($value == 'phone') { - $actualSelectElements[] = $select[] = 'phone_ext'; - } - $from[$value] = "LEFT JOIN civicrm_{$value} {$suffix} ON ( cc.id = {$suffix}.contact_id AND {$suffix}.is_primary = 1 ) "; - break; - - case 'country': - case 'state_province': - $select[] = "{$suffix}.name as {$value}"; - $actualSelectElements[] = "{$suffix}.name"; - if (!in_array('address', $from)) { - $from['address'] = 'LEFT JOIN civicrm_address sts ON ( cc.id = sts.contact_id AND sts.is_primary = 1) '; - } - $from[$value] = " LEFT JOIN civicrm_{$value} {$suffix} ON ( sts.{$value}_id = {$suffix}.id ) "; - break; - - default: - if ($value == 'id') { - $actualSelectElements[] = 'cc.id'; - } - elseif ($value != 'sort_name') { - $suffix = 'cc'; - if ($field_name == $value) { - $suffix = $table_name; - } - $actualSelectElements[] = $select[] = $suffix . '.' . $value; - } - break; - } - } - - $config = CRM_Core_Config::singleton(); - $as = $select; - $select = implode(', ', $select); - if (!empty($select)) { - $select = ", $select"; - } - $actualSelectElements = implode(', ', $actualSelectElements); - $from = implode(' ', $from); - $limit = (int) ($params['limit'] ?? 0); - $limit = $limit > 0 ? $limit : Civi::settings()->get('search_autocomplete_count'); - - // add acl clause here - list($aclFrom, $aclWhere) = CRM_Contact_BAO_Contact_Permission::cacheClause('cc'); - $whereClauses = ['cc.is_deleted = 0']; - if ($aclWhere) { - $whereClauses[] = $aclWhere; - } - $isPrependWildcard = \Civi::settings()->get('includeWildCardInName'); - - if (!empty($params['org'])) { - $whereClauses[] = 'contact_type = "Organization"'; - - // CRM-7157, hack: get current employer details when - // employee_id is present. - $currEmpDetails = []; - if (!empty($params['employee_id'])) { - if ($currentEmployer = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', - (int) $params['employee_id'], - 'employer_id' - )) { - if ($isPrependWildcard) { - $strSearch = "%$name%"; - } - else { - $strSearch = "$name%"; - } - - // get current employer details - $dao = CRM_Core_DAO::executeQuery("SELECT cc.id as id, CONCAT_WS( ' :: ', {$actualSelectElements} ) as data, sort_name - FROM civicrm_contact cc {$from} WHERE cc.contact_type = \"Organization\" AND cc.id = {$currentEmployer} AND cc.sort_name LIKE '$strSearch'"); - if ($dao->fetch()) { - $currEmpDetails = [ - 'id' => $dao->id, - 'data' => $dao->data, - ]; - } - } - } - } - - if (!empty($params['contact_sub_type'])) { - $contactSubType = CRM_Utils_Type::escape($params['contact_sub_type'], 'String'); - $whereClauses[] = "cc.contact_sub_type = '{$contactSubType}'"; - } - - if (!empty($params['contact_type'])) { - $contactType = CRM_Utils_Type::escape($params['contact_type'], 'String'); - $whereClauses[] = "cc.contact_type LIKE '{$contactType}'"; - } - - // Set default for current_employer or return contact with particular id - if (!empty($params['id'])) { - $whereClauses[] = 'cc.id = ' . (int) $params['id']; - } - - if (!empty($params['cid'])) { - $whereClauses[] = 'cc.id <> ' . (int) $params['cid']; - } - - // Contact's based of relationhip type - $relType = NULL; - if (!empty($params['rel'])) { - $relation = explode('_', $params['rel']); - $relType = CRM_Utils_Type::escape($relation[0], 'Integer'); - $rel = CRM_Utils_Type::escape($relation[2], 'String'); - } - - if ($isPrependWildcard) { - $strSearch = "%$name%"; - } - else { - $strSearch = "$name%"; - } - $includeEmailFrom = $includeNickName = ''; - if ($config->includeNickNameInName) { - $includeNickName = " OR nick_name LIKE '$strSearch'"; - } - $where = ' AND ' . implode(' AND ', $whereClauses); - if (isset($customOptionsWhere)) { - $customOptionsWhere = $customOptionsWhere ?: [0]; - $whereClause = ' WHERE (' . implode(' OR ', $customOptionsWhere) . ") $where"; - } - elseif (!empty($params['field_name']) && !empty($params['table_name']) && $params['field_name'] != 'sort_name') { - $whereClause = " WHERE ( $table_name.$field_name LIKE '$strSearch') {$where}"; - // Search by id should be exact - if ($field_name == 'id' || $field_name == 'external_identifier') { - $whereClause = " WHERE ( $table_name.$field_name = '$name') {$where}"; - } - } - else { - $whereClause = " WHERE ( sort_name LIKE '$strSearch' $includeNickName ) {$where} "; - if ($config->includeEmailInName) { - if (!in_array('email', $list)) { - $includeEmailFrom = "LEFT JOIN civicrm_email eml ON ( cc.id = eml.contact_id AND eml.is_primary = 1 )"; - } - $emailWhere = " WHERE email LIKE '$strSearch'"; - } - } - - $additionalFrom = ''; - if ($relType) { - $additionalFrom = " - INNER JOIN civicrm_relationship_type r ON ( - r.id = {$relType} - AND ( cc.contact_type = r.contact_type_{$rel} OR r.contact_type_{$rel} IS NULL ) - AND ( cc.contact_sub_type = r.contact_sub_type_{$rel} OR r.contact_sub_type_{$rel} IS NULL ) - )"; - } - - // check if only CMS users are requested - if (!empty($params['cmsuser'])) { - $additionalFrom = " - INNER JOIN civicrm_uf_match um ON (um.contact_id=cc.id) - "; - } - $orderBy = _civicrm_api3_quicksearch_get_order_by($name, $isPrependWildcard, $field_name); - - //CRM-5954 - $query = " - SELECT DISTINCT(id), data, sort_name, exactFirst - FROM ( - ( SELECT IF($table_name.$field_name = '{$name}', 0, 1) as exactFirst, cc.id as id, CONCAT_WS( ' :: ', - {$actualSelectElements} ) - as data - {$select} - FROM civicrm_contact cc {$from} - {$aclFrom} - {$additionalFrom} - {$whereClause} - {$orderBy} - LIMIT 0, {$limit} ) - "; - - if (!empty($emailWhere)) { - $query .= " - UNION ( - SELECT IF($table_name.$field_name = '{$name}', 0, 1) as exactFirst, cc.id as id, CONCAT_WS( ' :: ', - {$actualSelectElements} ) - as data - {$select} - FROM civicrm_contact cc {$from} - {$aclFrom} - {$additionalFrom} {$includeEmailFrom} - {$emailWhere} AND cc.is_deleted = 0 " . ($aclWhere ? " AND $aclWhere " : '') . " - {$orderBy} - LIMIT 0, {$limit} - ) - "; - } - $query .= ") t - {$orderBy} - LIMIT 0, {$limit} - "; - - // send query to hook to be modified if needed - CRM_Utils_Hook::contactListQuery($query, - $name, - empty($params['context']) ? NULL : CRM_Utils_Type::escape($params['context'], 'String'), - empty($params['id']) ? NULL : $params['id'] - ); - - $dao = CRM_Core_DAO::executeQuery($query); - - $contactList = []; - $listCurrentEmployer = TRUE; - while ($dao->fetch()) { - $t = ['id' => $dao->id]; - foreach ($as as $k) { - $t[$k] = $dao->$k ?? ''; - } - $t['data'] = $dao->data; - // Replace keys with values when displaying fields from an option list - if (!empty($customOptionsWhere)) { - $data = explode(' :: ', $dao->data); - $pos = count($data) - 1; - $customValue = array_intersect(CRM_Utils_Array::explodePadded($data[$pos]), array_keys($customOptionsWhere)); - $data[$pos] = implode(', ', array_intersect_key($customFieldOptions, array_flip($customValue))); - $t['data'] = implode(' :: ', $data); - } - $contactList[] = $t; - if (!empty($params['org']) && - !empty($currEmpDetails) && - $dao->id == $currEmpDetails['id'] - ) { - $listCurrentEmployer = FALSE; - } - } - - //return organization name if doesn't exist in db - if (empty($contactList)) { - if (!empty($params['org'])) { - if ($listCurrentEmployer && !empty($currEmpDetails)) { - $contactList = [ - [ - 'data' => $currEmpDetails['data'], - 'id' => $currEmpDetails['id'], - ], - ]; - } - else { - $contactList = [ - [ - 'data' => $name, - 'id' => $name, - ], - ]; - } - } - } - - return civicrm_api3_create_success($contactList, $params, 'Contact', 'getquick'); -} - /** * Get the order by string for the quicksearch query. * @@ -1134,17 +743,6 @@ function _civicrm_api3_quicksearch_get_order_by($name, $isPrependWildcard, $fiel return "ORDER BY exactFirst, sort_name"; } -/** - * Declare deprecated api functions. - * - * @deprecated api notice - * @return array - * Array of deprecated actions - */ -function _civicrm_api3_contact_deprecation() { - return ['getquick' => 'The "getquick" action is deprecated in favor of "getlist".']; -} - /** * Merges given pair of duplicate contacts. * diff --git a/civicrm/api/v3/CustomValue.php b/civicrm/api/v3/CustomValue.php index f3b127c177..252adeb0f6 100644 --- a/civicrm/api/v3/CustomValue.php +++ b/civicrm/api/v3/CustomValue.php @@ -345,14 +345,14 @@ function civicrm_api3_custom_value_gettree($params) { $result = []; foreach ($tree as $group) { $result[$group['name']] = []; - $groupToReturn = $toReturn['custom_group'] ? $toReturn['custom_group'] : array_keys($group); + $groupToReturn = $toReturn['custom_group'] ?: array_keys($group); foreach ($groupToReturn as $item) { $result[$group['name']][$item] = $group[$item] ?? NULL; } $result[$group['name']]['fields'] = []; foreach ($group['fields'] as $fieldInfo) { $field = ['value' => NULL]; - $fieldToReturn = $toReturn['custom_field'] ? $toReturn['custom_field'] : array_keys($fieldInfo); + $fieldToReturn = $toReturn['custom_field'] ?: array_keys($fieldInfo); foreach ($fieldToReturn as $item) { $field[$item] = $fieldInfo[$item] ?? NULL; } diff --git a/civicrm/api/v3/Profile.php b/civicrm/api/v3/Profile.php index 0d2b9a5c8b..c9c0af5960 100644 --- a/civicrm/api/v3/Profile.php +++ b/civicrm/api/v3/Profile.php @@ -575,7 +575,9 @@ function _civicrm_api3_buildprofile_submitfields($profileID, $optionsBehaviour, } } } - $profileFields[$profileID][$fieldName] = array_merge($entityGetFieldsResult[$realName], $profileFields[$profileID][$entityfield]); + if (!empty($entityGetFieldsResult[$realName])) { + $profileFields[$profileID][$fieldName] = array_merge($entityGetFieldsResult[$realName], $profileFields[$profileID][$entityfield]); + } if (!isset($profileFields[$profileID][$fieldName]['api.aliases'])) { $profileFields[$profileID][$fieldName]['api.aliases'] = []; } diff --git a/civicrm/api/v3/examples/Activity/ContactRefCustomField.ex.php b/civicrm/api/v3/examples/Activity/ContactRefCustomField.ex.php deleted file mode 100644 index e8e90c1d92..0000000000 --- a/civicrm/api/v3/examples/Activity/ContactRefCustomField.ex.php +++ /dev/null @@ -1,117 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.create API. - * - * Demonstrates create with Contact Reference Custom Field. - * - * @return array - * API result array - */ -function activity_create_example() { - $params = [ - 'source_contact_id' => 1, - 'activity_type_id' => 'Test activity type', - 'subject' => 'test activity type id', - 'activity_date_time' => '2011-06-02 14:36:13', - 'status_id' => 2, - 'priority_id' => 1, - 'duration' => 120, - 'location' => 'Pennsylvania', - 'details' => 'a test activity', - 'custom_2' => '1', - ]; - - try { - $result = civicrm_api3('Activity', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'source_record_id' => '', - 'activity_type_id' => '9999', - 'subject' => 'test activity type id', - 'activity_date_time' => '20110602143613', - 'duration' => '120', - 'location' => 'Pennsylvania', - 'phone_id' => '', - 'phone_number' => '', - 'details' => 'a test activity', - 'status_id' => '2', - 'priority_id' => '1', - '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' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityCreateCustomContactRefField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/ContactRefCustomFieldGet.ex.php b/civicrm/api/v3/examples/Activity/ContactRefCustomFieldGet.ex.php deleted file mode 100644 index 6141ee6b2f..0000000000 --- a/civicrm/api/v3/examples/Activity/ContactRefCustomFieldGet.ex.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.get API. - * - * Get with Contact Ref Custom Field. - * - * @return array - * API result array - */ -function activity_get_example() { - $params = [ - 'return.custom_2' => 1, - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Activity', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'activity_type_id' => '9999', - 'subject' => 'test activity type id', - 'activity_date_time' => '2011-06-02 14:36:13', - 'duration' => '120', - 'location' => 'Pennsylvania', - 'details' => 'a test activity', - 'status_id' => '2', - 'priority_id' => '1', - 'is_test' => 0, - 'is_auto' => 0, - 'is_current_revision' => '1', - 'is_deleted' => 0, - 'is_star' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'custom_1' => 'defaultValue', - 'custom_2_id' => '1', - 'custom_2' => 'Anderson, Anthony', - 'source_contact_id' => '1', - 'source_contact_name' => 'Mr. Anthony Anderson II', - 'source_contact_sort_name' => 'Anderson, Anthony', - 'custom_1_1' => 'defaultValue', - 'custom_2_1' => 'Anderson, Anthony', - 'custom_2_1_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityCreateCustomContactRefField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/Create.ex.php b/civicrm/api/v3/examples/Activity/Create.ex.php deleted file mode 100644 index 734f5fd106..0000000000 --- a/civicrm/api/v3/examples/Activity/Create.ex.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.create API. - * - * @return array - * API result array - */ -function activity_create_example() { - $params = [ - 'source_contact_id' => 1, - 'activity_type_id' => 'Test activity type', - 'subject' => 'test activity type id', - 'activity_date_time' => '2011-06-02 14:36:13', - 'status_id' => 2, - 'priority_id' => 1, - 'duration' => 120, - 'location' => 'Pennsylvania', - 'details' => 'a test activity', - 'custom_1' => 'custom string', - ]; - - try { - $result = civicrm_api3('Activity', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'source_record_id' => '', - 'activity_type_id' => '9999', - 'subject' => 'test activity type id', - 'activity_date_time' => '20110602143613', - 'duration' => '120', - 'location' => 'Pennsylvania', - 'phone_id' => '', - 'phone_number' => '', - 'details' => 'a test activity', - 'status_id' => '2', - 'priority_id' => '1', - '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' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityCreateCustomSubType" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/DateTimeHigh.ex.php b/civicrm/api/v3/examples/Activity/DateTimeHigh.ex.php deleted file mode 100644 index c548c40eb7..0000000000 --- a/civicrm/api/v3/examples/Activity/DateTimeHigh.ex.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.get API. - * - * Demonstrates _high filter (at time of writing doesn't work if contact_id is set. - * - * @return array - * API result array - */ -function activity_get_example() { - $params = [ - 'source_contact_id' => 1, - 'filter.activity_date_time_high' => '20120101000000', - 'sequential' => 1, - 'return' => 'activity_date_time', - ]; - - try { - $result = civicrm_api3('Activity', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'activity_date_time' => '2011-01-01 00:00:00', - 'source_contact_id' => '1', - 'source_contact_name' => 'Mr. Anthony Anderson II', - 'source_contact_sort_name' => 'Anderson, Anthony', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetFilterMaxDate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/DateTimeLow.ex.php b/civicrm/api/v3/examples/Activity/DateTimeLow.ex.php deleted file mode 100644 index a3edbf46d1..0000000000 --- a/civicrm/api/v3/examples/Activity/DateTimeLow.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.get API. - * - * Demonstrates _low filter (at time of writing doesn't work if contact_id is set. - * - * @return array - * API result array - */ -function activity_get_example() { - $params = [ - 'filter.activity_date_time_low' => '20120101000000', - 'sequential' => 1, - 'return' => 'activity_date_time', - ]; - - try { - $result = civicrm_api3('Activity', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'id' => '2', - 'activity_date_time' => '2012-02-16 00:00:00', - 'source_contact_id' => '1', - 'source_contact_name' => 'Mr. Anthony Anderson II', - 'source_contact_sort_name' => 'Anderson, Anthony', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetFilterMaxDate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/Delete.ex.php b/civicrm/api/v3/examples/Activity/Delete.ex.php deleted file mode 100644 index 012d906baa..0000000000 --- a/civicrm/api/v3/examples/Activity/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.delete API. - * - * @return array - * API result array - */ -function activity_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Activity', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteActivity" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/Get.ex.php b/civicrm/api/v3/examples/Activity/Get.ex.php deleted file mode 100644 index 8317521e9f..0000000000 --- a/civicrm/api/v3/examples/Activity/Get.ex.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.get API. - * - * @return array - * API result array - */ -function activity_get_example() { - $params = [ - 'activity_type_id' => 9999, - 'sequential' => 1, - 'return.custom_1' => 1, - ]; - - try { - $result = civicrm_api3('Activity', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'activity_type_id' => '9999', - 'subject' => 'test activity type id', - 'activity_date_time' => '2011-06-02 14:36:13', - 'duration' => '120', - 'location' => 'Pennsylvania', - 'details' => 'a test activity', - 'status_id' => '2', - 'priority_id' => '1', - 'is_test' => 0, - 'is_auto' => 0, - 'is_current_revision' => '1', - 'is_deleted' => 0, - 'is_star' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'custom_1' => 'custom string', - 'source_contact_id' => '1', - 'source_contact_name' => 'Mr. Anthony Anderson II', - 'source_contact_sort_name' => 'Anderson, Anthony', - 'custom_1_1' => 'custom string', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityGetGoodIDCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/GetFields.ex.php b/civicrm/api/v3/examples/Activity/GetFields.ex.php deleted file mode 100644 index 7800ac1d31..0000000000 --- a/civicrm/api/v3/examples/Activity/GetFields.ex.php +++ /dev/null @@ -1,684 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.getfields API. - * - * @return array - * API result array - */ -function activity_getfields_example() { - $params = [ - 'action' => 'create', - ]; - - try { - $result = civicrm_api3('Activity', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 31, - 'values' => [ - 'source_record_id' => [ - 'name' => 'source_record_id', - 'type' => 1, - 'title' => 'Source Record', - 'description' => 'Artificial FK to original transaction (e.g. contribution) IF it is not an Activity. Table can be figured out through activity_type_id, and further through component registry.', - 'where' => 'civicrm_activity.source_record_id', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '2.0', - 'is_core_field' => TRUE, - ], - 'activity_type_id' => [ - 'name' => 'activity_type_id', - 'type' => 1, - 'title' => 'Activity Type ID', - 'description' => 'FK to civicrm_option_value.id, that has to be valid, registered activity type.', - 'required' => TRUE, - 'import' => TRUE, - 'where' => 'civicrm_activity.activity_type_id', - 'headerPattern' => '/(activity.)?type(.id$)/i', - 'export' => TRUE, - 'default' => '1', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'label' => 'Activity Type', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'activity_type', - 'optionEditPath' => 'civicrm/admin/options/activity_type', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'activity_date_time' => [ - 'name' => 'activity_date_time', - 'type' => 12, - 'title' => 'Activity Date', - 'description' => 'Date and time this activity is scheduled to occur. Formerly named scheduled_date_time.', - 'required' => '', - 'import' => TRUE, - 'where' => 'civicrm_activity.activity_date_time', - 'headerPattern' => '/(activity.)?date(.time$)?/i', - 'export' => TRUE, - 'default' => 'CURRENT_TIMESTAMP', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select Date', - 'formatType' => 'activityDateTime', - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - 'api.default' => 'now', - ], - 'phone_id' => [ - 'name' => 'phone_id', - 'type' => 1, - 'title' => 'Phone ID (called)', - 'description' => 'Phone ID of the number called (optional - used if an existing phone number is selected).', - 'where' => 'civicrm_activity.phone_id', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'FKClassName' => 'CRM_Core_DAO_Phone', - 'html' => [ - 'type' => 'EntityRef', - 'label' => 'Phone (called)', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - 'FKApiName' => 'Phone', - ], - 'phone_number' => [ - 'name' => 'phone_number', - 'type' => 2, - 'title' => 'Phone (called) Number', - 'description' => 'Phone number in case the number does not exist in the civicrm_phone table.', - 'maxlength' => 64, - 'size' => 30, - 'where' => 'civicrm_activity.phone_number', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 64, - 'size' => 30, - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - ], - 'priority_id' => [ - 'name' => 'priority_id', - 'type' => 1, - 'title' => 'Priority', - 'description' => 'ID of the priority given to this activity. Foreign key to civicrm_option_value.', - 'import' => TRUE, - 'where' => 'civicrm_activity.priority_id', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'priority', - 'optionEditPath' => 'civicrm/admin/options/priority', - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - ], - 'parent_id' => [ - 'name' => 'parent_id', - 'type' => 1, - 'title' => 'Parent Activity ID', - 'description' => 'Parent meeting ID (if this is a follow-up item). This is not currently implemented', - 'where' => 'civicrm_activity.parent_id', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'FKClassName' => 'CRM_Activity_DAO_Activity', - 'html' => [ - 'label' => 'Parent Activity', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'FKApiName' => 'Activity', - ], - 'is_auto' => [ - 'name' => 'is_auto', - 'type' => 16, - 'title' => 'Auto', - 'where' => 'civicrm_activity.is_auto', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'add' => '2.2', - 'is_core_field' => TRUE, - ], - 'relationship_id' => [ - 'name' => 'relationship_id', - 'type' => 1, - 'title' => 'Relationship ID', - 'description' => 'FK to Relationship ID', - 'where' => 'civicrm_activity.relationship_id', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Relationship', - 'html' => [ - 'label' => 'Relationship', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '2.2', - 'is_core_field' => TRUE, - 'FKApiName' => 'Relationship', - ], - 'is_current_revision' => [ - 'name' => 'is_current_revision', - 'type' => 16, - 'title' => 'Is this activity a current revision in versioning chain?', - 'import' => TRUE, - 'where' => 'civicrm_activity.is_current_revision', - 'headerPattern' => '/(is.)?(current.)?(revision|version(ing)?)/i', - 'export' => TRUE, - 'default' => '1', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'add' => '2.2', - 'is_core_field' => TRUE, - ], - 'original_id' => [ - 'name' => 'original_id', - 'type' => 1, - 'title' => 'Original Activity ID', - 'description' => 'Activity ID of the first activity record in versioning chain.', - 'where' => 'civicrm_activity.original_id', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'FKClassName' => 'CRM_Activity_DAO_Activity', - 'html' => [ - 'label' => 'Original Activity', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '2.2', - 'is_core_field' => TRUE, - 'FKApiName' => 'Activity', - ], - 'weight' => [ - 'name' => 'weight', - 'type' => 1, - 'title' => 'Order', - 'where' => 'civicrm_activity.weight', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'add' => '4.1', - 'is_core_field' => TRUE, - ], - 'is_star' => [ - 'name' => 'is_star', - 'type' => 16, - 'title' => 'Is Starred', - 'description' => 'Activity marked as favorite.', - 'import' => TRUE, - 'where' => 'civicrm_activity.is_star', - 'headerPattern' => '/(activity.)?(star|favorite)/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Checkbox', - ], - 'add' => '4.7', - 'is_core_field' => TRUE, - ], - 'id' => [ - 'name' => 'id', - 'type' => 1, - 'title' => 'Activity ID', - 'description' => 'Unique Other Activity ID', - 'required' => TRUE, - 'import' => TRUE, - 'where' => 'civicrm_activity.id', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_id', - 'api.aliases' => [ - '0' => 'activity_id', - ], - ], - 'subject' => [ - 'name' => 'subject', - 'type' => 2, - 'title' => 'Subject', - 'description' => 'The subject/purpose/short description of the activity.', - 'maxlength' => 255, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_activity.subject', - 'headerPattern' => '/(activity.)?subject/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 255, - 'size' => 45, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_subject', - ], - 'duration' => [ - 'name' => 'duration', - 'type' => 1, - 'title' => 'Duration', - 'description' => 'Planned or actual duration of activity expressed in minutes. Conglomerate of former duration_hours and duration_minutes.', - 'import' => TRUE, - 'where' => 'civicrm_activity.duration', - 'headerPattern' => '/(activity.)?duration(s)?$/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_duration', - ], - 'location' => [ - 'name' => 'location', - 'type' => 2, - 'title' => 'Location', - 'description' => 'Location of the activity (optional, open text).', - 'maxlength' => 255, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_activity.location', - 'headerPattern' => '/(activity.)?location$/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 255, - 'size' => 45, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_location', - ], - 'details' => [ - 'name' => 'details', - 'type' => 32, - 'title' => 'Details', - 'description' => 'Details about the activity (agenda, notes, etc).', - 'import' => TRUE, - 'where' => 'civicrm_activity.details', - 'headerPattern' => '/(activity.)?detail(s)?$/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'RichTextEditor', - 'rows' => 2, - 'cols' => 80, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_details', - ], - 'status_id' => [ - 'name' => 'status_id', - 'type' => 1, - 'title' => 'Activity Status', - 'description' => 'ID of the status this activity is currently in. Foreign key to civicrm_option_value.', - 'import' => TRUE, - 'where' => 'civicrm_activity.status_id', - 'headerPattern' => '/(activity.)?status(.label$)?/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'activity_status', - 'optionEditPath' => 'civicrm/admin/options/activity_status', - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_status_id', - 'api.aliases' => [ - '0' => 'activity_status', - ], - ], - 'is_test' => [ - 'name' => 'is_test', - 'type' => 16, - 'title' => 'Test', - 'import' => TRUE, - 'where' => 'civicrm_activity.is_test', - 'headerPattern' => '/(is.)?test(.activity)?/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_is_test', - ], - 'medium_id' => [ - 'name' => 'medium_id', - 'type' => 1, - 'title' => 'Activity Medium', - 'description' => 'Activity Medium, Implicit FK to civicrm_option_value where option_group = encounter_medium.', - 'where' => 'civicrm_activity.medium_id', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'encounter_medium', - 'optionEditPath' => 'civicrm/admin/options/encounter_medium', - ], - 'add' => '2.2', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_medium_id', - ], - 'result' => [ - 'name' => 'result', - 'type' => 2, - 'title' => 'Result', - 'description' => 'Currently being used to store result id for survey activity, FK to option value.', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_activity.result', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'add' => '3.3', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_result', - ], - 'is_deleted' => [ - 'name' => 'is_deleted', - 'type' => 16, - 'title' => 'Activity is in the Trash', - 'import' => TRUE, - 'where' => 'civicrm_activity.is_deleted', - 'headerPattern' => '/(activity.)?(trash|deleted)/i', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - ], - 'add' => '2.2', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_is_deleted', - ], - 'campaign_id' => [ - 'name' => 'campaign_id', - 'type' => 1, - 'title' => 'Campaign ID', - 'description' => 'The campaign for which this activity has been triggered.', - 'import' => TRUE, - 'where' => 'civicrm_activity.campaign_id', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'FKClassName' => 'CRM_Campaign_DAO_Campaign', - 'component' => 'CiviCampaign', - 'html' => [ - 'type' => 'EntityRef', - 'label' => 'Campaign', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'table' => 'civicrm_campaign', - 'keyColumn' => 'id', - 'labelColumn' => 'title', - 'prefetch' => 'FALSE', - ], - 'add' => '3.4', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_campaign_id', - 'FKApiName' => 'Campaign', - ], - 'engagement_level' => [ - 'name' => 'engagement_level', - 'type' => 1, - 'title' => 'Engagement Index', - 'description' => 'Assign a specific level of engagement to this activity. Used for tracking constituents in ladder of engagement.', - 'import' => TRUE, - 'where' => 'civicrm_activity.engagement_level', - 'export' => TRUE, - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'engagement_index', - 'optionEditPath' => 'civicrm/admin/options/engagement_index', - ], - 'add' => '3.4', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_engagement_level', - ], - 'created_date' => [ - 'name' => 'created_date', - 'type' => 256, - 'title' => 'Created Date', - 'description' => 'When was the activity was created.', - 'required' => '', - 'where' => 'civicrm_activity.created_date', - 'export' => TRUE, - 'default' => 'CURRENT_TIMESTAMP', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select Date', - 'label' => 'Created Date', - ], - 'add' => '4.7', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_created_date', - ], - 'modified_date' => [ - 'name' => 'modified_date', - 'type' => 256, - 'title' => 'Modified Date', - 'description' => 'When was the activity (or closely related entity) was created or modified or deleted.', - 'required' => '', - 'where' => 'civicrm_activity.modified_date', - 'export' => TRUE, - 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP', - 'table_name' => 'civicrm_activity', - 'entity' => 'Activity', - 'bao' => 'CRM_Activity_BAO_Activity', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select Date', - 'label' => 'Modified Date', - ], - 'readonly' => TRUE, - 'add' => '4.7', - 'is_core_field' => TRUE, - 'uniqueName' => 'activity_modified_date', - ], - 'assignee_contact_id' => [ - 'name' => 'assignee_id', - 'title' => 'Activity Assignee', - 'description' => 'Contact(s) assigned to this activity.', - 'type' => 1, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'FKApiName' => 'Contact', - ], - 'target_contact_id' => [ - 'name' => 'target_id', - 'title' => 'Activity Target', - 'description' => 'Contact(s) participating in this activity.', - 'type' => 1, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'FKApiName' => 'Contact', - ], - 'source_contact_id' => [ - 'name' => 'source_contact_id', - 'title' => 'Activity Source Contact', - 'description' => 'Person who created this activity. Defaults to current user.', - 'type' => 1, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'api.default' => 'user_contact_id', - 'FKApiName' => 'Contact', - 'api.required' => TRUE, - ], - 'case_id' => [ - 'name' => 'case_id', - 'title' => 'Case ID', - 'description' => 'For creating an activity as part of a case.', - 'type' => 1, - 'FKClassName' => 'CRM_Case_DAO_Case', - 'FKApiName' => 'Case', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetFields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/GetTargetAndAssignee.ex.php b/civicrm/api/v3/examples/Activity/GetTargetAndAssignee.ex.php deleted file mode 100644 index 2e62af1a5b..0000000000 --- a/civicrm/api/v3/examples/Activity/GetTargetAndAssignee.ex.php +++ /dev/null @@ -1,118 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.create API. - * - * Demonstrates setting & retrieving activity target & source. - * - * @return array - * API result array - */ -function activity_create_example() { - $params = [ - 'source_contact_id' => 1, - 'subject' => 'Make-it-Happen Meeting', - 'activity_date_time' => '20110316', - 'duration' => 120, - 'location' => 'Pennsylvania', - 'details' => 'a test activity', - 'status_id' => 1, - 'activity_type_id' => 1, - 'priority_id' => 1, - 'target_contact_id' => 1, - 'assignee_contact_id' => 1, - ]; - - try { - $result = civicrm_api3('Activity', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'source_record_id' => '', - 'activity_type_id' => '1', - 'subject' => 'Make-it-Happen Meeting', - 'activity_date_time' => '20110316000000', - 'duration' => '120', - 'location' => 'Pennsylvania', - 'phone_id' => '', - 'phone_number' => '', - 'details' => 'a test activity', - 'status_id' => '1', - 'priority_id' => '1', - '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' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityReturnTargetAssignee" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/GetTargetandAssigneeName.ex.php b/civicrm/api/v3/examples/Activity/GetTargetandAssigneeName.ex.php deleted file mode 100644 index fa0f47211c..0000000000 --- a/civicrm/api/v3/examples/Activity/GetTargetandAssigneeName.ex.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.getsingle API. - * - * Demonstrates retrieving activity target & source contact names. - * - * @return array - * API result array - */ -function activity_getsingle_example() { - $params = [ - 'id' => 1, - 'return' => [ - '0' => 'source_contact_name', - '1' => 'target_contact_name', - '2' => 'assignee_contact_name', - '3' => 'subject', - ], - ]; - - try { - $result = civicrm_api3('Activity', 'getsingle', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_getsingle_expectedresult() { - - $expectedResult = [ - 'id' => '1', - 'subject' => 'Make-it-Happen Meeting', - 'assignee_contact_id' => [], - 'assignee_contact_name' => [ - '5' => 'C Shore', - ], - 'assignee_contact_sort_name' => [ - '5' => 'Shore, C', - ], - 'source_contact_id' => '6', - 'source_contact_name' => 'D Bug', - 'source_contact_sort_name' => 'Bug, D', - 'target_contact_id' => [ - '1' => '4', - ], - 'target_contact_name' => [ - '3' => 'A Cat', - '4' => 'B Good', - ], - 'target_contact_sort_name' => [ - '3' => 'Cat, A', - '4' => 'Good, B', - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityReturnTargetAssigneeName" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Activity/ReturnAssigneeContact.ex.php b/civicrm/api/v3/examples/Activity/ReturnAssigneeContact.ex.php deleted file mode 100644 index 8fa66eb2b5..0000000000 --- a/civicrm/api/v3/examples/Activity/ReturnAssigneeContact.ex.php +++ /dev/null @@ -1,182 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Activity.get API. - * - * Demonstrates getting assignee_contact_id & using it to get the contact. - * - * @return array - * API result array - */ -function activity_get_example() { - $params = [ - 'activity_id' => 1, - 'sequential' => 1, - 'return.assignee_contact_id' => 1, - 'api.contact.get' => [ - 'id' => '$value.source_contact_id', - ], - 'return' => [ - '0' => 'activity_type_id', - '1' => 'subject', - ], - ]; - - try { - $result = civicrm_api3('Activity', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'activity_type_id' => '9999', - 'subject' => 'test activity type id', - 'source_contact_id' => '1', - 'source_contact_name' => 'Mr. Anthony Anderson II', - 'source_contact_sort_name' => 'Anderson, Anthony', - 'assignee_contact_id' => [ - '0' => '3', - ], - 'assignee_contact_name' => [ - '3' => 'The Rock roccky', - ], - 'assignee_contact_sort_name' => [ - '3' => 'roccky, The Rock', - ], - 'api.contact.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'contact_id' => '1', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => 'Anthony', - 'middle_name' => 'J.', - 'last_name' => 'Anderson', - 'prefix_id' => '3', - 'suffix_id' => '3', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '1', - 'email' => 'anthony_anderson@civicrm.org', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => 'Mr.', - 'individual_suffix' => 'II', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '1', - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityGetGoodID1" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ActivityContact/Create.ex.php b/civicrm/api/v3/examples/ActivityContact/Create.ex.php deleted file mode 100644 index 925723407e..0000000000 --- a/civicrm/api/v3/examples/ActivityContact/Create.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ActivityContact.create API. - * - * @return array - * API result array - */ -function activity_contact_create_example() { - $params = [ - 'contact_id' => 3, - 'activity_id' => 1, - 'record_type_id' => 2, - ]; - - try { - $result = civicrm_api3('ActivityContact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '4' => [ - 'id' => '4', - 'activity_id' => '1', - 'contact_id' => '3', - 'record_type_id' => '2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateActivityContact" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ActivityContact/Delete.ex.php b/civicrm/api/v3/examples/ActivityContact/Delete.ex.php deleted file mode 100644 index e37958d6f1..0000000000 --- a/civicrm/api/v3/examples/ActivityContact/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ActivityContact.delete API. - * - * @return array - * API result array - */ -function activity_contact_delete_example() { - $params = [ - 'id' => 14, - ]; - - try { - $result = civicrm_api3('ActivityContact', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_contact_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteActivityContact" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ActivityType/Create.ex.php b/civicrm/api/v3/examples/ActivityType/Create.ex.php deleted file mode 100644 index ca60925c1d..0000000000 --- a/civicrm/api/v3/examples/ActivityType/Create.ex.php +++ /dev/null @@ -1,106 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ActivityType.create API. - * - * @deprecated - * The ActivityType api is deprecated. Please use the OptionValue api instead. - * - * @return array - * API result array - */ -function activity_type_create_example() { - $params = [ - 'weight' => '2', - 'label' => 'send out letters', - 'filter' => 0, - 'is_active' => 1, - 'is_optgroup' => 1, - 'is_default' => 0, - ]; - - try { - $result = civicrm_api3('ActivityType', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_type_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 859, - 'values' => [ - '859' => [ - 'id' => '859', - 'option_group_id' => '2', - 'label' => 'send out letters', - 'value' => '55', - 'name' => 'send out letters', - 'grouping' => '', - 'filter' => 0, - 'is_default' => 0, - 'weight' => '2', - 'description' => '', - 'is_optgroup' => '1', - 'is_reserved' => '', - 'is_active' => '1', - 'component_id' => '', - 'domain_id' => '', - 'visibility_id' => '', - 'icon' => '', - 'color' => '', - ], - ], - 'deprecated' => 'The ActivityType api is deprecated. Please use the OptionValue api instead.', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityTypeCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ActivityType/Get.ex.php b/civicrm/api/v3/examples/ActivityType/Get.ex.php deleted file mode 100644 index 7ad7b6c026..0000000000 --- a/civicrm/api/v3/examples/ActivityType/Get.ex.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ActivityType.get API. - * - * @deprecated - * The ActivityType api is deprecated. Please use the OptionValue api instead. - * - * @return array - * API result array - */ -function activity_type_get_example() { - $params = []; - - try { - $result = civicrm_api3('ActivityType', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function activity_type_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 35, - 'values' => [ - '1' => 'Meeting', - '2' => 'Phone Call', - '3' => 'Email', - '4' => 'Outbound SMS', - '5' => 'Event Registration', - '6' => 'Contribution', - '7' => 'Membership Signup', - '8' => 'Membership Renewal', - '9' => 'Tell a Friend', - '10' => 'Pledge Acknowledgment', - '11' => 'Pledge Reminder', - '12' => 'Inbound Email', - '17' => 'Membership Renewal Reminder', - '19' => 'Bulk Email', - '22' => 'Print/Merge Document', - '34' => 'Mass SMS', - '35' => 'Change Membership Status', - '36' => 'Change Membership Type', - '37' => 'Cancel Recurring Contribution', - '38' => 'Update Recurring Contribution Billing Details', - '39' => 'Update Recurring Contribution', - '40' => 'Reminder Sent', - '41' => 'Export Accounting Batch', - '42' => 'Create Batch', - '43' => 'Edit Batch', - '44' => 'SMS delivery', - '45' => 'Inbound SMS', - '46' => 'Payment', - '47' => 'Refund', - '48' => 'Change Registration', - '49' => 'Downloaded Invoice', - '50' => 'Emailed Invoice', - '51' => 'Contact Merged', - '52' => 'Contact Deleted by Merge', - '54' => 'Failed Payment', - ], - 'deprecated' => 'The ActivityType api is deprecated. Please use the OptionValue api instead.', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityTypeGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ActivityTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Address/AddressLike.ex.php b/civicrm/api/v3/examples/Address/AddressLike.ex.php deleted file mode 100644 index a3cd6c204a..0000000000 --- a/civicrm/api/v3/examples/Address/AddressLike.ex.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Address.get API. - * - * Demonstrates Use of Like. - * - * @return array - * API result array - */ -function address_get_example() { - $params = [ - 'street_address' => [ - 'LIKE' => '%mb%', - ], - 'sequential' => 1, - 'return' => 'street_address', - ]; - - try { - $result = civicrm_api3('Address', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function address_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'id' => '2', - 'street_address' => 'Ambachtstraat 23', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetAddressLikeSuccess" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/AddressTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Address/AddressParse.ex.php b/civicrm/api/v3/examples/Address/AddressParse.ex.php deleted file mode 100644 index 8348056867..0000000000 --- a/civicrm/api/v3/examples/Address/AddressParse.ex.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Address.create API. - * - * Demonstrates Use of address parsing param. - * - * @return array - * API result array - */ -function address_create_example() { - $params = [ - 'street_parsing' => 1, - 'street_address' => '54A Excelsior Ave. Apt 1C', - 'location_type_id' => 8, - 'contact_id' => 3, - ]; - - try { - $result = civicrm_api3('Address', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function address_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'contact_id' => '3', - 'location_type_id' => '8', - 'is_primary' => '1', - 'is_billing' => 0, - 'street_address' => '54A Excelsior Ave. Apt 1C', - 'street_number' => '54', - 'street_number_suffix' => 'A', - 'street_name' => 'Excelsior Ave.', - 'street_unit' => 'Apt 1C', - 'manual_geo_code' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateAddressParsing" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/AddressTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Address/AddressSort.ex.php b/civicrm/api/v3/examples/Address/AddressSort.ex.php deleted file mode 100644 index 377645a7f6..0000000000 --- a/civicrm/api/v3/examples/Address/AddressSort.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Address.get API. - * - * Demonstrates Use of sort filter. - * - * @return array - * API result array - */ -function address_get_example() { - $params = [ - 'options' => [ - 'sort' => 'street_address DESC', - 'limit' => 2, - ], - 'sequential' => 1, - 'return' => 'street_address', - ]; - - try { - $result = civicrm_api3('Address', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function address_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '0' => [ - 'id' => '3', - 'street_address' => 'yzy', - ], - '1' => [ - 'id' => '2', - 'street_address' => 'Ambachtstraat 23', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetAddressSort" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/AddressTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Address/Create.ex.php b/civicrm/api/v3/examples/Address/Create.ex.php deleted file mode 100644 index 5315e21774..0000000000 --- a/civicrm/api/v3/examples/Address/Create.ex.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Address.create API. - * - * @return array - * API result array - */ -function address_create_example() { - $params = [ - 'contact_id' => 3, - 'street_name' => 'Ambachtstraat', - 'street_number' => '23', - 'street_address' => 'Ambachtstraat 23', - 'postal_code' => '6971 BN', - 'country_id' => '1152', - 'city' => 'Brummen', - 'is_primary' => 1, - ]; - - try { - $result = civicrm_api3('Address', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function address_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'contact_id' => '3', - 'location_type_id' => '1', - 'is_primary' => '1', - 'is_billing' => 0, - 'street_address' => 'Ambachtstraat 23', - 'street_number' => '23', - 'street_name' => 'Ambachtstraat', - 'city' => 'Brummen', - 'postal_code' => '6971 BN', - 'country_id' => '1152', - 'manual_geo_code' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateAddressDefaultLocation" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/AddressTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Address/Delete.ex.php b/civicrm/api/v3/examples/Address/Delete.ex.php deleted file mode 100644 index b5583029df..0000000000 --- a/civicrm/api/v3/examples/Address/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Address.delete API. - * - * @return array - * API result array - */ -function address_delete_example() { - $params = [ - 'id' => 2, - ]; - - try { - $result = civicrm_api3('Address', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function address_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteAddress" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/AddressTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Address/Get.ex.php b/civicrm/api/v3/examples/Address/Get.ex.php deleted file mode 100644 index 26de9b1fba..0000000000 --- a/civicrm/api/v3/examples/Address/Get.ex.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Address.get API. - * - * @return array - * API result array - */ -function address_get_example() { - $params = [ - 'contact_id' => 3, - 'street_name' => 'Ambachtstraat', - 'return' => [ - '0' => 'location_type_id', - '1' => 'is_primary', - '2' => 'street_address', - ], - ]; - - try { - $result = civicrm_api3('Address', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function address_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'location_type_id' => '27', - 'is_primary' => '1', - 'street_address' => 'Ambachtstraat 23', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetAddress" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/AddressTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Address/GetOptions.ex.php b/civicrm/api/v3/examples/Address/GetOptions.ex.php deleted file mode 100644 index 15ca3de74b..0000000000 --- a/civicrm/api/v3/examples/Address/GetOptions.ex.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Address.getoptions API. - * - * @return array - * API result array - */ -function address_getoptions_example() { - $params = [ - 'field' => 'location_type_id', - ]; - - try { - $result = civicrm_api3('Address', 'getoptions', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function address_getoptions_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'values' => [ - '5' => 'Billing', - '1' => 'Home', - '3' => 'Main', - '4' => 'Other', - '2' => 'Work', - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testLocationTypeGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ConstantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Batch/Create.ex.php b/civicrm/api/v3/examples/Batch/Create.ex.php deleted file mode 100644 index 1148869837..0000000000 --- a/civicrm/api/v3/examples/Batch/Create.ex.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Batch.create API. - * - * @return array - * API result array - */ -function batch_create_example() { - $params = [ - 'name' => 'New_Batch_04', - 'title' => 'New Batch 04', - 'description' => 'This is description for New Batch 04', - 'total' => '400.44', - 'item_count' => 4, - 'id' => 5, - ]; - - try { - $result = civicrm_api3('Batch', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function batch_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 5, - 'values' => [ - '5' => [ - 'id' => '5', - 'name' => 'New_Batch_04', - 'title' => 'New Batch 04', - 'description' => 'This is description for New Batch 04', - 'created_id' => '', - 'created_date' => '', - 'modified_id' => '', - 'modified_date' => '', - 'saved_search_id' => '', - 'status_id' => '', - 'type_id' => '', - 'mode_id' => '', - 'total' => '400.44', - 'item_count' => '4', - 'payment_instrument_id' => '', - 'exported_date' => '', - 'data' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUpdate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/BatchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Batch/Delete.ex.php b/civicrm/api/v3/examples/Batch/Delete.ex.php deleted file mode 100644 index eb525d6271..0000000000 --- a/civicrm/api/v3/examples/Batch/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Batch.delete API. - * - * @return array - * API result array - */ -function batch_delete_example() { - $params = [ - 'id' => 8, - ]; - - try { - $result = civicrm_api3('Batch', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function batch_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testBatchDeleteCorrectSyntax" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/BatchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Batch/Get.ex.php b/civicrm/api/v3/examples/Batch/Get.ex.php deleted file mode 100644 index 3c46694d2f..0000000000 --- a/civicrm/api/v3/examples/Batch/Get.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Batch.get API. - * - * @return array - * API result array - */ -function batch_get_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Batch', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function batch_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'Batch_433397', - 'title' => 'Batch_433397', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'status_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/BatchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Batch/Update.ex.php b/civicrm/api/v3/examples/Batch/Update.ex.php deleted file mode 100644 index aa1a825a55..0000000000 --- a/civicrm/api/v3/examples/Batch/Update.ex.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example of using batch update API. - * - * @return array - * API result array - */ -function batch_update_example() { - $params = [ - 'name' => 'New_Batch_04', - 'title' => 'New Batch 04', - 'description' => 'This is description for New Batch 04', - 'total' => '400.44', - 'item_count' => 4, - 'id' => 3, - ]; - - try { - $result = civicrm_api3('batch', 'update', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function batch_update_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'name' => 'New_Batch_04', - 'title' => 'New Batch 04', - 'description' => 'This is description for New Batch 04', - 'created_id' => '', - 'created_date' => '', - 'modified_id' => '', - 'modified_date' => '', - 'saved_search_id' => '', - 'status_id' => '', - 'type_id' => '', - 'mode_id' => '', - 'total' => '400.44', - 'item_count' => '4', - 'payment_instrument_id' => '', - 'exported_date' => '', - 'data' => '', - ], - ], - ]; - - return $expectedResult; -} - -/** -* This example has been generated from the API test suite. -* The test that created it is called -* testUpdate -* and can be found in -* https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/BatchTest.php. -* -* You can see the outcome of the API tests at -* https://test.civicrm.org/job/CiviCRM-master-git/ -* -* To Learn about the API read -* http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API -* -* Browse the api on your own site with the api explorer -* http://MYSITE.ORG/path/to/civicrm/api -* -* Read more about testing here -* http://wiki.civicrm.org/confluence/display/CRM/Testing -* -* API Standards documentation: -* http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ diff --git a/civicrm/api/v3/examples/Campaign/Create.ex.php b/civicrm/api/v3/examples/Campaign/Create.ex.php deleted file mode 100644 index 70ec4f9881..0000000000 --- a/civicrm/api/v3/examples/Campaign/Create.ex.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Campaign.create API. - * - * Create a campaign - Note use of relative dates here: - * @link http://www.php.net/manual/en/datetime.formats.relative.php. - * - * @return array - * API result array - */ -function campaign_create_example() { - $params = [ - 'title' => 'campaign title', - 'description' => 'Call people, ask for money', - 'created_date' => 'first sat of July 2008', - ]; - - try { - $result = civicrm_api3('Campaign', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function campaign_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'campaign_title', - 'title' => 'campaign title', - 'description' => 'Call people, ask for money', - 'start_date' => '', - 'end_date' => '', - 'campaign_type_id' => '', - 'status_id' => '', - 'external_identifier' => '', - 'parent_id' => '', - 'is_active' => '1', - 'created_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'last_modified_id' => '', - 'last_modified_date' => '', - 'goal_general' => '', - 'goal_revenue' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateCampaign" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CampaignTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Campaign/Delete.ex.php b/civicrm/api/v3/examples/Campaign/Delete.ex.php deleted file mode 100644 index d828dc8d6f..0000000000 --- a/civicrm/api/v3/examples/Campaign/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Campaign.delete API. - * - * @return array - * API result array - */ -function campaign_delete_example() { - $params = [ - 'id' => 5, - ]; - - try { - $result = civicrm_api3('Campaign', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function campaign_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteCampaign" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CampaignTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Campaign/Get.ex.php b/civicrm/api/v3/examples/Campaign/Get.ex.php deleted file mode 100644 index c7e1c27982..0000000000 --- a/civicrm/api/v3/examples/Campaign/Get.ex.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Campaign.get API. - * - * @return array - * API result array - */ -function campaign_get_example() { - $params = [ - 'title' => 'campaign title', - 'description' => 'Call people, ask for money', - 'created_date' => 'first sat of July 2008', - ]; - - try { - $result = civicrm_api3('Campaign', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function campaign_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'name' => 'campaign_title', - 'title' => 'campaign title', - 'description' => 'Call people, ask for money', - 'is_active' => '1', - 'created_date' => '2013-07-28 08:49:19', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetCampaign" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CampaignTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Case/Create.ex.php b/civicrm/api/v3/examples/Case/Create.ex.php deleted file mode 100644 index 6f3d1abfe0..0000000000 --- a/civicrm/api/v3/examples/Case/Create.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Case.create API. - * - * @return array - * API result array - */ -function case_create_example() { - $params = [ - 'case_type_id' => 1, - 'subject' => 'Test case', - 'contact_id' => 17, - 'custom_1' => 'custom string', - ]; - - try { - $result = civicrm_api3('Case', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function case_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'case_type_id' => '1', - 'subject' => 'Test case', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '', - 'details' => '', - 'status_id' => '1', - 'is_deleted' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCaseCreateCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CaseTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CaseContact/Create.ex.php b/civicrm/api/v3/examples/CaseContact/Create.ex.php deleted file mode 100644 index b17fd8f5a3..0000000000 --- a/civicrm/api/v3/examples/CaseContact/Create.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CaseContact.create API. - * - * @return array - * API result array - */ -function case_contact_create_example() { - $params = [ - 'case_id' => 2, - 'contact_id' => 20, - ]; - - try { - $result = civicrm_api3('CaseContact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function case_contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'case_id' => '2', - 'contact_id' => '20', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCaseContactCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CaseContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CaseContact/Get.ex.php b/civicrm/api/v3/examples/CaseContact/Get.ex.php deleted file mode 100644 index 6cf38ad0ee..0000000000 --- a/civicrm/api/v3/examples/CaseContact/Get.ex.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CaseContact.get API. - * - * @return array - * API result array - */ -function case_contact_get_example() { - $params = [ - 'contact_id' => 19, - ]; - - try { - $result = civicrm_api3('CaseContact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function case_contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'case_id' => '2', - 'contact_id' => '19', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCaseContactGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CaseContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Constant/Get.ex.php b/civicrm/api/v3/examples/Constant/Get.ex.php deleted file mode 100644 index 2ac3a47dbc..0000000000 --- a/civicrm/api/v3/examples/Constant/Get.ex.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Constant.get API. - * - * @deprecated - * The Constant api is deprecated as of CiviCRM 4.4. Please use the getoptions api action instead. - * - * @return array - * API result array - */ -function constant_get_example() { - $params = [ - 'name' => 'activityType', - ]; - - try { - $result = civicrm_api3('Constant', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function constant_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 35, - 'values' => [ - '1' => 'Meeting', - '2' => 'Phone Call', - '3' => 'Email', - '4' => 'Outbound SMS', - '5' => 'Event Registration', - '6' => 'Contribution', - '7' => 'Membership Signup', - '8' => 'Membership Renewal', - '9' => 'Tell a Friend', - '10' => 'Pledge Acknowledgment', - '11' => 'Pledge Reminder', - '12' => 'Inbound Email', - '17' => 'Membership Renewal Reminder', - '19' => 'Bulk Email', - '22' => 'Print/Merge Document', - '34' => 'Mass SMS', - '35' => 'Change Membership Status', - '36' => 'Change Membership Type', - '37' => 'Cancel Recurring Contribution', - '38' => 'Update Recurring Contribution Billing Details', - '39' => 'Update Recurring Contribution', - '40' => 'Reminder Sent', - '41' => 'Export Accounting Batch', - '42' => 'Create Batch', - '43' => 'Edit Batch', - '44' => 'SMS delivery', - '45' => 'Inbound SMS', - '46' => 'Payment', - '47' => 'Refund', - '48' => 'Change Registration', - '49' => 'Downloaded Invoice', - '50' => 'Emailed Invoice', - '51' => 'Contact Merged', - '52' => 'Contact Deleted by Merge', - '54' => 'Failed Payment', - ], - 'deprecated' => 'The Constant api is deprecated as of CiviCRM 4.4. Please use the getoptions api action instead.', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testActivityType" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ConstantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/APIChainedArray.ex.php b/civicrm/api/v3/examples/Contact/APIChainedArray.ex.php deleted file mode 100644 index 26085a0a4f..0000000000 --- a/civicrm/api/v3/examples/Contact/APIChainedArray.ex.php +++ /dev/null @@ -1,235 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * This demonstrates the usage of chained api functions. - * In this case no notes or custom fields have been created. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'id' => 3, - 'api.website.get' => [], - 'api.Contribution.get' => [ - 'total_amount' => '120.00', - ], - 'api.CustomValue.get' => 1, - 'api.Note.get' => 1, - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'xyz3, abc3', - 'display_name' => 'abc3 xyz3', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => 'abc3', - 'middle_name' => '', - 'last_name' => 'xyz3', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '3', - 'email' => 'man3@yahoo.com', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => '', - 'individual_suffix' => '', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '3', - 'api.website.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'contact_id' => '3', - 'url' => 'https://civicrm.org', - ], - ], - ], - 'api.Contribution.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'xyz3, abc3', - 'display_name' => 'abc3 xyz3', - 'contribution_id' => '2', - 'currency' => 'USD', - 'contribution_recur_id' => '', - 'contribution_status_id' => '1', - 'contribution_campaign_id' => '', - 'payment_instrument_id' => '1', - 'receive_date' => '2011-01-01 00:00:00', - 'non_deductible_amount' => '10.00', - 'total_amount' => '120.00', - 'fee_amount' => '50.00', - 'net_amount' => '90.00', - 'trxn_id' => '12335', - 'invoice_id' => '67830', - 'invoice_number' => '', - 'contribution_cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'contribution_source' => 'SSF', - 'amount_level' => '', - 'is_test' => 0, - 'is_pay_later' => 0, - 'contribution_check_number' => '', - 'is_template' => 0, - 'financial_account_id' => '1', - 'accounting_code' => '4200', - 'campaign_id' => '', - 'contribution_campaign_title' => '', - 'financial_type_id' => '1', - 'financial_type' => 'Donation', - 'contribution_note' => '', - 'contribution_batch' => '', - 'contribution_recur_status' => 'Completed', - 'payment_instrument' => 'Credit Card', - 'contribution_status' => 'Completed', - 'check_number' => '', - 'instrument_id' => '1', - 'cancel_date' => '', - 'id' => '2', - 'contribution_type_id' => '1', - ], - ], - ], - 'api.CustomValue.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - ], - 'api.Note.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetIndividualWithChainedArrays" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/APIChainedArrayFormats.ex.php b/civicrm/api/v3/examples/Contact/APIChainedArrayFormats.ex.php deleted file mode 100644 index 1372a9a0c6..0000000000 --- a/civicrm/api/v3/examples/Contact/APIChainedArrayFormats.ex.php +++ /dev/null @@ -1,171 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * This demonstrates the usage of chained api functions. - * In this case no notes or custom fields have been created. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'id' => 3, - 'api.website.getValue' => [ - 'return' => 'url', - ], - 'api.Contribution.getCount' => [], - 'api.CustomValue.get' => 1, - 'api.Note.get' => 1, - 'api.Membership.getCount' => [], - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'xyz3, abc3', - 'display_name' => 'abc3 xyz3', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => 'abc3', - 'middle_name' => '', - 'last_name' => 'xyz3', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '3', - 'email' => 'man3@yahoo.com', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => '', - 'individual_suffix' => '', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '3', - 'api.website.getValue' => 'https://civicrm.org', - 'api.Contribution.getCount' => 2, - 'api.CustomValue.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - ], - 'api.Note.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - ], - 'api.Membership.getCount' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetIndividualWithChainedArraysFormats" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/APIChainedArrayMultipleCustom.ex.php b/civicrm/api/v3/examples/Contact/APIChainedArrayMultipleCustom.ex.php deleted file mode 100644 index f99ba59e90..0000000000 --- a/civicrm/api/v3/examples/Contact/APIChainedArrayMultipleCustom.ex.php +++ /dev/null @@ -1,213 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * This demonstrates the usage of chained api functions with multiple custom fields. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'id' => 3, - 'api.website.getValue' => [ - 'return' => 'url', - ], - 'api.Contribution.getCount' => [], - 'api.CustomValue.get' => 1, - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'xyz3, abc3', - 'display_name' => 'abc3 xyz3', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => 'abc3', - 'middle_name' => '', - 'last_name' => 'xyz3', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '3', - 'email' => 'man3@yahoo.com', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => '', - 'individual_suffix' => '', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '3', - 'api.website.getValue' => 'https://civicrm.org', - 'api.Contribution.getCount' => 2, - 'api.CustomValue.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 7, - 'values' => [ - '0' => [ - 'entity_id' => '3', - 'entity_table' => 'Contact', - 'latest' => 'value 4', - 'id' => '1', - ], - '1' => [ - 'entity_id' => '3', - 'entity_table' => 'Contact', - 'latest' => 'value 3', - 'id' => '2', - '1' => 'value 2', - '2' => 'value 3', - ], - '2' => [ - 'entity_id' => '3', - 'entity_table' => 'Contact', - 'latest' => '', - 'id' => '3', - '1' => 'warm beer', - '2' => '', - ], - '3' => [ - 'entity_id' => '3', - 'entity_table' => 'Contact', - 'latest' => '', - 'id' => '4', - '1' => '', - '2' => '', - ], - '4' => [ - 'entity_id' => '3', - 'entity_table' => 'Contact', - 'latest' => 'defaultValue', - 'id' => '5', - '1' => 'defaultValue', - ], - '5' => [ - 'entity_id' => '3', - 'entity_table' => 'Contact', - 'latest' => 'vegemite', - 'id' => '6', - '1' => 'vegemite', - ], - '6' => [ - 'entity_id' => '3', - 'entity_table' => 'Contact', - 'latest' => '', - 'id' => '7', - '1' => '', - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetIndividualWithChainedArraysAndMultipleCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/APIChainedArrayValuesFromSiblingFunction.ex.php b/civicrm/api/v3/examples/Contact/APIChainedArrayValuesFromSiblingFunction.ex.php deleted file mode 100644 index 5fb2e587e5..0000000000 --- a/civicrm/api/v3/examples/Contact/APIChainedArrayValuesFromSiblingFunction.ex.php +++ /dev/null @@ -1,146 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.create API. - * - * This demonstrates the usage of chained api functions. Specifically it has one 'parent function' & - * 2 child functions - one receives values from the parent (Contact) and the other child (Tag). - * - * @return array - * API result array - */ -function contact_create_example() { - $params = [ - 'display_name' => 'batman', - 'contact_type' => 'Individual', - 'api.tag.create' => [ - 'name' => '$value.id', - 'description' => '$value.display_name', - 'format.only_id' => 1, - ], - 'api.entity_tag.create' => [ - 'tag_id' => '$value.api.tag.create', - ], - ]; - - try { - $result = civicrm_api3('Contact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'sort_name' => 'batman', - 'display_name' => 'batman', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'hash' => '67eac7789eaee00', - 'api_key' => '', - 'first_name' => '', - 'middle_name' => '', - 'last_name' => '', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'email_greeting_id' => '1', - 'email_greeting_custom' => '', - 'email_greeting_display' => '', - 'postal_greeting_id' => '1', - 'postal_greeting_custom' => '', - 'postal_greeting_display' => '', - 'addressee_id' => '1', - 'addressee_custom' => '', - 'addressee_display' => '', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'primary_contact_id' => '', - 'organization_name' => '', - 'sic_code' => '', - 'user_unique_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'api.tag.create' => 6, - 'api.entity_tag.create' => [ - 'is_error' => 0, - 'not_added' => 1, - 'added' => 1, - 'total_count' => 2, - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testChainingValuesCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/ChainTwoWebsites.ex.php b/civicrm/api/v3/examples/Contact/ChainTwoWebsites.ex.php deleted file mode 100644 index 5e81a2ed56..0000000000 --- a/civicrm/api/v3/examples/Contact/ChainTwoWebsites.ex.php +++ /dev/null @@ -1,222 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.create API. - * - * This demonstrates the syntax to create 2 chained entities. - * - * @return array - * API result array - */ -function contact_create_example() { - $params = [ - 'first_name' => 'abc3', - 'last_name' => 'xyz3', - 'contact_type' => 'Individual', - 'email' => 'man3@yahoo.com', - 'api.contribution.create' => [ - 'receive_date' => '2010-01-01', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'payment_instrument_id' => 1, - 'non_deductible_amount' => '10', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => 15345, - 'invoice_id' => 67990, - 'source' => 'SSF', - 'contribution_status_id' => 1, - 'skipCleanMoney' => 1, - ], - 'api.website.create' => [ - 'url' => 'https://civicrm.org', - ], - 'api.website.create.2' => [ - 'url' => 'https://chained.org', - ], - ]; - - try { - $result = civicrm_api3('Contact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'sort_name' => 'xyz3, abc3', - 'display_name' => 'abc3 xyz3', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'hash' => '67eac7789eaee00', - 'api_key' => '', - 'first_name' => 'abc3', - 'middle_name' => '', - 'last_name' => 'xyz3', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'email_greeting_id' => '1', - 'email_greeting_custom' => '', - 'email_greeting_display' => '', - 'postal_greeting_id' => '1', - 'postal_greeting_custom' => '', - 'postal_greeting_display' => '', - 'addressee_id' => '1', - 'addressee_custom' => '', - 'addressee_display' => '', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'primary_contact_id' => '', - 'organization_name' => '', - 'sic_code' => '', - 'user_unique_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'api.contribution.create' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '1', - 'receive_date' => '20100101000000', - 'non_deductible_amount' => '10', - 'total_amount' => '100', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => '15345', - 'invoice_id' => '67990', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '1', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - ], - ], - ], - 'api.website.create' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'contact_id' => '3', - 'url' => 'https://civicrm.org', - 'website_type_id' => '', - ], - ], - ], - 'api.website.create.2' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'id' => '2', - 'contact_id' => '3', - 'url' => 'https://chained.org', - 'website_type_id' => '', - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateIndividualWithContributionDottedSyntax" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/ChainTwoWebsitesSyntax2.ex.php b/civicrm/api/v3/examples/Contact/ChainTwoWebsitesSyntax2.ex.php deleted file mode 100644 index 09812436aa..0000000000 --- a/civicrm/api/v3/examples/Contact/ChainTwoWebsitesSyntax2.ex.php +++ /dev/null @@ -1,227 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.create API. - * - * Demonstrates creating two websites as an array. - * - * @return array - * API result array - */ -function contact_create_example() { - $params = [ - 'first_name' => 'abc3', - 'last_name' => 'xyz3', - 'contact_type' => 'Individual', - 'email' => 'man3@yahoo.com', - 'api.contribution.create' => [ - 'receive_date' => '2010-01-01', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'payment_instrument_id' => 1, - 'non_deductible_amount' => '10', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => 12345, - 'invoice_id' => 67890, - 'source' => 'SSF', - 'contribution_status_id' => 1, - 'skipCleanMoney' => 1, - ], - 'api.website.create' => [ - '0' => [ - 'url' => 'https://civicrm.org', - ], - '1' => [ - 'url' => 'https://chained.org', - 'website_type_id' => 2, - ], - ], - ]; - - try { - $result = civicrm_api3('Contact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'sort_name' => 'xyz3, abc3', - 'display_name' => 'abc3 xyz3', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'hash' => '67eac7789eaee00', - 'api_key' => '', - 'first_name' => 'abc3', - 'middle_name' => '', - 'last_name' => 'xyz3', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'email_greeting_id' => '1', - 'email_greeting_custom' => '', - 'email_greeting_display' => '', - 'postal_greeting_id' => '1', - 'postal_greeting_custom' => '', - 'postal_greeting_display' => '', - 'addressee_id' => '1', - 'addressee_custom' => '', - 'addressee_display' => '', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'primary_contact_id' => '', - 'organization_name' => '', - 'sic_code' => '', - 'user_unique_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'api.contribution.create' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '1', - 'receive_date' => '20100101000000', - 'non_deductible_amount' => '10', - 'total_amount' => '100', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => '12345', - 'invoice_id' => '67890', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '1', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - ], - ], - ], - 'api.website.create' => [ - '0' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'contact_id' => '3', - 'url' => 'https://civicrm.org', - 'website_type_id' => '', - ], - ], - ], - '1' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'id' => '2', - 'contact_id' => '3', - 'url' => 'https://chained.org', - 'website_type_id' => '2', - ], - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateIndividualWithContributionChainedArrays" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/ContactIDOfLoggedInUserContactAPI.ex.php b/civicrm/api/v3/examples/Contact/ContactIDOfLoggedInUserContactAPI.ex.php deleted file mode 100644 index 9f7c7c21b6..0000000000 --- a/civicrm/api/v3/examples/Contact/ContactIDOfLoggedInUserContactAPI.ex.php +++ /dev/null @@ -1,148 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * Get contact id of the current logged in user. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'id' => 'user_contact_id', - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'User 707727958, Logged In', - 'display_name' => 'Mr. Logged In User 707727958 II', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => 'Logged In', - 'middle_name' => 'J.', - 'last_name' => 'User 707727958', - 'prefix_id' => '3', - 'suffix_id' => '3', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '3', - 'email' => 'anthony_anderson@civicrm.org', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => 'Mr.', - 'individual_suffix' => 'II', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testLoggedInUserAPISupportToken" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/Create.ex.php b/civicrm/api/v3/examples/Contact/Create.ex.php deleted file mode 100644 index d8a5f6478d..0000000000 --- a/civicrm/api/v3/examples/Contact/Create.ex.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.create API. - * - * This demonstrates setting a custom field through the API. - * - * @return array - * API result array - */ -function contact_create_example() { - $params = [ - 'first_name' => 'abc1', - 'contact_type' => 'Individual', - 'last_name' => 'xyz1', - 'custom_1' => 'custom string', - ]; - - try { - $result = civicrm_api3('Contact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'sort_name' => 'xyz1, abc1', - 'display_name' => 'abc1 xyz1', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'hash' => '67eac7789eaee00', - 'api_key' => '', - 'first_name' => 'abc1', - 'middle_name' => '', - 'last_name' => 'xyz1', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'email_greeting_id' => '1', - 'email_greeting_custom' => '', - 'email_greeting_display' => '', - 'postal_greeting_id' => '1', - 'postal_greeting_custom' => '', - 'postal_greeting_display' => '', - 'addressee_id' => '1', - 'addressee_custom' => '', - 'addressee_display' => '', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'primary_contact_id' => '', - 'organization_name' => '', - 'sic_code' => '', - 'user_unique_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateWithCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/CreateParticipantPayment.ex.php b/civicrm/api/v3/examples/Contact/CreateParticipantPayment.ex.php deleted file mode 100644 index 307a4d1903..0000000000 --- a/civicrm/api/v3/examples/Contact/CreateParticipantPayment.ex.php +++ /dev/null @@ -1,161 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.create API. - * - * Single function to create contact with partipation & contribution. - * Note that in the case of 'contribution' the 'create' is implied (api.contribution.create). - * - * @return array - * API result array - */ -function contact_create_example() { - $params = [ - 'contact_type' => 'Individual', - 'display_name' => 'dlobo', - 'api.participant' => [ - 'event_id' => 41, - 'status_id' => 1, - 'role_id' => 1, - 'format.only_id' => 1, - ], - 'api.contribution.create' => [ - 'financial_type_id' => 1, - 'total_amount' => 100, - 'format.only_id' => 1, - ], - 'api.participant_payment.create' => [ - 'contribution_id' => '$value.api.contribution.create', - 'participant_id' => '$value.api.participant', - ], - ]; - - try { - $result = civicrm_api3('Contact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 7, - 'values' => [ - '7' => [ - 'id' => '7', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'sort_name' => 'dlobo', - 'display_name' => 'dlobo', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'hash' => '67eac7789eaee00', - 'api_key' => '', - 'first_name' => '', - 'middle_name' => '', - 'last_name' => '', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'email_greeting_id' => '1', - 'email_greeting_custom' => '', - 'email_greeting_display' => '', - 'postal_greeting_id' => '1', - 'postal_greeting_custom' => '', - 'postal_greeting_display' => '', - 'addressee_id' => '1', - 'addressee_custom' => '', - 'addressee_display' => '', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'primary_contact_id' => '', - 'organization_name' => '', - 'sic_code' => '', - 'user_unique_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'api.participant' => 4, - 'api.contribution.create' => 1, - 'api.participant_payment.create' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'participant_id' => '4', - 'contribution_id' => '1', - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateParticipantWithPayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/CustomFieldGet.ex.php b/civicrm/api/v3/examples/Contact/CustomFieldGet.ex.php deleted file mode 100644 index bac9895300..0000000000 --- a/civicrm/api/v3/examples/Contact/CustomFieldGet.ex.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * This demonstrates setting a custom field through the API. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'return.custom_1' => 1, - 'id' => 3, - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'civicrm_value_testgetwithcu_1_id' => '1', - 'custom_1' => 'custom string', - 'id' => '3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetWithCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/CustomFieldGetReturnSyntaxVariation.ex.php b/civicrm/api/v3/examples/Contact/CustomFieldGetReturnSyntaxVariation.ex.php deleted file mode 100644 index 0c07d8763f..0000000000 --- a/civicrm/api/v3/examples/Contact/CustomFieldGetReturnSyntaxVariation.ex.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * This demonstrates setting a custom field through the API. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'return' => 'custom_1', - 'id' => 3, - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'civicrm_value_testgetwithcu_1_id' => '1', - 'custom_1' => 'custom string', - 'id' => '3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetWithCustomReturnSyntax" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/Delete.ex.php b/civicrm/api/v3/examples/Contact/Delete.ex.php deleted file mode 100644 index 5041f0ba82..0000000000 --- a/civicrm/api/v3/examples/Contact/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.delete API. - * - * @return array - * API result array - */ -function contact_delete_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('Contact', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/FormatIsSuccess_Fail.ex.php b/civicrm/api/v3/examples/Contact/FormatIsSuccess_Fail.ex.php deleted file mode 100644 index b89dcd7dc9..0000000000 --- a/civicrm/api/v3/examples/Contact/FormatIsSuccess_Fail.ex.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.create API. - * - * This demonstrates use of the 'format.is_success' param. - * This param causes only the success or otherwise of the function to be returned as BOOLEAN. - * - * @return array - * API result array - */ -function contact_create_example() { - $params = [ - 'id' => 500, - 'format.is_success' => 1, - ]; - - try { - $result = civicrm_api3('Contact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_create_expectedresult() { - - $expectedResult = 0; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactCreateFormatIsSuccessFalse" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/FormatIsSuccess_True.ex.php b/civicrm/api/v3/examples/Contact/FormatIsSuccess_True.ex.php deleted file mode 100644 index 8322e4af31..0000000000 --- a/civicrm/api/v3/examples/Contact/FormatIsSuccess_True.ex.php +++ /dev/null @@ -1,74 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * This demonstrates use of the 'format.is_success' param. - * This param causes only the success or otherwise of the function to be returned as BOOLEAN. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'id' => 3, - 'format.is_success' => 1, - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = 1; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetFormatIsSuccessTrue" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/FormatOnlyID.ex.php b/civicrm/api/v3/examples/Contact/FormatOnlyID.ex.php deleted file mode 100644 index 215e1b3990..0000000000 --- a/civicrm/api/v3/examples/Contact/FormatOnlyID.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * This demonstrates use of the 'format.id_only' param. - * This param causes the id of the only entity to be returned as an integer. - * It will be ignored if there is not exactly 1 result. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'id' => 3, - 'format.only_id' => 1, - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = 3; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetFormatIDOnly" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/FormatSingleValue.ex.php b/civicrm/api/v3/examples/Contact/FormatSingleValue.ex.php deleted file mode 100644 index 4ef40d85e2..0000000000 --- a/civicrm/api/v3/examples/Contact/FormatSingleValue.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getvalue API. - * - * This demonstrates use of the 'format.single_value' param. - * This param causes only a single value of the only entity to be returned as an string. - * It will be ignored if there is not exactly 1 result. - * - * @return array - * API result array - */ -function contact_getvalue_example() { - $params = [ - 'id' => 3, - 'return' => 'display_name', - ]; - - try { - $result = civicrm_api3('Contact', 'getvalue', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getvalue_expectedresult() { - - $expectedResult = 'Mr. Test Contact II'; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetFormatSingleValue" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/Get.ex.php b/civicrm/api/v3/examples/Contact/Get.ex.php deleted file mode 100644 index 168d15d1c6..0000000000 --- a/civicrm/api/v3/examples/Contact/Get.ex.php +++ /dev/null @@ -1,146 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'email' => 'man2@yahoo.com', - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'man2@yahoo.com', - 'display_name' => 'man2@yahoo.com', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => '', - 'middle_name' => '', - 'last_name' => '', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '3', - 'email' => 'man2@yahoo.com', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => '', - 'individual_suffix' => '', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetEmail" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetActions.ex.php b/civicrm/api/v3/examples/Contact/GetActions.ex.php deleted file mode 100644 index d531d17f62..0000000000 --- a/civicrm/api/v3/examples/Contact/GetActions.ex.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getactions API. - * - * Getting the available actions for an entity. - * - * @return array - * API result array - */ -function contact_getactions_example() { - $params = []; - - try { - $result = civicrm_api3('Contact', 'getactions', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getactions_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 29, - 'values' => [ - '0' => 'create', - '1' => 'delete', - '2' => 'duplicatecheck', - '3' => 'example_action1', - '4' => 'example_action2', - '5' => 'get', - '6' => 'get_merge_conflicts', - '7' => 'getactions', - '8' => 'getcount', - '9' => 'getfield', - '10' => 'getfields', - '11' => 'getlist', - '12' => 'getmergedfrom', - '13' => 'getmergedto', - '14' => 'getoptions', - '15' => 'getquick', - '16' => 'getrefcount', - '17' => 'getsingle', - '18' => 'getunique', - '19' => 'getvalue', - '20' => 'merge', - '21' => 'proximity', - '22' => 'replace', - '23' => 'setvalue', - '24' => 'type_create', - '25' => 'type_delete', - '26' => 'type_get', - '27' => 'update', - '28' => 'validate', - ], - 'deprecated' => [ - 'getquick' => 'The "getquick" action is deprecated in favor of "getlist".', - 'setvalue' => 'The "setvalue" action is deprecated. Use "create" with an id instead.', - 'update' => 'The "update" action is deprecated. Use "create" with an id instead.', - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetActions" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetCountContact.ex.php b/civicrm/api/v3/examples/Contact/GetCountContact.ex.php deleted file mode 100644 index 44e4562672..0000000000 --- a/civicrm/api/v3/examples/Contact/GetCountContact.ex.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getcount API. - * - * This demonstrates use of the 'getCount' action. - * This param causes the count of the only function to be returned as an integer. - * - * @return array - * API result array - */ -function contact_getcount_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('Contact', 'getcount', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getcount_expectedresult() { - - $expectedResult = 1; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetFormatCountOnly" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetFieldsOptions.ex.php b/civicrm/api/v3/examples/Contact/GetFieldsOptions.ex.php deleted file mode 100644 index cf984e1d4e..0000000000 --- a/civicrm/api/v3/examples/Contact/GetFieldsOptions.ex.php +++ /dev/null @@ -1,1334 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getfields API. - * - * Demonstrates retrieving metadata with custom field options. - * - * @return array - * API result array - */ -function contact_getfields_example() { - $params = [ - 'options' => [ - 'get_options' => 'custom_1', - ], - 'action' => 'create', - ]; - - try { - $result = civicrm_api3('Contact', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 56, - 'values' => [ - 'id' => [ - 'name' => 'id', - 'type' => 1, - 'title' => 'Contact ID', - 'description' => 'Unique Contact ID', - 'required' => TRUE, - 'import' => TRUE, - 'where' => 'civicrm_contact.id', - 'headerPattern' => '/internal|contact?|id$/i', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.aliases' => [ - '0' => 'contact_id', - ], - ], - 'contact_type' => [ - 'name' => 'contact_type', - 'type' => 2, - 'title' => 'Contact Type', - 'description' => 'Type of Contact.', - 'maxlength' => 64, - 'size' => 30, - 'where' => 'civicrm_contact.contact_type', - 'export' => TRUE, - 'contactType' => '', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'maxlength' => 64, - 'size' => 30, - ], - 'pseudoconstant' => [ - 'table' => 'civicrm_contact_type', - 'keyColumn' => 'name', - 'labelColumn' => 'label', - 'condition' => 'parent_id IS NULL', - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => 1, - ], - 'contact_sub_type' => [ - 'name' => 'contact_sub_type', - 'type' => 2, - 'title' => 'Contact Subtype', - 'description' => 'May be used to over-ride contact view and edit templates.', - 'maxlength' => 255, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_contact.contact_sub_type', - 'headerPattern' => '/C(ontact )?(subtype|sub-type|sub type)/i', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'serialize' => 1, - 'html' => [ - 'type' => 'Select', - 'maxlength' => 255, - 'size' => 45, - ], - 'pseudoconstant' => [ - 'table' => 'civicrm_contact_type', - 'keyColumn' => 'name', - 'labelColumn' => 'label', - 'condition' => 'parent_id IS NOT NULL', - ], - 'add' => '1.5', - 'is_core_field' => TRUE, - ], - 'do_not_email' => [ - 'name' => 'do_not_email', - 'type' => 16, - 'title' => 'Do Not Email', - 'import' => TRUE, - 'where' => 'civicrm_contact.do_not_email', - 'headerPattern' => '/d(o )?(not )?(email)/i', - 'dataPattern' => '/^\\d{1,}$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - 'label' => 'Do Not Email', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'do_not_phone' => [ - 'name' => 'do_not_phone', - 'type' => 16, - 'title' => 'Do Not Phone', - 'import' => TRUE, - 'where' => 'civicrm_contact.do_not_phone', - 'headerPattern' => '/d(o )?(not )?(call|phone)/i', - 'dataPattern' => '/^\\d{1,}$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - 'label' => 'Do Not Phone', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'do_not_mail' => [ - 'name' => 'do_not_mail', - 'type' => 16, - 'title' => 'Do Not Mail', - 'import' => TRUE, - 'where' => 'civicrm_contact.do_not_mail', - 'headerPattern' => '/^(d(o\\s)?n(ot\\s)?mail)|(\\w*)?bulk\\s?(\\w*)$/i', - 'dataPattern' => '/^\\d{1,}$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - 'label' => 'Do Not Mail', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'do_not_sms' => [ - 'name' => 'do_not_sms', - 'type' => 16, - 'title' => 'Do Not Sms', - 'import' => TRUE, - 'where' => 'civicrm_contact.do_not_sms', - 'headerPattern' => '/d(o )?(not )?(sms)/i', - 'dataPattern' => '/^\\d{1,}$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - 'label' => 'Do Not Sms', - ], - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'do_not_trade' => [ - 'name' => 'do_not_trade', - 'type' => 16, - 'title' => 'Do Not Trade', - 'import' => TRUE, - 'where' => 'civicrm_contact.do_not_trade', - 'headerPattern' => '/d(o )?(not )?(trade)/i', - 'dataPattern' => '/^\\d{1,}$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - 'label' => 'Do Not Trade', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'is_opt_out' => [ - 'name' => 'is_opt_out', - 'type' => 16, - 'title' => 'No Bulk Emails (User Opt Out)', - 'description' => 'Has the contact opted out from receiving all bulk email from the organization or site domain?', - 'required' => TRUE, - 'import' => TRUE, - 'where' => 'civicrm_contact.is_opt_out', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - 'label' => 'Is Opt Out', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'legal_identifier' => [ - 'name' => 'legal_identifier', - 'type' => 2, - 'title' => 'Legal Identifier', - 'description' => 'May be used for SSN, EIN/TIN, Household ID (census) or other applicable unique legal/government ID.', - 'maxlength' => 32, - 'size' => 20, - 'import' => TRUE, - 'where' => 'civicrm_contact.legal_identifier', - 'headerPattern' => '/legal\\s?id/i', - 'dataPattern' => '/\\w+?\\d{5,}/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Legal Identifier', - 'maxlength' => 32, - 'size' => 20, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'external_identifier' => [ - 'name' => 'external_identifier', - 'type' => 2, - 'title' => 'External Identifier', - 'description' => 'Unique trusted external ID (generally from a legacy app/datasource). Particularly useful for deduping operations.', - 'maxlength' => 64, - 'size' => 8, - 'import' => TRUE, - 'where' => 'civicrm_contact.external_identifier', - 'headerPattern' => '/external\\s?id/i', - 'dataPattern' => '/^\\d{11,}$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'External Identifier', - 'maxlength' => 64, - 'size' => 8, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'sort_name' => [ - 'name' => 'sort_name', - 'type' => 2, - 'title' => 'Sort Name', - 'description' => 'Name used for sorting different contact types', - 'maxlength' => 128, - 'size' => 30, - 'where' => 'civicrm_contact.sort_name', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 128, - 'size' => 30, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'display_name' => [ - 'name' => 'display_name', - 'type' => 2, - 'title' => 'Display Name', - 'description' => 'Formatted name representing preferred format for display/print/other output.', - 'maxlength' => 128, - 'size' => 30, - 'where' => 'civicrm_contact.display_name', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 128, - 'size' => 30, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'nick_name' => [ - 'name' => 'nick_name', - 'type' => 2, - 'title' => 'Nickname', - 'description' => 'Nickname.', - 'maxlength' => 128, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.nick_name', - 'headerPattern' => '/n(ick\\s)name|nick$/i', - 'dataPattern' => '/^\\w+$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 128, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'legal_name' => [ - 'name' => 'legal_name', - 'type' => 2, - 'title' => 'Legal Name', - 'description' => 'Legal Name.', - 'maxlength' => 128, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.legal_name', - 'headerPattern' => '/^legal|(l(egal\\s)?name)$/i', - 'export' => TRUE, - 'contactType' => 'Organization', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Legal Name', - 'maxlength' => 128, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'image_URL' => [ - 'name' => 'image_URL', - 'type' => 32, - 'title' => 'Image Url', - 'description' => 'optional URL for preferred image (photo, logo, etc.) to display for this contact.', - 'import' => TRUE, - 'where' => 'civicrm_contact.image_URL', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'File', - 'label' => 'Image URL', - 'rows' => 2, - 'cols' => 80, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'preferred_communication_method' => [ - 'name' => 'preferred_communication_method', - 'type' => 2, - 'title' => 'Preferred Communication Method', - 'description' => 'What is the preferred mode of communication.', - 'maxlength' => 255, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_contact.preferred_communication_method', - 'headerPattern' => '/^p(ref\\w*\\s)?c(omm\\w*)|( meth\\w*)$/i', - 'dataPattern' => '/^\\w+$/', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'serialize' => 1, - 'html' => [ - 'type' => 'Select', - 'maxlength' => 255, - 'size' => 45, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'preferred_communication_method', - 'optionEditPath' => 'civicrm/admin/options/preferred_communication_method', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'preferred_language' => [ - 'name' => 'preferred_language', - 'type' => 2, - 'title' => 'Preferred Language', - 'description' => 'Which language is preferred for communication. FK to languages in civicrm_option_value.', - 'maxlength' => 5, - 'size' => 6, - 'import' => TRUE, - 'where' => 'civicrm_contact.preferred_language', - 'headerPattern' => '/^lang/i', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'maxlength' => 5, - 'size' => 6, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'languages', - 'keyColumn' => 'name', - 'optionEditPath' => 'civicrm/admin/options/languages', - ], - 'add' => '3.2', - 'is_core_field' => TRUE, - ], - 'hash' => [ - 'name' => 'hash', - 'type' => 2, - 'title' => 'Contact Hash', - 'description' => 'Key for validating requests related to this contact.', - 'maxlength' => 32, - 'size' => 20, - 'where' => 'civicrm_contact.hash', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'api_key' => [ - 'name' => 'api_key', - 'type' => 2, - 'title' => 'Api Key', - 'description' => 'API Key for validating requests related to this contact.', - 'maxlength' => 32, - 'size' => 20, - 'where' => 'civicrm_contact.api_key', - 'permission' => [ - '0' => [ - '0' => 'administer CiviCRM', - '1' => 'edit api keys', - ], - ], - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'label' => 'API KEY', - 'maxlength' => 32, - 'size' => 20, - ], - 'readonly' => TRUE, - 'add' => '2.2', - 'is_core_field' => TRUE, - ], - 'first_name' => [ - 'name' => 'first_name', - 'type' => 2, - 'title' => 'First Name', - 'description' => 'First Name.', - 'maxlength' => 64, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.first_name', - 'headerPattern' => '/^first|(f(irst\\s)?name)$/i', - 'dataPattern' => '/^\\w+$/', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'First Name', - 'maxlength' => 64, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'middle_name' => [ - 'name' => 'middle_name', - 'type' => 2, - 'title' => 'Middle Name', - 'description' => 'Middle Name.', - 'maxlength' => 64, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.middle_name', - 'headerPattern' => '/^middle|(m(iddle\\s)?name)$/i', - 'dataPattern' => '/^\\w+$/', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Middle Name', - 'maxlength' => 64, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'last_name' => [ - 'name' => 'last_name', - 'type' => 2, - 'title' => 'Last Name', - 'description' => 'Last Name.', - 'maxlength' => 64, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.last_name', - 'headerPattern' => '/^last|(l(ast\\s)?name)$/i', - 'dataPattern' => '/^\\w+(\\s\\w+)?+$/', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Last Name', - 'maxlength' => 64, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'prefix_id' => [ - 'name' => 'prefix_id', - 'type' => 1, - 'title' => 'Individual Prefix', - 'description' => 'Prefix or Title for name (Ms, Mr...). FK to prefix ID', - 'import' => TRUE, - 'where' => 'civicrm_contact.prefix_id', - 'headerPattern' => '/^(prefix|title)/i', - 'dataPattern' => '/^(mr|ms|mrs|sir|dr)\\.?$/i', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'individual_prefix', - 'optionEditPath' => 'civicrm/admin/options/individual_prefix', - ], - 'add' => '1.2', - 'is_core_field' => TRUE, - 'api.aliases' => [ - '0' => 'individual_prefix', - '1' => 'individual_prefix_id', - ], - ], - 'suffix_id' => [ - 'name' => 'suffix_id', - 'type' => 1, - 'title' => 'Individual Suffix', - 'description' => 'Suffix for name (Jr, Sr...). FK to suffix ID', - 'import' => TRUE, - 'where' => 'civicrm_contact.suffix_id', - 'headerPattern' => '/^suffix$/i', - 'dataPattern' => '/^(sr|jr)\\.?|i{2,}$/', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'individual_suffix', - 'optionEditPath' => 'civicrm/admin/options/individual_suffix', - ], - 'add' => '1.2', - 'is_core_field' => TRUE, - 'api.aliases' => [ - '0' => 'individual_suffix', - '1' => 'individual_suffix_id', - ], - ], - 'formal_title' => [ - 'name' => 'formal_title', - 'type' => 2, - 'title' => 'Formal Title', - 'description' => 'Formal (academic or similar) title in front of name. (Prof., Dr. etc.)', - 'maxlength' => 64, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.formal_title', - 'headerPattern' => '/^title/i', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Formal Title', - 'maxlength' => 64, - 'size' => 30, - ], - 'add' => '4.5', - 'is_core_field' => TRUE, - ], - 'communication_style_id' => [ - 'name' => 'communication_style_id', - 'type' => 1, - 'title' => 'Communication Style', - 'description' => 'Communication style (e.g. formal vs. familiar) to use with this contact. FK to communication styles in civicrm_option_value.', - 'import' => TRUE, - 'where' => 'civicrm_contact.communication_style_id', - 'headerPattern' => '/style/i', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'communication_style', - 'optionEditPath' => 'civicrm/admin/options/communication_style', - ], - 'add' => '4.4', - 'is_core_field' => TRUE, - ], - 'email_greeting_id' => [ - 'name' => 'email_greeting_id', - 'type' => 1, - 'title' => 'Email Greeting ID', - 'description' => 'FK to civicrm_option_value.id, that has to be valid registered Email Greeting.', - 'where' => 'civicrm_contact.email_greeting_id', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'email_greeting', - 'optionEditPath' => 'civicrm/admin/options/email_greeting', - ], - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'email_greeting_custom' => [ - 'name' => 'email_greeting_custom', - 'type' => 2, - 'title' => 'Email Greeting Custom', - 'description' => 'Custom Email Greeting.', - 'maxlength' => 128, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_contact.email_greeting_custom', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Email Greeting Custom', - 'maxlength' => 128, - 'size' => 45, - ], - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'email_greeting_display' => [ - 'name' => 'email_greeting_display', - 'type' => 2, - 'title' => 'Email Greeting', - 'description' => 'Cache Email Greeting.', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_contact.email_greeting_display', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'postal_greeting_id' => [ - 'name' => 'postal_greeting_id', - 'type' => 1, - 'title' => 'Postal Greeting ID', - 'description' => 'FK to civicrm_option_value.id, that has to be valid registered Postal Greeting.', - 'where' => 'civicrm_contact.postal_greeting_id', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'postal_greeting', - 'optionEditPath' => 'civicrm/admin/options/postal_greeting', - ], - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'postal_greeting_custom' => [ - 'name' => 'postal_greeting_custom', - 'type' => 2, - 'title' => 'Postal Greeting Custom', - 'description' => 'Custom Postal greeting.', - 'maxlength' => 128, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_contact.postal_greeting_custom', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Postal Greeting Custom', - 'maxlength' => 128, - 'size' => 45, - ], - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'postal_greeting_display' => [ - 'name' => 'postal_greeting_display', - 'type' => 2, - 'title' => 'Postal Greeting', - 'description' => 'Cache Postal greeting.', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_contact.postal_greeting_display', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'addressee_id' => [ - 'name' => 'addressee_id', - 'type' => 1, - 'title' => 'Addressee ID', - 'description' => 'FK to civicrm_option_value.id, that has to be valid registered Addressee.', - 'where' => 'civicrm_contact.addressee_id', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'addressee', - 'optionEditPath' => 'civicrm/admin/options/addressee', - ], - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'addressee_custom' => [ - 'name' => 'addressee_custom', - 'type' => 2, - 'title' => 'Addressee Custom', - 'description' => 'Custom Addressee.', - 'maxlength' => 128, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_contact.addressee_custom', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Addressee Custom', - 'maxlength' => 128, - 'size' => 45, - ], - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'addressee_display' => [ - 'name' => 'addressee_display', - 'type' => 2, - 'title' => 'Addressee', - 'description' => 'Cache Addressee.', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_contact.addressee_display', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '3.0', - 'is_core_field' => TRUE, - ], - 'job_title' => [ - 'name' => 'job_title', - 'type' => 2, - 'title' => 'Job Title', - 'description' => 'Job Title', - 'maxlength' => 255, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.job_title', - 'headerPattern' => '/^job|(j(ob\\s)?title)$/i', - 'dataPattern' => '//', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Job Title', - 'maxlength' => 255, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'gender_id' => [ - 'name' => 'gender_id', - 'type' => 1, - 'title' => 'Gender ID', - 'description' => 'FK to gender ID', - 'import' => TRUE, - 'where' => 'civicrm_contact.gender_id', - 'headerPattern' => '/^gender$/i', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'label' => 'Gender', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'gender', - 'optionEditPath' => 'civicrm/admin/options/gender', - ], - 'add' => '1.2', - 'is_core_field' => TRUE, - 'api.aliases' => [ - '0' => 'gender', - ], - ], - 'birth_date' => [ - 'name' => 'birth_date', - 'type' => 4, - 'title' => 'Birth Date', - 'description' => 'Date of birth', - 'import' => TRUE, - 'where' => 'civicrm_contact.birth_date', - 'headerPattern' => '/^birth|(b(irth\\s)?date)|D(\\W*)O(\\W*)B(\\W*)$/i', - 'dataPattern' => '/\\d{4}-?\\d{2}-?\\d{2}/', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select Date', - 'formatType' => 'birth', - 'label' => 'Birth Date', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'is_deceased' => [ - 'name' => 'is_deceased', - 'type' => 16, - 'title' => 'Deceased', - 'required' => TRUE, - 'import' => TRUE, - 'where' => 'civicrm_contact.is_deceased', - 'headerPattern' => '/i(s\\s)?d(eceased)$/i', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - 'label' => 'Is Deceased', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'deceased_date' => [ - 'name' => 'deceased_date', - 'type' => 4, - 'title' => 'Deceased Date', - 'description' => 'Date of deceased', - 'import' => TRUE, - 'where' => 'civicrm_contact.deceased_date', - 'headerPattern' => '/^deceased|(d(eceased\\s)?date)$/i', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select Date', - 'formatType' => 'birth', - 'label' => 'Deceased Date', - ], - 'add' => '1.5', - 'is_core_field' => TRUE, - ], - 'household_name' => [ - 'name' => 'household_name', - 'type' => 2, - 'title' => 'Household Name', - 'description' => 'Household Name.', - 'maxlength' => 128, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.household_name', - 'headerPattern' => '/^household|(h(ousehold\\s)?name)$/i', - 'dataPattern' => '/^\\w+$/', - 'export' => TRUE, - 'contactType' => 'Household', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Household Name', - 'maxlength' => 128, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'primary_contact_id' => [ - 'name' => 'primary_contact_id', - 'type' => 1, - 'title' => 'Household Primary Contact ID', - 'description' => 'Optional FK to Primary Contact for this household.', - 'where' => 'civicrm_contact.primary_contact_id', - 'contactType' => 'Household', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'html' => [ - 'label' => 'Household Primary Contact', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'FKApiName' => 'Contact', - ], - 'organization_name' => [ - 'name' => 'organization_name', - 'type' => 2, - 'title' => 'Organization Name', - 'description' => 'Organization Name.', - 'maxlength' => 128, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.organization_name', - 'headerPattern' => '/^organization|(o(rganization\\s)?name)$/i', - 'dataPattern' => '/^\\w+$/', - 'export' => TRUE, - 'contactType' => 'Organization', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Organization Name', - 'maxlength' => 128, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'sic_code' => [ - 'name' => 'sic_code', - 'type' => 2, - 'title' => 'Sic Code', - 'description' => 'Standard Industry Classification Code.', - 'maxlength' => 8, - 'size' => 8, - 'import' => TRUE, - 'where' => 'civicrm_contact.sic_code', - 'headerPattern' => '/^sic|(s(ic\\s)?code)$/i', - 'export' => TRUE, - 'contactType' => 'Organization', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'SIC Code', - 'maxlength' => 8, - 'size' => 8, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'user_unique_id' => [ - 'name' => 'user_unique_id', - 'type' => 2, - 'title' => 'Unique ID (OpenID)', - 'description' => 'the OpenID (or OpenID-style http://username.domain/) unique identifier for this contact mainly used for logging in to CiviCRM', - 'maxlength' => 255, - 'size' => 45, - 'import' => TRUE, - 'where' => 'civicrm_contact.user_unique_id', - 'headerPattern' => '/^Open\\s?ID|u(niq\\w*)?\\s?ID/i', - 'dataPattern' => '/^[\\w\\/\\:\\.]+$/', - 'export' => TRUE, - 'rule' => 'url', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 255, - 'size' => 45, - ], - 'add' => '2.0', - 'is_core_field' => TRUE, - ], - 'created_date' => [ - 'name' => 'created_date', - 'type' => 256, - 'title' => 'Created Date', - 'description' => 'When was the contact was created.', - 'required' => '', - 'where' => 'civicrm_contact.created_date', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'label' => 'Created Date', - ], - 'add' => '4.3', - 'is_core_field' => TRUE, - ], - 'modified_date' => [ - 'name' => 'modified_date', - 'type' => 256, - 'title' => 'Modified Date', - 'description' => 'When was the contact (or closely related entity) was created or modified or deleted.', - 'required' => '', - 'where' => 'civicrm_contact.modified_date', - 'export' => TRUE, - 'default' => 'CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'label' => 'Modified Date', - ], - 'readonly' => TRUE, - 'add' => '4.3', - 'is_core_field' => TRUE, - ], - 'source' => [ - 'name' => 'source', - 'type' => 2, - 'title' => 'Contact Source', - 'description' => 'where contact come from, e.g. import, donate module insert...', - 'maxlength' => 255, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.source', - 'headerPattern' => '/(C(ontact\\s)?Source)$/i', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 255, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'uniqueName' => 'contact_source', - ], - 'employer_id' => [ - 'name' => 'employer_id', - 'type' => 1, - 'title' => 'Current Employer ID', - 'description' => 'OPTIONAL FK to civicrm_contact record.', - 'where' => 'civicrm_contact.employer_id', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'html' => [ - 'type' => 'EntityRef', - 'label' => 'Current Employer', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '2.1', - 'is_core_field' => TRUE, - 'uniqueName' => 'current_employer_id', - 'FKApiName' => 'Contact', - ], - 'is_deleted' => [ - 'name' => 'is_deleted', - 'type' => 16, - 'title' => 'Contact is in Trash', - 'required' => TRUE, - 'where' => 'civicrm_contact.is_deleted', - 'export' => TRUE, - 'table_name' => 'civicrm_contact', - 'entity' => 'Contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'CheckBox', - ], - 'add' => '3.2', - 'is_core_field' => TRUE, - 'uniqueName' => 'contact_is_deleted', - ], - 'custom_1' => [ - 'id' => '1', - 'label' => 'Our special field', - 'headerPattern' => '//', - 'title' => 'Our special field', - 'custom_field_id' => '1', - 'groupTitle' => 'select_test_group', - 'data_type' => 'String', - 'name' => 'custom_1', - 'type' => 2, - 'html_type' => 'Select', - 'default_value' => '', - 'text_length' => '', - 'options_per_line' => '', - 'custom_group_id' => '1', - 'extends' => 'Contact', - 'is_search_range' => 0, - 'extends_entity_column_value' => '', - 'extends_entity_column_id' => '', - 'is_view' => 0, - 'is_multiple' => 0, - 'option_group_id' => '109', - 'date_format' => '', - 'time_format' => '', - 'is_required' => '1', - 'table_name' => 'civicrm_value_select_test_g_1', - 'column_name' => 'our_special_field_1', - 'serialize' => 0, - 'where' => 'civicrm_value_select_test_g_1.our_special_field_1', - 'extends_table' => 'civicrm_contact', - 'search_table' => 'contact_a', - 'pseudoconstant' => [ - 'optionGroupName' => 'our_special_field_20220117122549', - 'optionEditPath' => 'civicrm/admin/options/our_special_field_20220117122549', - ], - 'options' => [ - '1' => 'Label1', - '2' => 'Label2', - ], - ], - 'current_employer' => [ - 'title' => 'Current Employer', - 'description' => 'Name of Current Employer', - 'type' => 2, - 'name' => 'current_employer', - ], - 'dupe_check' => [ - 'title' => 'Check for Duplicates', - 'description' => 'Throw error if contact create matches dedupe rule', - 'type' => 16, - 'name' => 'dupe_check', - ], - 'skip_greeting_processing' => [ - 'title' => 'Skip Greeting processing', - 'description' => 'Do not process greetings, (these can be done by scheduled job and there may be a preference to do so for performance reasons)', - 'type' => 16, - 'api.default' => 0, - 'name' => 'skip_greeting_processing', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCustomFieldCreateWithOptionValues" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetMergedfrom.ex.php b/civicrm/api/v3/examples/Contact/GetMergedfrom.ex.php deleted file mode 100644 index bab1e98219..0000000000 --- a/civicrm/api/v3/examples/Contact/GetMergedfrom.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getmergedfrom API. - * - * @return array - * API result array - */ -function contact_getmergedfrom_example() { - $params = [ - 'contact_id' => 4, - ]; - - try { - $result = civicrm_api3('Contact', 'getmergedfrom', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getmergedfrom_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - ], - '5' => [ - 'id' => '5', - ], - '6' => [ - 'id' => '6', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMergedGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetMergedto.ex.php b/civicrm/api/v3/examples/Contact/GetMergedto.ex.php deleted file mode 100644 index 4746b88c42..0000000000 --- a/civicrm/api/v3/examples/Contact/GetMergedto.ex.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getmergedto API. - * - * @return array - * API result array - */ -function contact_getmergedto_example() { - $params = [ - 'sequential' => 1, - 'contact_id' => 6, - ]; - - try { - $result = civicrm_api3('Contact', 'getmergedto', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getmergedto_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '0' => [ - 'id' => '4', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMergedGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetOptions.ex.php b/civicrm/api/v3/examples/Contact/GetOptions.ex.php deleted file mode 100644 index b7e43de58f..0000000000 --- a/civicrm/api/v3/examples/Contact/GetOptions.ex.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getoptions API. - * - * Demonstrates retrieving options for a custom field. - * - * @return array - * API result array - */ -function contact_getoptions_example() { - $params = [ - 'field' => 'custom_1', - ]; - - try { - $result = civicrm_api3('Contact', 'getoptions', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getoptions_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '1' => 'Label1', - '2' => 'Label2', - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCustomFieldCreateWithOptionValues" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetSingleContact.ex.php b/civicrm/api/v3/examples/Contact/GetSingleContact.ex.php deleted file mode 100644 index 1590daf0c9..0000000000 --- a/civicrm/api/v3/examples/Contact/GetSingleContact.ex.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getsingle API. - * - * This demonstrates use of the 'format.single_entity_array' param. - * This param causes the only contact to be returned as an array without the other levels. - * It will be ignored if there is not exactly 1 result. - * - * @return array - * API result array - */ -function contact_getsingle_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('Contact', 'getsingle', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getsingle_expectedresult() { - - $expectedResult = [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Contact, Test', - 'display_name' => 'Mr. Test Contact II', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => 'Test', - 'middle_name' => 'J.', - 'last_name' => 'Contact', - 'prefix_id' => '3', - 'suffix_id' => '3', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '3', - 'email' => 'anthony_anderson@civicrm.org', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => 'Mr.', - 'individual_suffix' => 'II', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '3', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetSingleEntityArray" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GetUnique.ex.php b/civicrm/api/v3/examples/Contact/GetUnique.ex.php deleted file mode 100644 index e3f85e4062..0000000000 --- a/civicrm/api/v3/examples/Contact/GetUnique.ex.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.getunique API. - * - * @return array - * API result array - */ -function contact_getunique_example() { - $params = []; - - try { - $result = civicrm_api3('Contact', 'getunique', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_getunique_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 'UI_external_identifier', - 'values' => [ - 'UI_external_identifier' => [], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetUnique" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/GroupFilterUsingContactAPI.ex.php b/civicrm/api/v3/examples/Contact/GroupFilterUsingContactAPI.ex.php deleted file mode 100644 index aa05306ece..0000000000 --- a/civicrm/api/v3/examples/Contact/GroupFilterUsingContactAPI.ex.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * Get all from group and display contacts. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'group' => [ - 'IN' => [ - '0' => 'Test group C', - '1' => 'Test group D', - ], - ], - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Group member, Test2', - 'display_name' => 'Test2 Group member', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => 'Test2', - 'middle_name' => '', - 'last_name' => 'Group member', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => '', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '3', - 'email' => 'test@example.org', - 'on_hold' => 0, - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => '', - 'individual_suffix' => '', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContactGetWithGroupTitleMultipleGroups" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contact/NestedReplaceEmail.ex.php b/civicrm/api/v3/examples/Contact/NestedReplaceEmail.ex.php deleted file mode 100644 index 9da1b89f06..0000000000 --- a/civicrm/api/v3/examples/Contact/NestedReplaceEmail.ex.php +++ /dev/null @@ -1,254 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contact.get API. - * - * Demonstrates use of Replace in a nested API call. - * - * @return array - * API result array - */ -function contact_get_example() { - $params = [ - 'id' => 19, - 'api.email.replace' => [ - 'values' => [ - '0' => [ - 'location_type_id' => 38, - 'email' => '1-1@example.com', - 'is_primary' => 1, - ], - '1' => [ - 'location_type_id' => 38, - 'email' => '1-2@example.com', - 'is_primary' => 0, - ], - '2' => [ - 'location_type_id' => 38, - 'email' => '1-3@example.com', - 'is_primary' => 0, - ], - '3' => [ - 'location_type_id' => 39, - 'email' => '2-1@example.com', - 'is_primary' => 0, - ], - '4' => [ - 'location_type_id' => 39, - 'email' => '2-2@example.com', - 'is_primary' => 0, - ], - ], - ], - ]; - - try { - $result = civicrm_api3('Contact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 19, - 'values' => [ - '19' => [ - 'contact_id' => '19', - 'contact_type' => 'Organization', - 'contact_sub_type' => '', - 'sort_name' => 'Unit Test Organization', - 'display_name' => 'Unit Test Organization', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'first_name' => '', - 'middle_name' => '', - 'last_name' => '', - 'prefix_id' => '', - 'suffix_id' => '', - 'formal_title' => '', - 'communication_style_id' => '1', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'organization_name' => 'Unit Test Organization', - 'sic_code' => '', - 'contact_is_deleted' => 0, - 'current_employer' => '', - 'address_id' => '', - 'street_address' => '', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'postal_code_suffix' => '', - 'postal_code' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - 'state_province_id' => '', - 'country_id' => '', - 'phone_id' => '', - 'phone_type_id' => '', - 'phone' => '', - 'email_id' => '', - 'email' => '', - 'on_hold' => '', - 'im_id' => '', - 'provider_id' => '', - 'im' => '', - 'worldregion_id' => '', - 'world_region' => '', - 'languages' => 'English (United States)', - 'individual_prefix' => '', - 'individual_suffix' => '', - 'communication_style' => 'Formal', - 'gender' => '', - 'state_province_name' => '', - 'state_province' => '', - 'country' => '', - 'id' => '19', - 'api.email.replace' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'values' => [ - '0' => [ - 'id' => '35', - 'contact_id' => '19', - 'location_type_id' => '38', - 'email' => '1-1@example.com', - 'is_primary' => '1', - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '1' => [ - 'id' => '36', - 'contact_id' => '19', - 'location_type_id' => '38', - 'email' => '1-2@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '2' => [ - 'id' => '37', - 'contact_id' => '19', - 'location_type_id' => '38', - 'email' => '1-3@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '3' => [ - 'id' => '38', - 'contact_id' => '19', - 'location_type_id' => '39', - 'email' => '2-1@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '4' => [ - 'id' => '39', - 'contact_id' => '19', - 'location_type_id' => '39', - 'email' => '2-2@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testReplaceEmailsInChain" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EmailTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/ContributionCreateWithHonoreeContact.ex.php b/civicrm/api/v3/examples/Contribution/ContributionCreateWithHonoreeContact.ex.php deleted file mode 100644 index e56c890d5b..0000000000 --- a/civicrm/api/v3/examples/Contribution/ContributionCreateWithHonoreeContact.ex.php +++ /dev/null @@ -1,122 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.create API. - * - * Demonstrates creating contribution with Soft Credit by passing in honor_contact_id. - * - * @return array - * API result array - */ -function contribution_create_example() { - $params = [ - 'contact_id' => 3, - 'receive_date' => '20120511', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'non_deductible_amount' => '10', - 'fee_amount' => '5', - 'net_amount' => '95', - 'source' => 'SSF', - 'contribution_status_id' => 1, - 'honor_contact_id' => 4, - ]; - - try { - $result = civicrm_api3('Contribution', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '20120511000000', - 'non_deductible_amount' => '10', - 'total_amount' => '100', - 'fee_amount' => '5', - 'net_amount' => '95', - 'trxn_id' => '', - 'invoice_id' => '', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '1', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateContributionWithHonoreeContact" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/ContributionCreateWithNote.ex.php b/civicrm/api/v3/examples/Contribution/ContributionCreateWithNote.ex.php deleted file mode 100644 index 44ec08c356..0000000000 --- a/civicrm/api/v3/examples/Contribution/ContributionCreateWithNote.ex.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.create API. - * - * Demonstrates creating contribution with Note Entity. - * - * @return array - * API result array - */ -function contribution_create_example() { - $params = [ - 'contact_id' => 3, - 'receive_date' => '2012-01-01', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'payment_instrument_id' => 1, - 'non_deductible_amount' => '10', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => 12345, - 'invoice_id' => 67890, - 'source' => 'SSF', - 'contribution_status_id' => 1, - 'note' => 'my contribution note', - ]; - - try { - $result = civicrm_api3('Contribution', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '1', - 'receive_date' => '20120101000000', - 'non_deductible_amount' => '10', - 'total_amount' => '100', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => '12345', - 'invoice_id' => '67890', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '1', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateContributionWithNote" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCredit.ex.php b/civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCredit.ex.php deleted file mode 100644 index ea42d726df..0000000000 --- a/civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCredit.ex.php +++ /dev/null @@ -1,128 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.create API. - * - * Demonstrates creating contribution with SoftCredit. - * - * @return array - * API result array - */ -function contribution_create_example() { - $params = [ - 'contact_id' => 3, - 'receive_date' => '20120511', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'non_deductible_amount' => '10', - 'fee_amount' => '5', - 'net_amount' => '95', - 'source' => 'SSF', - 'contribution_status_id' => 1, - 'soft_credit' => [ - '1' => [ - 'contact_id' => 4, - 'amount' => 50, - 'soft_credit_type_id' => 3, - ], - ], - ]; - - try { - $result = civicrm_api3('Contribution', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '20120511000000', - 'non_deductible_amount' => '10', - 'total_amount' => '100', - 'fee_amount' => '5', - 'net_amount' => '95', - 'trxn_id' => '', - 'invoice_id' => '', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '1', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateContributionWithSoftCredit" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCreditDefaults.ex.php b/civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCreditDefaults.ex.php deleted file mode 100644 index 938f989bc5..0000000000 --- a/civicrm/api/v3/examples/Contribution/ContributionCreateWithSoftCreditDefaults.ex.php +++ /dev/null @@ -1,122 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.create API. - * - * Demonstrates creating contribution with Soft Credit defaults for amount and type. - * - * @return array - * API result array - */ -function contribution_create_example() { - $params = [ - 'contact_id' => 3, - 'receive_date' => '20120511', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'non_deductible_amount' => '10', - 'fee_amount' => '5', - 'net_amount' => '95', - 'source' => 'SSF', - 'contribution_status_id' => 1, - 'soft_credit_to' => 4, - ]; - - try { - $result = civicrm_api3('Contribution', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '20120511000000', - 'non_deductible_amount' => '10', - 'total_amount' => '100', - 'fee_amount' => '5', - 'net_amount' => '95', - 'trxn_id' => '', - 'invoice_id' => '', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '1', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateContributionWithSoftCreditDefaults" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/Create.ex.php b/civicrm/api/v3/examples/Contribution/Create.ex.php deleted file mode 100644 index f275e817e5..0000000000 --- a/civicrm/api/v3/examples/Contribution/Create.ex.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.create API. - * - * @return array - * API result array - */ -function contribution_create_example() { - $params = [ - 'contact_id' => 3, - 'receive_date' => '20120511', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'contribution_page_id' => 1, - 'trxn_id' => 12345, - 'is_pay_later' => 1, - 'invoice_id' => 67890, - 'source' => 'SSF', - 'contribution_status_id' => 'Pending', - ]; - - try { - $result = civicrm_api3('Contribution', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '1', - 'payment_instrument_id' => '4', - 'receive_date' => '20120511000000', - 'non_deductible_amount' => '', - 'total_amount' => '100', - 'fee_amount' => 0, - 'net_amount' => '100', - 'trxn_id' => '12345', - 'invoice_id' => '67890', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '1', - 'contribution_status_id' => '2', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateContributionPayLaterOnline" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/CreateWithNestedLineItems.ex.php b/civicrm/api/v3/examples/Contribution/CreateWithNestedLineItems.ex.php deleted file mode 100644 index 6324494bd3..0000000000 --- a/civicrm/api/v3/examples/Contribution/CreateWithNestedLineItems.ex.php +++ /dev/null @@ -1,191 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.create API. - * - * Create Contribution with Nested Line Items. - * - * @return array - * API result array - */ -function contribution_create_example() { - $params = [ - 'contact_id' => 3, - 'receive_date' => '20120511', - 'total_amount' => '100', - 'financial_type_id' => 1, - 'payment_instrument_id' => 1, - 'non_deductible_amount' => '10', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => 12345, - 'invoice_id' => 67890, - 'source' => 'SSF', - 'contribution_status_id' => 'Pending', - 'skipLineItem' => 1, - 'api.line_item.create' => [ - '0' => [ - 'price_field_id' => 1, - 'qty' => 2, - 'line_total' => '20', - 'unit_price' => '10', - ], - '1' => [ - 'price_field_id' => 1, - 'qty' => 1, - 'line_total' => '80', - 'unit_price' => '80', - ], - ], - ]; - - try { - $result = civicrm_api3('Contribution', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '1', - 'receive_date' => '20120511000000', - 'non_deductible_amount' => '10', - 'total_amount' => '100', - 'fee_amount' => '50', - 'net_amount' => '90', - 'trxn_id' => '12345', - 'invoice_id' => '67890', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '2', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - 'api.line_item.create' => [ - '0' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'entity_table' => 'civicrm_contribution', - 'entity_id' => '1', - 'contribution_id' => '1', - 'price_field_id' => '1', - 'label' => 'line item', - 'qty' => '2', - 'unit_price' => '10', - 'line_total' => '20', - 'participant_count' => '', - 'price_field_value_id' => '', - 'financial_type_id' => '', - 'non_deductible_amount' => '', - 'tax_amount' => '', - 'membership_num_terms' => '', - ], - ], - ], - '1' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'id' => '2', - 'entity_table' => 'civicrm_contribution', - 'entity_id' => '1', - 'contribution_id' => '1', - 'price_field_id' => '1', - 'label' => 'line item', - 'qty' => '1', - 'unit_price' => '80', - 'line_total' => '80', - 'participant_count' => '', - 'price_field_value_id' => '', - 'financial_type_id' => '', - 'non_deductible_amount' => '', - 'tax_amount' => '', - 'membership_num_terms' => '', - ], - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateContributionChainedLineItems" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/Delete.ex.php b/civicrm/api/v3/examples/Contribution/Delete.ex.php deleted file mode 100644 index 995946cd03..0000000000 --- a/civicrm/api/v3/examples/Contribution/Delete.ex.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.delete API. - * - * @return array - * API result array - */ -function contribution_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Contribution', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => 1, - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteContribution" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/Get.ex.php b/civicrm/api/v3/examples/Contribution/Get.ex.php deleted file mode 100644 index aa60007bb2..0000000000 --- a/civicrm/api/v3/examples/Contribution/Get.ex.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.get API. - * - * @return array - * API result array - */ -function contribution_get_example() { - $params = [ - 'contribution_id' => 1, - 'return' => [ - '0' => 'invoice_number', - '1' => 'contribution_source', - '2' => 'contact_id', - '3' => 'receive_date', - '4' => 'total_amount', - '5' => 'financial_type_id', - '6' => 'non_deductible_amount', - '7' => 'fee_amount', - '8' => 'net_amount', - '9' => 'trxn_id', - '10' => 'invoice_id', - '11' => 'source', - '12' => 'contribution_status_id', - ], - ]; - - try { - $result = civicrm_api3('Contribution', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'contact_id' => '3', - 'contribution_recur_id' => '', - 'contribution_status_id' => '1', - 'contribution_id' => '1', - 'financial_type_id' => '1', - 'receive_date' => '2010-01-20 00:00:00', - 'non_deductible_amount' => '10.00', - 'total_amount' => '100.00', - 'fee_amount' => '5.00', - 'net_amount' => '95.00', - 'trxn_id' => '23456', - 'invoice_id' => '78910', - 'invoice_number' => 'INV_1', - 'contribution_source' => 'SSF', - 'contribution_recur_status' => 'Completed', - 'contribution_status' => 'Completed', - 'id' => '1', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetContribution" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Contribution/GetUnique.ex.php b/civicrm/api/v3/examples/Contribution/GetUnique.ex.php deleted file mode 100644 index 01aa735930..0000000000 --- a/civicrm/api/v3/examples/Contribution/GetUnique.ex.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Contribution.getunique API. - * - * @return array - * API result array - */ -function contribution_getunique_example() { - $params = []; - - try { - $result = civicrm_api3('Contribution', 'getunique', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_getunique_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - 'UI_contrib_trxn_id' => [], - 'UI_contrib_invoice_id' => [], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testContributionGetUnique" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionPage/Create.ex.php b/civicrm/api/v3/examples/ContributionPage/Create.ex.php deleted file mode 100644 index 2070e71044..0000000000 --- a/civicrm/api/v3/examples/ContributionPage/Create.ex.php +++ /dev/null @@ -1,135 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionPage.create API. - * - * @return array - * API result array - */ -function contribution_page_create_example() { - $params = [ - 'title' => 'Test Contribution Page', - 'financial_type_id' => 1, - 'currency' => 'NZD', - 'goal_amount' => 34567, - 'is_pay_later' => 1, - 'pay_later_text' => 'Send check', - 'is_monetary' => TRUE, - 'is_email_receipt' => TRUE, - 'receipt_from_email' => 'yourconscience@donate.com', - 'receipt_from_name' => 'Ego Freud', - ]; - - try { - $result = civicrm_api3('ContributionPage', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_page_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'title' => 'Test Contribution Page', - 'intro_text' => '', - 'financial_type_id' => '1', - 'payment_processor' => '', - 'is_credit_card_only' => '', - 'is_monetary' => '1', - 'is_recur' => '', - 'is_confirm_enabled' => '', - 'recur_frequency_unit' => '', - 'is_recur_interval' => '', - 'is_recur_installments' => '', - 'adjust_recur_start_date' => '', - 'is_pay_later' => '1', - 'pay_later_text' => 'Send check', - 'pay_later_receipt' => '', - 'is_partial_payment' => '', - 'initial_amount_label' => '', - 'initial_amount_help_text' => '', - 'min_initial_amount' => '', - 'is_allow_other_amount' => '', - 'default_amount_id' => '', - 'min_amount' => '', - 'max_amount' => '', - 'goal_amount' => '34567', - 'thankyou_title' => '', - 'thankyou_text' => '', - 'thankyou_footer' => '', - 'is_email_receipt' => '1', - 'receipt_from_name' => 'Ego Freud', - 'receipt_from_email' => 'yourconscience@donate.com', - 'cc_receipt' => '', - 'bcc_receipt' => '', - 'receipt_text' => '', - 'is_active' => '1', - 'footer_text' => '', - 'amount_block_is_active' => '', - 'start_date' => '', - 'end_date' => '', - 'created_id' => '', - 'created_date' => '', - 'currency' => 'NZD', - 'campaign_id' => '', - 'is_share' => '', - 'is_billing_required' => '', - 'frontend_title' => '', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "basicCreateTest" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CiviUnitTestCase.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionPage/Delete.ex.php b/civicrm/api/v3/examples/ContributionPage/Delete.ex.php deleted file mode 100644 index babbd43ca0..0000000000 --- a/civicrm/api/v3/examples/ContributionPage/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionPage.delete API. - * - * @return array - * API result array - */ -function contribution_page_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('ContributionPage', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_page_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "basicDeleteTest" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CiviUnitTestCase.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionPage/Get.ex.php b/civicrm/api/v3/examples/ContributionPage/Get.ex.php deleted file mode 100644 index 46acb7e857..0000000000 --- a/civicrm/api/v3/examples/ContributionPage/Get.ex.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionPage.get API. - * - * @return array - * API result array - */ -function contribution_page_get_example() { - $params = [ - 'currency' => 'NZD', - 'financial_type_id' => 1, - ]; - - try { - $result = civicrm_api3('ContributionPage', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_page_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'title' => 'Test Contribution Page', - 'financial_type_id' => '1', - 'is_credit_card_only' => 0, - 'is_monetary' => '1', - 'is_recur' => 0, - 'is_confirm_enabled' => '1', - 'is_recur_interval' => 0, - 'is_recur_installments' => 0, - 'adjust_recur_start_date' => 0, - 'is_pay_later' => '1', - 'pay_later_text' => 'Send check', - 'is_partial_payment' => 0, - 'is_allow_other_amount' => 0, - 'goal_amount' => '34567.00', - 'is_email_receipt' => '1', - 'receipt_from_name' => 'Ego Freud', - 'receipt_from_email' => 'yourconscience@donate.com', - 'is_active' => '1', - 'amount_block_is_active' => '1', - 'currency' => 'NZD', - 'is_share' => '1', - 'is_billing_required' => 0, - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetBasicContributionPage" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionPageTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionPage/Submit.ex.php b/civicrm/api/v3/examples/ContributionPage/Submit.ex.php deleted file mode 100644 index f1eb5c13c8..0000000000 --- a/civicrm/api/v3/examples/ContributionPage/Submit.ex.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionPage.submit API. - * - * submit contribution page. - * - * @return array - * API result array - */ -function contribution_page_submit_example() { - $params = [ - 'id' => 1, - 'pledge_amount' => [ - '2' => 1, - ], - 'price_2' => 3, - 'billing_first_name' => 'Billy', - 'billing_middle_name' => 'Goat', - 'billing_last_name' => 'Gruff', - 'email' => 'billy@goat.gruff', - 'payment_processor_id' => 1, - 'credit_card_number' => '4111111111111111', - 'credit_card_type' => 'Visa', - 'credit_card_exp_date' => [ - 'M' => 9, - 'Y' => 2040, - ], - 'cvv2' => 123, - 'pledge_id' => '1', - 'cid' => '4', - 'contact_id' => '4', - 'is_pledge' => TRUE, - 'pledge_block_id' => 1, - ]; - - try { - $result = civicrm_api3('ContributionPage', 'submit', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_page_submit_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => '', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testSubmitPledgePayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionPageTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionRecur/Create.ex.php b/civicrm/api/v3/examples/ContributionRecur/Create.ex.php deleted file mode 100644 index d4029781aa..0000000000 --- a/civicrm/api/v3/examples/ContributionRecur/Create.ex.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionRecur.create API. - * - * @return array - * API result array - */ -function contribution_recur_create_example() { - $params = [ - 'contact_id' => 3, - 'installments' => '12', - 'frequency_interval' => '1', - 'amount' => '500.00', - 'contribution_status_id' => 1, - 'start_date' => '2012-01-01 00:00:00', - 'currency' => 'USD', - 'frequency_unit' => 'day', - ]; - - try { - $result = civicrm_api3('ContributionRecur', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_recur_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'amount' => '500.00', - 'currency' => 'USD', - 'frequency_unit' => 'day', - 'frequency_interval' => '1', - 'installments' => '12', - 'start_date' => '2013-07-29 00:00:00', - 'create_date' => '20120130621222105', - 'modified_date' => '2012-11-14 16:02:35', - 'cancel_date' => '', - 'cancel_reason' => '', - 'end_date' => '', - 'processor_id' => '', - 'payment_token_id' => '', - 'trxn_id' => '', - 'invoice_id' => '', - 'contribution_status_id' => '1', - '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' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "basicCreateTest" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CiviUnitTestCase.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionRecur/Delete.ex.php b/civicrm/api/v3/examples/ContributionRecur/Delete.ex.php deleted file mode 100644 index 1d4b11c403..0000000000 --- a/civicrm/api/v3/examples/ContributionRecur/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionRecur.delete API. - * - * @return array - * API result array - */ -function contribution_recur_delete_example() { - $params = [ - 'id' => 7, - ]; - - try { - $result = civicrm_api3('ContributionRecur', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_recur_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "basicDeleteTest" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CiviUnitTestCase.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionRecur/Get.ex.php b/civicrm/api/v3/examples/ContributionRecur/Get.ex.php deleted file mode 100644 index a26894fc44..0000000000 --- a/civicrm/api/v3/examples/ContributionRecur/Get.ex.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionRecur.get API. - * - * @return array - * API result array - */ -function contribution_recur_get_example() { - $params = [ - 'amount' => '500', - ]; - - try { - $result = civicrm_api3('ContributionRecur', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_recur_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_id' => '5', - 'amount' => '500.00', - 'currency' => 'USD', - 'frequency_unit' => 'day', - 'frequency_interval' => '1', - 'installments' => '12', - 'start_date' => '2013-07-29 00:00:00', - 'create_date' => '20120130621222105', - 'modified_date' => '2012-11-14 16:02:35', - 'contribution_status_id' => '1', - 'is_test' => 0, - 'cycle_day' => '1', - 'failure_count' => 0, - 'auto_renew' => 0, - 'is_email_receipt' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetContributionRecur" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionRecurTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionSoft/Create.ex.php b/civicrm/api/v3/examples/ContributionSoft/Create.ex.php deleted file mode 100644 index b90e7cbead..0000000000 --- a/civicrm/api/v3/examples/ContributionSoft/Create.ex.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionSoft.create API. - * - * @return array - * API result array - */ -function contribution_soft_create_example() { - $params = [ - 'contribution_id' => 6, - 'contact_id' => 19, - 'amount' => '10', - 'currency' => 'USD', - 'soft_credit_type_id' => 5, - ]; - - try { - $result = civicrm_api3('ContributionSoft', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_soft_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 5, - 'values' => [ - '5' => [ - 'id' => '5', - 'contribution_id' => '6', - 'contact_id' => '19', - 'amount' => '10', - 'currency' => 'USD', - 'pcp_id' => '', - 'pcp_display_in_roll' => '', - 'pcp_roll_nickname' => '', - 'pcp_personal_note' => '', - 'soft_credit_type_id' => '5', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateContributionSoft" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionSoftTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionSoft/Delete.ex.php b/civicrm/api/v3/examples/ContributionSoft/Delete.ex.php deleted file mode 100644 index 967a0891cf..0000000000 --- a/civicrm/api/v3/examples/ContributionSoft/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionSoft.delete API. - * - * @return array - * API result array - */ -function contribution_soft_delete_example() { - $params = [ - 'id' => 7, - ]; - - try { - $result = civicrm_api3('ContributionSoft', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_soft_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteContributionSoft" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionSoftTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ContributionSoft/Get.ex.php b/civicrm/api/v3/examples/ContributionSoft/Get.ex.php deleted file mode 100644 index 49ea3c8c04..0000000000 --- a/civicrm/api/v3/examples/ContributionSoft/Get.ex.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ContributionSoft.get API. - * - * @return array - * API result array - */ -function contribution_soft_get_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('ContributionSoft', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function contribution_soft_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contribution_id' => '1', - 'contact_id' => '4', - 'amount' => '10.00', - 'currency' => 'USD', - 'pcp_display_in_roll' => 0, - 'soft_credit_type_id' => '4', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetContributionSoft" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ContributionSoftTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Country/Create.ex.php b/civicrm/api/v3/examples/Country/Create.ex.php deleted file mode 100644 index 8443fc2d9e..0000000000 --- a/civicrm/api/v3/examples/Country/Create.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Country.create API. - * - * @return array - * API result array - */ -function country_create_example() { - $params = [ - 'name' => 'Made Up Land', - 'iso_code' => 'ZZ', - 'region_id' => 1, - ]; - - try { - $result = civicrm_api3('Country', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function country_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1255, - 'values' => [ - '1255' => [ - 'id' => '1255', - 'name' => 'Made Up Land', - 'iso_code' => 'ZZ', - 'country_code' => '', - 'address_format_id' => '', - 'idd_prefix' => '', - 'ndd_prefix' => '', - 'region_id' => '1', - 'is_province_abbreviated' => '', - 'is_active' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateCountry" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CountryTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Country/Delete.ex.php b/civicrm/api/v3/examples/Country/Delete.ex.php deleted file mode 100644 index f7b33b0c5a..0000000000 --- a/civicrm/api/v3/examples/Country/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Country.delete API. - * - * @return array - * API result array - */ -function country_delete_example() { - $params = [ - 'id' => 1257, - ]; - - try { - $result = civicrm_api3('Country', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function country_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteCountry" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CountryTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Country/Get.ex.php b/civicrm/api/v3/examples/Country/Get.ex.php deleted file mode 100644 index 83e3d119a2..0000000000 --- a/civicrm/api/v3/examples/Country/Get.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Country.get API. - * - * @return array - * API result array - */ -function country_get_example() { - $params = [ - 'iso_code' => 'ZZ', - ]; - - try { - $result = civicrm_api3('Country', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function country_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1259, - 'values' => [ - '1259' => [ - 'id' => '1259', - 'name' => 'Made Up Land', - 'iso_code' => 'ZZ', - 'region_id' => '1', - 'is_province_abbreviated' => 0, - 'is_active' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CountryTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CustomField/Create.ex.php b/civicrm/api/v3/examples/CustomField/Create.ex.php deleted file mode 100644 index b4bb9124eb..0000000000 --- a/civicrm/api/v3/examples/CustomField/Create.ex.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomField.create API. - * - * @return array - * API result array - */ -function custom_field_create_example() { - $params = [ - 'custom_group_id' => 1, - 'name' => 'test_textfield2', - 'label' => 'Name1', - 'html_type' => 'Text', - 'data_type' => 'String', - 'default_value' => 'abc', - 'weight' => 4, - 'is_required' => 1, - 'is_searchable' => 0, - 'is_active' => 1, - ]; - - try { - $result = civicrm_api3('CustomField', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_field_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'custom_group_id' => '1', - 'name' => 'test_textfield2', - 'label' => 'Name1', - 'data_type' => 'String', - 'html_type' => 'Text', - 'default_value' => 'abc', - 'is_required' => '1', - 'is_searchable' => 0, - 'is_search_range' => 0, - 'weight' => '4', - 'help_pre' => '', - 'help_post' => '', - 'mask' => '', - 'attributes' => '', - 'javascript' => '', - 'is_active' => '1', - 'is_view' => 0, - 'options_per_line' => '', - 'text_length' => '', - 'start_date_years' => '', - 'end_date_years' => '', - 'date_format' => '', - 'time_format' => '', - 'note_columns' => '', - 'note_rows' => '', - 'column_name' => 'name1_1', - 'option_group_id' => '', - 'serialize' => 0, - 'filter' => '', - 'in_selector' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCustomFieldCreateWithEdit" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CustomField/Delete.ex.php b/civicrm/api/v3/examples/CustomField/Delete.ex.php deleted file mode 100644 index 9b5ff15d59..0000000000 --- a/civicrm/api/v3/examples/CustomField/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomField.delete API. - * - * @return array - * API result array - */ -function custom_field_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('CustomField', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_field_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCustomFieldDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CustomGroup/Create.ex.php b/civicrm/api/v3/examples/CustomGroup/Create.ex.php deleted file mode 100644 index f965296441..0000000000 --- a/civicrm/api/v3/examples/CustomGroup/Create.ex.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomGroup.create API. - * - * @return array - * API result array - */ -function custom_group_create_example() { - $params = [ - 'title' => 'Test_Group_1', - 'name' => 'test_group_1', - 'extends' => [ - '0' => 'Individual', - ], - 'weight' => 4, - 'collapse_display' => 1, - 'style' => 'Inline', - 'help_pre' => 'This is Pre Help For Test Group 1', - 'help_post' => 'This is Post Help For Test Group 1', - 'is_active' => 1, - ]; - - try { - $result = civicrm_api3('CustomGroup', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_group_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'test_group_1', - 'title' => 'Test_Group_1', - 'extends' => 'Individual', - 'extends_entity_column_id' => '', - 'extends_entity_column_value' => '', - 'style' => 'Inline', - 'collapse_display' => '1', - 'help_pre' => 'This is Pre Help For Test Group 1', - 'help_post' => 'This is Post Help For Test Group 1', - 'weight' => '2', - 'is_active' => '1', - 'table_name' => 'civicrm_value_test_group_1_1', - 'is_multiple' => '', - 'min_multiple' => '', - 'max_multiple' => '', - 'collapse_adv_display' => '', - 'created_id' => '', - 'created_date' => '', - 'is_reserved' => '', - 'is_public' => '', - 'icon' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCustomGroupCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CustomGroup/Delete.ex.php b/civicrm/api/v3/examples/CustomGroup/Delete.ex.php deleted file mode 100644 index d495a48aa6..0000000000 --- a/civicrm/api/v3/examples/CustomGroup/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomGroup.delete API. - * - * @return array - * API result array - */ -function custom_group_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('CustomGroup', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_group_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCustomGroupDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CustomGroup/Get.ex.php b/civicrm/api/v3/examples/CustomGroup/Get.ex.php deleted file mode 100644 index f40211ba22..0000000000 --- a/civicrm/api/v3/examples/CustomGroup/Get.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomGroup.get API. - * - * @return array - * API result array - */ -function custom_group_get_example() { - $params = []; - - try { - $result = civicrm_api3('CustomGroup', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_group_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'test_group_1', - 'title' => 'Test_Group_1', - 'extends' => 'Individual', - 'style' => 'Inline', - 'collapse_display' => '1', - 'help_pre' => 'This is Pre Help For Test Group 1', - 'help_post' => 'This is Post Help For Test Group 1', - 'weight' => '2', - 'is_active' => '1', - 'table_name' => 'civicrm_value_test_group_1_1', - 'is_multiple' => 0, - 'collapse_adv_display' => 0, - 'is_reserved' => 0, - 'is_public' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetCustomGroupSuccess" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/CustomValue/Create.ex.php b/civicrm/api/v3/examples/CustomValue/Create.ex.php deleted file mode 100644 index 930ddf9f92..0000000000 --- a/civicrm/api/v3/examples/CustomValue/Create.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomValue.create API. - * - * @return array - * API result array - */ -function custom_value_create_example() { - $params = [ - 'custom_1' => 'customString', - 'entity_id' => 3, - ]; - - try { - $result = civicrm_api3('CustomValue', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_value_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => TRUE, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateCustomValue" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-master-git/ - * - * To Learn about the API read - * http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API - * - * Browse the api on your own site with the api explorer - * http://MYSITE.ORG/path/to/civicrm/api - * - * Read more about testing here - * http://wiki.civicrm.org/confluence/display/CRM/Testing - * - * API Standards documentation: - * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards - */ diff --git a/civicrm/api/v3/examples/CustomValue/FormatFieldName.ex.php b/civicrm/api/v3/examples/CustomValue/FormatFieldName.ex.php deleted file mode 100644 index e353390380..0000000000 --- a/civicrm/api/v3/examples/CustomValue/FormatFieldName.ex.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomValue.get API. - * - * Utilises field names. - * - * @return array - * API result array - */ -function custom_value_get_example() { - $params = [ - 'id' => 2, - 'entity_id' => 2, - 'format.field_names' => 1, - ]; - - try { - $result = civicrm_api3('CustomValue', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_value_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 7, - 'values' => [ - 'mySingleField' => [ - 'entity_id' => '2', - 'latest' => 'value 1', - 'id' => 'mySingleField', - ], - 'field_12' => [ - 'entity_id' => '2', - 'latest' => 'value 3', - 'id' => 'field_12', - '1' => 'value 2', - '2' => 'value 3', - ], - 'field_22' => [ - 'entity_id' => '2', - 'latest' => '', - 'id' => 'field_22', - '1' => 'warm beer', - '2' => '', - ], - 'field_32' => [ - 'entity_id' => '2', - 'latest' => '', - 'id' => 'field_32', - '1' => 'fl* w*', - '2' => '', - ], - 'field_13' => [ - 'entity_id' => '2', - 'latest' => 'coffee', - 'id' => 'field_13', - '1' => 'defaultValue', - '2' => 'coffee', - ], - 'field_23' => [ - 'entity_id' => '2', - 'latest' => 'value 4', - 'id' => 'field_23', - '1' => '', - '2' => 'value 4', - ], - 'field_33' => [ - 'entity_id' => '2', - 'latest' => '', - 'id' => 'field_33', - '1' => 'vegemite', - '2' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetMultipleCustomValues" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-master-git/ - * - * To Learn about the API read - * http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API - * - * Browse the api on your own site with the api explorer - * http://MYSITE.ORG/path/to/civicrm/api - * - * Read more about testing here - * http://wiki.civicrm.org/confluence/display/CRM/Testing - * - * API Standards documentation: - * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards - */ diff --git a/civicrm/api/v3/examples/CustomValue/Get.ex.php b/civicrm/api/v3/examples/CustomValue/Get.ex.php deleted file mode 100644 index b5eae03648..0000000000 --- a/civicrm/api/v3/examples/CustomValue/Get.ex.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the CustomValue.get API. - * - * This demonstrates the use of CustomValue get to fetch single and multi-valued custom data. - * - * @return array - * API result array - */ -function custom_value_get_example() { - $params = [ - 'id' => 2, - 'entity_id' => 2, - ]; - - try { - $result = civicrm_api3('CustomValue', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function custom_value_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 7, - 'values' => [ - '1' => [ - 'entity_id' => '2', - 'latest' => 'value 1', - 'id' => '1', - ], - '2' => [ - 'entity_id' => '2', - 'latest' => 'value 3', - 'id' => '2', - '1' => 'value 2', - '2' => 'value 3', - ], - '3' => [ - 'entity_id' => '2', - 'latest' => '', - 'id' => '3', - '1' => 'warm beer', - '2' => '', - ], - '4' => [ - 'entity_id' => '2', - 'latest' => '', - 'id' => '4', - '1' => 'fl* w*', - '2' => '', - ], - '5' => [ - 'entity_id' => '2', - 'latest' => 'coffee', - 'id' => '5', - '1' => 'defaultValue', - '2' => 'coffee', - ], - '6' => [ - 'entity_id' => '2', - 'latest' => 'value 4', - 'id' => '6', - '1' => '', - '2' => 'value 4', - ], - '7' => [ - 'entity_id' => '2', - 'latest' => '', - 'id' => '7', - '1' => 'vegemite', - '2' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetMultipleCustomValues" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/CustomValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-master-git/ - * - * To Learn about the API read - * http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API - * - * Browse the api on your own site with the api explorer - * http://MYSITE.ORG/path/to/civicrm/api - * - * Read more about testing here - * http://wiki.civicrm.org/confluence/display/CRM/Testing - * - * API Standards documentation: - * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards - */ diff --git a/civicrm/api/v3/examples/Domain/Create.ex.php b/civicrm/api/v3/examples/Domain/Create.ex.php deleted file mode 100644 index be9c1708af..0000000000 --- a/civicrm/api/v3/examples/Domain/Create.ex.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Domain.create API. - * - * @return array - * API result array - */ -function domain_create_example() { - $params = [ - 'name' => 'A-team domain', - 'description' => 'domain of chaos', - 'domain_version' => '4.2', - 'contact_id' => 7, - ]; - - try { - $result = civicrm_api3('Domain', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function domain_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'name' => 'A-team domain', - 'description' => 'domain of chaos', - 'contact_id' => '7', - 'locales' => '', - 'locale_custom_strings' => '', - 'domain_version' => '4.2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/DomainTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Domain/Get.ex.php b/civicrm/api/v3/examples/Domain/Get.ex.php deleted file mode 100644 index 54652a3bc4..0000000000 --- a/civicrm/api/v3/examples/Domain/Get.ex.php +++ /dev/null @@ -1,129 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Domain.get API. - * - * @return array - * API result array - */ -function domain_get_example() { - $params = [ - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('Domain', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function domain_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '0' => [ - 'id' => '1', - 'name' => 'Default Domain Name', - 'version' => '5.47.alpha1', - 'contact_id' => '3', - 'locale_custom_strings' => 'a:1:{s:5:\"en_US\";a:0:{}}', - 'domain_email' => 'my@email.com', - 'domain_phone' => [ - 'phone_type' => 'Phone', - 'phone' => '456-456', - ], - 'domain_address' => [ - 'street_address' => '45 Penny Lane', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => '', - 'state_province_id' => '', - 'postal_code' => '', - 'country_id' => '', - 'geo_code_1' => '', - 'geo_code_2' => '', - ], - 'from_name' => 'FIXME', - 'from_email' => 'info@EXAMPLE.ORG', - 'domain_version' => '5.47.alpha1', - ], - '1' => [ - 'id' => '2', - 'name' => 'Second Domain', - 'version' => '5.47.alpha1', - 'contact_id' => '2', - 'domain_email' => 'domainemail2@example.org', - 'domain_phone' => [ - 'phone_type' => 'Phone', - 'phone' => '204 555-1001', - ], - 'domain_address' => [ - 'street_address' => '15 Main St', - 'supplemental_address_1' => '', - 'supplemental_address_2' => '', - 'supplemental_address_3' => '', - 'city' => 'Collinsville', - 'state_province_id' => '1006', - 'postal_code' => '6022', - 'country_id' => '1228', - 'geo_code_1' => '41.8328', - 'geo_code_2' => '-72.9253', - ], - 'from_name' => 'FIXME', - 'from_email' => 'info@EXAMPLE.ORG', - 'domain_version' => '5.47.alpha1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/DomainTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Email/Create.ex.php b/civicrm/api/v3/examples/Email/Create.ex.php deleted file mode 100644 index 7b793b185f..0000000000 --- a/civicrm/api/v3/examples/Email/Create.ex.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Email.create API. - * - * @return array - * API result array - */ -function email_create_example() { - $params = [ - 'contact_id' => 23, - 'email' => 'api@a-team.com', - 'on_hold' => '2', - ]; - - try { - $result = civicrm_api3('Email', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function email_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 49, - 'values' => [ - '49' => [ - 'id' => '49', - 'contact_id' => '23', - 'location_type_id' => '1', - 'email' => 'api@a-team.com', - 'is_primary' => '1', - 'is_billing' => '', - 'on_hold' => '2', - 'is_bulkmail' => '', - 'hold_date' => '20220117122830', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testEmailOnHold" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EmailTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Email/Delete.ex.php b/civicrm/api/v3/examples/Email/Delete.ex.php deleted file mode 100644 index a0152c8841..0000000000 --- a/civicrm/api/v3/examples/Email/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Email.delete API. - * - * @return array - * API result array - */ -function email_delete_example() { - $params = [ - 'id' => 21, - ]; - - try { - $result = civicrm_api3('Email', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function email_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteEmail" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EmailTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Email/Replace.ex.php b/civicrm/api/v3/examples/Email/Replace.ex.php deleted file mode 100644 index 42a949cdb9..0000000000 --- a/civicrm/api/v3/examples/Email/Replace.ex.php +++ /dev/null @@ -1,173 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Email.replace API. - * - * @return array - * API result array - */ -function email_replace_example() { - $params = [ - 'contact_id' => 17, - 'values' => [ - '0' => [ - 'location_type_id' => 34, - 'email' => '1-1@example.com', - 'is_primary' => 1, - ], - '1' => [ - 'location_type_id' => 34, - 'email' => '1-2@example.com', - 'is_primary' => 0, - ], - '2' => [ - 'location_type_id' => 34, - 'email' => '1-3@example.com', - 'is_primary' => 0, - ], - '3' => [ - 'location_type_id' => 35, - 'email' => '2-1@example.com', - 'is_primary' => 0, - ], - '4' => [ - 'location_type_id' => 35, - 'email' => '2-2@example.com', - 'is_primary' => 0, - ], - ], - ]; - - try { - $result = civicrm_api3('Email', 'replace', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function email_replace_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'values' => [ - '23' => [ - 'id' => '23', - 'contact_id' => '17', - 'location_type_id' => '34', - 'email' => '1-1@example.com', - 'is_primary' => '1', - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '24' => [ - 'id' => '24', - 'contact_id' => '17', - 'location_type_id' => '34', - 'email' => '1-2@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '25' => [ - 'id' => '25', - 'contact_id' => '17', - 'location_type_id' => '34', - 'email' => '1-3@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '26' => [ - 'id' => '26', - 'contact_id' => '17', - 'location_type_id' => '35', - 'email' => '2-1@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - '27' => [ - 'id' => '27', - 'contact_id' => '17', - 'location_type_id' => '35', - 'email' => '2-2@example.com', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testReplaceEmail" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EmailTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/EntityBatch/Create.ex.php b/civicrm/api/v3/examples/EntityBatch/Create.ex.php deleted file mode 100644 index f0a3c13095..0000000000 --- a/civicrm/api/v3/examples/EntityBatch/Create.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the EntityBatch.create API. - * - * @return array - * API result array - */ -function entity_batch_create_example() { - $params = [ - 'entity_id' => '1', - 'batch_id' => 1, - 'entity_table' => 'civicrm_financial_trxn', - ]; - - try { - $result = civicrm_api3('EntityBatch', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function entity_batch_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'entity_table' => 'civicrm_financial_trxn', - 'entity_id' => '1', - 'batch_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateEntityBatch" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EntityBatchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/EntityBatch/Delete.ex.php b/civicrm/api/v3/examples/EntityBatch/Delete.ex.php deleted file mode 100644 index d614b19fd4..0000000000 --- a/civicrm/api/v3/examples/EntityBatch/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the EntityBatch.delete API. - * - * @return array - * API result array - */ -function entity_batch_delete_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('EntityBatch', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function entity_batch_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteEntityBatch" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EntityBatchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/EntityBatch/Get.ex.php b/civicrm/api/v3/examples/EntityBatch/Get.ex.php deleted file mode 100644 index 0adac2b07c..0000000000 --- a/civicrm/api/v3/examples/EntityBatch/Get.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the EntityBatch.get API. - * - * @return array - * API result array - */ -function entity_batch_get_example() { - $params = [ - 'entity_id' => '3', - 'batch_id' => 2, - 'entity_table' => 'civicrm_financial_trxn', - ]; - - try { - $result = civicrm_api3('EntityBatch', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function entity_batch_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'entity_table' => 'civicrm_financial_trxn', - 'entity_id' => '3', - 'batch_id' => '2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetEntityBatch" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EntityBatchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/EntityTag/Create.ex.php b/civicrm/api/v3/examples/EntityTag/Create.ex.php deleted file mode 100644 index 18bb68026a..0000000000 --- a/civicrm/api/v3/examples/EntityTag/Create.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the EntityTag.create API. - * - * @return array - * API result array - */ -function entity_tag_create_example() { - $params = [ - 'contact_id' => 3, - 'tag_id' => '6', - ]; - - try { - $result = civicrm_api3('EntityTag', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function entity_tag_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'not_added' => 0, - 'added' => 1, - 'total_count' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testIndividualEntityTagGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EntityTagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-master-git/ - * - * To Learn about the API read - * http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API - * - * Browse the api on your own site with the api explorer - * http://MYSITE.ORG/path/to/civicrm/api - * - * Read more about testing here - * http://wiki.civicrm.org/confluence/display/CRM/Testing - * - * API Standards documentation: - * http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards - */ diff --git a/civicrm/api/v3/examples/EntityTag/Delete.ex.php b/civicrm/api/v3/examples/EntityTag/Delete.ex.php deleted file mode 100644 index f871a3da65..0000000000 --- a/civicrm/api/v3/examples/EntityTag/Delete.ex.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the EntityTag.delete API. - * - * @return array - * API result array - */ -function entity_tag_delete_example() { - $params = [ - 'contact_id_h' => 43, - 'tag_id' => '19', - ]; - - try { - $result = civicrm_api3('EntityTag', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function entity_tag_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'not_removed' => 0, - 'removed' => 1, - 'total_count' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testEntityTagDeleteHH" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EntityTagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/EntityTag/Get.ex.php b/civicrm/api/v3/examples/EntityTag/Get.ex.php deleted file mode 100644 index 6d139a4554..0000000000 --- a/civicrm/api/v3/examples/EntityTag/Get.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the EntityTag.get API. - * - * @return array - * API result array - */ -function entity_tag_get_example() { - $params = [ - 'contact_id' => 18, - ]; - - try { - $result = civicrm_api3('EntityTag', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function entity_tag_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 6, - 'values' => [ - '6' => [ - 'id' => '6', - 'entity_table' => 'civicrm_contact', - 'entity_id' => '18', - 'tag_id' => '11', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testIndividualEntityTagGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EntityTagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Event/ContactRefCustomField.ex.php b/civicrm/api/v3/examples/Event/ContactRefCustomField.ex.php deleted file mode 100644 index d2a5d1db6c..0000000000 --- a/civicrm/api/v3/examples/Event/ContactRefCustomField.ex.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Event.get API. - * - * Demonstrates get with Contact Reference Custom Field. - * - * @return array - * API result array - */ -function event_get_example() { - $params = [ - 'return.custom_2' => 1, - 'custom_2' => 3, - ]; - - try { - $result = civicrm_api3('Event', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function event_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'title' => 'My test event.', - 'event_title' => 'My test event.', - 'event_description' => '', - 'event_type_id' => '1', - 'is_public' => '1', - 'start_date' => '2013-07-29 00:00:00', - 'event_start_date' => '2013-07-29 00:00:00', - 'event_end_date' => '', - 'is_online_registration' => 0, - 'is_monetary' => 0, - 'is_map' => 0, - 'is_active' => '1', - 'is_show_location' => '1', - 'default_role_id' => '1', - 'is_email_confirm' => 0, - 'is_pay_later' => 0, - 'is_partial_payment' => 0, - 'is_multiple_registrations' => 0, - 'max_additional_participants' => 0, - 'allow_same_participant_emails' => 0, - 'allow_selfcancelxfer' => 0, - 'selfcancelxfer_time' => 0, - 'is_template' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'is_share' => '1', - 'is_confirm_enabled' => '1', - 'is_billing_required' => 0, - 'custom_1' => 'defaultValue', - 'custom_2_id' => '3', - 'custom_2' => 'Contact, Test', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testEventGetCustomContactRefFieldCRM16036" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EventTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Event/Create.ex.php b/civicrm/api/v3/examples/Event/Create.ex.php deleted file mode 100644 index b2bc9d0b11..0000000000 --- a/civicrm/api/v3/examples/Event/Create.ex.php +++ /dev/null @@ -1,162 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Event.create API. - * - * @return array - * API result array - */ -function event_create_example() { - $params = [ - 'title' => 'Annual CiviCRM meet', - 'summary' => 'If you have any CiviCRM related issues or want to track where CiviCRM is heading, Sign up now', - 'description' => 'This event is intended to give brief idea about progess of CiviCRM and giving solutions to common user issues', - 'event_type_id' => 1, - 'is_public' => 1, - 'start_date' => 20081021, - 'end_date' => 20081023, - 'is_online_registration' => 1, - 'registration_start_date' => 20080601, - 'registration_end_date' => '2008-10-15', - 'max_participants' => 100, - 'event_full_text' => 'Sorry! We are already full', - 'is_monetary' => 0, - 'is_active' => 1, - 'is_show_location' => 0, - ]; - - try { - $result = civicrm_api3('Event', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function event_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'title' => 'Annual CiviCRM meet', - 'summary' => 'If you have any CiviCRM related issues or want to track where CiviCRM is heading, Sign up now', - 'description' => 'This event is intended to give brief idea about progess of CiviCRM and giving solutions to common user issues', - 'event_type_id' => '1', - 'participant_listing_id' => '', - 'is_public' => '1', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'is_online_registration' => '1', - 'registration_link_text' => '', - 'registration_start_date' => '20080601000000', - 'registration_end_date' => '20081015000000', - 'max_participants' => '100', - 'event_full_text' => 'Sorry! We are already full', - 'is_monetary' => 0, - 'financial_type_id' => '', - 'payment_processor' => '', - 'is_map' => '', - 'is_active' => '1', - 'fee_label' => '', - 'is_show_location' => 0, - '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' => 0, - 'template_title' => '', - 'created_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'currency' => '', - 'campaign_id' => '', - 'is_share' => '', - 'is_confirm_enabled' => '', - 'parent_event_id' => '', - 'slot_label_id' => '', - 'dedupe_rule_group_id' => '', - 'is_billing_required' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateEventSuccess" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EventTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Event/Delete.ex.php b/civicrm/api/v3/examples/Event/Delete.ex.php deleted file mode 100644 index 8e3f6cb209..0000000000 --- a/civicrm/api/v3/examples/Event/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Event.delete API. - * - * @return array - * API result array - */ -function event_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Event', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function event_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EventTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Event/Get.ex.php b/civicrm/api/v3/examples/Event/Get.ex.php deleted file mode 100644 index 921ab12aac..0000000000 --- a/civicrm/api/v3/examples/Event/Get.ex.php +++ /dev/null @@ -1,108 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Event.get API. - * - * @return array - * API result array - */ -function event_get_example() { - $params = [ - 'event_title' => 'Annual CiviCRM meet', - 'sequential' => TRUE, - ]; - - try { - $result = civicrm_api3('Event', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function event_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'title' => 'Annual CiviCRM meet', - 'event_title' => 'Annual CiviCRM meet', - 'event_description' => '', - 'event_type_id' => '1', - 'is_public' => '1', - 'start_date' => '2013-07-29 00:00:00', - 'event_start_date' => '2013-07-29 00:00:00', - 'event_end_date' => '', - 'is_online_registration' => 0, - 'is_monetary' => 0, - 'is_map' => 0, - 'is_active' => '1', - 'is_show_location' => '1', - 'default_role_id' => '1', - 'is_email_confirm' => 0, - 'is_pay_later' => 0, - 'is_partial_payment' => 0, - 'is_multiple_registrations' => 0, - 'max_additional_participants' => 0, - 'allow_same_participant_emails' => 0, - 'allow_selfcancelxfer' => 0, - 'selfcancelxfer_time' => 0, - 'is_template' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'is_share' => '1', - 'is_confirm_enabled' => '1', - 'is_billing_required' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetEventByEventTitle" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EventTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Event/IsCurrentOption.ex.php b/civicrm/api/v3/examples/Event/IsCurrentOption.ex.php deleted file mode 100644 index 0df7671851..0000000000 --- a/civicrm/api/v3/examples/Event/IsCurrentOption.ex.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Event.get API. - * - * Demonstrates use of is.Current option. - * - * @return array - * API result array - */ -function event_get_example() { - $params = [ - 'isCurrent' => 1, - ]; - - try { - $result = civicrm_api3('Event', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function event_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'title' => 'Annual CiviCRM meet 2', - 'event_title' => 'Annual CiviCRM meet 2', - 'summary' => 'If you have any CiviCRM related issues or want to track where CiviCRM is heading, Sign up now', - 'description' => 'This event is intended to give brief idea about progess of CiviCRM and giving solutions to common user issues', - 'event_description' => 'This event is intended to give brief idea about progess of CiviCRM and giving solutions to common user issues', - 'event_type_id' => '1', - 'is_public' => '1', - 'start_date' => '2013-07-29 00:00:00', - 'event_start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'event_end_date' => '2013-08-04 00:00:00', - 'is_online_registration' => '1', - 'registration_start_date' => '2010-06-01 00:00:00', - 'registration_end_date' => '2010-10-15 00:00:00', - 'max_participants' => '100', - 'event_full_text' => 'Sorry! We are already full', - 'is_monetary' => 0, - 'is_map' => 0, - 'is_active' => '1', - 'is_show_location' => 0, - 'default_role_id' => '1', - 'is_email_confirm' => 0, - 'is_pay_later' => 0, - 'is_partial_payment' => 0, - 'is_multiple_registrations' => 0, - 'max_additional_participants' => 0, - 'allow_same_participant_emails' => 0, - 'allow_selfcancelxfer' => 0, - 'selfcancelxfer_time' => 0, - 'is_template' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'is_share' => '1', - 'is_confirm_enabled' => '1', - 'is_billing_required' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetIsCurrent" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EventTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Event/IsFullOption.ex.php b/civicrm/api/v3/examples/Event/IsFullOption.ex.php deleted file mode 100644 index cf874bb64d..0000000000 --- a/civicrm/api/v3/examples/Event/IsFullOption.ex.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Event.getsingle API. - * - * Demonstrates use of return is_full . - * - * @return array - * API result array - */ -function event_getsingle_example() { - $params = [ - 'id' => 1, - 'return.is_full' => 1, - ]; - - try { - $result = civicrm_api3('Event', 'getsingle', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function event_getsingle_expectedresult() { - - $expectedResult = [ - 'id' => '1', - 'title' => 'Annual CiviCRM meet', - 'event_title' => 'Annual CiviCRM meet', - 'event_description' => '', - 'event_type_id' => '1', - 'is_public' => '1', - 'start_date' => '2008-10-21 00:00:00', - 'event_start_date' => '2008-10-21 00:00:00', - 'event_end_date' => '', - 'is_online_registration' => 0, - 'max_participants' => '1', - 'is_monetary' => 0, - 'is_map' => 0, - 'is_active' => '1', - 'is_show_location' => '1', - 'default_role_id' => '1', - 'is_email_confirm' => 0, - 'is_pay_later' => 0, - 'is_partial_payment' => 0, - 'is_multiple_registrations' => 0, - 'max_additional_participants' => 0, - 'allow_same_participant_emails' => 0, - 'allow_selfcancelxfer' => 0, - 'selfcancelxfer_time' => 0, - 'is_template' => 0, - 'created_date' => '2022-01-17 12:29:42', - 'is_share' => '1', - 'is_confirm_enabled' => '1', - 'is_billing_required' => 0, - 'available_places' => 0, - 'is_full' => '1', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetSingleReturnIsFull" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/EventTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Grant/Create.ex.php b/civicrm/api/v3/examples/Grant/Create.ex.php deleted file mode 100644 index 615ec933eb..0000000000 --- a/civicrm/api/v3/examples/Grant/Create.ex.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Grant.create API. - * - * @return array - * API result array - */ -function grant_create_example() { - $params = [ - 'contact_id' => 3, - 'application_received_date' => 'now', - 'decision_date' => 'next Monday', - 'amount_total' => '500', - 'status_id' => 1, - 'rationale' => 'Just Because', - 'currency' => 'USD', - 'grant_type_id' => 1, - ]; - - try { - $result = civicrm_api3('Grant', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function grant_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'application_received_date' => '20130728084957', - 'decision_date' => '20130805000000', - 'money_transfer_date' => '', - 'grant_due_date' => '', - 'grant_report_received' => '', - 'grant_type_id' => '1', - 'amount_total' => '500', - 'amount_requested' => '', - 'amount_granted' => '', - 'currency' => 'USD', - 'rationale' => 'Just Because', - 'status_id' => '1', - 'financial_type_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateGrant" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GrantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Grant/Delete.ex.php b/civicrm/api/v3/examples/Grant/Delete.ex.php deleted file mode 100644 index 36a2200d40..0000000000 --- a/civicrm/api/v3/examples/Grant/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Grant.delete API. - * - * @return array - * API result array - */ -function grant_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Grant', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function grant_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteGrant" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GrantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Grant/Get.ex.php b/civicrm/api/v3/examples/Grant/Get.ex.php deleted file mode 100644 index 3a95377fa9..0000000000 --- a/civicrm/api/v3/examples/Grant/Get.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Grant.get API. - * - * @return array - * API result array - */ -function grant_get_example() { - $params = [ - 'rationale' => 'Just Because', - ]; - - try { - $result = civicrm_api3('Grant', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function grant_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'application_received_date' => '20130728084957', - 'decision_date' => '20130805000000', - 'grant_type_id' => '1', - 'amount_total' => '500.00', - 'currency' => 'USD', - 'rationale' => 'Just Because', - 'status_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetGrant" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GrantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Group/Get.ex.php b/civicrm/api/v3/examples/Group/Get.ex.php deleted file mode 100644 index 737e90b4e3..0000000000 --- a/civicrm/api/v3/examples/Group/Get.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Group.get API. - * - * @return array - * API result array - */ -function group_get_example() { - $params = [ - 'name' => 'Test Group 1', - ]; - - try { - $result = civicrm_api3('Group', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'Test Group 1', - 'title' => 'New Test Group Created', - 'description' => 'New Test Group Created', - 'is_active' => '1', - 'visibility' => 'Public Pages', - 'group_type' => [ - '0' => '1', - '1' => '2', - ], - 'is_hidden' => 0, - 'is_reserved' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetGroupParamsWithGroupName" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Group/GetFields.ex.php b/civicrm/api/v3/examples/Group/GetFields.ex.php deleted file mode 100644 index 3a357d6903..0000000000 --- a/civicrm/api/v3/examples/Group/GetFields.ex.php +++ /dev/null @@ -1,460 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Group.getfields API. - * - * Demonstrate use of getfields to interrogate api. - * - * @return array - * API result array - */ -function group_getfields_example() { - $params = [ - 'action' => 'create', - ]; - - try { - $result = civicrm_api3('Group', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 22, - 'values' => [ - 'id' => [ - 'name' => 'id', - 'type' => 1, - 'title' => 'Group ID', - 'description' => 'Group ID', - 'required' => TRUE, - 'where' => 'civicrm_group.id', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.aliases' => [ - '0' => 'group_id', - ], - ], - 'name' => [ - 'name' => 'name', - 'type' => 2, - 'title' => 'Group Name', - 'description' => 'Internal name of Group.', - 'maxlength' => 64, - 'size' => 30, - 'where' => 'civicrm_group.name', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'title' => [ - 'name' => 'title', - 'type' => 2, - 'title' => 'Group Title', - 'description' => 'Name of Group.', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_group.title', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 1, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 255, - 'size' => 45, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => 1, - ], - 'description' => [ - 'name' => 'description', - 'type' => 32, - 'title' => 'Group Description', - 'description' => 'Optional verbose description of the group.', - 'rows' => 2, - 'cols' => 60, - 'where' => 'civicrm_group.description', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'html' => [ - 'type' => 'TextArea', - 'rows' => 2, - 'cols' => 60, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'source' => [ - 'name' => 'source', - 'type' => 2, - 'title' => 'Group Source', - 'description' => 'Module or process which created this group.', - 'maxlength' => 64, - 'size' => 30, - 'where' => 'civicrm_group.source', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'saved_search_id' => [ - 'name' => 'saved_search_id', - 'type' => 1, - 'title' => 'Saved Search ID', - 'description' => 'FK to saved search table.', - 'where' => 'civicrm_group.saved_search_id', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_SavedSearch', - 'html' => [ - 'label' => 'Saved Search', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'FKApiName' => 'SavedSearch', - ], - 'is_active' => [ - 'name' => 'is_active', - 'type' => 16, - 'title' => 'Group Enabled', - 'description' => 'Is this entry active?', - 'where' => 'civicrm_group.is_active', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.default' => 1, - ], - 'visibility' => [ - 'name' => 'visibility', - 'type' => 2, - 'title' => 'Group Visibility Setting', - 'description' => 'In what context(s) is this field visible.', - 'maxlength' => 24, - 'size' => 20, - 'where' => 'civicrm_group.visibility', - 'default' => 'User and User Admin Only', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'maxlength' => 24, - 'size' => 20, - ], - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::groupVisibility', - ], - 'add' => '1.2', - 'is_core_field' => TRUE, - ], - 'where_clause' => [ - 'name' => 'where_clause', - 'type' => 32, - 'title' => 'Group Where Clause', - 'description' => 'the sql where clause if a saved search acl', - 'where' => 'civicrm_group.where_clause', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '1.6', - 'is_core_field' => TRUE, - ], - 'select_tables' => [ - 'name' => 'select_tables', - 'type' => 32, - 'title' => 'Tables For Select Clause', - 'description' => 'the tables to be included in a select data', - 'where' => 'civicrm_group.select_tables', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'serialize' => 4, - 'readonly' => TRUE, - 'add' => '1.6', - 'is_core_field' => TRUE, - ], - 'where_tables' => [ - 'name' => 'where_tables', - 'type' => 32, - 'title' => 'Tables For Where Clause', - 'description' => 'the tables to be included in the count statement', - 'where' => 'civicrm_group.where_tables', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'serialize' => 4, - 'readonly' => TRUE, - 'add' => '1.6', - 'is_core_field' => TRUE, - ], - 'group_type' => [ - 'name' => 'group_type', - 'type' => 2, - 'title' => 'Group Type', - 'description' => 'FK to group type', - 'maxlength' => 128, - 'size' => 45, - 'where' => 'civicrm_group.group_type', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'serialize' => 1, - 'pseudoconstant' => [ - 'optionGroupName' => 'group_type', - 'optionEditPath' => 'civicrm/admin/options/group_type', - ], - 'add' => '1.9', - 'is_core_field' => TRUE, - ], - 'cache_date' => [ - 'name' => 'cache_date', - 'type' => 256, - 'title' => 'Group Cache Date', - 'description' => 'Date when we created the cache for a smart group', - 'required' => '', - 'where' => 'civicrm_group.cache_date', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '2.1', - 'is_core_field' => TRUE, - ], - 'refresh_date' => [ - 'name' => 'refresh_date', - 'type' => 256, - 'title' => 'Next Group Refresh Time', - 'description' => 'Date and time when we need to refresh the cache next.', - 'required' => '', - 'where' => 'civicrm_group.refresh_date', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'readonly' => TRUE, - 'add' => '4.3', - 'is_core_field' => TRUE, - ], - 'parents' => [ - 'name' => 'parents', - 'type' => 32, - 'title' => 'Group Parents', - 'description' => 'IDs of the parent(s)', - 'where' => 'civicrm_group.parents', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'serialize' => 5, - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_PseudoConstant::allGroup', - ], - 'add' => '2.1', - 'is_core_field' => TRUE, - ], - 'children' => [ - 'name' => 'children', - 'type' => 32, - 'title' => 'Group Children', - 'description' => 'IDs of the child(ren)', - 'where' => 'civicrm_group.children', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'add' => '2.1', - 'is_core_field' => TRUE, - ], - 'is_hidden' => [ - 'name' => 'is_hidden', - 'type' => 16, - 'title' => 'Group is Hidden', - 'description' => 'Is this group hidden?', - 'where' => 'civicrm_group.is_hidden', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'add' => '2.2', - 'is_core_field' => TRUE, - ], - 'is_reserved' => [ - 'name' => 'is_reserved', - 'type' => 16, - 'title' => 'Group is Reserved', - 'where' => 'civicrm_group.is_reserved', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'add' => '4.2', - 'is_core_field' => TRUE, - ], - 'created_id' => [ - 'name' => 'created_id', - 'type' => 1, - 'title' => 'Created By Contact ID', - 'description' => 'FK to contact table.', - 'where' => 'civicrm_group.created_id', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'html' => [ - 'label' => 'Created By', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '4.3', - 'is_core_field' => TRUE, - 'FKApiName' => 'Contact', - ], - 'modified_id' => [ - 'name' => 'modified_id', - 'type' => 1, - 'title' => 'Modified By Contact ID', - 'description' => 'FK to contact table.', - 'where' => 'civicrm_group.modified_id', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'html' => [ - 'label' => 'Modified By', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '4.5', - 'is_core_field' => TRUE, - 'FKApiName' => 'Contact', - ], - 'frontend_title' => [ - 'name' => 'frontend_title', - 'type' => 2, - 'title' => 'Public Group Title', - 'description' => 'Alternative public title for this Group.', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_group.frontend_title', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 1, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 255, - 'size' => 45, - ], - 'add' => '5.31', - 'is_core_field' => TRUE, - ], - 'frontend_description' => [ - 'name' => 'frontend_description', - 'type' => 32, - 'title' => 'Public Group Description', - 'description' => 'Alternative public description of the group.', - 'rows' => 2, - 'cols' => 60, - 'where' => 'civicrm_group.frontend_description', - 'table_name' => 'civicrm_group', - 'entity' => 'Group', - 'bao' => 'CRM_Contact_BAO_Group', - 'localizable' => 1, - 'html' => [ - 'type' => 'TextArea', - 'rows' => 2, - 'cols' => 60, - ], - 'add' => '5.31', - 'is_core_field' => TRUE, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testgetfields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupContact/Create.ex.php b/civicrm/api/v3/examples/GroupContact/Create.ex.php deleted file mode 100644 index ab4683ff29..0000000000 --- a/civicrm/api/v3/examples/GroupContact/Create.ex.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupContact.create API. - * - * @return array - * API result array - */ -function group_contact_create_example() { - $params = [ - 'contact_id' => 8, - 'contact_id.2' => 9, - 'group_id' => 11, - ]; - - try { - $result = civicrm_api3('GroupContact', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_contact_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - 'total_count' => 2, - 'added' => 1, - 'not_added' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupContact/Delete.ex.php b/civicrm/api/v3/examples/GroupContact/Delete.ex.php deleted file mode 100644 index 4ae8dd7062..0000000000 --- a/civicrm/api/v3/examples/GroupContact/Delete.ex.php +++ /dev/null @@ -1,79 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupContact.delete API. - * - * @return array - * API result array - */ -function group_contact_delete_example() { - $params = [ - 'id' => 9, - 'skip_undelete' => TRUE, - ]; - - try { - $result = civicrm_api3('GroupContact', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_contact_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - 'total_count' => 1, - 'removed' => 0, - 'not_removed' => 0, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePermanent" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupContact/Get.ex.php b/civicrm/api/v3/examples/GroupContact/Get.ex.php deleted file mode 100644 index 3635d4c692..0000000000 --- a/civicrm/api/v3/examples/GroupContact/Get.ex.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupContact.get API. - * - * @return array - * API result array - */ -function group_contact_get_example() { - $params = [ - 'contact_id' => 3, - ]; - - try { - $result = civicrm_api3('GroupContact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'group_id' => '1', - 'title' => 'New Test Group Created', - 'visibility' => 'Public Pages', - 'is_hidden' => 0, - 'in_date' => '2013-07-28 08:50:19', - 'in_method' => 'API', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupContact/GetWithGroupID.ex.php b/civicrm/api/v3/examples/GroupContact/GetWithGroupID.ex.php deleted file mode 100644 index 7009d244b4..0000000000 --- a/civicrm/api/v3/examples/GroupContact/GetWithGroupID.ex.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupContact.get API. - * - * Get all from group and display contacts. - * - * @return array - * API result array - */ -function group_contact_get_example() { - $params = [ - 'group_id' => 3, - 'api.group.get' => 1, - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('GroupContact', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_contact_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'id' => '2', - 'group_id' => '3', - 'contact_id' => '4', - 'status' => 'Added', - 'api.group.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '0' => [ - 'id' => '3', - 'name' => 'Test Group 1', - 'title' => 'New Test Group Created', - 'description' => 'New Test Group Created', - 'is_active' => '1', - 'visibility' => 'Public Pages', - 'group_type' => [ - '0' => '1', - '1' => '2', - ], - 'is_hidden' => 0, - 'is_reserved' => 0, - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetGroupID" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupContactTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupNesting/Create.ex.php b/civicrm/api/v3/examples/GroupNesting/Create.ex.php deleted file mode 100644 index 40197d2b30..0000000000 --- a/civicrm/api/v3/examples/GroupNesting/Create.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupNesting.create API. - * - * @return array - * API result array - */ -function group_nesting_create_example() { - $params = [ - 'parent_group_id' => 1, - 'child_group_id' => 3, - ]; - - try { - $result = civicrm_api3('GroupNesting', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_nesting_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'child_group_id' => '3', - 'parent_group_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupNestingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupNesting/Delete.ex.php b/civicrm/api/v3/examples/GroupNesting/Delete.ex.php deleted file mode 100644 index a99389bbb9..0000000000 --- a/civicrm/api/v3/examples/GroupNesting/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupNesting.delete API. - * - * @return array - * API result array - */ -function group_nesting_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('GroupNesting', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_nesting_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupNestingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupNesting/Get.ex.php b/civicrm/api/v3/examples/GroupNesting/Get.ex.php deleted file mode 100644 index 7f12e6123a..0000000000 --- a/civicrm/api/v3/examples/GroupNesting/Get.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupNesting.get API. - * - * @return array - * API result array - */ -function group_nesting_get_example() { - $params = [ - 'parent_group_id' => 1, - 'child_group_id' => 2, - ]; - - try { - $result = civicrm_api3('GroupNesting', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_nesting_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'child_group_id' => '2', - 'parent_group_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupNestingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupOrganization/Create.ex.php b/civicrm/api/v3/examples/GroupOrganization/Create.ex.php deleted file mode 100644 index e27bc46e97..0000000000 --- a/civicrm/api/v3/examples/GroupOrganization/Create.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupOrganization.create API. - * - * @return array - * API result array - */ -function group_organization_create_example() { - $params = [ - 'organization_id' => 12, - 'group_id' => 10, - ]; - - try { - $result = civicrm_api3('GroupOrganization', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_organization_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 6, - 'values' => [ - '6' => [ - 'id' => '6', - 'group_id' => '10', - 'organization_id' => '12', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGroupOrganizationCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupOrganizationTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupOrganization/Delete.ex.php b/civicrm/api/v3/examples/GroupOrganization/Delete.ex.php deleted file mode 100644 index 3f87163026..0000000000 --- a/civicrm/api/v3/examples/GroupOrganization/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupOrganization.delete API. - * - * @return array - * API result array - */ -function group_organization_delete_example() { - $params = [ - 'id' => 10, - ]; - - try { - $result = civicrm_api3('GroupOrganization', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_organization_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 'Deleted Group Organization successfully', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGroupOrganizationDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupOrganizationTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/GroupOrganization/Get.ex.php b/civicrm/api/v3/examples/GroupOrganization/Get.ex.php deleted file mode 100644 index c962c50914..0000000000 --- a/civicrm/api/v3/examples/GroupOrganization/Get.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the GroupOrganization.get API. - * - * @return array - * API result array - */ -function group_organization_get_example() { - $params = [ - 'organization_id' => 2, - ]; - - try { - $result = civicrm_api3('GroupOrganization', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function group_organization_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGroupOrganizationGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/GroupOrganizationTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Im/Create.ex.php b/civicrm/api/v3/examples/Im/Create.ex.php deleted file mode 100644 index 2a47feb628..0000000000 --- a/civicrm/api/v3/examples/Im/Create.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Im.create API. - * - * @return array - * API result array - */ -function im_create_example() { - $params = [ - 'contact_id' => 5, - 'name' => 'My Yahoo IM Handle', - 'provider_id' => 1, - ]; - - try { - $result = civicrm_api3('Im', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function im_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_id' => '5', - 'location_type_id' => '1', - 'name' => 'My Yahoo IM Handle', - 'provider_id' => '1', - 'is_primary' => '1', - 'is_billing' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateImDefaultLocation" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ImTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Im/Delete.ex.php b/civicrm/api/v3/examples/Im/Delete.ex.php deleted file mode 100644 index 5094e1c253..0000000000 --- a/civicrm/api/v3/examples/Im/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Im.delete API. - * - * @return array - * API result array - */ -function im_delete_example() { - $params = [ - 'id' => 7, - ]; - - try { - $result = civicrm_api3('Im', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function im_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteIm" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ImTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Im/Get.ex.php b/civicrm/api/v3/examples/Im/Get.ex.php deleted file mode 100644 index 9da151891b..0000000000 --- a/civicrm/api/v3/examples/Im/Get.ex.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Im.get API. - * - * @return array - * API result array - */ -function im_get_example() { - $params = [ - 'contact_id' => 7, - 'name' => 'My Yahoo IM Handle', - 'location_type_id' => 1, - 'provider_id' => 1, - ]; - - try { - $result = civicrm_api3('Im', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function im_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 5, - 'values' => [ - '5' => [ - 'id' => '5', - 'contact_id' => '7', - 'location_type_id' => '1', - 'name' => 'My Yahoo IM Handle', - 'provider_id' => '1', - 'is_primary' => '1', - 'is_billing' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetIm" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ImTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Job/Clone.ex.php b/civicrm/api/v3/examples/Job/Clone.ex.php deleted file mode 100644 index 5757ab43a4..0000000000 --- a/civicrm/api/v3/examples/Job/Clone.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Job.clone API. - * - * @return array - * API result array - */ -function job_clone_example() { - $params = [ - 'id' => 31, - ]; - - try { - $result = civicrm_api3('Job', 'clone', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function job_clone_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 32, - 'values' => [ - '32' => [ - 'id' => '32', - 'domain_id' => '1', - 'run_frequency' => 'Daily', - 'name' => 'API_Test_Job - Copy', - 'description' => 'A long description written by hand in cursive', - 'api_entity' => 'ApiTestEntity', - 'api_action' => 'api_test_action', - 'parameters' => 'Semi-formal explanation of runtime job parameters', - 'is_active' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testClone" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/JobTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Job/Create.ex.php b/civicrm/api/v3/examples/Job/Create.ex.php deleted file mode 100644 index 605b9cc9ab..0000000000 --- a/civicrm/api/v3/examples/Job/Create.ex.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Job.create API. - * - * @return array - * API result array - */ -function job_create_example() { - $params = [ - 'sequential' => 1, - 'name' => 'API_Test_Job', - 'description' => 'A long description written by hand in cursive', - 'run_frequency' => 'Daily', - 'api_entity' => 'ApiTestEntity', - 'api_action' => 'api_test_action', - 'parameters' => 'Semi-formal explanation of runtime job parameters', - 'is_active' => 1, - ]; - - try { - $result = civicrm_api3('Job', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function job_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 30, - 'values' => [ - '0' => [ - 'id' => '30', - 'domain_id' => '1', - 'run_frequency' => 'Daily', - 'last_run' => '', - 'scheduled_run_date' => '', - 'name' => 'API_Test_Job', - 'description' => 'A long description written by hand in cursive', - 'api_entity' => 'ApiTestEntity', - 'api_action' => 'api_test_action', - 'parameters' => 'Semi-formal explanation of runtime job parameters', - 'is_active' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/JobTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Job/Delete.ex.php b/civicrm/api/v3/examples/Job/Delete.ex.php deleted file mode 100644 index 2f6dd94003..0000000000 --- a/civicrm/api/v3/examples/Job/Delete.ex.php +++ /dev/null @@ -1,70 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Job.delete API. - * - * @return array - * API result array - */ -function job_delete_example() { - $params = [ - 'id' => 33, - ]; - - try { - $result = civicrm_api3('Job', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function job_delete_expectedresult() { - - $expectedResult = ''; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/JobTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/LineItem/Create.ex.php b/civicrm/api/v3/examples/LineItem/Create.ex.php deleted file mode 100644 index 11eb298ce9..0000000000 --- a/civicrm/api/v3/examples/LineItem/Create.ex.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the LineItem.create API. - * - * @return array - * API result array - */ -function line_item_create_example() { - $params = [ - 'price_field_value_id' => 1, - 'price_field_id' => 1, - 'entity_table' => 'civicrm_contribution', - 'entity_id' => 3, - 'qty' => 1, - 'unit_price' => 50, - 'line_total' => 50, - ]; - - try { - $result = civicrm_api3('LineItem', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function line_item_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 6, - 'values' => [ - '6' => [ - 'id' => '6', - 'entity_table' => 'civicrm_contribution', - 'entity_id' => '3', - 'contribution_id' => '', - 'price_field_id' => '1', - 'label' => 'line item', - 'qty' => '1', - 'unit_price' => '50', - 'line_total' => '50', - 'participant_count' => '', - 'price_field_value_id' => '1', - 'financial_type_id' => '', - 'non_deductible_amount' => '', - 'tax_amount' => '', - 'membership_num_terms' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateLineItem" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/LineItemTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/LineItem/Delete.ex.php b/civicrm/api/v3/examples/LineItem/Delete.ex.php deleted file mode 100644 index c8cedafc79..0000000000 --- a/civicrm/api/v3/examples/LineItem/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the LineItem.delete API. - * - * @return array - * API result array - */ -function line_item_delete_example() { - $params = [ - 'id' => 17, - ]; - - try { - $result = civicrm_api3('LineItem', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function line_item_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteLineItem" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/LineItemTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/LineItem/Get.ex.php b/civicrm/api/v3/examples/LineItem/Get.ex.php deleted file mode 100644 index 6fcebcea17..0000000000 --- a/civicrm/api/v3/examples/LineItem/Get.ex.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the LineItem.get API. - * - * @return array - * API result array - */ -function line_item_get_example() { - $params = [ - 'entity_table' => 'civicrm_contribution', - ]; - - try { - $result = civicrm_api3('LineItem', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function line_item_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 15, - 'values' => [ - '15' => [ - 'id' => '15', - 'entity_table' => 'civicrm_contribution', - 'entity_id' => '7', - 'contribution_id' => '7', - 'price_field_id' => '1', - 'label' => 'Contribution Amount', - 'qty' => '1.00', - 'unit_price' => '100.00', - 'line_total' => '100.00', - 'price_field_value_id' => '1', - 'financial_type_id' => '1', - 'non_deductible_amount' => '0.00', - 'tax_amount' => '0.00', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetBasicLineItem" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/LineItemTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/LocBlock/Create.ex.php b/civicrm/api/v3/examples/LocBlock/Create.ex.php deleted file mode 100644 index b30a85cdcd..0000000000 --- a/civicrm/api/v3/examples/LocBlock/Create.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the LocBlock.create API. - * - * Create locBlock with existing entities. - * - * @return array - * API result array - */ -function loc_block_create_example() { - $params = [ - 'address_id' => 2, - 'phone_id' => 2, - 'email_id' => 3, - ]; - - try { - $result = civicrm_api3('LocBlock', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function loc_block_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'address_id' => '2', - 'email_id' => '3', - 'phone_id' => '2', - 'im_id' => '', - 'address_2_id' => '', - 'email_2_id' => '', - 'phone_2_id' => '', - 'im_2_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateLocBlock" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/LocBlockTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/LocBlock/CreateEntities.ex.php b/civicrm/api/v3/examples/LocBlock/CreateEntities.ex.php deleted file mode 100644 index 9b2d00d2b6..0000000000 --- a/civicrm/api/v3/examples/LocBlock/CreateEntities.ex.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the LocBlock.create API. - * - * Create entities and locBlock in 1 api call. - * - * @return array - * API result array - */ -function loc_block_create_example() { - $params = [ - 'email' => [ - 'location_type_id' => 1, - 'email' => 'test2@loc.block', - ], - 'phone' => [ - 'location_type_id' => 1, - 'phone' => '987654321', - ], - 'phone_2' => [ - 'location_type_id' => 1, - 'phone' => '456-7890', - ], - 'address' => [ - 'location_type_id' => 1, - 'street_address' => '987654321', - ], - ]; - - try { - $result = civicrm_api3('LocBlock', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function loc_block_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'address' => [ - 'id' => '3', - 'location_type_id' => '1', - 'is_primary' => 0, - 'is_billing' => 0, - 'street_address' => '987654321', - 'manual_geo_code' => 0, - ], - 'email' => [ - 'id' => '4', - 'contact_id' => '', - 'location_type_id' => '1', - 'email' => 'test2@loc.block', - 'is_primary' => 0, - 'is_billing' => '', - 'on_hold' => 0, - 'is_bulkmail' => '', - 'hold_date' => '', - 'reset_date' => '', - 'signature_text' => '', - 'signature_html' => '', - ], - 'phone' => [ - 'id' => '3', - 'contact_id' => '', - 'location_type_id' => '1', - 'is_primary' => 0, - 'is_billing' => '', - 'mobile_provider_id' => '', - 'phone' => '987654321', - 'phone_ext' => '', - 'phone_numeric' => '', - 'phone_type_id' => '', - ], - 'phone_2' => [ - 'id' => '4', - 'contact_id' => '', - 'location_type_id' => '1', - 'is_primary' => 0, - 'is_billing' => '', - 'mobile_provider_id' => '', - 'phone' => '456-7890', - 'phone_ext' => '', - 'phone_numeric' => '', - 'phone_type_id' => '', - ], - 'id' => '3', - 'address_id' => '3', - 'email_id' => '4', - 'phone_id' => '3', - 'im_id' => '', - 'address_2_id' => '', - 'email_2_id' => '', - 'phone_2_id' => '4', - 'im_2_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateLocBlockEntities" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/LocBlockTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/LocBlock/Get.ex.php b/civicrm/api/v3/examples/LocBlock/Get.ex.php deleted file mode 100644 index 67e14158aa..0000000000 --- a/civicrm/api/v3/examples/LocBlock/Get.ex.php +++ /dev/null @@ -1,120 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the LocBlock.get API. - * - * Get entities and location block in 1 api call. - * - * @return array - * API result array - */ -function loc_block_get_example() { - $params = [ - 'id' => 3, - 'return' => 'all', - ]; - - try { - $result = civicrm_api3('LocBlock', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function loc_block_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'address_id' => '3', - 'email_id' => '4', - 'phone_id' => '3', - 'phone_2_id' => '4', - 'address' => [ - 'id' => '3', - 'location_type_id' => '1', - 'is_primary' => 0, - 'is_billing' => 0, - 'street_address' => '987654321', - 'manual_geo_code' => 0, - ], - 'email' => [ - 'id' => '4', - 'location_type_id' => '1', - 'email' => 'test2@loc.block', - 'is_primary' => 0, - 'is_billing' => 0, - 'on_hold' => 0, - 'is_bulkmail' => 0, - ], - 'phone' => [ - 'id' => '3', - 'location_type_id' => '1', - 'is_primary' => 0, - 'is_billing' => 0, - 'phone' => '987654321', - 'phone_numeric' => '987654321', - ], - 'phone_2' => [ - 'id' => '4', - 'location_type_id' => '1', - 'is_primary' => 0, - 'is_billing' => 0, - 'phone' => '456-7890', - 'phone_numeric' => '4567890', - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateLocBlockEntities" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/LocBlockTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Logging/Get.ex.php b/civicrm/api/v3/examples/Logging/Get.ex.php deleted file mode 100644 index f5431e58cc..0000000000 --- a/civicrm/api/v3/examples/Logging/Get.ex.php +++ /dev/null @@ -1,246 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Logging.get API. - * - * @return array - * API result array - */ -function logging_get_example() { - $params = [ - 'log_conn_id' => 'wooty wop wop', - ]; - - try { - $result = civicrm_api3('Logging', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function logging_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 17, - 'values' => [ - '0' => [ - 'action' => 'Update', - 'id' => '3', - 'field' => 'sort_name', - 'from' => 'Anderson, Anthony', - 'to' => 'Dwarf, Dopey', - 'table' => 'civicrm_contact', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '1' => [ - 'action' => 'Update', - 'id' => '3', - 'field' => 'display_name', - 'from' => 'Mr. Anthony Anderson II', - 'to' => 'Mr. Dopey Dwarf II', - 'table' => 'civicrm_contact', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '2' => [ - 'action' => 'Update', - 'id' => '3', - 'field' => 'first_name', - 'from' => 'Anthony', - 'to' => 'Dopey', - 'table' => 'civicrm_contact', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '3' => [ - 'action' => 'Update', - 'id' => '3', - 'field' => 'last_name', - 'from' => 'Anderson', - 'to' => 'Dwarf', - 'table' => 'civicrm_contact', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '4' => [ - 'action' => 'Update', - 'id' => '3', - 'field' => 'modified_date', - 'from' => '2022-01-17 12:53:29', - 'to' => '2022-01-17 12:53:39', - 'table' => 'civicrm_contact', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '5' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'id', - 'from' => '', - 'to' => '4', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '6' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'contact_id', - 'from' => '', - 'to' => '3', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '7' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'location_type_id', - 'from' => '', - 'to' => '1', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '8' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'email', - 'from' => '', - 'to' => 'dopey@mail.com', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '9' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'is_primary', - 'from' => '', - 'to' => 0, - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '10' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'is_billing', - 'from' => '', - 'to' => 0, - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '11' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'on_hold', - 'from' => '', - 'to' => 0, - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '12' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'is_bulkmail', - 'from' => '', - 'to' => 0, - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '13' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'hold_date', - 'from' => '', - 'to' => '', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '14' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'reset_date', - 'from' => '', - 'to' => '', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '15' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'signature_text', - 'from' => '', - 'to' => '', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - '16' => [ - 'action' => 'Insert', - 'id' => '4', - 'field' => 'signature_html', - 'from' => '', - 'to' => '', - 'table' => 'civicrm_email', - 'log_date' => '2022-01-17 12:53:39', - 'log_conn_id' => 'wooty wop wop', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetNoDate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/LoggingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Logging/Revert.ex.php b/civicrm/api/v3/examples/Logging/Revert.ex.php deleted file mode 100644 index b7e1100024..0000000000 --- a/civicrm/api/v3/examples/Logging/Revert.ex.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Logging.revert API. - * - * @return array - * API result array - */ -function logging_revert_example() { - $params = [ - 'log_conn_id' => 'woot', - 'log_date' => '2022-01-17 12:52:20', - ]; - - try { - $result = civicrm_api3('Logging', 'revert', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function logging_revert_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "/home/seamus/buildkit/build/47-test/web/sites/all/modules/civicrm/tests/phpunit/api/v3/LoggingTest.php" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/Revert - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailSettings/ChainedGetDelete.ex.php b/civicrm/api/v3/examples/MailSettings/ChainedGetDelete.ex.php deleted file mode 100644 index df398954ea..0000000000 --- a/civicrm/api/v3/examples/MailSettings/ChainedGetDelete.ex.php +++ /dev/null @@ -1,100 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MailSettings.get API. - * - * Demonstrates get + delete in the same call. - * - * @return array - * API result array - */ -function mail_settings_get_example() { - $params = [ - 'name' => 'delete this setting', - 'api.MailSettings.delete' => 1, - ]; - - try { - $result = civicrm_api3('MailSettings', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mail_settings_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 10, - 'values' => [ - '10' => [ - 'id' => '10', - 'domain_id' => '1', - 'name' => 'delete this setting', - 'is_default' => '1', - 'domain' => 'setting.com', - 'localpart' => 'civicrm+', - 'server' => 'localhost', - 'username' => 'sue', - 'password' => 'pass', - 'is_ssl' => 0, - 'is_non_case_email_skipped' => 0, - 'is_contact_creation_disabled_if_no_match' => 0, - 'api.MailSettings.delete' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetMailSettingsChainDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailSettingsTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailSettings/Create.ex.php b/civicrm/api/v3/examples/MailSettings/Create.ex.php deleted file mode 100644 index a30d8c86b0..0000000000 --- a/civicrm/api/v3/examples/MailSettings/Create.ex.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MailSettings.create API. - * - * @return array - * API result array - */ -function mail_settings_create_example() { - $params = [ - 'domain_id' => 1, - 'name' => 'my mail setting', - 'domain' => 'setting.com', - 'localpart' => 'civicrm+', - 'server' => 'localhost', - 'username' => 'sue', - 'password' => 'pass', - 'is_default' => 1, - ]; - - try { - $result = civicrm_api3('MailSettings', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mail_settings_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 8, - 'values' => [ - '8' => [ - 'id' => '8', - 'domain_id' => '1', - 'name' => 'my mail setting', - 'is_default' => '1', - 'domain' => 'setting.com', - 'localpart' => 'civicrm+', - 'return_path' => '', - 'protocol' => '', - 'server' => 'localhost', - 'port' => '', - 'username' => 'sue', - 'password' => 'pass', - 'is_ssl' => '', - 'source' => '', - 'activity_status' => '', - 'is_non_case_email_skipped' => '', - 'is_contact_creation_disabled_if_no_match' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteMailSettings" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailSettingsTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailSettings/Delete.ex.php b/civicrm/api/v3/examples/MailSettings/Delete.ex.php deleted file mode 100644 index e2dc25648d..0000000000 --- a/civicrm/api/v3/examples/MailSettings/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MailSettings.delete API. - * - * @return array - * API result array - */ -function mail_settings_delete_example() { - $params = [ - 'id' => 8, - ]; - - try { - $result = civicrm_api3('MailSettings', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mail_settings_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteMailSettings" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailSettingsTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailSettings/Get.ex.php b/civicrm/api/v3/examples/MailSettings/Get.ex.php deleted file mode 100644 index 14ff9fe1df..0000000000 --- a/civicrm/api/v3/examples/MailSettings/Get.ex.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MailSettings.get API. - * - * @return array - * API result array - */ -function mail_settings_get_example() { - $params = [ - 'domain_id' => 1, - 'name' => 'my mail setting', - 'domain' => 'setting.com', - 'localpart' => 'civicrm+', - 'server' => 'localhost', - 'username' => 'sue', - 'password' => 'pass', - 'is_default' => 1, - ]; - - try { - $result = civicrm_api3('MailSettings', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mail_settings_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 6, - 'values' => [ - '6' => [ - 'id' => '6', - 'domain_id' => '1', - 'name' => 'my mail setting', - 'is_default' => '1', - 'domain' => 'setting.com', - 'localpart' => 'civicrm+', - 'server' => 'localhost', - 'username' => 'sue', - 'password' => 'pass', - 'is_ssl' => 0, - 'is_non_case_email_skipped' => 0, - 'is_contact_creation_disabled_if_no_match' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetMailSettings" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailSettingsTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailSettings/GetOptions.ex.php b/civicrm/api/v3/examples/MailSettings/GetOptions.ex.php deleted file mode 100644 index 75d359bae0..0000000000 --- a/civicrm/api/v3/examples/MailSettings/GetOptions.ex.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MailSettings.getoptions API. - * - * @return array - * API result array - */ -function mail_settings_getoptions_example() { - $params = [ - 'field' => 'protocol', - ]; - - try { - $result = civicrm_api3('MailSettings', 'getoptions', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mail_settings_getoptions_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 4, - 'values' => [ - '1' => 'IMAP', - '2' => 'Maildir', - '3' => 'POP3', - '4' => 'Localdir', - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testmailProtocol" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ConstantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Mailing/Clone.ex.php b/civicrm/api/v3/examples/Mailing/Clone.ex.php deleted file mode 100644 index b06c69136a..0000000000 --- a/civicrm/api/v3/examples/Mailing/Clone.ex.php +++ /dev/null @@ -1,124 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mailing.clone API. - * - * @return array - * API result array - */ -function mailing_clone_example() { - $params = [ - 'id' => 28, - ]; - - try { - $result = civicrm_api3('Mailing', 'clone', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_clone_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 29, - 'values' => [ - '29' => [ - 'id' => '29', - 'domain_id' => '1', - 'header_id' => '1', - 'footer_id' => '2', - 'reply_id' => '8', - 'unsubscribe_id' => '5', - 'resubscribe_id' => '6', - 'optout_id' => '7', - 'name' => 'mailing name', - 'mailing_type' => 'standalone', - 'from_name' => 'FIXME', - 'from_email' => 'info@EXAMPLE.ORG', - 'replyto_email' => 'info@EXAMPLE.ORG', - 'template_type' => 'traditional', - 'template_options' => '', - 'subject' => 'Hello {contact.display_name}', - 'body_text' => 'This is {contact.display_name}. -https://civicrm.org -{domain.address}{action.optOutUrl}', - 'body_html' => '<link href=\'https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700|Zilla+Slab:500,700\' rel=\'stylesheet\' type=\'text/css\'><p><a href=\"{action.forward}\">Forward this email</a></p><p>This is {contact.display_name}.</p><p><a href=\'https://civicrm.org/\'>CiviCRM.org</a></p><p>{domain.address}{action.optOutUrl}</p>', - 'url_tracking' => '1', - 'forward_replies' => 0, - 'auto_responder' => 0, - 'open_tracking' => '1', - 'is_completed' => '', - 'msg_template_id' => '', - 'override_verp' => '1', - 'created_id' => '157', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'scheduled_id' => '', - 'scheduled_date' => '', - 'approver_id' => '', - 'approval_date' => '', - 'approval_status_id' => '', - 'approval_note' => '', - 'is_archived' => 0, - 'visibility' => 'Public Pages', - 'campaign_id' => '', - 'dedupe_email' => '1', - 'sms_provider_id' => '', - 'hash' => '', - 'location_type_id' => '', - 'email_selection_method' => 'automatic', - 'language' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testClone" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Mailing/Create.ex.php b/civicrm/api/v3/examples/Mailing/Create.ex.php deleted file mode 100644 index 4ecddd8645..0000000000 --- a/civicrm/api/v3/examples/Mailing/Create.ex.php +++ /dev/null @@ -1,172 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mailing.create API. - * - * @return array - * API result array - */ -function mailing_create_example() { - $params = [ - 'subject' => 'Hello {contact.display_name}', - 'body_text' => 'This is {contact.display_name}. -https://civicrm.org -{domain.address}{action.optOutUrl}', - 'body_html' => '<link href=\'https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700|Zilla+Slab:500,700\' rel=\'stylesheet\' type=\'text/css\'><p><a href=\"{action.forward}\">Forward this email</a></p><p>This is {contact.display_name}.</p><p><a href=\'https://civicrm.org/\'>CiviCRM.org</a></p><p>{domain.address}{action.optOutUrl}</p>', - 'name' => 'mailing name', - 'created_id' => 18, - 'header_id' => '', - 'footer_id' => '', - 'groups' => [ - 'include' => [ - '0' => 15, - ], - 'exclude' => [ - '0' => 16, - ], - ], - 'mailings' => [ - 'include' => [], - 'exclude' => [], - ], - 'options' => [ - 'force_rollback' => 1, - ], - 'api.MailingRecipients.get' => [ - 'mailing_id' => '$value.id', - 'api.contact.getvalue' => [ - 'return' => 'display_name', - ], - 'api.email.getvalue' => [ - 'return' => 'email', - ], - ], - ]; - - try { - $result = civicrm_api3('Mailing', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 10, - 'values' => [ - '10' => [ - 'id' => '10', - 'domain_id' => '1', - 'header_id' => '', - 'footer_id' => '', - 'reply_id' => '8', - 'unsubscribe_id' => '5', - 'resubscribe_id' => '6', - 'optout_id' => '7', - 'name' => 'mailing name', - 'mailing_type' => 'standalone', - 'from_name' => 'FIXME', - 'from_email' => 'info@EXAMPLE.ORG', - 'replyto_email' => 'info@EXAMPLE.ORG', - 'template_type' => 'traditional', - 'template_options' => '', - 'subject' => 'Hello {contact.display_name}', - 'body_text' => 'This is {contact.display_name}. -https://civicrm.org -{domain.address}{action.optOutUrl}', - 'body_html' => '<link href=\'https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700|Zilla+Slab:500,700\' rel=\'stylesheet\' type=\'text/css\'><p><a href=\"{action.forward}\">Forward this email</a></p><p>This is {contact.display_name}.</p><p><a href=\'https://civicrm.org/\'>CiviCRM.org</a></p><p>{domain.address}{action.optOutUrl}</p>', - 'url_tracking' => '1', - 'forward_replies' => 0, - 'auto_responder' => 0, - 'open_tracking' => '1', - 'is_completed' => '', - 'msg_template_id' => '', - 'override_verp' => '1', - 'created_id' => '18', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'scheduled_id' => '', - 'scheduled_date' => '', - 'approver_id' => '', - 'approval_date' => '', - 'approval_status_id' => '', - 'approval_note' => '', - 'is_archived' => 0, - 'visibility' => 'Public Pages', - 'campaign_id' => '', - 'dedupe_email' => '1', - 'sms_provider_id' => '', - 'hash' => '', - 'location_type_id' => '', - 'email_selection_method' => 'automatic', - 'language' => '', - 'api.MailingRecipients.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '0' => [ - 'id' => '4', - 'mailing_id' => '10', - 'contact_id' => '19', - 'email_id' => '19', - 'api.contact.getvalue' => 'Mr. Includer Person II', - 'api.email.getvalue' => 'include.me@example.org', - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMailerPreviewRecipients" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Mailing/Delete.ex.php b/civicrm/api/v3/examples/Mailing/Delete.ex.php deleted file mode 100644 index 511eff7e1b..0000000000 --- a/civicrm/api/v3/examples/Mailing/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mailing.delete API. - * - * @return array - * API result array - */ -function mailing_delete_example() { - $params = [ - 'id' => 27, - ]; - - try { - $result = civicrm_api3('Mailing', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMailerDeleteSuccess" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Mailing/GetTokens.ex.php b/civicrm/api/v3/examples/Mailing/GetTokens.ex.php deleted file mode 100644 index 416b3ac86d..0000000000 --- a/civicrm/api/v3/examples/Mailing/GetTokens.ex.php +++ /dev/null @@ -1,172 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mailing.gettokens API. - * - * Demonstrates fetching tokens for one or more entities (in this case "Contact" and "Mailing"). - * Optionally pass sequential=1 to have output ready-formatted for the select2 widget. - * - * @return array - * API result array - */ -function mailing_gettokens_example() { - $params = [ - 'entity' => [ - '0' => 'Contact', - '1' => 'Mailing', - ], - ]; - - try { - $result = civicrm_api3('Mailing', 'gettokens', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_gettokens_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 90, - 'values' => [ - '{action.unsubscribe}' => 'Unsubscribe via email', - '{action.unsubscribeUrl}' => 'Unsubscribe via web page', - '{action.resubscribe}' => 'Resubscribe via email', - '{action.resubscribeUrl}' => 'Resubscribe via web page', - '{action.optOut}' => 'Opt out via email', - '{action.optOutUrl}' => 'Opt out via web page', - '{action.forward}' => 'Forward this email (link)', - '{action.reply}' => 'Reply to this email (link)', - '{action.subscribeUrl}' => 'Subscribe via web page', - '{mailing.key}' => 'Mailing key', - '{mailing.name}' => 'Mailing name', - '{mailing.group}' => 'Mailing group', - '{mailing.viewUrl}' => 'Mailing permalink', - '{domain.name}' => 'Domain name', - '{domain.address}' => 'Domain (organization) address', - '{domain.phone}' => 'Domain (organization) phone', - '{domain.email}' => 'Domain (organization) email', - '{domain.id}' => 'Domain ID', - '{domain.description}' => 'Domain Description', - '{domain.now}' => 'Current time/date', - '{domain.base_url}' => 'Domain absolute base url', - '{domain.tax_term}' => 'Sales tax term (e.g VAT)', - '{contact.checksum}' => 'Checksum', - '{contact.current_employer}' => 'Current Employer', - '{contact.world_region}' => 'World Region', - '{contact.id}' => 'Contact ID', - '{contact.contact_type:label}' => 'Contact Type', - '{contact.do_not_email:label}' => 'Do Not Email', - '{contact.do_not_phone:label}' => 'Do Not Phone', - '{contact.do_not_mail:label}' => 'Do Not Mail', - '{contact.do_not_sms:label}' => 'Do Not Sms', - '{contact.do_not_trade:label}' => 'Do Not Trade', - '{contact.is_opt_out:label}' => 'No Bulk Emails (User Opt Out)', - '{contact.external_identifier}' => 'External Identifier', - '{contact.sort_name}' => 'Sort Name', - '{contact.display_name}' => 'Display Name', - '{contact.nick_name}' => 'Nickname', - '{contact.image_URL}' => 'Image Url', - '{contact.preferred_communication_method:label}' => 'Preferred Communication Method', - '{contact.preferred_language:label}' => 'Preferred Language', - '{contact.hash}' => 'Contact Hash', - '{contact.source}' => 'Contact Source', - '{contact.first_name}' => 'First Name', - '{contact.middle_name}' => 'Middle Name', - '{contact.last_name}' => 'Last Name', - '{contact.prefix_id:label}' => 'Individual Prefix', - '{contact.suffix_id:label}' => 'Individual Suffix', - '{contact.formal_title}' => 'Formal Title', - '{contact.communication_style_id:label}' => 'Communication Style', - '{contact.email_greeting_display}' => 'Email Greeting', - '{contact.postal_greeting_display}' => 'Postal Greeting', - '{contact.addressee_display}' => 'Addressee', - '{contact.job_title}' => 'Job Title', - '{contact.gender_id:label}' => 'Gender', - '{contact.birth_date}' => 'Birth Date', - '{contact.employer_id}' => 'Current Employer ID', - '{contact.is_deleted:label}' => 'Contact is in Trash', - '{contact.created_date}' => 'Created Date', - '{contact.modified_date}' => 'Modified Date', - '{contact.address_id}' => 'Address ID', - '{contact.location_type_id:label}' => 'Address Location Type', - '{contact.street_address}' => 'Street Address', - '{contact.street_number}' => 'Street Number', - '{contact.street_number_suffix}' => 'Street Number Suffix', - '{contact.street_name}' => 'Street Name', - '{contact.street_unit}' => 'Street Unit', - '{contact.supplemental_address_1}' => 'Supplemental Address 1', - '{contact.supplemental_address_2}' => 'Supplemental Address 2', - '{contact.supplemental_address_3}' => 'Supplemental Address 3', - '{contact.city}' => 'City', - '{contact.county}' => 'County', - '{contact.postal_code_suffix}' => 'Postal Code Suffix', - '{contact.postal_code}' => 'Postal Code', - '{contact.country}' => 'Country', - '{contact.geo_code_1}' => 'Latitude', - '{contact.geo_code_2}' => 'Longitude', - '{contact.address_name}' => 'Address Name', - '{contact.master_id}' => 'Master Address ID', - '{contact.phone}' => 'Phone', - '{contact.phone_ext}' => 'Phone Extension', - '{contact.phone_type}' => 'Phone Type', - '{contact.email}' => 'Email', - '{contact.on_hold:label}' => 'On Hold', - '{contact.signature_text}' => 'Signature Text', - '{contact.signature_html}' => 'Signature Html', - '{contact.url}' => 'Website', - '{contact.openid}' => 'OpenID', - '{contact.im}' => 'IM Screen Name', - '{contact.provider_id:label}' => 'IM Provider', - '{contact.state_province}' => 'State/Province', - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMailGetTokens" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Mailing/Submit.ex.php b/civicrm/api/v3/examples/Mailing/Submit.ex.php deleted file mode 100644 index b2bf20e4d9..0000000000 --- a/civicrm/api/v3/examples/Mailing/Submit.ex.php +++ /dev/null @@ -1,126 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mailing.submit API. - * - * @return array - * API result array - */ -function mailing_submit_example() { - $params = [ - 'scheduled_date' => '2014-12-13 10:00:00', - 'approval_date' => '2014-12-13 00:00:00', - 'id' => 23, - ]; - - try { - $result = civicrm_api3('Mailing', 'submit', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_submit_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 23, - 'values' => [ - '23' => [ - 'id' => '23', - 'domain_id' => '1', - 'header_id' => '', - 'footer_id' => '33', - 'reply_id' => '8', - 'unsubscribe_id' => '5', - 'resubscribe_id' => '6', - 'optout_id' => '7', - 'name' => 'mailing name', - 'mailing_type' => 'standalone', - 'from_name' => 'FIXME', - 'from_email' => 'info@EXAMPLE.ORG', - 'replyto_email' => 'info@EXAMPLE.ORG', - 'template_type' => 'traditional', - 'template_options' => '', - 'subject' => 'Hello {contact.display_name}', - 'body_text' => 'This is {contact.display_name}. -https://civicrm.org -{domain.address}{action.optOutUrl}', - 'body_html' => '<p>Look ma, magic tokens in the markup!</p>', - 'url_tracking' => '1', - 'forward_replies' => 0, - 'auto_responder' => 0, - 'open_tracking' => '1', - 'is_completed' => '', - 'msg_template_id' => '', - 'override_verp' => '1', - 'created_id' => '48', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'scheduled_id' => '49', - 'scheduled_date' => '20130728085413', - 'approver_id' => '49', - 'approval_date' => '20130728085413', - 'approval_status_id' => '1', - 'approval_note' => '', - 'is_archived' => 0, - 'visibility' => 'Public Pages', - 'campaign_id' => '', - 'dedupe_email' => '1', - 'sms_provider_id' => '', - 'hash' => '67eac7789eaee00', - 'location_type_id' => '', - 'email_selection_method' => 'automatic', - 'language' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMailerSubmit" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailingAB/Create.ex.php b/civicrm/api/v3/examples/MailingAB/Create.ex.php deleted file mode 100644 index 6a287beb8d..0000000000 --- a/civicrm/api/v3/examples/MailingAB/Create.ex.php +++ /dev/null @@ -1,99 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MailingAB.create API. - * - * @return array - * API result array - */ -function mailing_a_b_create_example() { - $params = [ - 'mailing_id_a' => 1, - 'mailing_id_b' => 2, - 'mailing_id_c' => 3, - 'testing_criteria' => 'subject', - 'winner_criteria' => 'open', - 'declare_winning_time' => '+2 days', - 'group_percentage' => 10, - ]; - - try { - $result = civicrm_api3('MailingAB', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_a_b_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => '', - 'status' => '', - 'mailing_id_a' => '1', - 'mailing_id_b' => '2', - 'mailing_id_c' => '3', - 'domain_id' => '1', - 'testing_criteria' => 'subject', - 'winner_criteria' => 'open', - 'specific_url' => '', - 'declare_winning_time' => '20220119125416', - 'group_percentage' => '10', - 'created_id' => '3', - 'created_date' => '2013-07-28 08:49:19', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMailingABCreateSuccess" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingABTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailingEventSubscribe/Create.ex.php b/civicrm/api/v3/examples/MailingEventSubscribe/Create.ex.php deleted file mode 100644 index 9059f57df9..0000000000 --- a/civicrm/api/v3/examples/MailingEventSubscribe/Create.ex.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MailingEventSubscribe.create API. - * - * @return array - * API result array - */ -function mailing_event_subscribe_create_example() { - $params = [ - 'email' => 'test@test.test', - 'group_id' => 2, - 'contact_id' => 3, - 'hash' => 'b15de8b64e2cec34', - 'time_stamp' => '20101212121212', - ]; - - try { - $result = civicrm_api3('MailingEventSubscribe', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_event_subscribe_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'contact_id' => '3', - 'subscribe_id' => '1', - 'hash' => '67eac7789eaee00', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMailerGroupSubscribeGivenContactId" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MailingGroup/Subscribe.ex.php b/civicrm/api/v3/examples/MailingGroup/Subscribe.ex.php deleted file mode 100644 index df4f96729b..0000000000 --- a/civicrm/api/v3/examples/MailingGroup/Subscribe.ex.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example of using mailing_group subscribe API. - * - * @return array - * API result array - */ -function mailing_group_subscribe_example() { - $params = [ - 'email' => 'test@test.test', - 'group_id' => 2, - 'contact_id' => 3, - 'hash' => 'b15de8b64e2cec34', - 'time_stamp' => '20101212121212', - ]; - - try { - $result = civicrm_api3('mailing_group', 'subscribe', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mailing_group_subscribe_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'contact_id' => '3', - 'subscribe_id' => '1', - 'hash' => '67eac7789eaee00', - ], - ], - ]; - - return $expectedResult; -} - -/** -* This example has been generated from the API test suite. -* The test that created it is called -* testMailerGroupSubscribeGivenContactId -* and can be found in -* https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MailingGroupTest.php. -* -* You can see the outcome of the API tests at -* https://test.civicrm.org/job/CiviCRM-master-git/ -* -* To Learn about the API read -* http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API -* -* Browse the api on your own site with the api explorer -* http://MYSITE.ORG/path/to/civicrm/api -* -* Read more about testing here -* http://wiki.civicrm.org/confluence/display/CRM/Testing -* -* API Standards documentation: -* http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ diff --git a/civicrm/api/v3/examples/Mapping/Create.ex.php b/civicrm/api/v3/examples/Mapping/Create.ex.php deleted file mode 100644 index c3ebff0aee..0000000000 --- a/civicrm/api/v3/examples/Mapping/Create.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mapping.create API. - * - * @return array - * API result array - */ -function mapping_create_example() { - $params = [ - 'name' => 'Mapping name', - 'description' => 'Mapping description', - 'mapping_type_id' => 7, - ]; - - try { - $result = civicrm_api3('Mapping', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mapping_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'Mapping name', - 'description' => 'Mapping description', - 'mapping_type_id' => '7', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateMapping" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MappingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Mapping/Delete.ex.php b/civicrm/api/v3/examples/Mapping/Delete.ex.php deleted file mode 100644 index c70d4fd4d4..0000000000 --- a/civicrm/api/v3/examples/Mapping/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mapping.delete API. - * - * @return array - * API result array - */ -function mapping_delete_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('Mapping', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mapping_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteMapping" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MappingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Mapping/Get.ex.php b/civicrm/api/v3/examples/Mapping/Get.ex.php deleted file mode 100644 index 1c3c101dd8..0000000000 --- a/civicrm/api/v3/examples/Mapping/Get.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Mapping.get API. - * - * @return array - * API result array - */ -function mapping_get_example() { - $params = [ - 'name' => 'Mapping name', - 'description' => 'Mapping description', - 'mapping_type_id' => 7, - ]; - - try { - $result = civicrm_api3('Mapping', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mapping_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'name' => 'Mapping name', - 'description' => 'Mapping description', - 'mapping_type_id' => '7', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetMapping" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MappingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MappingField/Create.ex.php b/civicrm/api/v3/examples/MappingField/Create.ex.php deleted file mode 100644 index 27a3a7a8f2..0000000000 --- a/civicrm/api/v3/examples/MappingField/Create.ex.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MappingField.create API. - * - * @return array - * API result array - */ -function mapping_field_create_example() { - $params = [ - 'mapping_id' => 1, - 'name' => 'last_name', - 'contact_type' => 'Individual', - 'column_number' => 2, - 'grouping' => 1, - ]; - - try { - $result = civicrm_api3('MappingField', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mapping_field_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'mapping_id' => '1', - 'name' => 'last_name', - 'contact_type' => 'Individual', - 'column_number' => '2', - 'location_type_id' => '', - 'phone_type_id' => '', - 'im_provider_id' => '', - 'website_type_id' => '', - 'relationship_type_id' => '', - 'relationship_direction' => '', - 'grouping' => '1', - 'operator' => '', - 'value' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateMappingField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MappingFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MappingField/Delete.ex.php b/civicrm/api/v3/examples/MappingField/Delete.ex.php deleted file mode 100644 index c9f6b23566..0000000000 --- a/civicrm/api/v3/examples/MappingField/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MappingField.delete API. - * - * @return array - * API result array - */ -function mapping_field_delete_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('MappingField', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mapping_field_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteMappingField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MappingFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MappingField/Get.ex.php b/civicrm/api/v3/examples/MappingField/Get.ex.php deleted file mode 100644 index 3e8403e6be..0000000000 --- a/civicrm/api/v3/examples/MappingField/Get.ex.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MappingField.get API. - * - * @return array - * API result array - */ -function mapping_field_get_example() { - $params = [ - 'mapping_id' => 2, - 'name' => 'last_name', - 'contact_type' => 'Individual', - 'column_number' => 2, - 'grouping' => 1, - ]; - - try { - $result = civicrm_api3('MappingField', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function mapping_field_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'mapping_id' => '2', - 'name' => 'last_name', - 'contact_type' => 'Individual', - 'column_number' => '2', - 'grouping' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetMappingField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MappingFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Membership/Create.ex.php b/civicrm/api/v3/examples/Membership/Create.ex.php deleted file mode 100644 index fed7a91627..0000000000 --- a/civicrm/api/v3/examples/Membership/Create.ex.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Membership.create API. - * - * @return array - * API result array - */ -function membership_create_example() { - $params = [ - 'contact_id' => 3, - 'membership_type_id' => 1, - 'join_date' => '2006-01-21', - 'start_date' => '2006-01-21', - 'end_date' => '2006-12-21', - 'source' => 'Payment', - 'is_override' => 1, - 'status_id' => 33, - ]; - - try { - $result = civicrm_api3('Membership', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'membership_type_id' => '1', - 'join_date' => '20060121000000', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'source' => 'Payment', - 'status_id' => '33', - 'is_override' => '1', - 'status_override_end_date' => '', - 'owner_membership_id' => '', - 'max_related' => '', - 'is_test' => 0, - 'is_pay_later' => '', - 'contribution_recur_id' => '', - 'campaign_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMembershipCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Membership/CreateWithCustomData.ex.php b/civicrm/api/v3/examples/Membership/CreateWithCustomData.ex.php deleted file mode 100644 index 4f8ae718da..0000000000 --- a/civicrm/api/v3/examples/Membership/CreateWithCustomData.ex.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Membership.create API. - * - * @return array - * API result array - */ -function membership_create_example() { - $params = [ - 'contact_id' => 3, - 'membership_type_id' => 'General', - 'join_date' => '2009-01-21', - 'start_date' => '2009-01-21', - 'end_date' => '2009-12-21', - 'source' => 'Payment', - 'is_override' => 1, - 'status_id' => 35, - 'custom_1' => 'custom string', - ]; - - try { - $result = civicrm_api3('Membership', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'membership_type_id' => '1', - 'join_date' => '20090121000000', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'source' => 'Payment', - 'status_id' => '35', - 'is_override' => '1', - 'status_override_end_date' => '', - 'owner_membership_id' => '', - 'max_related' => '', - 'is_test' => 0, - 'is_pay_later' => '', - 'contribution_recur_id' => '', - 'campaign_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateWithCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Membership/Delete.ex.php b/civicrm/api/v3/examples/Membership/Delete.ex.php deleted file mode 100644 index ee913f54d8..0000000000 --- a/civicrm/api/v3/examples/Membership/Delete.ex.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Membership.delete API. - * - * @return array - * API result array - */ -function membership_delete_example() { - $params = [ - 'id' => 1, - 'preserve_contribution' => 1, - ]; - - try { - $result = civicrm_api3('Membership', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => TRUE, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testMembershipDeletePreserveContribution" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Membership/FilterIsCurrent.ex.php b/civicrm/api/v3/examples/Membership/FilterIsCurrent.ex.php deleted file mode 100644 index f8434450f7..0000000000 --- a/civicrm/api/v3/examples/Membership/FilterIsCurrent.ex.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Membership.get API. - * - * Demonstrates use of 'filter' active_only' param. - * - * @return array - * API result array - */ -function membership_get_example() { - $params = [ - 'contact_id' => 3, - 'filters' => [ - 'is_current' => 1, - ], - ]; - - try { - $result = civicrm_api3('Membership', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'membership_type_id' => '1', - 'join_date' => '2009-01-21', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'source' => 'Payment', - 'status_id' => '23', - 'is_override' => '1', - 'is_test' => 0, - 'is_pay_later' => 0, - 'membership_name' => 'General', - 'relationship_name' => 'Child of', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetOnlyActive" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Membership/Get.ex.php b/civicrm/api/v3/examples/Membership/Get.ex.php deleted file mode 100644 index bba4a3150b..0000000000 --- a/civicrm/api/v3/examples/Membership/Get.ex.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Membership.get API. - * - * @return array - * API result array - */ -function membership_get_example() { - $params = [ - 'membership_type_id' => 'General', - 'return' => 'custom_1', - ]; - - try { - $result = civicrm_api3('Membership', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'custom_1' => 'custom string', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetWithParamsMemberShipIdAndCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Membership/SearchWithCustomData.ex.php b/civicrm/api/v3/examples/Membership/SearchWithCustomData.ex.php deleted file mode 100644 index 4541fb4909..0000000000 --- a/civicrm/api/v3/examples/Membership/SearchWithCustomData.ex.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Membership.create API. - * - * @return array - * API result array - */ -function membership_create_example() { - $params = [ - 'contact_id' => 3, - 'membership_type_id' => 'General', - 'join_date' => '2009-01-21', - 'start_date' => '2009-01-21', - 'end_date' => '2009-12-21', - 'source' => 'Payment', - 'is_override' => 1, - 'status_id' => 36, - ]; - - try { - $result = civicrm_api3('Membership', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'membership_type_id' => '1', - 'join_date' => '20090121000000', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'source' => 'Payment', - 'status_id' => '36', - 'is_override' => '1', - 'status_override_end_date' => '', - 'owner_membership_id' => '', - 'max_related' => '', - 'is_test' => 0, - 'is_pay_later' => '', - 'contribution_recur_id' => '', - 'campaign_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testSearchWithCustomDataCRM16036" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Membership/UpdateCustomData.ex.php b/civicrm/api/v3/examples/Membership/UpdateCustomData.ex.php deleted file mode 100644 index 6552c3487d..0000000000 --- a/civicrm/api/v3/examples/Membership/UpdateCustomData.ex.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Membership.create API. - * - * @return array - * API result array - */ -function membership_create_example() { - $params = [ - 'contact_id' => 3, - 'membership_type_id' => 'General', - 'join_date' => '2009-01-21', - 'start_date' => '2009-01-21', - 'end_date' => '2009-12-21', - 'source' => 'Payment', - 'is_override' => 1, - 'status_id' => 43, - 'custom_1' => 'custom string', - ]; - - try { - $result = civicrm_api3('Membership', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'membership_type_id' => '1', - 'join_date' => '20090121000000', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'source' => 'Payment', - 'status_id' => '43', - 'is_override' => '1', - 'status_override_end_date' => '', - 'owner_membership_id' => '', - 'max_related' => '', - 'is_test' => 0, - 'is_pay_later' => '', - 'contribution_recur_id' => '', - 'campaign_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUpdateWithCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MembershipPayment/Create.ex.php b/civicrm/api/v3/examples/MembershipPayment/Create.ex.php deleted file mode 100644 index d48c64db57..0000000000 --- a/civicrm/api/v3/examples/MembershipPayment/Create.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MembershipPayment.create API. - * - * @return array - * API result array - */ -function membership_payment_create_example() { - $params = [ - 'contribution_id' => 2, - 'membership_id' => 1, - ]; - - try { - $result = civicrm_api3('MembershipPayment', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_payment_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'membership_id' => '1', - 'contribution_id' => '2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipPaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MembershipPayment/Get.ex.php b/civicrm/api/v3/examples/MembershipPayment/Get.ex.php deleted file mode 100644 index fbe5c2aee4..0000000000 --- a/civicrm/api/v3/examples/MembershipPayment/Get.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MembershipPayment.get API. - * - * @return array - * API result array - */ -function membership_payment_get_example() { - $params = [ - 'contribution_id' => 3, - 'membership_id' => 2, - ]; - - try { - $result = civicrm_api3('MembershipPayment', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_payment_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'membership_id' => '2', - 'contribution_id' => '3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipPaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MembershipStatus/Create.ex.php b/civicrm/api/v3/examples/MembershipStatus/Create.ex.php deleted file mode 100644 index 0ba7d7347f..0000000000 --- a/civicrm/api/v3/examples/MembershipStatus/Create.ex.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MembershipStatus.create API. - * - * @return array - * API result array - */ -function membership_status_create_example() { - $params = [ - 'name' => 'test membership status', - ]; - - try { - $result = civicrm_api3('MembershipStatus', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_status_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 15, - 'values' => [ - '15' => [ - 'id' => '15', - 'name' => 'test membership status', - 'label' => 'test membership status', - 'start_event' => '', - 'start_event_adjust_unit' => '', - 'start_event_adjust_interval' => '', - 'end_event' => '', - 'end_event_adjust_unit' => '', - 'end_event_adjust_interval' => '', - 'is_current_member' => '', - 'is_admin' => '', - 'weight' => '', - 'is_default' => '', - 'is_active' => '', - 'is_reserved' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipStatusTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MembershipStatus/Get.ex.php b/civicrm/api/v3/examples/MembershipStatus/Get.ex.php deleted file mode 100644 index 095991660f..0000000000 --- a/civicrm/api/v3/examples/MembershipStatus/Get.ex.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MembershipStatus.get API. - * - * @return array - * API result array - */ -function membership_status_get_example() { - $params = [ - 'name' => 'test status', - ]; - - try { - $result = civicrm_api3('MembershipStatus', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_status_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 9, - 'values' => [ - '9' => [ - 'id' => '9', - 'name' => 'test status', - 'label' => 'test status', - 'start_event' => 'start_date', - 'end_event' => 'end_date', - 'is_current_member' => '1', - 'is_admin' => 0, - 'is_default' => 0, - 'is_active' => '1', - 'is_reserved' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipStatusTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MembershipType/Create.ex.php b/civicrm/api/v3/examples/MembershipType/Create.ex.php deleted file mode 100644 index 93711c6412..0000000000 --- a/civicrm/api/v3/examples/MembershipType/Create.ex.php +++ /dev/null @@ -1,110 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MembershipType.create API. - * - * @return array - * API result array - */ -function membership_type_create_example() { - $params = [ - 'name' => '40+ Membership', - 'description' => 'people above 40 are given health instructions', - 'member_of_contact_id' => 11, - 'financial_type_id' => 1, - 'domain_id' => '1', - 'minimum_fee' => '200', - 'duration_unit' => 'month', - 'duration_interval' => '10', - 'period_type' => 'rolling', - 'visibility' => 'public', - ]; - - try { - $result = civicrm_api3('MembershipType', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_type_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'domain_id' => '1', - 'name' => '40+ Membership', - 'description' => 'people above 40 are given health instructions', - 'member_of_contact_id' => '11', - 'financial_type_id' => '1', - 'minimum_fee' => '200', - 'duration_unit' => 'month', - 'duration_interval' => '10', - 'period_type' => 'rolling', - 'fixed_period_start_day' => '', - 'fixed_period_rollover_day' => '', - 'relationship_type_id' => '', - 'relationship_direction' => '', - 'max_related' => '', - 'visibility' => 'Public', - 'weight' => '', - 'receipt_text_signup' => '', - 'receipt_text_renewal' => '', - 'auto_renew' => '', - 'is_active' => '1', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MembershipType/Delete.ex.php b/civicrm/api/v3/examples/MembershipType/Delete.ex.php deleted file mode 100644 index 67aff9ba1b..0000000000 --- a/civicrm/api/v3/examples/MembershipType/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MembershipType.delete API. - * - * @return array - * API result array - */ -function membership_type_delete_example() { - $params = [ - 'id' => 10, - ]; - - try { - $result = civicrm_api3('MembershipType', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_type_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MembershipType/Get.ex.php b/civicrm/api/v3/examples/MembershipType/Get.ex.php deleted file mode 100644 index 78bc437361..0000000000 --- a/civicrm/api/v3/examples/MembershipType/Get.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MembershipType.get API. - * - * @return array - * API result array - */ -function membership_type_get_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('MembershipType', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function membership_type_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'domain_id' => '1', - 'name' => 'General', - 'member_of_contact_id' => '5', - 'financial_type_id' => '2', - 'minimum_fee' => '0.000000000', - 'duration_unit' => 'year', - 'duration_interval' => '1', - 'period_type' => 'rolling', - 'visibility' => 'Public', - 'auto_renew' => 0, - 'is_active' => '1', - 'contribution_type_id' => '2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MembershipTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MessageTemplate/Create.ex.php b/civicrm/api/v3/examples/MessageTemplate/Create.ex.php deleted file mode 100644 index 386818f9cd..0000000000 --- a/civicrm/api/v3/examples/MessageTemplate/Create.ex.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MessageTemplate.create API. - * - * @return array - * API result array - */ -function message_template_create_example() { - $params = [ - 'msg_title' => 'msg_title_356', - 'msg_subject' => 'msg_subject_356', - 'msg_text' => 'msg_text_356', - 'msg_html' => 'msg_html_356', - 'workflow_id' => 356, - 'is_default' => '1', - 'is_reserved' => 0, - ]; - - try { - $result = civicrm_api3('MessageTemplate', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function message_template_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 69, - 'values' => [ - '69' => [ - 'id' => '69', - 'msg_title' => 'msg_title_356', - 'msg_subject' => 'msg_subject_356', - 'msg_text' => 'msg_text_356', - 'msg_html' => 'msg_html_356', - 'is_active' => '1', - 'workflow_id' => '356', - 'workflow_name' => '', - 'is_default' => '1', - 'is_reserved' => 0, - 'is_sms' => '', - 'pdf_format_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MessageTemplateTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MessageTemplate/Delete.ex.php b/civicrm/api/v3/examples/MessageTemplate/Delete.ex.php deleted file mode 100644 index 4d3a118c99..0000000000 --- a/civicrm/api/v3/examples/MessageTemplate/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MessageTemplate.delete API. - * - * @return array - * API result array - */ -function message_template_delete_example() { - $params = [ - 'id' => 72, - ]; - - try { - $result = civicrm_api3('MessageTemplate', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function message_template_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MessageTemplateTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/MessageTemplate/Get.ex.php b/civicrm/api/v3/examples/MessageTemplate/Get.ex.php deleted file mode 100644 index 3edf3985b4..0000000000 --- a/civicrm/api/v3/examples/MessageTemplate/Get.ex.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the MessageTemplate.get API. - * - * @return array - * API result array - */ -function message_template_get_example() { - $params = [ - 'msg_title' => 'msg_title_357', - 'msg_subject' => 'msg_subject_357', - 'msg_text' => 'msg_text_357', - 'msg_html' => 'msg_html_357', - 'workflow_id' => 357, - 'is_default' => '1', - 'is_reserved' => 0, - ]; - - try { - $result = civicrm_api3('MessageTemplate', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function message_template_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 70, - 'values' => [ - '70' => [ - 'id' => '70', - 'msg_title' => 'msg_title_357', - 'msg_subject' => 'msg_subject_357', - 'msg_text' => 'msg_text_357', - 'msg_html' => 'msg_html_357', - 'is_active' => '1', - 'workflow_id' => '357', - 'workflow_name' => 'workflow_name_357', - 'is_default' => '1', - 'is_reserved' => 0, - 'is_sms' => 0, - 'pdf_format_id' => '357', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/MessageTemplateTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Note/Create.ex.php b/civicrm/api/v3/examples/Note/Create.ex.php deleted file mode 100644 index 71fb2729a8..0000000000 --- a/civicrm/api/v3/examples/Note/Create.ex.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Note.create API. - * - * @return array - * API result array - */ -function note_create_example() { - $params = [ - 'entity_table' => 'civicrm_contact', - 'entity_id' => 15, - 'note' => 'Hello!!! m testing Note', - 'contact_id' => 15, - 'created_date' => '2012-01-17 13:04:50', - 'note_date' => '2012-01-17 13:04:50', - 'modified_date' => '2011-01-31', - 'subject' => 'Test Note', - ]; - - try { - $result = civicrm_api3('Note', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function note_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 14, - 'values' => [ - '14' => [ - 'id' => '14', - 'entity_table' => 'civicrm_contact', - 'entity_id' => '15', - 'note' => 'Hello!!! m testing Note', - 'contact_id' => '15', - 'note_date' => '20120117130450', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - 'subject' => 'Test Note', - 'privacy' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/NoteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Note/Delete.ex.php b/civicrm/api/v3/examples/Note/Delete.ex.php deleted file mode 100644 index 370c49a036..0000000000 --- a/civicrm/api/v3/examples/Note/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Note.delete API. - * - * @return array - * API result array - */ -function note_delete_example() { - $params = [ - 'id' => 35, - ]; - - try { - $result = civicrm_api3('Note', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function note_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/NoteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Note/Get.ex.php b/civicrm/api/v3/examples/Note/Get.ex.php deleted file mode 100644 index c62583b45a..0000000000 --- a/civicrm/api/v3/examples/Note/Get.ex.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Note.get API. - * - * @return array - * API result array - */ -function note_get_example() { - $params = [ - 'entity_table' => 'civicrm_contact', - 'entity_id' => 5, - ]; - - try { - $result = civicrm_api3('Note', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function note_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/NoteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OpenID/Create.ex.php b/civicrm/api/v3/examples/OpenID/Create.ex.php deleted file mode 100644 index 41d665c8ba..0000000000 --- a/civicrm/api/v3/examples/OpenID/Create.ex.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OpenID.create API. - * - * @return array - * API result array - */ -function open_i_d_create_example() { - $params = [ - 'contact_id' => 5, - 'openid' => 'My OpenID handle', - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('OpenID', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function open_i_d_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '0' => [ - 'id' => '3', - 'contact_id' => '5', - 'location_type_id' => '1', - 'openid' => 'My OpenID handle', - 'allowed_to_login' => '', - 'is_primary' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateOpenIDDefaultLocation" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OpenIDTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OpenID/Delete.ex.php b/civicrm/api/v3/examples/OpenID/Delete.ex.php deleted file mode 100644 index 1e906d9fbf..0000000000 --- a/civicrm/api/v3/examples/OpenID/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OpenID.delete API. - * - * @return array - * API result array - */ -function open_i_d_delete_example() { - $params = [ - 'id' => 7, - ]; - - try { - $result = civicrm_api3('OpenID', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function open_i_d_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteOpenID" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OpenIDTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OpenID/Get.ex.php b/civicrm/api/v3/examples/OpenID/Get.ex.php deleted file mode 100644 index 1f117d1dd0..0000000000 --- a/civicrm/api/v3/examples/OpenID/Get.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OpenID.get API. - * - * @return array - * API result array - */ -function open_i_d_get_example() { - $params = [ - 'contact_id' => 7, - 'openid' => 'My OpenID handle', - 'location_type_id' => 1, - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('OpenID', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function open_i_d_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 5, - 'values' => [ - '0' => [ - 'id' => '5', - 'contact_id' => '7', - 'location_type_id' => '1', - 'openid' => 'My OpenID handle', - 'allowed_to_login' => 0, - 'is_primary' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetOpenID" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OpenIDTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OptionGroup/Create.ex.php b/civicrm/api/v3/examples/OptionGroup/Create.ex.php deleted file mode 100644 index 1f23a4dc8e..0000000000 --- a/civicrm/api/v3/examples/OptionGroup/Create.ex.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OptionGroup.create API. - * - * @return array - * API result array - */ -function option_group_create_example() { - $params = [ - 'sequential' => 1, - 'name' => 'civicrm_event.amount.560', - 'is_reserved' => 1, - 'is_active' => 1, - 'api.OptionValue.create' => [ - 'label' => 'workshop', - 'value' => 35, - 'is_default' => 1, - 'is_active' => 1, - 'format.only_id' => 1, - ], - ]; - - try { - $result = civicrm_api3('OptionGroup', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function option_group_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 96, - 'values' => [ - '0' => [ - 'id' => '96', - 'name' => 'civicrm_event.amount.560', - 'title' => '', - 'description' => '', - 'data_type' => '', - 'is_reserved' => '1', - 'is_active' => '1', - 'is_locked' => '', - 'api.OptionValue.create' => 859, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetOptionCreateSuccess" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OptionGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OptionGroup/Delete.ex.php b/civicrm/api/v3/examples/OptionGroup/Delete.ex.php deleted file mode 100644 index 7b1e6acedd..0000000000 --- a/civicrm/api/v3/examples/OptionGroup/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OptionGroup.delete API. - * - * @return array - * API result array - */ -function option_group_delete_example() { - $params = [ - 'id' => 101, - ]; - - try { - $result = civicrm_api3('OptionGroup', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function option_group_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteOptionGroup" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OptionGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OptionGroup/Get.ex.php b/civicrm/api/v3/examples/OptionGroup/Get.ex.php deleted file mode 100644 index 570c36ab2a..0000000000 --- a/civicrm/api/v3/examples/OptionGroup/Get.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OptionGroup.get API. - * - * @return array - * API result array - */ -function option_group_get_example() { - $params = [ - 'name' => 'preferred_communication_method', - ]; - - try { - $result = civicrm_api3('OptionGroup', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function option_group_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'preferred_communication_method', - 'title' => 'Preferred Communication Method', - 'is_reserved' => '1', - 'is_active' => '1', - 'is_locked' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetOptionGroupByName" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OptionGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OptionValue/Get.ex.php b/civicrm/api/v3/examples/OptionValue/Get.ex.php deleted file mode 100644 index a69c81178e..0000000000 --- a/civicrm/api/v3/examples/OptionValue/Get.ex.php +++ /dev/null @@ -1,136 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OptionValue.get API. - * - * @return array - * API result array - */ -function option_value_get_example() { - $params = [ - 'option_group_id' => 1, - ]; - - try { - $result = civicrm_api3('OptionValue', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function option_value_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'values' => [ - '1' => [ - 'id' => '1', - 'option_group_id' => '1', - 'label' => 'Phone', - 'value' => '1', - 'name' => 'Phone', - 'filter' => 0, - 'weight' => '1', - 'is_optgroup' => 0, - 'is_reserved' => 0, - 'is_active' => '1', - ], - '2' => [ - 'id' => '2', - 'option_group_id' => '1', - 'label' => 'Email', - 'value' => '2', - 'name' => 'Email', - 'filter' => 0, - 'weight' => '2', - 'is_optgroup' => 0, - 'is_reserved' => 0, - 'is_active' => '1', - ], - '3' => [ - 'id' => '3', - 'option_group_id' => '1', - 'label' => 'Postal Mail', - 'value' => '3', - 'name' => 'Postal Mail', - 'filter' => 0, - 'weight' => '3', - 'is_optgroup' => 0, - 'is_reserved' => 0, - 'is_active' => '1', - ], - '4' => [ - 'id' => '4', - 'option_group_id' => '1', - 'label' => 'SMS', - 'value' => '4', - 'name' => 'SMS', - 'filter' => 0, - 'weight' => '4', - 'is_optgroup' => 0, - 'is_reserved' => 0, - 'is_active' => '1', - ], - '5' => [ - 'id' => '5', - 'option_group_id' => '1', - 'label' => 'Fax', - 'value' => '5', - 'name' => 'Fax', - 'filter' => 0, - 'weight' => '5', - 'is_optgroup' => 0, - 'is_reserved' => 0, - 'is_active' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetOptionGroup" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OptionValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/OptionValue/SortOption.ex.php b/civicrm/api/v3/examples/OptionValue/SortOption.ex.php deleted file mode 100644 index c68a2e3fd0..0000000000 --- a/civicrm/api/v3/examples/OptionValue/SortOption.ex.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the OptionValue.getsingle API. - * - * Demonstrates use of Sort param (available in many api functions). Also, getsingle. - * - * @return array - * API result array - */ -function option_value_getsingle_example() { - $params = [ - 'option_group_id' => 1, - 'options' => [ - 'sort' => 'label DESC', - 'limit' => 1, - ], - ]; - - try { - $result = civicrm_api3('OptionValue', 'getsingle', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function option_value_getsingle_expectedresult() { - - $expectedResult = [ - 'id' => '4', - 'option_group_id' => '1', - 'label' => 'SMS', - 'value' => '4', - 'name' => 'SMS', - 'filter' => 0, - 'weight' => '4', - 'is_optgroup' => 0, - 'is_reserved' => 0, - 'is_active' => '1', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetSingleValueOptionValueSort" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OptionValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Order/Cancel.ex.php b/civicrm/api/v3/examples/Order/Cancel.ex.php deleted file mode 100644 index 2ae843024d..0000000000 --- a/civicrm/api/v3/examples/Order/Cancel.ex.php +++ /dev/null @@ -1,111 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Order.cancel API. - * - * @return array - * API result array - */ -function order_cancel_example() { - $params = [ - 'contribution_id' => 1, - ]; - - try { - $result = civicrm_api3('Order', 'cancel', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function order_cancel_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '55', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '2010-01-20 00:00:00', - 'non_deductible_amount' => '0.00', - 'total_amount' => '100.00', - 'fee_amount' => '0.00', - 'net_amount' => '100.00', - 'trxn_id' => '', - 'invoice_id' => '', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => '', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => 0, - 'is_pay_later' => 0, - 'contribution_status_id' => '3', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => 'CN_1', - 'tax_amount' => '0.00', - 'revenue_recognition_date' => '', - 'is_template' => 0, - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCancelOrder" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OrderTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Order/Create.ex.php b/civicrm/api/v3/examples/Order/Create.ex.php deleted file mode 100644 index f1ecc96b39..0000000000 --- a/civicrm/api/v3/examples/Order/Create.ex.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Order.create API. - * - * @return array - * API result array - */ -function order_create_example() { - $params = [ - 'contact_id' => 10, - 'receive_date' => '2010-01-20', - 'financial_type_id' => 'Event Fee', - 'contribution_status_id' => 'Pending', - 'line_items' => [ - '0' => [ - 'line_item' => [ - '0' => [ - 'price_field_id' => '4', - 'price_field_value_id' => '5', - 'label' => 'Price Field 2', - 'field_title' => 'Price Field 2', - 'qty' => 1, - 'unit_price' => '200.000000000', - 'line_total' => '200.000000000', - 'financial_type_id' => '4', - 'entity_table' => 'civicrm_membership', - 'membership_type_id' => 1, - ], - ], - 'params' => [ - 'contact_id' => 10, - 'membership_type_id' => 2, - 'join_date' => '2006-01-21', - 'start_date' => '2006-01-21', - 'end_date' => '2006-12-21', - 'source' => 'Payment', - 'is_override' => 1, - ], - ], - ], - ]; - - try { - $result = civicrm_api3('Order', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function order_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '10', - 'financial_type_id' => '4', - 'contribution_page_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '20100120000000', - 'non_deductible_amount' => '', - 'total_amount' => '200', - 'fee_amount' => 0, - 'net_amount' => '200', - 'trxn_id' => '', - 'invoice_id' => '', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => '', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '2', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '4', - 'line_item' => [ - '0' => [ - 'price_field_id' => '4', - 'price_field_value_id' => '5', - 'label' => 'Price Field 2', - 'field_title' => 'Price Field 2', - 'qty' => '1', - 'unit_price' => '200.000000000', - 'line_total' => '200.000000000', - 'financial_type_id' => '4', - 'entity_table' => 'civicrm_membership', - 'membership_type_id' => '1', - 'tax_amount' => 0, - 'entity_id' => '1', - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testAddOrderForMembership" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OrderTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Order/CreateOrderParticipant.ex.php b/civicrm/api/v3/examples/Order/CreateOrderParticipant.ex.php deleted file mode 100644 index 310df9736c..0000000000 --- a/civicrm/api/v3/examples/Order/CreateOrderParticipant.ex.php +++ /dev/null @@ -1,179 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Order.create API. - * - * Create order for participant. - * - * @return array - * API result array - */ -function order_create_example() { - $params = [ - 'contact_id' => 41, - 'receive_date' => '2010-01-20', - 'financial_type_id' => 1, - 'contribution_status_id' => 'Pending', - 'line_items' => [ - '0' => [ - 'line_item' => [ - '2' => [ - 'price_field_id' => '2', - 'price_field_value_id' => '2', - 'label' => 'Price Field 1', - 'field_title' => 'Price Field 1', - 'qty' => 1, - 'unit_price' => '100.000000000', - 'line_total' => '100.000000000', - 'financial_type_id' => '4', - 'entity_table' => 'civicrm_participant', - ], - '3' => [ - 'price_field_id' => '2', - 'price_field_value_id' => '3', - 'label' => 'Price Field 2', - 'field_title' => 'Price Field 2', - 'qty' => 1, - 'unit_price' => '200.000000000', - 'line_total' => '200.000000000', - 'financial_type_id' => '4', - 'entity_table' => 'civicrm_participant', - ], - ], - 'params' => [ - 'contact_id' => 41, - 'event_id' => 1, - 'role_id' => 1, - 'register_date' => '2007-07-21 00:00:00', - 'source' => 'Online Event Registration: API Testing', - ], - ], - ], - ]; - - try { - $result = civicrm_api3('Order', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function order_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '41', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '20100120000000', - 'non_deductible_amount' => '', - 'total_amount' => '300', - 'fee_amount' => 0, - 'net_amount' => '300', - 'trxn_id' => '', - 'invoice_id' => '', - 'invoice_number' => '', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => '', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '2', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => 0, - 'revenue_recognition_date' => '', - 'is_template' => '', - 'contribution_type_id' => '1', - 'line_item' => [ - '0' => [ - 'price_field_id' => '2', - 'price_field_value_id' => '2', - 'label' => 'Price Field 1', - 'field_title' => 'Price Field 1', - 'qty' => '1', - 'unit_price' => '100.000000000', - 'line_total' => '100.000000000', - 'financial_type_id' => '4', - 'entity_table' => 'civicrm_participant', - 'tax_amount' => 0, - 'entity_id' => '1', - ], - '1' => [ - 'price_field_id' => '2', - 'price_field_value_id' => '3', - 'label' => 'Price Field 2', - 'field_title' => 'Price Field 2', - 'qty' => '1', - 'unit_price' => '200.000000000', - 'line_total' => '200.000000000', - 'financial_type_id' => '4', - 'entity_table' => 'civicrm_participant', - 'tax_amount' => 0, - 'entity_id' => '1', - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testAddOrderForParticipant" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OrderTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Order/Delete.ex.php b/civicrm/api/v3/examples/Order/Delete.ex.php deleted file mode 100644 index 756db3d722..0000000000 --- a/civicrm/api/v3/examples/Order/Delete.ex.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Order.delete API. - * - * @return array - * API result array - */ -function order_delete_example() { - $params = [ - 'contribution_id' => 1, - ]; - - try { - $result = civicrm_api3('Order', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function order_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => 1, - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteOrder" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OrderTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Order/Get.ex.php b/civicrm/api/v3/examples/Order/Get.ex.php deleted file mode 100644 index abbca0d6b2..0000000000 --- a/civicrm/api/v3/examples/Order/Get.ex.php +++ /dev/null @@ -1,141 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Order.get API. - * - * @return array - * API result array - */ -function order_get_example() { - $params = [ - 'contribution_id' => 1, - ]; - - try { - $result = civicrm_api3('Order', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function order_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'contact_id' => '3', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'contribution_id' => '1', - 'currency' => 'USD', - 'contribution_recur_id' => '', - 'contribution_status_id' => '1', - 'contribution_campaign_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '2010-01-20 00:00:00', - 'non_deductible_amount' => '0.00', - 'total_amount' => '100.00', - 'fee_amount' => '0.00', - 'net_amount' => '100.00', - 'trxn_id' => '', - 'invoice_id' => '', - 'invoice_number' => '', - 'contribution_cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'contribution_source' => '', - 'amount_level' => '', - 'is_test' => 0, - 'is_pay_later' => 0, - 'contribution_check_number' => '', - 'financial_account_id' => '1', - 'accounting_code' => '4200', - 'campaign_id' => '', - 'contribution_campaign_title' => '', - 'financial_type_id' => '1', - 'contribution_note' => '', - 'contribution_batch' => '', - 'contribution_recur_status' => 'Completed', - 'payment_instrument' => 'Check', - 'contribution_status' => 'Completed', - 'financial_type' => 'Donation', - 'check_number' => '', - 'instrument_id' => '4', - 'cancel_date' => '', - 'id' => '1', - 'contribution_type_id' => '1', - 'line_items' => [ - '0' => [ - 'id' => '1', - 'entity_table' => 'civicrm_contribution', - 'entity_id' => '1', - 'contribution_id' => '1', - 'price_field_id' => '1', - 'label' => 'Contribution Amount', - 'qty' => '1.00', - 'unit_price' => '100.00', - 'line_total' => '100.00', - 'price_field_value_id' => '1', - 'financial_type_id' => '1', - 'non_deductible_amount' => '0.00', - 'tax_amount' => '0.00', - 'contribution_type_id' => '1', - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetOrder" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/OrderTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Participant/Create.ex.php b/civicrm/api/v3/examples/Participant/Create.ex.php deleted file mode 100644 index 16a7251ba6..0000000000 --- a/civicrm/api/v3/examples/Participant/Create.ex.php +++ /dev/null @@ -1,104 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Participant.create API. - * - * @return array - * API result array - */ -function participant_create_example() { - $params = [ - 'contact_id' => 4, - 'event_id' => 3, - 'status_id' => 1, - 'role_id' => 1, - 'register_date' => '2007-07-21 00:00:00', - 'source' => 'Online Event Registration: API Testing', - 'custom_1' => 'custom string', - ]; - - try { - $result = civicrm_api3('Participant', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '4' => [ - 'id' => '4', - 'contact_id' => '4', - 'event_id' => '3', - 'status_id' => '1', - 'role_id' => '1', - 'register_date' => '20070721000000', - 'source' => 'Online Event Registration: API Testing', - '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' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateWithCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Participant/Get.ex.php b/civicrm/api/v3/examples/Participant/Get.ex.php deleted file mode 100644 index 035406a6d0..0000000000 --- a/civicrm/api/v3/examples/Participant/Get.ex.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Participant.get API. - * - * @return array - * API result array - */ -function participant_get_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Participant', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'contact_id' => '4', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'event_id' => '6', - 'event_title' => 'Annual CiviCRM meet', - 'event_start_date' => '2013-07-29 00:00:00', - 'event_end_date' => '2013-08-04 00:00:00', - 'default_role_id' => '1', - 'participant_id' => '1', - 'participant_fee_level' => '', - 'participant_fee_amount' => '', - 'participant_fee_currency' => '', - 'event_type' => 'Conference', - 'participant_status_id' => '2', - 'participant_status' => 'Attended', - 'participant_role_id' => '1', - 'participant_role' => 'Attendee', - 'participant_register_date' => '2007-02-19 00:00:00', - 'participant_source' => 'Wimbeldon', - 'participant_note' => '', - 'participant_is_pay_later' => 0, - 'participant_is_test' => 0, - 'participant_registered_by_id' => '', - 'participant_discount_name' => '', - 'participant_campaign_id' => '', - 'id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetParamsAsIdOnly" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Participant/NestedDelete.ex.php b/civicrm/api/v3/examples/Participant/NestedDelete.ex.php deleted file mode 100644 index bf49461548..0000000000 --- a/civicrm/api/v3/examples/Participant/NestedDelete.ex.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Participant.get API. - * - * Criteria delete by nesting a GET & a DELETE. - * - * @return array - * API result array - */ -function participant_get_example() { - $params = [ - 'contact_id' => 6, - 'api.participant.delete' => 1, - ]; - - try { - $result = civicrm_api3('Participant', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '2' => [ - 'contact_id' => '6', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'event_id' => '40', - 'event_title' => 'Annual CiviCRM meet', - 'event_start_date' => '2013-07-29 00:00:00', - 'event_end_date' => '2013-08-04 00:00:00', - 'default_role_id' => '1', - 'participant_id' => '2', - 'participant_fee_level' => '', - 'participant_fee_amount' => '', - 'participant_fee_currency' => '', - 'event_type' => 'Conference', - 'participant_status_id' => '2', - 'participant_status' => 'Attended', - 'participant_role_id' => '1', - 'participant_role' => 'Attendee', - 'participant_register_date' => '2007-02-19 00:00:00', - 'participant_source' => 'Wimbeldon', - 'participant_note' => '', - 'participant_is_pay_later' => 0, - 'participant_is_test' => 0, - 'participant_registered_by_id' => '1', - 'participant_discount_name' => '', - 'participant_campaign_id' => '', - 'id' => '2', - 'api.participant.delete' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ], - ], - '3' => [ - 'contact_id' => '6', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'event_id' => '40', - 'event_title' => 'Annual CiviCRM meet', - 'event_start_date' => '2013-07-29 00:00:00', - 'event_end_date' => '2013-08-04 00:00:00', - 'default_role_id' => '1', - 'participant_id' => '3', - 'participant_fee_level' => '', - 'participant_fee_amount' => '', - 'participant_fee_currency' => '', - 'event_type' => 'Conference', - 'participant_status_id' => '2', - 'participant_status' => 'Attended', - 'participant_role_id' => '1', - 'participant_role' => 'Attendee', - 'participant_register_date' => '2007-02-19 00:00:00', - 'participant_source' => 'Wimbeldon', - 'participant_note' => '', - 'participant_is_pay_later' => 0, - 'participant_is_test' => 0, - 'participant_registered_by_id' => '', - 'participant_discount_name' => '', - 'participant_campaign_id' => '', - 'id' => '3', - 'api.participant.delete' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testNestedDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Participant/NestedEventGet.ex.php b/civicrm/api/v3/examples/Participant/NestedEventGet.ex.php deleted file mode 100644 index 921653f471..0000000000 --- a/civicrm/api/v3/examples/Participant/NestedEventGet.ex.php +++ /dev/null @@ -1,155 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Participant.get API. - * - * Demonstrates use of nested get to fetch event data with participant records. - * - * @return array - * API result array - */ -function participant_get_example() { - $params = [ - 'id' => 1, - 'api.event.get' => 1, - ]; - - try { - $result = civicrm_api3('Participant', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'contact_id' => '4', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'event_id' => '7', - 'event_title' => 'Annual CiviCRM meet', - 'event_start_date' => '2013-07-29 00:00:00', - 'event_end_date' => '2013-08-04 00:00:00', - 'default_role_id' => '1', - 'participant_id' => '1', - 'participant_fee_level' => '', - 'participant_fee_amount' => '', - 'participant_fee_currency' => '', - 'event_type' => 'Conference', - 'participant_status_id' => '2', - 'participant_status' => 'Attended', - 'participant_role_id' => '1', - 'participant_role' => 'Attendee', - 'participant_register_date' => '2007-02-19 00:00:00', - 'participant_source' => 'Wimbeldon', - 'participant_note' => '', - 'participant_is_pay_later' => 0, - 'participant_is_test' => 0, - 'participant_registered_by_id' => '', - 'participant_discount_name' => '', - 'participant_campaign_id' => '', - 'id' => '1', - 'api.event.get' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 7, - 'values' => [ - '0' => [ - 'id' => '7', - 'title' => 'Annual CiviCRM meet', - 'event_title' => 'Annual CiviCRM meet', - 'summary' => 'If you have any CiviCRM related issues or want to track where CiviCRM is heading, Sign up now', - 'description' => 'This event is intended to give brief idea about progress of CiviCRM and giving solutions to common user issues', - 'event_description' => 'This event is intended to give brief idea about progress of CiviCRM and giving solutions to common user issues', - 'event_type_id' => '1', - 'is_public' => '1', - 'start_date' => '2013-07-29 00:00:00', - 'event_start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'event_end_date' => '2013-08-04 00:00:00', - 'is_online_registration' => '1', - 'registration_start_date' => '2008-06-01 00:00:00', - 'registration_end_date' => '2008-10-15 00:00:00', - 'max_participants' => '100', - 'event_full_text' => 'Sorry! We are already full', - 'is_monetary' => 0, - 'is_map' => 0, - 'is_active' => '1', - 'is_show_location' => 0, - 'default_role_id' => '1', - 'is_email_confirm' => '1', - 'is_pay_later' => 0, - 'is_partial_payment' => 0, - 'is_multiple_registrations' => 0, - 'max_additional_participants' => 0, - 'allow_same_participant_emails' => 0, - 'allow_selfcancelxfer' => 0, - 'selfcancelxfer_time' => 0, - 'is_template' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'is_share' => '1', - 'is_confirm_enabled' => '1', - 'is_billing_required' => 0, - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetNestedEventGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ParticipantPayment/Create.ex.php b/civicrm/api/v3/examples/ParticipantPayment/Create.ex.php deleted file mode 100644 index e94e5914c3..0000000000 --- a/civicrm/api/v3/examples/ParticipantPayment/Create.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ParticipantPayment.create API. - * - * @return array - * API result array - */ -function participant_payment_create_example() { - $params = [ - 'participant_id' => 1, - 'contribution_id' => 1, - ]; - - try { - $result = civicrm_api3('ParticipantPayment', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_payment_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'participant_id' => '1', - 'contribution_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPaymentCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantPaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ParticipantPayment/Delete.ex.php b/civicrm/api/v3/examples/ParticipantPayment/Delete.ex.php deleted file mode 100644 index 0068ea6d24..0000000000 --- a/civicrm/api/v3/examples/ParticipantPayment/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ParticipantPayment.delete API. - * - * @return array - * API result array - */ -function participant_payment_delete_example() { - $params = [ - 'id' => 6, - ]; - - try { - $result = civicrm_api3('ParticipantPayment', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_payment_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPaymentDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantPaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ParticipantPayment/Get.ex.php b/civicrm/api/v3/examples/ParticipantPayment/Get.ex.php deleted file mode 100644 index 52c297b5ab..0000000000 --- a/civicrm/api/v3/examples/ParticipantPayment/Get.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ParticipantPayment.get API. - * - * @return array - * API result array - */ -function participant_payment_get_example() { - $params = [ - 'participant_id' => 32, - 'contribution_id' => 7, - ]; - - try { - $result = civicrm_api3('ParticipantPayment', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_payment_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 7, - 'values' => [ - '7' => [ - 'id' => '7', - 'participant_id' => '32', - 'contribution_id' => '7', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantPaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ParticipantStatusType/Create.ex.php b/civicrm/api/v3/examples/ParticipantStatusType/Create.ex.php deleted file mode 100644 index 4a5f419947..0000000000 --- a/civicrm/api/v3/examples/ParticipantStatusType/Create.ex.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ParticipantStatusType.create API. - * - * @return array - * API result array - */ -function participant_status_type_create_example() { - $params = [ - 'name' => 'test status', - 'label' => 'I am a test', - 'class' => 'Positive', - 'is_reserved' => 0, - 'is_active' => 1, - 'is_counted' => 1, - 'visibility_id' => 1, - 'weight' => 10, - ]; - - try { - $result = civicrm_api3('ParticipantStatusType', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_status_type_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 18, - 'values' => [ - '18' => [ - 'id' => '18', - 'name' => 'test status', - 'label' => 'I am a test', - 'class' => 'Positive', - 'is_reserved' => 0, - 'is_active' => '1', - 'is_counted' => '1', - 'weight' => '10', - 'visibility_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetParticipantStatusType" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantStatusTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ParticipantStatusType/Delete.ex.php b/civicrm/api/v3/examples/ParticipantStatusType/Delete.ex.php deleted file mode 100644 index 9cb675fbfd..0000000000 --- a/civicrm/api/v3/examples/ParticipantStatusType/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ParticipantStatusType.delete API. - * - * @return array - * API result array - */ -function participant_status_type_delete_example() { - $params = [ - 'id' => 19, - ]; - - try { - $result = civicrm_api3('ParticipantStatusType', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_status_type_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => TRUE, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteParticipantStatusType" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantStatusTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ParticipantStatusType/Get.ex.php b/civicrm/api/v3/examples/ParticipantStatusType/Get.ex.php deleted file mode 100644 index ccc0988064..0000000000 --- a/civicrm/api/v3/examples/ParticipantStatusType/Get.ex.php +++ /dev/null @@ -1,95 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ParticipantStatusType.get API. - * - * @return array - * API result array - */ -function participant_status_type_get_example() { - $params = [ - 'name' => 'test status', - 'label' => 'I am a test', - 'class' => 'Positive', - 'is_reserved' => 0, - 'is_active' => 1, - 'is_counted' => 1, - 'visibility_id' => 1, - 'weight' => 10, - ]; - - try { - $result = civicrm_api3('ParticipantStatusType', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function participant_status_type_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 18, - 'values' => [ - '18' => [ - 'id' => '18', - 'name' => 'test status', - 'label' => 'I am a test', - 'class' => 'Positive', - 'is_reserved' => 0, - 'is_active' => '1', - 'is_counted' => '1', - 'weight' => '10', - 'visibility_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetParticipantStatusType" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ParticipantStatusTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Payment/Cancel.ex.php b/civicrm/api/v3/examples/Payment/Cancel.ex.php deleted file mode 100644 index 323aaad977..0000000000 --- a/civicrm/api/v3/examples/Payment/Cancel.ex.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Payment.cancel API. - * - * @return array - * API result array - */ -function payment_cancel_example() { - $params = [ - 'id' => 1, - 'check_permissions' => TRUE, - ]; - - try { - $result = civicrm_api3('Payment', 'cancel', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_cancel_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'from_financial_account_id' => '7', - 'to_financial_account_id' => '6', - 'trxn_date' => '20220117131002', - 'total_amount' => '-150', - 'fee_amount' => 0, - 'net_amount' => '-150', - 'currency' => 'USD', - 'is_payment' => '1', - 'trxn_id' => '', - 'trxn_result_code' => '', - 'status_id' => '7', - 'payment_processor_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCancelPayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Payment/Create.ex.php b/civicrm/api/v3/examples/Payment/Create.ex.php deleted file mode 100644 index c1b14fd8e0..0000000000 --- a/civicrm/api/v3/examples/Payment/Create.ex.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Payment.create API. - * - * @return array - * API result array - */ -function payment_create_example() { - $params = [ - 'contribution_id' => 1, - 'total_amount' => 50, - ]; - - try { - $result = civicrm_api3('Payment', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'from_financial_account_id' => '7', - 'to_financial_account_id' => '6', - 'trxn_date' => '20220117130949', - 'total_amount' => '50', - 'fee_amount' => 0, - 'net_amount' => '50', - 'currency' => 'USD', - 'is_payment' => '1', - 'trxn_id' => '', - 'trxn_result_code' => '', - 'status_id' => '1', - 'payment_processor_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePaymentNoLineItems" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Payment/CreatePaymentWithLineItems.ex.php b/civicrm/api/v3/examples/Payment/CreatePaymentWithLineItems.ex.php deleted file mode 100644 index c611d3ca7a..0000000000 --- a/civicrm/api/v3/examples/Payment/CreatePaymentWithLineItems.ex.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Payment.create API. - * - * Payment with line item. - * - * @return array - * API result array - */ -function payment_create_example() { - $params = [ - 'contribution_id' => 1, - 'total_amount' => 50, - 'line_item' => [ - '0' => [ - '1' => 10, - ], - '1' => [ - '2' => 40, - ], - ], - ]; - - try { - $result = civicrm_api3('Payment', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'from_financial_account_id' => '7', - 'to_financial_account_id' => '6', - 'trxn_date' => '20220117130953', - 'total_amount' => '50', - 'fee_amount' => 0, - 'net_amount' => '50', - 'currency' => 'USD', - 'is_payment' => '1', - 'trxn_id' => '', - 'trxn_result_code' => '', - 'status_id' => '1', - 'payment_processor_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePaymentLineItems" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Payment/Delete.ex.php b/civicrm/api/v3/examples/Payment/Delete.ex.php deleted file mode 100644 index 63a7fc79ce..0000000000 --- a/civicrm/api/v3/examples/Payment/Delete.ex.php +++ /dev/null @@ -1,76 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Payment.delete API. - * - * @return array - * API result array - */ -function payment_delete_example() { - $params = [ - 'id' => '1', - 'check_permissions' => TRUE, - ]; - - try { - $result = civicrm_api3('Payment', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Payment/Get.ex.php b/civicrm/api/v3/examples/Payment/Get.ex.php deleted file mode 100644 index 7028841c0c..0000000000 --- a/civicrm/api/v3/examples/Payment/Get.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Payment.get API. - * - * @return array - * API result array - */ -function payment_get_example() { - $params = [ - 'contribution_id' => 1, - 'check_permissions' => TRUE, - ]; - - try { - $result = civicrm_api3('Payment', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'to_financial_account_id' => '6', - 'trxn_date' => '2010-01-20 00:00:00', - 'total_amount' => '100.00', - 'fee_amount' => '0.00', - 'net_amount' => '100.00', - 'currency' => 'USD', - 'is_payment' => '1', - 'trxn_id' => '23456', - 'status_id' => '1', - 'payment_instrument_id' => '4', - 'contribution_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetPayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Payment/UpdatePayment.ex.php b/civicrm/api/v3/examples/Payment/UpdatePayment.ex.php deleted file mode 100644 index bd40516ee7..0000000000 --- a/civicrm/api/v3/examples/Payment/UpdatePayment.ex.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Payment.create API. - * - * Update Payment. - * - * @return array - * API result array - */ -function payment_create_example() { - $params = [ - 'contribution_id' => 1, - 'total_amount' => 100, - 'id' => 2, - 'check_permissions' => TRUE, - ]; - - try { - $result = civicrm_api3('Payment', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '4' => [ - 'id' => '4', - 'from_financial_account_id' => '7', - 'to_financial_account_id' => '6', - 'trxn_date' => '', - 'total_amount' => '100', - 'fee_amount' => 0, - 'net_amount' => '100', - 'currency' => 'USD', - 'is_payment' => '1', - 'trxn_id' => '', - 'trxn_result_code' => '', - 'status_id' => '1', - 'payment_processor_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUpdatePayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PaymentProcessor/Create.ex.php b/civicrm/api/v3/examples/PaymentProcessor/Create.ex.php deleted file mode 100644 index 84862dfc11..0000000000 --- a/civicrm/api/v3/examples/PaymentProcessor/Create.ex.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PaymentProcessor.create API. - * - * @return array - * API result array - */ -function payment_processor_create_example() { - $params = [ - 'name' => 'API Test PP', - 'title' => 'API Test PP', - 'payment_processor_type_id' => 1, - 'class_name' => 'CRM_Core_Payment_APITest', - 'is_recur' => 0, - 'domain_id' => 1, - ]; - - try { - $result = civicrm_api3('PaymentProcessor', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_processor_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'domain_id' => '1', - 'name' => 'API Test PP', - 'title' => '', - 'description' => '', - 'payment_processor_type_id' => '1', - 'is_active' => '1', - 'is_default' => 0, - 'is_test' => 0, - 'user_name' => '', - 'password' => '', - 'signature' => '', - 'url_site' => '', - 'url_api' => '', - 'url_recur' => '', - 'url_button' => '', - 'subject' => '', - 'class_name' => 'CRM_Core_Payment_APITest', - 'billing_mode' => '1', - 'is_recur' => 0, - 'payment_type' => '1', - 'payment_instrument_id' => '2', - 'accepted_credit_cards' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPaymentProcessorCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentProcessorTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PaymentProcessor/Delete.ex.php b/civicrm/api/v3/examples/PaymentProcessor/Delete.ex.php deleted file mode 100644 index 57fa4002a7..0000000000 --- a/civicrm/api/v3/examples/PaymentProcessor/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PaymentProcessor.delete API. - * - * @return array - * API result array - */ -function payment_processor_delete_example() { - $params = [ - 'id' => 5, - ]; - - try { - $result = civicrm_api3('PaymentProcessor', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_processor_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPaymentProcessorDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentProcessorTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PaymentProcessorType/Create.ex.php b/civicrm/api/v3/examples/PaymentProcessorType/Create.ex.php deleted file mode 100644 index b5a753c4d8..0000000000 --- a/civicrm/api/v3/examples/PaymentProcessorType/Create.ex.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PaymentProcessorType.create API. - * - * @return array - * API result array - */ -function payment_processor_type_create_example() { - $params = [ - 'sequential' => 1, - 'name' => 'API_Test_PP', - 'title' => 'API Test Payment Processor', - 'class_name' => 'CRM_Core_Payment_APITest', - 'billing_mode' => 'form', - 'is_recur' => 0, - ]; - - try { - $result = civicrm_api3('PaymentProcessorType', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_processor_type_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 10, - 'values' => [ - '0' => [ - 'id' => '10', - 'name' => 'API_Test_PP', - 'title' => 'API Test Payment Processor', - 'description' => '', - 'is_active' => '1', - 'is_default' => '', - 'user_name_label' => '', - 'password_label' => '', - 'signature_label' => '', - 'subject_label' => '', - 'class_name' => 'CRM_Core_Payment_APITest', - 'url_site_default' => '', - 'url_api_default' => '', - 'url_recur_default' => '', - 'url_button_default' => '', - 'url_site_test_default' => '', - 'url_api_test_default' => '', - 'url_recur_test_default' => '', - 'url_button_test_default' => '', - 'billing_mode' => '1', - 'is_recur' => 0, - 'payment_type' => '', - 'payment_instrument_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPaymentProcessorTypeCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentProcessorTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PaymentProcessorType/Delete.ex.php b/civicrm/api/v3/examples/PaymentProcessorType/Delete.ex.php deleted file mode 100644 index c1af30e58e..0000000000 --- a/civicrm/api/v3/examples/PaymentProcessorType/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PaymentProcessorType.delete API. - * - * @return array - * API result array - */ -function payment_processor_type_delete_example() { - $params = [ - 'id' => 13, - ]; - - try { - $result = civicrm_api3('PaymentProcessorType', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_processor_type_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => TRUE, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPaymentProcessorTypeDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentProcessorTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PaymentToken/Create.ex.php b/civicrm/api/v3/examples/PaymentToken/Create.ex.php deleted file mode 100644 index e16ea0be4e..0000000000 --- a/civicrm/api/v3/examples/PaymentToken/Create.ex.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PaymentToken.create API. - * - * Create a payment token - Note use of relative dates here:. - * @link http://www.php.net/manual/en/datetime.formats.relative.php. - * - * @return array - * API result array - */ -function payment_token_create_example() { - $params = [ - 'token' => 'fancy-token-xxxx', - 'contact_id' => 4, - 'created_id' => 4, - 'payment_processor_id' => 2, - ]; - - try { - $result = civicrm_api3('PaymentToken', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_token_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'contact_id' => '4', - 'payment_processor_id' => '2', - 'token' => 'fancy-token-xxxx', - 'created_date' => '2013-07-28 08:49:19', - 'created_id' => '4', - 'expiry_date' => '', - 'email' => '', - 'billing_first_name' => '', - 'billing_middle_name' => '', - 'billing_last_name' => '', - 'masked_account_number' => '', - 'ip_address' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePaymentToken" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTokenTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PaymentToken/Delete.ex.php b/civicrm/api/v3/examples/PaymentToken/Delete.ex.php deleted file mode 100644 index 9fa39c5d12..0000000000 --- a/civicrm/api/v3/examples/PaymentToken/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PaymentToken.delete API. - * - * @return array - * API result array - */ -function payment_token_delete_example() { - $params = [ - 'id' => 6, - ]; - - try { - $result = civicrm_api3('PaymentToken', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_token_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePaymentToken" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTokenTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PaymentToken/Get.ex.php b/civicrm/api/v3/examples/PaymentToken/Get.ex.php deleted file mode 100644 index 9995a23d74..0000000000 --- a/civicrm/api/v3/examples/PaymentToken/Get.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PaymentToken.get API. - * - * @return array - * API result array - */ -function payment_token_get_example() { - $params = [ - 'token' => 'fancy-token-xxxx', - 'contact_id' => 6, - 'created_id' => 6, - 'payment_processor_id' => 4, - ]; - - try { - $result = civicrm_api3('PaymentToken', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function payment_token_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '4' => [ - 'id' => '4', - 'contact_id' => '6', - 'payment_processor_id' => '4', - 'token' => 'fancy-token-xxxx', - 'created_date' => '2013-07-28 08:49:19', - 'created_id' => '6', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetPaymentToken" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PaymentTokenTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pcp/ChainedGetDelete.ex.php b/civicrm/api/v3/examples/Pcp/ChainedGetDelete.ex.php deleted file mode 100644 index 4901e25b00..0000000000 --- a/civicrm/api/v3/examples/Pcp/ChainedGetDelete.ex.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pcp.get API. - * - * Demonstrates get + delete in the same call. - * - * @return array - * API result array - */ -function pcp_get_example() { - $params = [ - 'title' => 'Pcp title', - 'api.Pcp.delete' => 1, - ]; - - try { - $result = civicrm_api3('Pcp', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pcp_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_id' => '1', - 'status_id' => 0, - 'title' => 'Pcp title', - 'page_id' => '1', - 'page_type' => 'contribute', - 'pcp_block_id' => '1', - 'is_thermometer' => 0, - 'is_honor_roll' => 0, - 'currency' => 'USD', - 'is_active' => 0, - 'is_notify' => 0, - 'api.Pcp.delete' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ], - ], - '5' => [ - 'id' => '5', - 'contact_id' => '1', - 'status_id' => 0, - 'title' => 'Pcp title', - 'page_id' => '1', - 'page_type' => 'contribute', - 'pcp_block_id' => '1', - 'is_thermometer' => 0, - 'is_honor_roll' => 0, - 'currency' => 'USD', - 'is_active' => 0, - 'is_notify' => 0, - 'api.Pcp.delete' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetPcpChainDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PcpTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pcp/Create.ex.php b/civicrm/api/v3/examples/Pcp/Create.ex.php deleted file mode 100644 index c7325b8bdb..0000000000 --- a/civicrm/api/v3/examples/Pcp/Create.ex.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pcp.create API. - * - * @return array - * API result array - */ -function pcp_create_example() { - $params = [ - 'title' => 'Pcp title', - 'contact_id' => 1, - 'page_id' => 1, - 'pcp_block_id' => 1, - ]; - - try { - $result = civicrm_api3('Pcp', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pcp_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '1', - 'status_id' => 0, - 'title' => 'Pcp title', - 'intro_text' => '', - 'page_text' => '', - 'donate_link_text' => '', - 'page_id' => '1', - 'page_type' => '', - 'pcp_block_id' => '1', - 'is_thermometer' => '', - 'is_honor_roll' => '', - 'goal_amount' => '', - 'currency' => 'USD', - 'is_active' => '', - 'is_notify' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePcp" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PcpTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pcp/Delete.ex.php b/civicrm/api/v3/examples/Pcp/Delete.ex.php deleted file mode 100644 index 380c889e8e..0000000000 --- a/civicrm/api/v3/examples/Pcp/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pcp.delete API. - * - * @return array - * API result array - */ -function pcp_delete_example() { - $params = [ - 'id' => 4, - ]; - - try { - $result = civicrm_api3('Pcp', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pcp_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePcp" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PcpTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pcp/Get.ex.php b/civicrm/api/v3/examples/Pcp/Get.ex.php deleted file mode 100644 index 5e87d5edd1..0000000000 --- a/civicrm/api/v3/examples/Pcp/Get.ex.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pcp.get API. - * - * @return array - * API result array - */ -function pcp_get_example() { - $params = [ - 'title' => 'Pcp title', - 'contact_id' => 1, - 'page_id' => 1, - 'pcp_block_id' => 1, - ]; - - try { - $result = civicrm_api3('Pcp', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pcp_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_id' => '1', - 'status_id' => 0, - 'title' => 'Pcp title', - 'page_id' => '1', - 'page_type' => 'contribute', - 'pcp_block_id' => '1', - 'is_thermometer' => 0, - 'is_honor_roll' => 0, - 'currency' => 'USD', - 'is_active' => 0, - 'is_notify' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetPcp" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PcpTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Phone/Create.ex.php b/civicrm/api/v3/examples/Phone/Create.ex.php deleted file mode 100644 index 3f236a9a13..0000000000 --- a/civicrm/api/v3/examples/Phone/Create.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Phone.create API. - * - * @return array - * API result array - */ -function phone_create_example() { - $params = [ - 'contact_id' => 5, - 'phone' => '(123) 456-7890', - 'is_primary' => TRUE, - 'phone_type_id' => 1, - ]; - - try { - $result = civicrm_api3('Phone', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function phone_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '4' => [ - 'id' => '4', - 'contact_id' => '5', - 'location_type_id' => '1', - 'is_primary' => '1', - 'is_billing' => '', - 'mobile_provider_id' => '', - 'phone' => '(123) 456-7890', - 'phone_ext' => '', - 'phone_numeric' => '', - 'phone_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePhoneDefaultLocation" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PhoneTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Phone/Delete.ex.php b/civicrm/api/v3/examples/Phone/Delete.ex.php deleted file mode 100644 index 19b8ef963d..0000000000 --- a/civicrm/api/v3/examples/Phone/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Phone.delete API. - * - * @return array - * API result array - */ -function phone_delete_example() { - $params = [ - 'id' => 6, - ]; - - try { - $result = civicrm_api3('Phone', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function phone_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePhone" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PhoneTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Phone/Get.ex.php b/civicrm/api/v3/examples/Phone/Get.ex.php deleted file mode 100644 index cce00a86f8..0000000000 --- a/civicrm/api/v3/examples/Phone/Get.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Phone.get API. - * - * @return array - * API result array - */ -function phone_get_example() { - $params = [ - 'contact_id' => 12, - 'phone' => '(123) 456-7890', - ]; - - try { - $result = civicrm_api3('Phone', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function phone_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 8, - 'values' => [ - '8' => [ - 'id' => '8', - 'contact_id' => '12', - 'location_type_id' => '15', - 'is_primary' => '1', - 'is_billing' => 0, - 'phone' => '(123) 456-7890', - 'phone_numeric' => '1234567890', - 'phone_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PhoneTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Phone/GetOptions.ex.php b/civicrm/api/v3/examples/Phone/GetOptions.ex.php deleted file mode 100644 index 8a2149d399..0000000000 --- a/civicrm/api/v3/examples/Phone/GetOptions.ex.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Phone.getoptions API. - * - * @return array - * API result array - */ -function phone_getoptions_example() { - $params = [ - 'field' => 'phone_type_id', - ]; - - try { - $result = civicrm_api3('Phone', 'getoptions', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function phone_getoptions_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'values' => [ - '1' => 'Phone', - '2' => 'Mobile', - '3' => 'Fax', - '4' => 'Pager', - '5' => 'Voicemail', - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPhoneType" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ConstantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pledge/Create.ex.php b/civicrm/api/v3/examples/Pledge/Create.ex.php deleted file mode 100644 index 1e7949f88b..0000000000 --- a/civicrm/api/v3/examples/Pledge/Create.ex.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pledge.create API. - * - * @return array - * API result array - */ -function pledge_create_example() { - $params = [ - 'contact_id' => 12, - 'pledge_create_date' => '20220117', - 'start_date' => '20220117', - 'scheduled_date' => '20220119', - 'amount' => '100', - 'pledge_status_id' => '2', - 'pledge_financial_type_id' => '1', - 'pledge_original_installment_amount' => 20, - 'frequency_interval' => 5, - 'frequency_unit' => 'year', - 'frequency_day' => 15, - 'installments' => 5, - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('Pledge', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'contact_id' => '12', - 'financial_type_id' => '1', - 'contribution_page_id' => '', - 'amount' => '100', - 'original_installment_amount' => '20', - 'currency' => 'USD', - 'frequency_unit' => 'year', - 'frequency_interval' => '5', - 'frequency_day' => '15', - 'installments' => '5', - 'start_date' => '2013-07-29 00:00:00', - 'create_date' => '20120130621222105', - 'acknowledge_date' => '', - 'modified_date' => '', - 'cancel_date' => '', - 'end_date' => '', - 'max_reminders' => '', - 'initial_reminder_day' => '', - 'additional_reminder_day' => '', - 'status_id' => '2', - 'is_test' => '', - 'campaign_id' => '', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePledge" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pledge/Delete.ex.php b/civicrm/api/v3/examples/Pledge/Delete.ex.php deleted file mode 100644 index 3b68b3f55e..0000000000 --- a/civicrm/api/v3/examples/Pledge/Delete.ex.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pledge.delete API. - * - * @return array - * API result array - */ -function pledge_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Pledge', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 'id', - 'values' => [ - 'id' => 1, - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePledgeUseID" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pledge/Get.ex.php b/civicrm/api/v3/examples/Pledge/Get.ex.php deleted file mode 100644 index 7f9d7708e7..0000000000 --- a/civicrm/api/v3/examples/Pledge/Get.ex.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pledge.get API. - * - * @return array - * API result array - */ -function pledge_get_example() { - $params = [ - 'pledge_id' => 1, - ]; - - try { - $result = civicrm_api3('Pledge', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'contact_id' => '5', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'pledge_id' => '1', - 'pledge_amount' => '100.00', - 'pledge_create_date' => '2022-01-17 00:00:00', - 'pledge_start_date' => '2022-01-17 00:00:00', - 'pledge_status' => 'Pending Label**', - 'pledge_total_paid' => '', - 'pledge_next_pay_date' => '2022-01-19 00:00:00', - 'pledge_next_pay_amount' => '20.00', - 'pledge_outstanding_amount' => '', - 'pledge_financial_type' => 'Donation', - 'pledge_contribution_page_id' => '', - 'pledge_frequency_interval' => '5', - 'pledge_frequency_unit' => 'year', - 'pledge_is_test' => 0, - 'pledge_campaign_id' => '', - 'pledge_currency' => 'USD', - 'id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetPledge" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Pledge/GetFilterHighDate.ex.php b/civicrm/api/v3/examples/Pledge/GetFilterHighDate.ex.php deleted file mode 100644 index 63bbc8c8e3..0000000000 --- a/civicrm/api/v3/examples/Pledge/GetFilterHighDate.ex.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Pledge.get API. - * - * demonstrates high date filter. - * - * @return array - * API result array - */ -function pledge_get_example() { - $params = [ - 'pledge_start_date_high' => '20220115131204', - ]; - - try { - $result = civicrm_api3('Pledge', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'contact_id' => '8', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'sort_name' => 'Anderson, Anthony', - 'display_name' => 'Mr. Anthony Anderson II', - 'pledge_id' => '2', - 'pledge_amount' => '100.00', - 'pledge_create_date' => '2022-01-17 00:00:00', - 'pledge_start_date' => '2021-03-05 00:00:00', - 'pledge_status' => 'Overdue', - 'pledge_total_paid' => '', - 'pledge_next_pay_date' => '2021-03-05 00:00:00', - 'pledge_next_pay_amount' => '20.00', - 'pledge_outstanding_amount' => '20.00', - 'pledge_financial_type' => 'Donation', - 'pledge_contribution_page_id' => '', - 'pledge_frequency_interval' => '5', - 'pledge_frequency_unit' => 'year', - 'pledge_is_test' => 0, - 'pledge_campaign_id' => '', - 'pledge_currency' => 'USD', - 'id' => '2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testPledgeGetReturnFilters" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PledgePayment/Create.ex.php b/civicrm/api/v3/examples/PledgePayment/Create.ex.php deleted file mode 100644 index 77fe0c235e..0000000000 --- a/civicrm/api/v3/examples/PledgePayment/Create.ex.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PledgePayment.create API. - * - * @return array - * API result array - */ -function pledge_payment_create_example() { - $params = [ - 'contact_id' => 3, - 'pledge_id' => 1, - 'contribution_id' => 1, - 'status_id' => 1, - 'actual_amount' => 20, - ]; - - try { - $result = civicrm_api3('PledgePayment', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_payment_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'pledge_id' => '1', - 'contribution_id' => '1', - 'scheduled_amount' => '', - 'actual_amount' => '20', - 'currency' => 'USD', - 'scheduled_date' => '', - 'reminder_date' => '', - 'reminder_count' => '', - 'status_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePledgePayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgePaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PledgePayment/Delete.ex.php b/civicrm/api/v3/examples/PledgePayment/Delete.ex.php deleted file mode 100644 index a457f28994..0000000000 --- a/civicrm/api/v3/examples/PledgePayment/Delete.ex.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PledgePayment.delete API. - * - * @return array - * API result array - */ -function pledge_payment_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('PledgePayment', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_payment_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 'id', - 'values' => [ - 'id' => 1, - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePledgePayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgePaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PledgePayment/Get.ex.php b/civicrm/api/v3/examples/PledgePayment/Get.ex.php deleted file mode 100644 index e125994b6e..0000000000 --- a/civicrm/api/v3/examples/PledgePayment/Get.ex.php +++ /dev/null @@ -1,119 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PledgePayment.get API. - * - * @return array - * API result array - */ -function pledge_payment_get_example() { - $params = []; - - try { - $result = civicrm_api3('PledgePayment', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_payment_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'values' => [ - '1' => [ - 'id' => '1', - 'pledge_id' => '1', - 'scheduled_amount' => '20.00', - 'currency' => 'USD', - 'scheduled_date' => '20130728085413', - 'reminder_count' => 0, - 'status_id' => '2', - ], - '2' => [ - 'id' => '2', - 'pledge_id' => '1', - 'scheduled_amount' => '20.00', - 'currency' => 'USD', - 'scheduled_date' => '20130728085413', - 'reminder_count' => 0, - 'status_id' => '2', - ], - '3' => [ - 'id' => '3', - 'pledge_id' => '1', - 'scheduled_amount' => '20.00', - 'currency' => 'USD', - 'scheduled_date' => '20130728085413', - 'reminder_count' => 0, - 'status_id' => '2', - ], - '4' => [ - 'id' => '4', - 'pledge_id' => '1', - 'scheduled_amount' => '20.00', - 'currency' => 'USD', - 'scheduled_date' => '20130728085413', - 'reminder_count' => 0, - 'status_id' => '2', - ], - '5' => [ - 'id' => '5', - 'pledge_id' => '1', - 'scheduled_amount' => '20.00', - 'currency' => 'USD', - 'scheduled_date' => '20130728085413', - 'reminder_count' => 0, - 'status_id' => '2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetPledgePayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgePaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PledgePayment/Update.ex.php b/civicrm/api/v3/examples/PledgePayment/Update.ex.php deleted file mode 100644 index 1a529a30b5..0000000000 --- a/civicrm/api/v3/examples/PledgePayment/Update.ex.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PledgePayment.update API. - * - * @return array - * API result array - */ -function pledge_payment_update_example() { - $params = [ - 'id' => 1, - 'status_id' => 1, - ]; - - try { - $result = civicrm_api3('PledgePayment', 'update', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function pledge_payment_update_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'pledge_id' => '1', - 'contribution_id' => '1', - 'scheduled_amount' => '20.00', - 'actual_amount' => '20.00', - 'currency' => 'USD', - 'scheduled_date' => '20130728085413', - 'reminder_date' => '', - 'reminder_count' => 0, - 'status_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUpdatePledgePayment" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PledgePaymentTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceField/Create.ex.php b/civicrm/api/v3/examples/PriceField/Create.ex.php deleted file mode 100644 index 55b46038c2..0000000000 --- a/civicrm/api/v3/examples/PriceField/Create.ex.php +++ /dev/null @@ -1,101 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceField.create API. - * - * @return array - * API result array - */ -function price_field_create_example() { - $params = [ - 'price_set_id' => 3, - 'name' => 'grassvariety', - 'label' => 'Grass Variety', - 'html_type' => 'Text', - 'is_enter_qty' => 1, - 'is_active' => 1, - ]; - - try { - $result = civicrm_api3('PriceField', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_field_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'price_set_id' => '3', - 'name' => 'grassvariety', - 'label' => 'Grass Variety', - 'html_type' => 'Text', - 'is_enter_qty' => '1', - 'help_pre' => '', - 'help_post' => '', - 'weight' => '', - 'is_display_amounts' => '', - 'options_per_line' => '', - 'is_active' => '1', - 'is_required' => '', - 'active_on' => '', - 'expire_on' => '', - 'javascript' => '', - 'visibility_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePriceField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceField/Delete.ex.php b/civicrm/api/v3/examples/PriceField/Delete.ex.php deleted file mode 100644 index 050116d70a..0000000000 --- a/civicrm/api/v3/examples/PriceField/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceField.delete API. - * - * @return array - * API result array - */ -function price_field_delete_example() { - $params = [ - 'id' => 6, - ]; - - try { - $result = civicrm_api3('PriceField', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_field_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePriceField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceField/Get.ex.php b/civicrm/api/v3/examples/PriceField/Get.ex.php deleted file mode 100644 index 1be17d8f0d..0000000000 --- a/civicrm/api/v3/examples/PriceField/Get.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceField.get API. - * - * @return array - * API result array - */ -function price_field_get_example() { - $params = [ - 'name' => 'contribution_amount', - ]; - - try { - $result = civicrm_api3('PriceField', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_field_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'price_set_id' => '1', - 'name' => 'contribution_amount', - 'label' => 'Contribution Amount', - 'html_type' => 'Text', - 'is_enter_qty' => 0, - 'weight' => '1', - 'is_display_amounts' => '1', - 'options_per_line' => '1', - 'is_active' => '1', - 'is_required' => '1', - 'visibility_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetBasicPriceField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceFieldValue/Create.ex.php b/civicrm/api/v3/examples/PriceFieldValue/Create.ex.php deleted file mode 100644 index 2231e10ab9..0000000000 --- a/civicrm/api/v3/examples/PriceFieldValue/Create.ex.php +++ /dev/null @@ -1,105 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceFieldValue.create API. - * - * @return array - * API result array - */ -function price_field_value_create_example() { - $params = [ - 'price_field_id' => 13, - 'membership_type_id' => 5, - 'name' => 'memType1', - 'label' => 'memType1', - 'amount' => 90, - 'membership_num_terms' => 2, - 'is_active' => 1, - 'financial_type_id' => 2, - ]; - - try { - $result = civicrm_api3('PriceFieldValue', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_field_value_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 10, - 'values' => [ - '10' => [ - 'id' => '10', - 'price_field_id' => '13', - 'name' => 'memType1', - 'label' => 'memType1', - 'description' => '', - 'help_pre' => '', - 'help_post' => '', - 'amount' => '90', - 'count' => '', - 'max_value' => '', - 'weight' => '1', - 'membership_type_id' => '5', - 'membership_num_terms' => '2', - 'is_default' => '', - 'is_active' => '1', - 'financial_type_id' => '2', - 'non_deductible_amount' => '', - 'visibility_id' => '', - 'contribution_type_id' => '2', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreatePriceFieldValuewithMultipleTerms" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceFieldValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceFieldValue/Delete.ex.php b/civicrm/api/v3/examples/PriceFieldValue/Delete.ex.php deleted file mode 100644 index cc5ae1d553..0000000000 --- a/civicrm/api/v3/examples/PriceFieldValue/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceFieldValue.delete API. - * - * @return array - * API result array - */ -function price_field_value_delete_example() { - $params = [ - 'id' => 7, - ]; - - try { - $result = civicrm_api3('PriceFieldValue', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_field_value_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePriceFieldValue" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceFieldValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceFieldValue/Get.ex.php b/civicrm/api/v3/examples/PriceFieldValue/Get.ex.php deleted file mode 100644 index 174c60b102..0000000000 --- a/civicrm/api/v3/examples/PriceFieldValue/Get.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceFieldValue.get API. - * - * @return array - * API result array - */ -function price_field_value_get_example() { - $params = [ - 'name' => 'contribution_amount', - ]; - - try { - $result = civicrm_api3('PriceFieldValue', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_field_value_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'price_field_id' => '1', - 'name' => 'contribution_amount', - 'label' => 'Contribution Amount', - 'amount' => '1.000000000', - 'weight' => '1', - 'is_default' => 0, - 'is_active' => '1', - 'financial_type_id' => '1', - 'non_deductible_amount' => '0.00', - 'visibility_id' => '1', - 'contribution_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetBasicPriceFieldValue" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceFieldValueTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceSet/Create.ex.php b/civicrm/api/v3/examples/PriceSet/Create.ex.php deleted file mode 100644 index a87d608fd6..0000000000 --- a/civicrm/api/v3/examples/PriceSet/Create.ex.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceSet.create API. - * - * @return array - * API result array - */ -function price_set_create_example() { - $params = [ - 'entity_table' => 'civicrm_event', - 'entity_id' => 1, - 'name' => 'event price', - 'title' => 'event price', - 'extends' => 1, - ]; - - try { - $result = civicrm_api3('PriceSet', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_set_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 6, - 'values' => [ - '6' => [ - 'id' => '6', - 'domain_id' => '', - 'name' => 'event price', - 'title' => 'event price', - 'is_active' => '', - 'help_pre' => '', - 'help_post' => '', - 'javascript' => '', - 'extends' => '1', - 'financial_type_id' => '', - 'is_quick_config' => '', - 'is_reserved' => '', - 'min_amount' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testEventPriceSet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceSetTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceSet/Delete.ex.php b/civicrm/api/v3/examples/PriceSet/Delete.ex.php deleted file mode 100644 index 6e96a460ae..0000000000 --- a/civicrm/api/v3/examples/PriceSet/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceSet.delete API. - * - * @return array - * API result array - */ -function price_set_delete_example() { - $params = [ - 'id' => 7, - ]; - - try { - $result = civicrm_api3('PriceSet', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_set_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeletePriceSet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceSetTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/PriceSet/Get.ex.php b/civicrm/api/v3/examples/PriceSet/Get.ex.php deleted file mode 100644 index 69f8546942..0000000000 --- a/civicrm/api/v3/examples/PriceSet/Get.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the PriceSet.get API. - * - * @return array - * API result array - */ -function price_set_get_example() { - $params = [ - 'name' => 'default_contribution_amount', - ]; - - try { - $result = civicrm_api3('PriceSet', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function price_set_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'name' => 'default_contribution_amount', - 'title' => 'Contribution Amount', - 'is_active' => '1', - 'extends' => '2', - 'is_quick_config' => '1', - 'is_reserved' => '1', - 'min_amount' => '0.00', - 'entity' => [], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetBasicPriceSet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/PriceSetTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Profile/Apply.ex.php b/civicrm/api/v3/examples/Profile/Apply.ex.php deleted file mode 100644 index abd71e114c..0000000000 --- a/civicrm/api/v3/examples/Profile/Apply.ex.php +++ /dev/null @@ -1,114 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Profile.apply API. - * - * @return array - * API result array - */ -function profile_apply_example() { - $params = [ - 'profile_id' => 31, - 'contact_id' => 5, - 'first_name' => 'abc2', - 'last_name' => 'xyz2', - 'email-Primary' => 'abc2.xyz2@gmail.com', - 'phone-1-1' => '022 321 826', - 'country-1' => '1013', - 'state_province-1' => '1000', - ]; - - try { - $result = civicrm_api3('Profile', 'apply', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function profile_apply_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 11, - 'values' => [ - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'contact_id' => 5, - 'version' => 3, - 'debug' => 1, - 'profile_id' => 31, - 'first_name' => 'abc2', - 'last_name' => 'xyz2', - 'email' => [ - '1' => [ - 'location_type_id' => '1', - 'is_primary' => 1, - 'email' => 'abc2.xyz2@gmail.com', - ], - ], - 'phone' => [ - '2' => [ - 'location_type_id' => '1', - 'is_primary' => 1, - 'phone_type_id' => '1', - 'phone' => '022 321 826', - ], - ], - 'address' => [ - '1' => [ - 'location_type_id' => '1', - 'is_primary' => 1, - 'country_id' => '1013', - 'state_province_id' => '1000', - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testProfileApply" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ProfileTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Profile/Get.ex.php b/civicrm/api/v3/examples/Profile/Get.ex.php deleted file mode 100644 index c67491aa48..0000000000 --- a/civicrm/api/v3/examples/Profile/Get.ex.php +++ /dev/null @@ -1,112 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Profile.get API. - * - * @return array - * API result array - */ -function profile_get_example() { - $params = [ - 'profile_id' => [ - '0' => 16, - '1' => 1, - '2' => 'Billing', - ], - 'contact_id' => 5, - ]; - - try { - $result = civicrm_api3('Profile', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function profile_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 3, - 'values' => [ - '16' => [ - 'postal_code-1' => '90210', - 'state_province-1' => '1021', - 'country-1' => '1228', - 'phone-1-1' => '021 512 755', - 'email-Primary' => 'abc1.xyz1@yahoo.com', - 'last_name' => 'xyz1', - 'first_name' => 'abc1', - 'email-primary' => 'abc1.xyz1@yahoo.com', - ], - '1' => [ - 'first_name' => 'abc1', - 'last_name' => 'xyz1', - 'street_address-1' => '5 Saint Helier St', - 'city-1' => 'Gotham City', - 'postal_code-1' => '90210', - 'country-1' => '1228', - 'state_province-1' => '1021', - ], - 'Billing' => [ - 'billing_first_name' => 'abc1', - 'billing_middle_name' => 'J.', - 'billing_last_name' => 'xyz1', - 'billing_street_address-5' => '5 Saint Helier St', - 'billing_city-5' => 'Gotham City', - 'billing_state_province_id-5' => '1021', - 'billing_country_id-5' => '1228', - 'billing_postal_code-5' => '90210', - 'billing-email-5' => 'abc1.xyz1@yahoo.com', - 'email-5' => 'abc1.xyz1@yahoo.com', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testProfileGetMultiple" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ProfileTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Profile/GetFields.ex.php b/civicrm/api/v3/examples/Profile/GetFields.ex.php deleted file mode 100644 index 79902a2704..0000000000 --- a/civicrm/api/v3/examples/Profile/GetFields.ex.php +++ /dev/null @@ -1,343 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Profile.getfields API. - * - * demonstrates retrieving profile fields passing in an id. - * - * @return array - * API result array - */ -function profile_getfields_example() { - $params = [ - 'action' => 'submit', - 'profile_id' => 23, - ]; - - try { - $result = civicrm_api3('Profile', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function profile_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 9, - 'values' => [ - 'custom_1' => [ - 'id' => '1', - 'label' => '_addCustomFieldToProfile', - 'headerPattern' => '//', - 'title' => 'first_name', - 'custom_field_id' => '1', - 'groupTitle' => '_addCustomFieldToProfile', - 'data_type' => 'String', - 'name' => 'custom_1', - 'type' => 2, - 'html_type' => 'Text', - 'default_value' => 'defaultValue', - 'text_length' => '', - 'options_per_line' => '', - 'custom_group_id' => '1', - 'extends' => 'Contact', - 'is_search_range' => 0, - 'extends_entity_column_value' => '', - 'extends_entity_column_id' => '', - 'is_view' => 0, - 'is_multiple' => 0, - 'option_group_id' => '', - 'date_format' => '', - 'time_format' => '', - 'is_required' => 0, - 'table_name' => 'civicrm_value__addcustomfie_1', - 'column_name' => '_addcustomfieldtoprofile_1', - 'serialize' => 0, - 'where' => 'civicrm_value__addcustomfie_1._addcustomfieldtoprofile_1', - 'extends_table' => 'civicrm_contact', - 'search_table' => 'contact_a', - 'api.required' => '1', - 'help_pre' => '', - 'help_post' => '', - 'entity' => 'contact', - 'weight' => '1', - 'api.aliases' => [], - ], - 'postal_code-1' => [ - 'name' => 'postal_code', - 'type' => 2, - 'title' => 'State Province', - 'description' => 'Store both US (zip5) AND international postal codes. App is responsible for country/region appropriate validation.', - 'maxlength' => 64, - 'size' => 6, - 'import' => TRUE, - 'where' => 'civicrm_address.postal_code', - 'headerPattern' => '/postal|zip/i', - 'dataPattern' => '/\\d?\\d{4}(-\\d{4})?/', - 'export' => TRUE, - 'table_name' => 'civicrm_address', - 'entity' => 'address', - 'bao' => 'CRM_Core_BAO_Address', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 64, - 'size' => 6, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => 0, - 'help_pre' => '', - 'help_post' => '', - 'weight' => '2', - 'api.aliases' => [], - ], - 'state_province-1' => [ - 'name' => 'state_province_id', - 'type' => 1, - 'title' => 'State Province', - 'description' => 'Which State_Province does this address belong to.', - 'where' => 'civicrm_address.state_province_id', - 'table_name' => 'civicrm_address', - 'entity' => 'address', - 'bao' => 'CRM_Core_BAO_Address', - 'localizable' => 0, - 'localize_context' => 'province', - 'FKClassName' => 'CRM_Core_DAO_StateProvince', - 'html' => [ - 'type' => 'ChainSelect', - 'label' => 'State/Province', - 'controlField' => 'country_id', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'table' => 'civicrm_state_province', - 'keyColumn' => 'id', - 'labelColumn' => 'name', - 'abbrColumn' => 'abbreviation', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'FKApiName' => 'StateProvince', - 'api.required' => '1', - 'help_pre' => '', - 'help_post' => '', - 'weight' => '3', - 'api.aliases' => [], - ], - 'country-1' => [ - 'name' => 'country_id', - 'type' => 1, - 'title' => 'Country', - 'description' => 'Which Country does this address belong to.', - 'where' => 'civicrm_address.country_id', - 'table_name' => 'civicrm_address', - 'entity' => 'address', - 'bao' => 'CRM_Core_BAO_Address', - 'localizable' => 0, - 'localize_context' => 'country', - 'FKClassName' => 'CRM_Core_DAO_Country', - 'html' => [ - 'type' => 'Select', - 'label' => 'Country', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'table' => 'civicrm_country', - 'keyColumn' => 'id', - 'labelColumn' => 'name', - 'nameColumn' => 'iso_code', - 'abbrColumn' => 'iso_code', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'FKApiName' => 'Country', - 'api.required' => '1', - 'help_pre' => '', - 'help_post' => '', - 'weight' => '4', - 'api.aliases' => [], - ], - 'phone-1-1' => [ - 'name' => 'phone', - 'type' => 2, - 'title' => 'Phone', - 'description' => 'Complete phone number.', - 'maxlength' => 32, - 'size' => 20, - 'import' => TRUE, - 'where' => 'civicrm_phone.phone', - 'headerPattern' => '/phone/i', - 'dataPattern' => '/^[\\d\\(\\)\\-\\.\\s]+$/', - 'export' => TRUE, - 'table_name' => 'civicrm_phone', - 'entity' => 'phone', - 'bao' => 'CRM_Core_BAO_Phone', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Phone', - 'maxlength' => 32, - 'size' => 20, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => '1', - 'help_pre' => '', - 'help_post' => '', - 'weight' => '5', - 'api.aliases' => [], - ], - 'email-primary' => [ - 'name' => 'email', - 'type' => 2, - 'title' => 'Email', - 'description' => 'Email address', - 'maxlength' => 254, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_email.email', - 'headerPattern' => '/e.?mail/i', - 'dataPattern' => '/^[a-zA-Z][\\w\\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\\w\\.-]*[a-zA-Z0-9]\\.[a-zA-Z][a-zA-Z\\.]*[a-zA-Z]$/', - 'export' => TRUE, - 'rule' => 'email', - 'table_name' => 'civicrm_email', - 'entity' => 'email', - 'bao' => 'CRM_Core_BAO_Email', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 254, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => '1', - 'help_pre' => '', - 'help_post' => '', - 'weight' => '6', - 'api.aliases' => [ - '0' => 'email-Primary', - ], - ], - 'last_name' => [ - 'name' => 'last_name', - 'type' => 2, - 'title' => 'Last Name', - 'description' => 'Last Name.', - 'maxlength' => 64, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.last_name', - 'headerPattern' => '/^last|(l(ast\\s)?name)$/i', - 'dataPattern' => '/^\\w+(\\s\\w+)?+$/', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'Last Name', - 'maxlength' => 64, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => '1', - 'help_pre' => '', - 'help_post' => '', - 'weight' => '7', - 'api.aliases' => [], - ], - 'first_name' => [ - 'name' => 'first_name', - 'type' => 2, - 'title' => 'First Name', - 'description' => 'First Name.', - 'maxlength' => 64, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_contact.first_name', - 'headerPattern' => '/^first|(f(irst\\s)?name)$/i', - 'dataPattern' => '/^\\w+$/', - 'export' => TRUE, - 'contactType' => 'Individual', - 'table_name' => 'civicrm_contact', - 'entity' => 'contact', - 'bao' => 'CRM_Contact_BAO_Contact', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'label' => 'First Name', - 'maxlength' => 64, - 'size' => 30, - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => '1', - 'help_pre' => '', - 'help_post' => '', - 'weight' => '8', - 'api.aliases' => [], - ], - 'profile_id' => [ - 'api.required' => TRUE, - 'title' => 'Profile ID', - 'name' => 'profile_id', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetFields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ProfileTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Profile/Submit.ex.php b/civicrm/api/v3/examples/Profile/Submit.ex.php deleted file mode 100644 index 571118dfde..0000000000 --- a/civicrm/api/v3/examples/Profile/Submit.ex.php +++ /dev/null @@ -1,134 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Profile.submit API. - * - * @return array - * API result array - */ -function profile_submit_example() { - $params = [ - 'profile_id' => 25, - 'contact_id' => 5, - 'first_name' => 'abc2', - 'last_name' => 'xyz2', - 'email-primary' => 'abc2.xyz2@gmail.com', - 'phone-1-1' => '022 321 826', - 'country-1' => '1013', - 'state_province-1' => '1000', - ]; - - try { - $result = civicrm_api3('Profile', 'submit', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function profile_submit_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 5, - 'values' => [ - '5' => [ - 'id' => '5', - 'contact_type' => 'Individual', - 'contact_sub_type' => '', - 'do_not_email' => 0, - 'do_not_phone' => 0, - 'do_not_mail' => 0, - 'do_not_sms' => 0, - 'do_not_trade' => 0, - 'is_opt_out' => 0, - 'legal_identifier' => '', - 'external_identifier' => '', - 'sort_name' => 'xyz2, abc2', - 'display_name' => 'Mr. abc2 xyz2 II', - 'nick_name' => '', - 'legal_name' => '', - 'image_URL' => '', - 'preferred_communication_method' => '', - 'preferred_language' => 'en_US', - 'hash' => '67eac7789eaee00', - 'api_key' => '', - 'first_name' => 'abc2', - 'middle_name' => 'J.', - 'last_name' => 'xyz2', - 'prefix_id' => '3', - 'suffix_id' => '3', - 'formal_title' => '', - 'communication_style_id' => '1', - 'email_greeting_id' => '1', - 'email_greeting_custom' => '', - 'email_greeting_display' => 'Dear abc1', - 'postal_greeting_id' => '1', - 'postal_greeting_custom' => '', - 'postal_greeting_display' => 'Dear abc1', - 'addressee_id' => '1', - 'addressee_custom' => '', - 'addressee_display' => 'Mr. abc1 J. xyz1 II', - 'job_title' => '', - 'gender_id' => '', - 'birth_date' => '', - 'is_deceased' => 0, - 'deceased_date' => '', - 'household_name' => '', - 'primary_contact_id' => '', - 'organization_name' => '', - 'sic_code' => '', - 'user_unique_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testProfileSubmit" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ProfileTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/BetweenRelationshipType.ex.php b/civicrm/api/v3/examples/Relationship/BetweenRelationshipType.ex.php deleted file mode 100644 index 63c181afb4..0000000000 --- a/civicrm/api/v3/examples/Relationship/BetweenRelationshipType.ex.php +++ /dev/null @@ -1,113 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.get API. - * - * Demonstrates use of BETWEEN filter. - * - * @return array - * API result array - */ -function relationship_get_example() { - $params = [ - 'relationship_type_id' => [ - 'BETWEEN' => [ - '0' => 56, - '1' => 58, - ], - ], - ]; - - try { - $result = civicrm_api3('Relationship', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 3, - 'values' => [ - '2' => [ - 'id' => '2', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '56', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - '3' => [ - 'id' => '3', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '57', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - '4' => [ - 'id' => '4', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '58', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetTypeOperators" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/Create.ex.php b/civicrm/api/v3/examples/Relationship/Create.ex.php deleted file mode 100644 index 75124b5db7..0000000000 --- a/civicrm/api/v3/examples/Relationship/Create.ex.php +++ /dev/null @@ -1,96 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.create API. - * - * @return array - * API result array - */ -function relationship_create_example() { - $params = [ - 'contact_id_a' => 3, - 'contact_id_b' => 5, - 'relationship_type_id' => 26, - 'start_date' => '2010-10-30', - 'end_date' => '2010-12-30', - 'is_active' => 1, - 'note' => 'note', - ]; - - try { - $result = civicrm_api3('Relationship', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '26', - 'start_date' => '2013-07-29 00:00:00', - 'end_date' => '2013-08-04 00:00:00', - 'is_active' => '1', - 'description' => '', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - 'case_id' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testRelationshipCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/Delete.ex.php b/civicrm/api/v3/examples/Relationship/Delete.ex.php deleted file mode 100644 index 2aff8d4278..0000000000 --- a/civicrm/api/v3/examples/Relationship/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.delete API. - * - * @return array - * API result array - */ -function relationship_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Relationship', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 'Deleted relationship successfully', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testRelationshipDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/Get.ex.php b/civicrm/api/v3/examples/Relationship/Get.ex.php deleted file mode 100644 index f48b9c04e4..0000000000 --- a/civicrm/api/v3/examples/Relationship/Get.ex.php +++ /dev/null @@ -1,89 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.get API. - * - * @return array - * API result array - */ -function relationship_get_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('Relationship', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '33', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - 'custom_1' => 'custom string', - 'custom_1_1' => 'custom string', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetWithCustom" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/INRelationshipType.ex.php b/civicrm/api/v3/examples/Relationship/INRelationshipType.ex.php deleted file mode 100644 index eab2a8acbc..0000000000 --- a/civicrm/api/v3/examples/Relationship/INRelationshipType.ex.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.get API. - * - * Demonstrates use of IN filter. - * - * @return array - * API result array - */ -function relationship_get_example() { - $params = [ - 'relationship_type_id' => [ - 'IN' => [ - '0' => 56, - '1' => 57, - ], - ], - ]; - - try { - $result = civicrm_api3('Relationship', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '56', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - '3' => [ - 'id' => '3', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '57', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetTypeOperators" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/NotBetweenRelationshipType.ex.php b/civicrm/api/v3/examples/Relationship/NotBetweenRelationshipType.ex.php deleted file mode 100644 index c4e79bd809..0000000000 --- a/civicrm/api/v3/examples/Relationship/NotBetweenRelationshipType.ex.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.get API. - * - * Demonstrates use of Not BETWEEN filter. - * - * @return array - * API result array - */ -function relationship_get_example() { - $params = [ - 'relationship_type_id' => [ - 'NOT BETWEEN' => [ - '0' => 56, - '1' => 58, - ], - ], - ]; - - try { - $result = civicrm_api3('Relationship', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '55', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetTypeOperators" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/NotInRelationshipType.ex.php b/civicrm/api/v3/examples/Relationship/NotInRelationshipType.ex.php deleted file mode 100644 index 818472ecba..0000000000 --- a/civicrm/api/v3/examples/Relationship/NotInRelationshipType.ex.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.get API. - * - * Demonstrates use of NOT IN filter. - * - * @return array - * API result array - */ -function relationship_get_example() { - $params = [ - 'relationship_type_id' => [ - 'NOT IN' => [ - '0' => 56, - '1' => 57, - ], - ], - ]; - - try { - $result = civicrm_api3('Relationship', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '55', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - '4' => [ - 'id' => '4', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '58', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetTypeOperators" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Relationship/filterIsCurrent.ex.php b/civicrm/api/v3/examples/Relationship/filterIsCurrent.ex.php deleted file mode 100644 index 452e7005a4..0000000000 --- a/civicrm/api/v3/examples/Relationship/filterIsCurrent.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Relationship.get API. - * - * Demonstrates is_current filter. - * - * @return array - * API result array - */ -function relationship_get_example() { - $params = [ - 'filters' => [ - 'is_current' => 1, - ], - ]; - - try { - $result = civicrm_api3('Relationship', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'contact_id_a' => '3', - 'contact_id_b' => '5', - 'relationship_type_id' => '53', - 'start_date' => '2013-07-29 00:00:00', - 'is_active' => '1', - 'is_permission_a_b' => 0, - 'is_permission_b_a' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetIsCurrent" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/RelationshipType/Create.ex.php b/civicrm/api/v3/examples/RelationshipType/Create.ex.php deleted file mode 100644 index cfc602faf1..0000000000 --- a/civicrm/api/v3/examples/RelationshipType/Create.ex.php +++ /dev/null @@ -1,97 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the RelationshipType.create API. - * - * @return array - * API result array - */ -function relationship_type_create_example() { - $params = [ - 'name_a_b' => 'Relation 1 for relationship type create', - 'name_b_a' => 'Relation 2 for relationship type create', - 'contact_type_a' => 'Individual', - 'contact_type_b' => 'Organization', - 'is_reserved' => 1, - 'is_active' => 1, - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('RelationshipType', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_type_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'name_a_b' => 'Relation 1 for relationship type create', - 'label_a_b' => 'Relation 1 for relationship type create', - 'name_b_a' => 'Relation 2 for relationship type create', - 'label_b_a' => 'Relation 2 for relationship type create', - 'description' => '', - 'contact_type_a' => 'Individual', - 'contact_type_b' => 'Organization', - 'contact_sub_type_a' => '', - 'contact_sub_type_b' => '', - 'is_reserved' => '1', - 'is_active' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testRelationshipTypeCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/RelationshipType/Delete.ex.php b/civicrm/api/v3/examples/RelationshipType/Delete.ex.php deleted file mode 100644 index f4cddd5020..0000000000 --- a/civicrm/api/v3/examples/RelationshipType/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the RelationshipType.delete API. - * - * @return array - * API result array - */ -function relationship_type_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('RelationshipType', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function relationship_type_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testRelationshipTypeDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/RelationshipTypeTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ReportTemplate/Getrows.ex.php b/civicrm/api/v3/examples/ReportTemplate/Getrows.ex.php deleted file mode 100644 index d948f5019b..0000000000 --- a/civicrm/api/v3/examples/ReportTemplate/Getrows.ex.php +++ /dev/null @@ -1,153 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ReportTemplate.getrows API. - * - * Retrieve rows from a mailing opened report template. - * - * @return array - * API result array - */ -function report_template_getrows_example() { - $params = [ - 'report_id' => 'Mailing/opened', - 'options' => [ - 'metadata' => [ - '0' => 'labels', - '1' => 'title', - ], - ], - ]; - - try { - $result = civicrm_api3('ReportTemplate', 'getrows', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function report_template_getrows_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'values' => [ - '0' => [ - 'civicrm_contact_id' => '102', - 'civicrm_contact_sort_name' => 'One, Test', - 'civicrm_mailing_mailing_name' => 'Second Test Mailing Events', - 'civicrm_mailing_mailing_name_alias' => 'Second Test Mailing Events', - 'civicrm_mailing_mailing_subject' => 'Hello again, {contact.display_name}', - 'civicrm_mailing_event_opened_id' => '17', - 'civicrm_mailing_event_opened_time_stamp' => '2011-05-26 13:23:22', - 'class' => '', - 'civicrm_contact_sort_name_link' => '/index.php?q=civicrm/contact/view&reset=1&cid=102', - 'civicrm_contact_sort_name_hover' => 'View Contact details for this contact.', - ], - '1' => [ - 'civicrm_contact_id' => '109', - 'civicrm_contact_sort_name' => 'Five, Test', - 'civicrm_mailing_mailing_name' => 'First Mailing Events', - 'civicrm_mailing_mailing_name_alias' => 'First Mailing Events', - 'civicrm_mailing_mailing_subject' => 'Hello {contact.display_name}', - 'civicrm_mailing_event_opened_id' => '9', - 'civicrm_mailing_event_opened_time_stamp' => '2011-05-26 13:19:03', - 'class' => '', - 'civicrm_contact_sort_name_link' => '/index.php?q=civicrm/contact/view&reset=1&cid=109', - 'civicrm_contact_sort_name_hover' => 'View Contact details for this contact.', - ], - '2' => [ - 'civicrm_contact_id' => '110', - 'civicrm_contact_sort_name' => 'Six, Test', - 'civicrm_mailing_mailing_name' => 'First Mailing Events', - 'civicrm_mailing_mailing_name_alias' => 'First Mailing Events', - 'civicrm_mailing_mailing_subject' => 'Hello {contact.display_name}', - 'civicrm_mailing_event_opened_id' => '5', - 'civicrm_mailing_event_opened_time_stamp' => '2011-05-26 13:17:54', - 'class' => '', - 'civicrm_contact_sort_name_link' => '/index.php?q=civicrm/contact/view&reset=1&cid=110', - 'civicrm_contact_sort_name_hover' => 'View Contact details for this contact.', - ], - '3' => [ - 'civicrm_contact_id' => '111', - 'civicrm_contact_sort_name' => 'Seven, Test', - 'civicrm_mailing_mailing_name' => 'First Mailing Events', - 'civicrm_mailing_mailing_name_alias' => 'First Mailing Events', - 'civicrm_mailing_mailing_subject' => 'Hello {contact.display_name}', - 'civicrm_mailing_event_opened_id' => '15', - 'civicrm_mailing_event_opened_time_stamp' => '2011-05-26 13:20:59', - 'class' => '', - 'civicrm_contact_sort_name_link' => '/index.php?q=civicrm/contact/view&reset=1&cid=111', - 'civicrm_contact_sort_name_hover' => 'View Contact details for this contact.', - ], - '4' => [ - 'civicrm_contact_id' => '112', - 'civicrm_contact_sort_name' => 'Eight, Test', - 'civicrm_mailing_mailing_name' => 'First Mailing Events', - 'civicrm_mailing_mailing_name_alias' => 'First Mailing Events', - 'civicrm_mailing_mailing_subject' => 'Hello {contact.display_name}', - 'civicrm_mailing_event_opened_id' => '11', - 'civicrm_mailing_event_opened_time_stamp' => '2011-05-26 13:19:44', - 'class' => '', - 'civicrm_contact_sort_name_link' => '/index.php?q=civicrm/contact/view&reset=1&cid=112', - 'civicrm_contact_sort_name_hover' => 'View Contact details for this contact.', - ], - ], - 'metadata' => [ - 'title' => 'ERROR: Title is not Set', - 'labels' => [ - 'civicrm_contact_sort_name' => 'Contact Name', - 'civicrm_mailing_mailing_name' => 'Mailing Name', - 'civicrm_mailing_mailing_subject' => 'Mailing Subject', - 'civicrm_mailing_event_opened_time_stamp' => 'Open Date', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testReportTemplateGetRowsMailingUniqueOpened" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ReportTemplateTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/ReportTemplate/Getstatistics.ex.php b/civicrm/api/v3/examples/ReportTemplate/Getstatistics.ex.php deleted file mode 100644 index 59d83f26b5..0000000000 --- a/civicrm/api/v3/examples/ReportTemplate/Getstatistics.ex.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the ReportTemplate.getstatistics API. - * - * Get Statistics from a report (note there isn't much data to get in the test DB). - * - * @return array - * API result array - */ -function report_template_getstatistics_example() { - $params = [ - 'report_id' => 'contribute/deferredrevenue', - ]; - - try { - $result = civicrm_api3('ReportTemplate', 'getstatistics', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function report_template_getstatistics_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 3, - 'values' => [ - 'counts' => [ - 'rowCount' => [ - 'title' => 'Row(s) Listed', - 'value' => 0, - 'type' => 1, - ], - ], - 'groups' => [], - 'filters' => [], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testReportTemplateGetStatisticsAllReports" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/ReportTemplateTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/SavedSearch/Create.ex.php b/civicrm/api/v3/examples/SavedSearch/Create.ex.php deleted file mode 100644 index 517cdb1b19..0000000000 --- a/civicrm/api/v3/examples/SavedSearch/Create.ex.php +++ /dev/null @@ -1,142 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the SavedSearch.create API. - * - * @return array - * API result array - */ -function saved_search_create_example() { - $params = [ - 'expires_date' => '2021-08-08', - 'form_values' => [ - 'relation_type_id' => '6_a_b', - 'relation_target_name' => 'Default Organization', - ], - 'api.Group.create' => [ - 'name' => 'my_smartgroup', - 'title' => 'my smartgroup', - 'description' => 'Volunteers for the default organization', - 'saved_search_id' => '$value.id', - 'is_active' => 1, - 'visibility' => 'User and User Admin Only', - 'is_hidden' => 0, - 'is_reserved' => 0, - ], - ]; - - try { - $result = civicrm_api3('SavedSearch', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function saved_search_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'name' => '', - 'label' => '', - 'form_values' => [ - 'relation_type_id' => '6_a_b', - 'relation_target_name' => 'Default Organization', - ], - 'mapping_id' => '', - 'search_custom_id' => '', - 'api_entity' => '', - 'api_params' => '', - 'created_id' => '', - 'modified_id' => '', - 'expires_date' => '20210808000000', - 'created_date' => '', - 'modified_date' => '', - 'description' => '', - 'api.Group.create' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'name' => 'my_smartgroup', - 'title' => 'my smartgroup', - 'description' => 'Volunteers for the default organization', - 'source' => '', - 'saved_search_id' => '3', - 'is_active' => '1', - 'visibility' => 'User and User Admin Only', - 'where_clause' => '', - 'select_tables' => '', - 'where_tables' => '', - 'group_type' => '', - 'cache_date' => '', - 'refresh_date' => '', - 'parents' => '', - 'children' => '', - 'is_hidden' => 0, - 'is_reserved' => 0, - 'created_id' => '', - 'modified_id' => '', - 'frontend_title' => '', - 'frontend_description' => '', - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSavedSearchWithSmartGroup" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SavedSearchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/SavedSearch/Delete.ex.php b/civicrm/api/v3/examples/SavedSearch/Delete.ex.php deleted file mode 100644 index 7a09625346..0000000000 --- a/civicrm/api/v3/examples/SavedSearch/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the SavedSearch.delete API. - * - * @return array - * API result array - */ -function saved_search_delete_example() { - $params = [ - 'id' => 6, - ]; - - try { - $result = civicrm_api3('SavedSearch', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function saved_search_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteSavedSearch" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SavedSearchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/SavedSearch/Get.ex.php b/civicrm/api/v3/examples/SavedSearch/Get.ex.php deleted file mode 100644 index 9fef1a9e82..0000000000 --- a/civicrm/api/v3/examples/SavedSearch/Get.ex.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the SavedSearch.get API. - * - * @return array - * API result array - */ -function saved_search_get_example() { - $params = [ - 'id' => 2, - ]; - - try { - $result = civicrm_api3('SavedSearch', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function saved_search_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'form_values' => [ - 'relation_type_id' => '6_a_b', - 'relation_target_name' => 'Default Organization', - ], - 'expires_date' => '2021-08-08 00:00:00', - 'created_date' => '2013-07-28 08:49:19', - 'modified_date' => '2012-11-14 16:02:35', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateAndGetSavedSearch" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SavedSearchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/Create.ex.php b/civicrm/api/v3/examples/Setting/Create.ex.php deleted file mode 100644 index 8fffe7d5c3..0000000000 --- a/civicrm/api/v3/examples/Setting/Create.ex.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.create API. - * - * @return array - * API result array - */ -function setting_create_example() { - $params = [ - 'domain_id' => 21, - 'uniq_email_per_site' => 1, - ]; - - try { - $result = civicrm_api3('Setting', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 21, - 'values' => [ - '21' => [ - 'uniq_email_per_site' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSetting" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/CreateAllDomains.ex.php b/civicrm/api/v3/examples/Setting/CreateAllDomains.ex.php deleted file mode 100644 index 281f8e62b9..0000000000 --- a/civicrm/api/v3/examples/Setting/CreateAllDomains.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.create API. - * - * Shows setting a variable for all domains. - * - * @return array - * API result array - */ -function setting_create_example() { - $params = [ - 'domain_id' => 'all', - 'uniq_email_per_site' => 1, - ]; - - try { - $result = civicrm_api3('Setting', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 4, - 'values' => [ - '37' => [ - 'uniq_email_per_site' => '1', - ], - '38' => [ - 'uniq_email_per_site' => '1', - ], - '1' => [ - 'uniq_email_per_site' => '1', - ], - '2' => [ - 'uniq_email_per_site' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSettingMultipleDomains" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/CreateSettingCurrentDomain.ex.php b/civicrm/api/v3/examples/Setting/CreateSettingCurrentDomain.ex.php deleted file mode 100644 index 057ad5b4af..0000000000 --- a/civicrm/api/v3/examples/Setting/CreateSettingCurrentDomain.ex.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.create API. - * - * Shows setting a variable for a current domain. - * - * @return array - * API result array - */ -function setting_create_example() { - $params = [ - 'uniq_email_per_site' => 1, - ]; - - try { - $result = civicrm_api3('Setting', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'uniq_email_per_site' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSetting" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/CreateSpecifiedDomains.ex.php b/civicrm/api/v3/examples/Setting/CreateSpecifiedDomains.ex.php deleted file mode 100644 index 115f8b0b7c..0000000000 --- a/civicrm/api/v3/examples/Setting/CreateSpecifiedDomains.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.create API. - * - * Shows setting a variable for specified domains. - * - * @return array - * API result array - */ -function setting_create_example() { - $params = [ - 'domain_id' => [ - '0' => 1, - '1' => 38, - ], - 'uniq_email_per_site' => 0, - ]; - - try { - $result = civicrm_api3('Setting', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '1' => [ - 'uniq_email_per_site' => 0, - ], - '38' => [ - 'uniq_email_per_site' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSettingMultipleDomains" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/Get.ex.php b/civicrm/api/v3/examples/Setting/Get.ex.php deleted file mode 100644 index 6366789307..0000000000 --- a/civicrm/api/v3/examples/Setting/Get.ex.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.get API. - * - * @return array - * API result array - */ -function setting_get_example() { - $params = [ - 'domain_id' => 41, - 'return' => 'uniq_email_per_site', - ]; - - try { - $result = civicrm_api3('Setting', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 41, - 'values' => [ - '41' => [ - 'uniq_email_per_site' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetSetting" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/GetAllDomains.ex.php b/civicrm/api/v3/examples/Setting/GetAllDomains.ex.php deleted file mode 100644 index f4f545cfc1..0000000000 --- a/civicrm/api/v3/examples/Setting/GetAllDomains.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.get API. - * - * Shows getting a variable for all domains. - * - * @return array - * API result array - */ -function setting_get_example() { - $params = [ - 'domain_id' => 'all', - 'return' => 'uniq_email_per_site', - ]; - - try { - $result = civicrm_api3('Setting', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 4, - 'values' => [ - '37' => [ - 'uniq_email_per_site' => '1', - ], - '38' => [ - 'uniq_email_per_site' => '1', - ], - '1' => [ - 'uniq_email_per_site' => '1', - ], - '2' => [ - 'uniq_email_per_site' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSettingMultipleDomains" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/GetDefaults.ex.php b/civicrm/api/v3/examples/Setting/GetDefaults.ex.php deleted file mode 100644 index eaa1158e1f..0000000000 --- a/civicrm/api/v3/examples/Setting/GetDefaults.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.getdefaults API. - * - * Gets defaults setting a variable for a given domain - if no domain is set current is assumed. - * - * @return array - * API result array - */ -function setting_getdefaults_example() { - $params = [ - 'name' => 'address_format', - ]; - - try { - $result = civicrm_api3('Setting', 'getdefaults', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_getdefaults_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'address_format' => '{contact.address_name} -{contact.street_address} -{contact.supplemental_address_1} -{contact.supplemental_address_2} -{contact.supplemental_address_3} -{contact.city}{, }{contact.state_province}{ }{contact.postal_code} -{contact.country}', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetDefaults" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/GetFields.ex.php b/civicrm/api/v3/examples/Setting/GetFields.ex.php deleted file mode 100644 index 5a8e31280a..0000000000 --- a/civicrm/api/v3/examples/Setting/GetFields.ex.php +++ /dev/null @@ -1,3353 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.getfields API. - * - * Demonstrate return from getfields - see subfolder for variants. - * - * @return array - * API result array - */ -function setting_getfields_example() { - $params = []; - - try { - $result = civicrm_api3('Setting', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 195, - 'values' => [ - 'address_standardization_provider' => [ - 'group_name' => 'Address Preferences', - 'group' => 'address', - 'name' => 'address_standardization_provider', - 'type' => 'String', - 'html_type' => 'select', - 'default' => '', - 'add' => '4.1', - 'title' => 'Address Standardization Provider.', - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::addressProvider', - ], - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => 'CiviCRM includes an optional plugin for interfacing with the United States Postal Services (USPS) Address Standardization web service. You must register to use the USPS service at https://www.usps.com/business/web-tools-apis/address-information.htm. If you are approved, they will provide you with a User ID and the URL for the service. Plugins for other address standardization services may be available from 3rd party developers. If installed, they will be included in the drop-down below. ', - ], - 'address_standardization_userid' => [ - 'group_name' => 'Address Preferences', - 'group' => 'address', - 'name' => 'address_standardization_userid', - 'type' => 'String', - 'html_type' => 'text', - 'default' => '', - 'add' => '4.1', - 'title' => 'Provider service user ID', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'address_standardization_url' => [ - 'group_name' => 'Address Preferences', - 'group' => 'address', - 'name' => 'address_standardization_url', - 'type' => 'Text', - 'html_type' => 'text', - 'default' => '', - 'add' => '4.1', - 'title' => 'Provider Service URL', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => 'Web Service URL', - 'validate_callback' => 'CRM_Utils_Rule::url', - ], - 'hideCountryMailingLabels' => [ - 'group_name' => 'Address Preferences', - 'group' => 'address', - 'name' => 'hideCountryMailingLabels', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.7', - 'title' => 'Hide Country in Mailing Labels when same as domain country', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Do not display the country field in mailing labels when the country is the same as that of the domain', - 'help_text' => '', - ], - 'tag_unconfirmed' => [ - 'group_name' => 'Campaign Preferences', - 'group' => 'campaign', - 'name' => 'tag_unconfirmed', - 'type' => 'String', - 'html_type' => 'text', - 'default' => 'Unconfirmed', - 'add' => '4.1', - 'title' => 'Tag for Unconfirmed Petition Signers', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If set, new contacts that are created when signing a petition are assigned a tag of this name.', - 'help_text' => '', - 'settings_pages' => [ - 'campaign' => [ - 'weight' => 10, - ], - ], - ], - 'petition_contacts' => [ - 'group_name' => 'Campaign Preferences', - 'group' => 'campaign', - 'name' => 'petition_contacts', - 'type' => 'String', - 'html_type' => 'text', - 'default' => 'Petition Contacts', - 'add' => '4.1', - 'title' => 'Petition Signers Group', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'All contacts that have signed a CiviCampaign petition will be added to this group. The group will be created if it does not exist (it is required for email verification).', - 'help_text' => '', - 'settings_pages' => [ - 'campaign' => [ - 'weight' => 20, - ], - ], - ], - 'civicaseRedactActivityEmail' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'civicaseRedactActivityEmail', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [], - 'default' => 'default', - 'add' => '4.7', - 'title' => 'Redact Activity Email', - 'is_domain' => 1, - 'is_contact' => 0, - 'pseudoconstant' => [ - 'callback' => 'CRM_Case_Info::getRedactOptions', - ], - 'description' => 'Should activity emails be redacted? (Set \"Default\" to load setting from the legacy \"Settings.xml\" file.)', - 'help_text' => '', - ], - 'civicaseAllowMultipleClients' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'civicaseAllowMultipleClients', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [], - 'default' => 'default', - 'add' => '4.7', - 'title' => 'Allow Multiple Case Clients', - 'is_domain' => 1, - 'is_contact' => 0, - 'pseudoconstant' => [ - 'callback' => 'CRM_Case_Info::getMultiClientOptions', - ], - 'description' => 'How many clients may be associated with a given case? (Set \"Default\" to load setting from the legacy \"Settings.xml\" file.)', - 'help_text' => '', - ], - 'civicaseNaturalActivityTypeSort' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'civicaseNaturalActivityTypeSort', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [], - 'default' => 'default', - 'add' => '4.7', - 'title' => 'Activity Type Sorting', - 'is_domain' => 1, - 'is_contact' => 0, - 'pseudoconstant' => [ - 'callback' => 'CRM_Case_Info::getSortOptions', - ], - 'description' => 'How to sort activity-types on the \"Manage Case\" screen? (Set \"Default\" to load setting from the legacy \"Settings.xml\" file.)', - 'help_text' => '', - ], - 'civicaseShowCaseActivities' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'civicaseShowCaseActivities', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => '', - 'html_type' => 'radio', - 'add' => '5.24', - 'title' => 'Include case activities in general activity views.', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'e.g. the Contact form\'s Activity tab listing. Without this ticked, activities that belong to a case are hidden (default behavior). Warning: enabling this option means that all case activities relating to a contact will be listed which could result in users without \"access all cases and activities\" permission being able to see see the summarized details (date, subject, assignees, status etc.). Such users will still be prevented from managing the case and viewing/editing the activity.', - 'help_text' => '', - ], - 'cvv_backoffice_required' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'cvv_backoffice_required', - 'type' => 'Boolean', - 'html_type' => 'radio', - 'quick_form_type' => 'YesNo', - 'default' => '1', - 'add' => '4.1', - 'title' => 'CVV required for backoffice?', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Is the CVV code required for back office credit card transactions', - 'help_text' => 'If set it back-office credit card transactions will required a cvv code. Leave as required unless you have a very strong reason to change', - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 10, - ], - ], - ], - 'contribution_invoice_settings' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'contribution_invoice_settings', - 'type' => 'Array', - 'add' => '4.7', - 'title' => 'Deprecated, virtualized setting', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'invoicing' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'invoicing', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'Element', - 'default' => 0, - 'add' => '4.7', - 'title' => 'Enable Tax and Invoicing', - 'is_domain' => 1, - 'is_contact' => 0, - 'on_change' => [ - '0' => 'CRM_Invoicing_Utils::onToggle', - ], - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 90, - ], - ], - ], - 'invoice_prefix' => [ - 'default' => 'INV_', - 'html_type' => 'text', - 'name' => 'invoice_prefix', - 'add' => '5.23', - 'type' => 2, - 'title' => 'Invoice Prefix', - 'description' => 'Enter prefix to be be preprended when creating an invoice number', - 'is_domain' => 1, - 'is_contact' => 0, - ], - 'invoice_due_date' => [ - 'default' => '10', - 'name' => 'invoice_due_date', - 'html_type' => 'text', - 'title' => 'Due Date', - 'add' => '5.23', - 'type' => 1, - 'is_domain' => 1, - 'is_contact' => 0, - ], - 'invoice_due_date_period' => [ - 'default' => 'days', - 'html_type' => 'select', - 'name' => 'invoice_due_date_period', - 'title' => 'For transmission', - 'weight' => 4, - 'add' => '5.23', - 'type' => 2, - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Select the interval for due date.', - 'options' => [ - 'select' => '- select -', - 'days' => 'Days', - 'months' => 'Months', - 'years' => 'Years', - ], - ], - 'invoice_notes' => [ - 'default' => '', - 'name' => 'invoice_notes', - 'html_type' => 'wysiwyg', - 'title' => 'Notes or Standard Terms', - 'type' => 2, - 'add' => '5.23', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Enter note or message to be displayed on PDF invoice or credit notes ', - 'attributes' => [ - 'rows' => 2, - 'cols' => 40, - ], - ], - 'invoice_is_email_pdf' => [ - 'name' => 'invoice_is_email_pdf', - 'html_type' => 'checkbox', - 'add' => '5.23', - 'type' => 16, - 'is_domain' => 1, - 'is_contact' => 0, - 'title' => 'Automatically email invoice when user purchases online', - 'description' => 'Should a pdf invoice be emailed automatically?', - ], - 'tax_term' => [ - 'default' => 'Sales Tax', - 'name' => 'tax_term', - 'html_type' => 'text', - 'add' => '5.23', - 'title' => 'Tax Term', - 'type' => 2, - 'is_domain' => 1, - 'is_contact' => 0, - ], - 'tax_display_settings' => [ - 'default' => 'Inclusive', - 'html_type' => 'select', - 'name' => 'tax_display_settings', - 'type' => 2, - 'add' => '5.23', - 'title' => 'Tax Display Settings', - 'is_domain' => 1, - 'is_contact' => 0, - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::taxDisplayOptions', - ], - ], - 'deferred_revenue_enabled' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'deferred_revenue_enabled', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'Element', - 'default' => 0, - 'add' => '4.7', - 'title' => 'Enable Deferred Revenue', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 50, - ], - ], - ], - 'default_invoice_page' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'default_invoice_page', - 'type' => 'Integer', - 'quick_form_type' => 'Select', - 'default' => '', - 'pseudoconstant' => [ - 'table' => 'civicrm_contribution_page', - 'keyColumn' => 'id', - 'labelColumn' => 'title', - ], - 'html_type' => 'select', - 'add' => '4.7', - 'title' => 'Default invoice payment page', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 70, - ], - ], - ], - 'always_post_to_accounts_receivable' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'always_post_to_accounts_receivable', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'Element', - 'default' => 0, - 'add' => '4.7', - 'title' => 'Always post to Accounts Receivable?', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 40, - ], - ], - ], - 'update_contribution_on_membership_type_change' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'update_contribution_on_membership_type_change', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'Element', - 'default' => 0, - 'add' => '4.7', - 'title' => 'Automatically update related contributions when Membership Type is changed', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Enabling this setting will update related contribution of membership(s) except if the membership is paid for with a recurring contribution.', - 'help_text' => '', - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 20, - ], - ], - ], - 'contact_view_options' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'contact_view_options', - 'type' => 'String', - 'html_type' => 'checkboxes', - 'pseudoconstant' => [ - 'optionGroupName' => 'contact_view_options', - ], - 'default' => '123456789101113', - 'add' => '4.1', - 'title' => 'Viewing Contacts', - 'is_domain' => '1', - 'is_contact' => 0, - 'description' => 'Select the tabs that should be displayed when viewing a contact record. EXAMPLE: If your organization does not keep track of \'Relationships\', then un-check this option to simplify the screen display. Tabs for Contributions, Pledges, Memberships, Events, Grants and Cases are also hidden if the corresponding component is not enabled. Go to Administer > System Settings > Enable Components to modify the components which are available for your site.', - 'help_text' => '', - 'serialize' => 1, - ], - 'contact_edit_options' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'contact_edit_options', - 'type' => 'String', - 'html_type' => 'checkboxes', - 'pseudoconstant' => [ - 'optionGroupName' => 'contact_edit_options', - ], - 'default' => '123456789111214151617', - 'add' => '4.1', - 'title' => 'Editing Contacts', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Select the sections that should be included when adding or editing a contact record. EXAMPLE: If your organization does not record Gender and Birth Date for individuals, then simplify the form by un-checking this option. Drag interface allows you to change the order of the panes displayed on contact add/edit screen.', - 'help_text' => '', - 'serialize' => 1, - ], - 'advanced_search_options' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'advanced_search_options', - 'type' => 'String', - 'html_type' => 'checkboxes', - 'pseudoconstant' => [ - 'optionGroupName' => 'advanced_search_options', - ], - 'default' => '123456789101112131516171819', - 'add' => '4.1', - 'title' => 'Contact Search', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Select the sections that should be included in the Basic and Advanced Search forms. EXAMPLE: If you don\'t track Relationships - then you do not need this section included in the advanced search form. Simplify the form by un-checking this option.', - 'serialize' => 1, - ], - 'user_dashboard_options' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'user_dashboard_options', - 'type' => 'String', - 'html_type' => 'checkboxes', - 'pseudoconstant' => [ - 'optionGroupName' => 'user_dashboard_options', - ], - 'default' => '1234578', - 'add' => '4.1', - 'title' => 'Contact Dashboard', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Select the sections that should be included in the Contact Dashboard. EXAMPLE: If you don\'t want constituents to view their own contribution history, un-check that option.', - 'help_text' => '', - 'serialize' => 1, - ], - 'address_options' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'address_options', - 'type' => 'String', - 'html_type' => 'checkboxes', - 'pseudoconstant' => [ - 'optionGroupName' => 'address_options', - ], - 'default' => '12345689101112', - 'add' => '4.1', - 'title' => 'Address Fields', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - 'serialize' => 1, - ], - 'address_format' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'address_format', - 'type' => 'String', - 'html_type' => 'textarea', - 'default' => '{contact.address_name} -{contact.street_address} -{contact.supplemental_address_1} -{contact.supplemental_address_2} -{contact.supplemental_address_3} -{contact.city}{, }{contact.state_province}{ }{contact.postal_code} -{contact.country}', - 'add' => '4.1', - 'title' => 'Address Display Format', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'mailing_format' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'mailing_format', - 'type' => 'String', - 'html_type' => 'textarea', - 'default' => '{contact.addressee} -{contact.street_address} -{contact.supplemental_address_1} -{contact.supplemental_address_2} -{contact.supplemental_address_3} -{contact.city}{, }{contact.state_province}{ }{contact.postal_code} -{contact.country}', - 'add' => '4.1', - 'title' => 'Mailing Label Format', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'display_name_format' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'display_name_format', - 'type' => 'String', - 'html_type' => 'textarea', - 'default' => '{contact.individual_prefix}{ }{contact.first_name}{ }{contact.last_name}{ }{contact.individual_suffix}', - 'add' => '4.1', - 'title' => 'Individual Display Name Format', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Display name format for individual contact display names.', - ], - 'sort_name_format' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'sort_name_format', - 'type' => 'String', - 'html_type' => 'textarea', - 'default' => '{contact.last_name}{, }{contact.first_name}', - 'add' => '4.1', - 'title' => 'Individual Sort Name Format', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Sort name format for individual contact display names.', - ], - 'remote_profile_submissions' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'remote_profile_submissions', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => '', - 'html_type' => 'radio', - 'add' => '4.7', - 'title' => 'Accept profile submissions from external sites', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, CiviCRM will permit submissions from external sites to profiles. This is disabled by default to limit abuse.', - 'help_text' => '', - ], - 'allow_alert_autodismissal' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'allow_alert_autodismissal', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => TRUE, - 'html_type' => 'radio', - 'add' => '4.7', - 'title' => 'Allow alerts to auto-dismiss?', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If disabled, CiviCRM will not automatically dismiss any alerts after 10 seconds.', - 'help_text' => '', - ], - 'editor_id' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'editor_id', - 'type' => 'String', - 'html_type' => 'select', - 'default' => 'CKEditor', - 'add' => '4.1', - 'title' => 'Wysiwig Editor', - 'pseudoconstant' => [ - 'optionGroupName' => 'wysiwyg_editor', - 'keyColumn' => 'name', - ], - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'contact_ajax_check_similar' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'contact_ajax_check_similar', - 'type' => 'String', - 'html_type' => 'radio', - 'default' => '1', - 'add' => '4.1', - 'title' => 'Check for Similar Contacts', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - 'options' => [ - '1' => 'While Typing', - '0' => 'When Saving', - '2' => 'Never', - ], - ], - 'ajaxPopupsEnabled' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'ajaxPopupsEnabled', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 1, - 'add' => '4.5', - 'title' => 'Enable Popup Forms', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'defaultExternUrl' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'defaultExternUrl', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'default' => 'router', - 'add' => '5.27', - 'title' => 'Extern URL Style', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'This setting provides transitional support. It should be set to \"Prefer normal router.\" If your deployment requires \"Prefer standalone script\", then please ensure that the issue is tracked in <code>lab.civicrm.org</code>.', - 'help_text' => '', - 'options' => [ - 'standalone' => 'Prefer standalone scripts', - 'router' => 'Prefer normal router', - ], - ], - 'activity_assignee_notification' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'activity_assignee_notification', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => '1', - 'add' => '4.1', - 'title' => 'Notify Activity Assignees', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'activity_assignee_notification_ics' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'activity_assignee_notification_ics', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.3', - 'title' => 'Include ICal Invite to Activity Assignees', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'contact_autocomplete_options' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'contact_autocomplete_options', - 'type' => 'String', - 'html_type' => 'checkboxes', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Search::getContactAutocompleteOptions', - ], - 'default' => '12', - 'add' => '4.1', - 'title' => 'Autocomplete Contact Search', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Selected fields will be displayed in back-office autocomplete dropdown search results (Quick Search, etc.). Contact Name is always included.', - 'help_text' => '', - 'serialize' => 1, - 'validate_callback' => 'CRM_Admin_Form_Setting_Search::enableOptionOne', - ], - 'contact_reference_options' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'contact_reference_options', - 'type' => 'String', - 'html_type' => 'checkboxes', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Search::getContactReferenceOptions', - ], - 'default' => '12', - 'add' => '4.1', - 'title' => 'Contact Reference Options', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Selected fields will be displayed in autocomplete dropdown search results for \'Contact Reference\' custom fields. Contact Name is always included. NOTE: You must assign \'access contact reference fields\' permission to the anonymous role if you want to use custom contact reference fields in profiles on public pages. For most situations, you should use the \'Limit List to Group\' setting when configuring a contact reference field which will be used in public forms to prevent exposing your entire contact list.', - 'help_text' => '', - 'serialize' => 1, - 'validate_callback' => 'CRM_Admin_Form_Setting_Search::enableOptionOne', - ], - 'contact_smart_group_display' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'contact_smart_group_display', - 'type' => 'String', - 'html_type' => 'radio', - 'default' => '1', - 'add' => '4.7', - 'title' => 'Viewing Smart Groups', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Controls display of the smart groups that a contact is part of in each contact\'s \"Groups\" tab. \"Show on Demand\" provides the best performance, and is recommended for most sites.', - 'help_text' => '', - 'pseudoconstant' => [ - 'optionGroupName' => 'contact_smart_group_display', - ], - ], - 'smart_group_cache_refresh_mode' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'smart_group_cache_refresh_mode', - 'type' => 'String', - 'html_type' => 'radio', - 'default' => 'opportunistic', - 'add' => '4.7', - 'title' => 'Smart Group Refresh Mode', - 'is_domain' => 1, - 'is_contact' => 0, - 'pseudoconstant' => [ - 'callback' => 'CRM_Contact_BAO_GroupContactCache::getModes', - ], - 'description' => 'Should the smart groups be flushed by cron jobs or user actions', - 'help_text' => 'In \"Opportunistic Flush\" mode, caches are flushed in response to user actions; this mode is broadly compatible but may add latency during form-submissions. In \"Cron Flush\" mode, you should schedule a cron job to flush caches; this can improve latency on form-submissions but requires more setup.', - ], - 'acl_cache_refresh_mode' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'acl_cache_refresh_mode', - 'type' => 'String', - 'html_type' => 'radio', - 'default' => 'opportunistic', - 'add' => '5.37.0', - 'title' => 'ACL Group Refresh Mode', - 'is_domain' => 1, - 'is_contact' => 0, - 'pseudoconstant' => [ - 'callback' => 'CRM_Contact_BAO_GroupContactCache::getModes', - ], - 'description' => 'Should the acl cache be flushed by cron jobs or user actions', - 'help_text' => 'In \"Opportunistic Flush\" mode, caches are flushed in response to user actions; this mode is broadly compatible but may add latency during form-submissions. In \"Cron Flush\" mode, you should schedule a cron job to flush caches if your site uses ACLs; this can improve latency on form-submissions but requires more setup.', - ], - 'installed' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'installed', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => '', - 'add' => '4.7', - 'title' => 'System Installed', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'A flag indicating whether this system has run a post-installation routine', - 'help_text' => '', - ], - 'max_attachments' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'max_attachments', - 'legacy_key' => 'maxAttachments', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 8, - ], - 'default' => 3, - 'add' => '4.3', - 'title' => 'Maximum Attachments', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Maximum number of files (documents, images, etc.) which can be attached to emails or activities. This setting applies to UI forms and limits the number of fields available on the form.', - 'help_text' => '', - ], - 'max_attachments_backend' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'max_attachments_backend', - 'legacy_key' => 'maxAttachmentsBackend', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 8, - ], - 'default' => 100, - 'add' => '5.20', - 'title' => 'Maximum Attachments For Backend Processes', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Maximum number of files (documents, images, etc.) which can be processed during backend processing such as automated inbound email processing. This should be a big number higher than the other Maximum Attachments setting above. This setting here merely provides an upper limit to prevent attacks that might overload the server.', - 'help_text' => '', - ], - 'maxFileSize' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'maxFileSize', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 8, - ], - 'default' => 3, - 'add' => '4.3', - 'title' => 'Maximum File Size (in MB)', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Maximum Size of file (documents, images, etc.) which can be attached to emails or activities.<br />Note: php.ini should support this file size.', - 'help_text' => '', - ], - 'contact_undelete' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'contact_undelete', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.3', - 'title' => 'Contact Trash and Undelete', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, deleted contacts will be moved to trash (instead of being destroyed). Users with the proper permission are able to search for the deleted contacts and restore them (or delete permanently).', - 'help_text' => '', - ], - 'allowPermDeleteFinancial' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'allowPermDeleteFinancial', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => '', - 'add' => '4.3', - 'title' => 'Contact Permanent Delete', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Allow Permanent Delete for contacts who are linked to live financial transactions', - 'help_text' => '', - ], - 'securityAlert' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'securityAlert', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.4', - 'title' => 'Status Alerts', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, CiviCRM will display pop-up notifications (no more than once per day) for security and misconfiguration issues identified in the system check.', - 'help_text' => '', - ], - 'doNotAttachPDFReceipt' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'doNotAttachPDFReceipt', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.3', - 'title' => 'Attach PDF copy to receipts', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, CiviCRM sends PDF receipt as an attachment during event signup or online contribution.', - 'help_text' => '', - ], - 'recordGeneratedLetters' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'recordGeneratedLetters', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'default' => 'multiple', - 'add' => '4.7', - 'title' => 'Record generated letters', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'When generating a letter (PDF/Word) via mail-merge, how should the letter be recorded?', - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Contact_Form_Task_PDFLetterCommon::getLoggingOptions', - ], - ], - 'dompdf_font_dir' => [ - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'dompdf_font_dir', - 'title' => 'DOMPDF Font Folder', - 'description' => 'Additional folder where DOMPDF will look for fonts.', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 256, - ], - 'default' => '', - 'help_text' => '', - 'add' => '5.43', - ], - 'dompdf_chroot' => [ - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'dompdf_chroot', - 'title' => 'DOMPDF Local Images Folder', - 'description' => 'Folder to restrict where DOMPDF looks when loading local images. By default it is the DOMPDF folder itself for security reasons. It will search in subfolders.', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 256, - ], - 'default' => '', - 'help_text' => '', - 'add' => '5.43', - ], - 'dompdf_enable_remote' => [ - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'dompdf_enable_remote', - 'title' => 'DOMPDF Enable Remote Images', - 'description' => 'Enable the use of remote images. By default this is enabled, but if not using remote images you may wish to turn it off for security reasons.', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'html_type' => '', - 'default' => TRUE, - 'help_text' => '', - 'add' => '5.43', - ], - 'dompdf_log_output_file' => [ - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'dompdf_log_output_file', - 'title' => 'DOMPDF Log File', - 'description' => 'DOMPDF will log debugging output in this file.', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 256, - ], - 'default' => '', - 'help_text' => '', - 'add' => '5.43', - ], - 'wkhtmltopdfPath' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'wkhtmltopdfPath', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 256, - ], - 'html_type' => 'text', - 'default' => '', - 'add' => '4.3', - 'title' => 'Path to wkhtmltopdf executable', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'checksum_timeout' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'checksum_timeout', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 8, - ], - 'html_type' => 'text', - 'default' => 7, - 'add' => '4.3', - 'title' => 'Checksum Lifespan', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'blogUrl' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'blogUrl', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 128, - ], - 'html_type' => 'text', - 'default' => '*default*', - 'add' => '4.3', - 'title' => 'Blog Feed URL', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Blog feed URL used by the blog dashlet', - 'help_text' => 'Use \"*default*\" for the system default or override with a custom URL', - ], - 'communityMessagesUrl' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'communityMessagesUrl', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 128, - ], - 'html_type' => 'text', - 'default' => '*default*', - 'add' => '4.3', - 'title' => 'Community Messages URL', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Service providing CiviCRM community messages', - 'help_text' => 'Use \"*default*\" for the system default or override with a custom URL', - ], - 'gettingStartedUrl' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'gettingStartedUrl', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 128, - ], - 'html_type' => 'text', - 'default' => '*default*', - 'add' => '4.3', - 'title' => 'Getting Started URL', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Service providing the Getting Started data', - 'help_text' => 'Use \"*default*\" for the system default or override with a custom URL', - ], - 'resCacheCode' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'resCacheCode', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '', - 'add' => '4.3', - 'title' => 'resCacheCode', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Code appended to resource URLs (JS/CSS) to coerce HTTP caching', - 'help_text' => '', - ], - 'verifySSL' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'verifySSL', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.3', - 'title' => 'Verify SSL?', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If disabled, outbound web-service requests will allow unverified, insecure HTTPS connections', - 'help_text' => 'Unless you are absolutely unable to configure your server to check the SSL certificate of the remote server you should leave this set to Yes', - ], - 'enableSSL' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'enableSSL', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.5', - 'title' => 'Force SSL?', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, inbound HTTP requests for sensitive pages will be redirected to HTTPS.', - 'help_text' => 'If enabled, inbound HTTP requests for sensitive pages will be redirected to HTTPS.', - ], - 'wpBasePage' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'wpBasePage', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.3', - 'title' => 'WordPress Base Page', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If set, CiviCRM will use this setting as the base url.', - 'help_text' => 'By default, CiviCRM will generate front-facing pages using the home page at http://wp/ as its base. If you want to use a different template for CiviCRM pages, set the path here.', - ], - 'secondDegRelPermissions' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'secondDegRelPermissions', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.3', - 'title' => 'Allow second-degree relationship permissions', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, contacts with the permission to edit a related contact will inherit that contact\'s permission to edit other related contacts', - 'help_text' => '', - ], - 'enable_components' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'enable_components', - 'type' => 'Array', - 'html_type' => 'checkboxes', - 'default' => '', - 'add' => '4.4', - 'title' => 'Enable Components', - 'is_domain' => '1', - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - 'on_change' => [ - '0' => 'CRM_Case_Info::onToggleComponents', - ], - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::getComponentSelectValues', - ], - ], - 'disable_core_css' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'disable_core_css', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.4', - 'title' => 'Disable CiviCRM css', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Prevent the stylesheet \"civicrm.css\" from being loaded.', - 'help_text' => '', - ], - 'empoweredBy' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'empoweredBy', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.5', - 'title' => 'Display \"empowered by CiviCRM\"', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'When enabled, \"empowered by CiviCRM\" is displayed at the bottom of public forms.', - 'help_text' => '', - ], - 'logging_no_trigger_permission' => [ - 'add' => '4.7', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'help_text' => '(EXPERIMENTAL) If the MySQL user does not have permission to administer triggers, then you must create the triggers outside CiviCRM. No support is provided for this configuration.', - 'name' => 'logging_no_trigger_permission', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'html_type' => '', - 'default' => 0, - 'title' => '(EXPERIMENTAL) MySQL user does not have trigger permissions', - 'description' => 'Set this when you intend to manage trigger creation outside of CiviCRM', - ], - 'logging' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'logging', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'html_type' => '', - 'default' => 0, - 'title' => 'Logging', - 'description' => 'If enabled, all actions will be logged with a complete record of changes.', - 'validate_callback' => 'CRM_Logging_Schema::checkLoggingSupport', - 'on_change' => [ - '0' => 'CRM_Logging_Schema::onToggle', - ], - ], - 'logging_uniqueid_date' => [ - 'add' => '4.7', - 'help_text' => 'This is the date when CRM-18193 was implemented', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'logging_uniqueid_date', - 'type' => 'Date', - 'quick_form_type' => 'DateTime', - 'html_type' => '', - 'default' => '', - 'title' => 'Logging Unique ID not recorded before', - 'description' => 'This is the date when CRM-18193 was implemented', - ], - 'logging_all_tables_uniquid' => [ - 'add' => '4.7', - 'help_text' => 'This indicates there are no tables holdng pre-uniqid log_conn_id values (CRM-18193)', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'logging_all_tables_uniquid', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'html_type' => '', - 'default' => 0, - 'title' => 'All tables use Unique Connection ID', - 'description' => 'Do some tables pre-date CRM-18193?', - ], - 'userFrameworkUsersTableName' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'userFrameworkUsersTableName', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '32', - 'maxlength' => '64', - ], - 'default' => 'users', - 'title' => 'CMS Users Table Name', - 'description' => '', - ], - 'wpLoadPhp' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'wpLoadPhp', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.6', - 'title' => 'WordPress Path to wp-load.php', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'CiviCRM will use this setting as path to bootstrap WP.', - 'help_text' => '', - ], - 'secure_cache_timeout_minutes' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'secure_cache_timeout_minutes', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 8, - ], - 'default' => 20, - 'add' => '4.7', - 'title' => 'Secure Cache Timeout', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Maximum number of minutes that secure form data should linger', - 'help_text' => '', - ], - 'site_id' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'site_id', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '', - 'add' => '4.6', - 'title' => 'Unique Site ID', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - ], - 'recentItemsMaxCount' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'recentItemsMaxCount', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 3, - ], - 'default' => 20, - 'add' => '4.7', - 'title' => 'Size of \"Recent Items\" stack', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'How many items should CiviCRM store in it\'s \"Recently viewed\" list.', - 'help_text' => '', - ], - 'recentItemsProviders' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'recentItemsProviders', - 'type' => 'Array', - 'html_type' => 'Select', - 'quick_form_type' => 'Select', - 'html_attributes' => [ - 'multiple' => 1, - 'class' => 'crm-select2', - ], - 'default' => '', - 'add' => '4.7', - 'title' => 'Recent Items Providers', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'What providers may save views in CiviCRM\'s \"Recently viewed\" list. If empty, all are in.', - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Utils_Recent::getProviders', - ], - ], - 'dedupe_default_limit' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'dedupe_default_limit', - 'type' => 'Integer', - 'default' => 0, - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'add' => '4.7', - 'title' => 'Default limit for dedupe screen', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Default to only loading matches against this number of contacts', - 'help_text' => 'Deduping larger databases can crash the server. By configuring a limit other than 0 here the dedupe query will only search for matches against a limited number of contacts.', - ], - 'syncCMSEmail' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'syncCMSEmail', - 'type' => 'Boolean', - 'html_type' => 'YesNo', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.7', - 'title' => 'Sync CMS Email', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, then CMS email id will be synchronised with CiviCRM contacts\'s primary email.', - 'help_text' => '', - ], - 'preserve_activity_tab_filter' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'preserve_activity_tab_filter', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.7', - 'title' => 'Preserve activity filters as a user preference', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'When enabled, any filter settings a user selects on the contact\'s Activity tab will be remembered as they visit other contacts.', - ], - 'do_not_notify_assignees_for' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'do_not_notify_assignees_for', - 'type' => 'Array', - 'add' => '4.7', - 'is_domain' => 1, - 'is_contact' => 0, - 'default' => [], - 'title' => 'Do not notify assignees for', - 'description' => 'These activity types will be excluded from automated email notifications to assignees.', - 'html_type' => 'select', - 'html_attributes' => [ - 'multiple' => 1, - 'class' => 'huge crm-select2', - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'activity_type', - ], - 'quick_form_type' => 'Select', - ], - 'menubar_position' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'menubar_position', - 'type' => 'String', - 'html_type' => 'select', - 'default' => 'over-cms-menu', - 'add' => '5.12', - 'title' => 'Menubar position', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Location of the CiviCRM main menu.', - 'help_text' => '', - 'options' => [ - 'over-cms-menu' => 'Replace website menu', - 'below-cms-menu' => 'Below website menu', - 'above-crm-container' => 'Above content area', - 'none' => 'None - disable menu', - ], - ], - 'menubar_color' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'menubar_color', - 'type' => 'String', - 'html_type' => 'color', - 'default' => '#1b1b1b', - 'add' => '5.13', - 'title' => 'Menubar color', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Color of the CiviCRM main menu.', - 'help_text' => '', - 'validate_callback' => 'CRM_Utils_Color::normalize', - ], - 'requestableMimeTypes' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'requestableMimeTypes', - 'type' => 'String', - 'html_type' => 'Text', - 'default' => 'image/jpeg,image/pjpeg,image/gif,image/x-png,image/png,image/jpg,text/html,application/pdf', - 'add' => '5.13', - 'title' => 'Mime Types that can be passed as URL params', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Acceptable Mime Types that can be used as part of file urls', - 'help_text' => '', - ], - 'theme_frontend' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'theme_frontend', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'pseudoconstant' => [ - 'callback' => 'call://themes/getAvailable', - ], - 'default' => 'default', - 'add' => '5.16', - 'title' => 'Frontend Theme', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Theme to use on frontend pages', - 'help_text' => '', - ], - 'theme_backend' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'theme_backend', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'pseudoconstant' => [ - 'callback' => 'call://themes/getAvailable', - ], - 'default' => 'default', - 'add' => '5.16', - 'title' => 'Backend Theme', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Theme to use on backend pages', - 'help_text' => '', - ], - 'http_timeout' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'http_timeout', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 3, - ], - 'default' => 5, - 'add' => '5.14', - 'title' => 'HTTP request timeout', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'How long should HTTP requests through Guzzle application run for in seconds', - 'help_text' => 'Set the number of seconds http requests should run for before terminating', - ], - 'assetCache' => [ - 'group_name' => 'Developer Preferences', - 'group' => 'developer', - 'name' => 'assetCache', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [], - 'default' => 'auto', - 'add' => '4.7', - 'title' => 'Asset Caching', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Store computed JS/CSS content in cache files? (Note: In \"Auto\" mode, the \"Debug\" setting will determine whether to activate the cache.)', - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => '\Civi\Core\AssetBuilder::getCacheModes', - ], - ], - 'userFrameworkLogging' => [ - 'group_name' => 'Developer Preferences', - 'group' => 'developer', - 'name' => 'userFrameworkLogging', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.3', - 'title' => 'Enable Drupal Watchdog Logging', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Set this value to Yes if you want CiviCRM error/debugging messages to appear in the Drupal error logs.', - 'help_text' => 'Set this value to Yes if you want CiviCRM error/debugging messages the appear in your CMS\' error log. In the case of Drupal, this will cause all CiviCRM error messages to appear in the watchdog (assuming you have Drupal\'s watchdog enabled)', - ], - 'debug_enabled' => [ - 'group_name' => 'Developer Preferences', - 'group' => 'developer', - 'name' => 'debug_enabled', - 'config_key' => 'debug', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.3', - 'title' => 'Enable Debugging', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Set this value to Yes if you want to use one of CiviCRM\'s debugging tools. This feature should NOT be enabled for production sites.', - 'help_text' => 'Do not turn this on on production sites', - ], - 'backtrace' => [ - 'group_name' => 'Developer Preferences', - 'group' => 'developer', - 'name' => 'backtrace', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.3', - 'title' => 'Display Backtrace', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Set this value to Yes if you want to display a backtrace listing when a fatal error is encountered. This feature should NOT be enabled for production sites.', - ], - 'environment' => [ - 'group_name' => 'Developer Preferences', - 'group' => 'developer', - 'name' => 'environment', - 'type' => 'String', - 'html_type' => 'Select', - 'quick_form_type' => 'Select', - 'default' => 'Production', - 'pseudoconstant' => [ - 'optionGroupName' => 'environment', - ], - 'add' => '4.7', - 'title' => 'Environment', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Setting to define the environment in which this CiviCRM instance is running.', - 'on_change' => [ - '0' => 'CRM_Core_BAO_Setting::onChangeEnvironmentSetting', - ], - ], - 'fatalErrorHandler' => [ - 'group_name' => 'Developer Preferences', - 'group' => 'developer', - 'name' => 'fatalErrorHandler', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '', - 'add' => '4.3', - 'title' => 'Fatal Error Handler', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Enter the path and class for a custom PHP error-handling function if you want to override built-in CiviCRM error handling for your site.', - ], - 'uploadDir' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'Directory Preferences', - 'group' => 'directory', - 'name' => 'uploadDir', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'title' => 'Temporary Files Directory', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => 'File system path where temporary CiviCRM files - such as import data files - are uploaded.', - ], - 'imageUploadDir' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'Directory Preferences', - 'group' => 'directory', - 'name' => 'imageUploadDir', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'title' => 'Image Directory', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'File system path where image files are uploaded. Currently, this path is used for images associated with premiums (CiviContribute thank-you gifts).', - 'help_text' => '', - ], - 'customFileUploadDir' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'Directory Preferences', - 'group' => 'directory', - 'name' => 'customFileUploadDir', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'title' => 'Custom Files Directory', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Path where documents and images which are attachments to contact records are stored (e.g. contact photos, resumes, contracts, etc.). These attachments are defined using \'file\' type custom fields.', - 'help_text' => '', - ], - 'customTemplateDir' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'Directory Preferences', - 'group' => 'directory', - 'name' => 'customTemplateDir', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'title' => 'Custom Template Directory', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Path where site specific templates are stored if any. This directory is searched first if set. Custom JavaScript code can be added to templates by creating files named templateFile.extra.tpl. (learn more...)', - 'help_text' => '', - ], - 'customPHPPathDir' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'Directory Preferences', - 'group' => 'directory', - 'name' => 'customPHPPathDir', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'title' => 'Custom PHP Directory', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Path where site specific PHP code files are stored if any. This directory is searched first if set.', - 'help_text' => '', - ], - 'extensionsDir' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group_name' => 'Directory Preferences', - 'group' => 'directory', - 'name' => 'extensionsDir', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'title' => 'Extensions Directory', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Path where CiviCRM extensions are stored.', - 'help_text' => '', - ], - 'show_events' => [ - 'name' => 'show_events', - 'group_name' => 'Event Preferences', - 'group' => 'event', - 'settings_pages' => [ - 'event' => [ - 'weight' => 20, - ], - ], - 'type' => 'Integer', - 'quick_form_type' => 'Select', - 'default' => 10, - 'add' => '4.5', - 'title' => 'Dashboard entries', - 'html_type' => 'select', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Configure how many events should be shown on the dashboard. This overrides the default value of 10 entries.', - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::getDashboardEntriesCount', - ], - ], - 'ext_repo_url' => [ - 'group_name' => 'Extension Preferences', - 'group' => 'ext', - 'name' => 'ext_repo_url', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 128, - ], - 'html_type' => 'text', - 'default' => 'https://civicrm.org/extdir/ver={ver}|cms={uf}', - 'add' => '4.3', - 'title' => 'Extension Repo URL', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'customTranslateFunction' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'customTranslateFunction', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '30', - 'maxlength' => '100', - ], - 'default' => '', - 'title' => 'Custom Translate Function', - ], - 'monetaryThousandSeparator' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'monetaryThousandSeparator', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - ], - 'default' => ',', - 'add' => '4.3', - 'title' => 'Thousands Separator', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'monetaryDecimalPoint' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'monetaryDecimalPoint', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - ], - 'default' => '.', - 'add' => '4.3', - 'title' => 'Decimal Delimiter', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'moneyformat' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'moneyformat', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '%c %a', - 'add' => '4.3', - 'title' => 'Monetary Amount Display', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'moneyvalueformat' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'moneyvalueformat', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '%!i', - 'add' => '4.3', - 'title' => 'Monetary Value Display', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'defaultCurrency' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'defaultCurrency', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'default' => 'USD', - 'add' => '4.3', - 'title' => 'Default Currency', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Default currency assigned to contributions and other monetary transactions.', - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Localization::getCurrencySymbols', - ], - 'on_change' => [ - '0' => 'CRM_Admin_Form_Setting_Localization::onChangeDefaultCurrency', - ], - ], - 'defaultContactCountry' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'defaultContactCountry', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [], - 'add' => '4.4', - 'title' => 'Default Country', - 'is_domain' => 1, - 'is_contact' => 0, - 'is_required' => '', - 'description' => 'This value is selected by default when adding a new contact address.', - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Localization::getAvailableCountries', - ], - ], - 'defaultContactStateProvince' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'defaultContactStateProvince', - 'type' => 'Integer', - 'quick_form_type' => 'ChainSelect', - 'html_type' => 'ChainSelect', - 'chain_select_settings' => [ - 'control_field' => 'defaultContactCountry', - ], - 'default' => '', - 'title' => 'Default State/Province', - 'description' => 'This value is selected by default when adding a new contact address.', - ], - 'countryLimit' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'countryLimit', - 'type' => 'Array', - 'quick_form_type' => 'Element', - 'html_type' => 'advmultiselect', - 'html_attributes' => [ - 'size' => 5, - 'style' => 'width:150px', - 'class' => 'advmultiselect', - ], - 'default' => [], - 'add' => '4.3', - 'title' => 'Available Countries', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Localization::getAvailableCountries', - ], - ], - 'provinceLimit' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'provinceLimit', - 'type' => 'Array', - 'quick_form_type' => 'Element', - 'html_type' => 'advmultiselect', - 'html_attributes' => [ - 'size' => 5, - 'style' => 'width:150px', - 'class' => 'advmultiselect', - ], - 'default' => [], - 'add' => '4.3', - 'title' => 'Available States and Provinces (by Country)', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Localization::getAvailableCountries', - ], - ], - 'inheritLocale' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'inheritLocale', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.3', - 'title' => 'Inherit CMS Language', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'description' => 'If Yes, the initial session language will be set by the CMS, which can later be changed if using the CiviCRM language switcher.', - ], - 'dateformatDatetime' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateformatDatetime', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '%B %E%f, %Y %l:%M %P', - 'add' => '4.3', - 'title' => 'Date Format: Complete Date and Time', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'dateformatFull' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateformatFull', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '%B %E%f, %Y', - 'add' => '4.3', - 'title' => 'Date Format: Complete Date', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'dateformatPartial' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateformatPartial', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'default' => '%B %Y', - 'add' => '4.3', - 'title' => 'Date Format: Month and Year', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'dateformatTime' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateformatTime', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '12', - 'maxlength' => '60', - ], - 'default' => '%l:%M %P', - 'title' => 'Date Format: Time Only', - ], - 'dateformatYear' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateformatYear', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '12', - 'maxlength' => '60', - ], - 'default' => '%Y', - 'title' => 'Date Format: Year Only', - ], - 'dateformatFinancialBatch' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateformatFinancialBatch', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '12', - 'maxlength' => '60', - ], - 'default' => '%m/%d/%Y', - 'title' => 'Date Format: Financial Batch', - ], - 'dateformatshortdate' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateformatshortdate', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '12', - 'maxlength' => '60', - ], - 'default' => '%m/%d/%Y', - 'title' => 'Date Format: Short date Month Day Year', - ], - 'dateInputFormat' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'dateInputFormat', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::getDatePluginInputFormats', - ], - 'default' => 'mm/dd/yy', - 'title' => 'Date Input Format', - ], - 'fieldSeparator' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'fieldSeparator', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '2', - 'maxlength' => '8', - ], - 'default' => ',', - 'title' => 'Import / Export Field Separator', - 'description' => 'Global CSV separator character. Modify this setting to enable import and export of different kinds of CSV files (for example: \',\' \';\' \':\' \'|\' ).', - ], - 'fiscalYearStart' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'fiscalYearStart', - 'type' => 'Array', - 'quick_form_type' => 'MonthDay', - 'html_type' => 'MonthDay', - 'default' => [ - 'M' => 1, - 'd' => 1, - ], - 'title' => 'Fiscal Year Start', - ], - 'languageLimit' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'languageLimit', - 'type' => 'Array', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'multiple' => 1, - 'class' => 'crm-select2', - ], - 'default' => '', - 'add' => '4.3', - 'title' => 'Available Languages (Multi-lingual)', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_I18n::languages', - ], - ], - 'uiLanguages' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'uiLanguages', - 'type' => 'Array', - 'quick_form_type' => 'Select', - 'html_type' => 'select', - 'html_attributes' => [ - 'multiple' => 1, - 'class' => 'crm-select2', - ], - 'default' => '', - 'add' => '5.9', - 'title' => 'Available Languages', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => 'User Interface languages available to users', - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_I18n::languages', - ], - ], - 'lcMessages' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'lcMessages', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'default' => 'en_US', - 'add' => '4.3', - 'title' => 'Default Language', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Localization::getDefaultLocaleOptions', - ], - 'on_change' => [ - '0' => 'CRM_Admin_Form_Setting_Localization::onChangeLcMessages', - ], - ], - 'legacyEncoding' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'legacyEncoding', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '12', - 'maxlength' => '30', - ], - 'default' => 'Windows-1252', - 'title' => 'Legacy Encoding', - 'description' => 'If import files are NOT encoded as UTF-8, specify an alternate character encoding for these files. The default of Windows-1252 will work for Excel-created .CSV files on many computers.', - ], - 'timeInputFormat' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'timeInputFormat', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::getTimeFormats', - ], - 'default' => '1', - 'title' => 'Time Input Format', - 'on_change' => [ - '0' => 'CRM_Core_BAO_PreferencesDate::onChangeSetting', - ], - ], - 'weekBegins' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'weekBegins', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'pseudoconstant' => [ - 'callback' => 'CRM_Utils_Date::getFullWeekdayNames', - ], - 'default' => 0, - 'add' => '4.7', - 'title' => 'Week begins on', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'contact_default_language' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'contact_default_language', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Localization::getDefaultLanguageOptions', - ], - 'default' => '*default*', - 'add' => '4.7', - 'title' => 'Default Language for contacts', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Default language (if any) for contact records.', - 'help_text' => 'If a contact is created with no language this setting will determine the language data (if any) to save.You may or may not wish to make an assumption here about whether it matches the site language', - ], - 'pinnedContactCountries' => [ - 'group_name' => 'Localization Preferences', - 'group' => 'localization', - 'name' => 'pinnedContactCountries', - 'type' => 'Array', - 'quick_form_type' => 'Element', - 'html_type' => 'advmultiselect', - 'html_attributes' => [ - 'size' => 5, - 'style' => 'width:150px', - 'class' => 'advmultiselect', - ], - 'default' => [], - 'add' => '5.33', - 'title' => 'Pinned Countries', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Appear in Top section of select list', - 'help_text' => 'Selected countries will appear in top section of country list', - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Localization::getAvailableCountries', - ], - ], - 'profile_double_optin' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'profile_double_optin', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => '1', - 'add' => '4.1', - 'title' => 'Enable Double Opt-in for Profile Group(s) field', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'When CiviMail is enabled, users who \"subscribe\" to a group from a profile Group(s) checkbox will receive a confirmation email. They must respond (opt-in) before they are added to the group.', - 'help_text' => '', - ], - 'track_civimail_replies' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'track_civimail_replies', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.1', - 'title' => 'Track replies using VERP in Reply-To header', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If checked, mailings will default to tracking replies using VERP-ed Reply-To.', - 'help_text' => '', - 'validate_callback' => 'CRM_Core_BAO_Setting::validateBoolSetting', - ], - 'civimail_workflow' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'civimail_workflow', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.1', - 'title' => 'Enable workflow support for CiviMail', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Drupal-only. Rules module must be enabled (beta feature - use with caution).', - 'help_text' => '', - ], - 'civimail_server_wide_lock' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'civimail_server_wide_lock', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.1', - 'title' => 'Enable global server wide lock for CiviMail', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'replyTo' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'replyTo', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.6', - 'title' => 'Enable Custom Reply-To', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Allow CiviMail users to send mailings with a custom Reply-To header.', - 'help_text' => '', - ], - 'mailing_backend' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'mailing_backend', - 'type' => 'Array', - 'html_type' => 'checkbox', - 'default' => [ - 'outBound_option' => '3', - ], - 'add' => '4.1', - 'title' => 'Mailing Backend', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'profile_add_to_group_double_optin' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'profile_add_to_group_double_optin', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.1', - 'title' => 'Enable Double Opt-in for Profiles which use the \"Add to Group\" setting', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'When CiviMail is enabled and a profile uses the \"Add to Group\" setting, users who complete the profile form will receive a confirmation email. They must respond (opt-in) before they are added to the group.', - 'help_text' => '', - ], - 'disable_mandatory_tokens_check' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'disable_mandatory_tokens_check', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.4', - 'title' => 'Disable check for mandatory tokens', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Don\'t check for presence of mandatory tokens (domain address; unsubscribe/opt-out) before sending mailings. WARNING: Mandatory tokens are a safe-guard which facilitate compliance with the US CAN-SPAM Act. They should only be disabled if your organization adopts other mechanisms for compliance or if your organization is not subject to CAN-SPAM.', - 'help_text' => '', - ], - 'dedupe_email_default' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'dedupe_email_default', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 1, - 'add' => '4.5', - 'title' => 'CiviMail dedupes e-mail addresses by default', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Set the \"dedupe e-mail\" option when sending a new mailing to \"true\" by default.', - 'help_text' => '', - ], - 'hash_mailing_url' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'hash_mailing_url', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.5', - 'title' => 'Hashed Mailing URL\'s', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, a randomized hash key will be used to reference the mailing URL in the mailing.viewUrl token, instead of the mailing ID.', - 'help_text' => '', - ], - 'civimail_multiple_bulk_emails' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'civimail_multiple_bulk_emails', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => 0, - 'add' => '4.5', - 'title' => 'Enable multiple bulk email address for a contact.', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'CiviMail will deliver a copy of the email to each bulk email listed for the contact. Enabling this setting will also change the options for the \"Email on Hold\" field in Advanced Search.', - 'help_text' => '', - ], - 'include_message_id' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'include_message_id', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'default' => '', - 'add' => '4.5', - 'title' => 'Enable CiviMail to generate Message-ID header', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'mailerBatchLimit' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'mailerBatchLimit', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 4, - 'maxlength' => 8, - ], - 'default' => 0, - 'add' => '4.7', - 'title' => 'Mailer Batch Limit', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Throttle email delivery by setting the maximum number of emails sent during each CiviMail run (0 = unlimited).', - 'help_text' => '', - ], - 'mailerJobSize' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'mailerJobSize', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 4, - 'maxlength' => 8, - ], - 'default' => 0, - 'add' => '4.7', - 'title' => 'Mailer Job Size', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If you want to utilize multi-threading enter the size you want your sub jobs to be split into. Recommended values are between 1,000 and 10,000. Use a lower value if your server has multiple cron jobs running simultaneously, but do not use values smaller than 1,000. Enter \"0\" to disable multi-threading and process mail as one single job - batch limits still apply.', - 'help_text' => '', - ], - 'mailerJobsMax' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'mailerJobsMax', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 4, - 'maxlength' => 8, - ], - 'default' => 0, - 'add' => '4.7', - 'title' => 'Mailer Cron Job Limit', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'The maximum number of mailer delivery jobs executing simultaneously (0 = allow as many processes to execute as started by cron).', - 'help_text' => '', - ], - 'mailThrottleTime' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'mailThrottleTime', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 4, - 'maxlength' => 8, - ], - 'default' => 0, - 'add' => '4.7', - 'title' => 'Mailer Throttle Time', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'The time to sleep in between each e-mail in micro seconds. Setting this above 0 allows you to control the rate at which e-mail messages are sent to the mail server, avoiding filling up the mail queue very quickly. Set to 0 to disable.', - 'help_text' => '', - ], - 'verpSeparator' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'verpSeparator', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 4, - 'maxlength' => 32, - ], - 'default' => '.', - 'add' => '4.7', - 'title' => 'VERP Separator', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Separator character used when CiviMail generates VERP (variable envelope return path) Mail-From addresses.', - 'help_text' => '', - ], - 'write_activity_record' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'write_activity_record', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'CheckBox', - 'default' => '1', - 'add' => '4.7', - 'title' => 'Enable CiviMail to create activities on delivery', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'simple_mail_limit' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'simple_mail_limit', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 4, - 'maxlength' => 8, - ], - 'default' => 50, - 'title' => 'Simple mail limit', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'The number of emails sendable via simple mail. Make sure you understand the implications for your spam reputation and legal requirements for bulk emails before editing. As there is some risk both to your spam reputation and the products if this is misused it is a hidden setting.', - 'help_text' => 'CiviCRM forces users sending more than this number of mails to use CiviMails. CiviMails have additional precautions: not sending to contacts who do not want bulk mail, adding domain name and opt out links. You should familiarise yourself with the law relevant to you on bulk mailings if changing this setting. For the US https://en.wikipedia.org/wiki/CAN-SPAM_Act_of_2003 is a good place to start.', - ], - 'auto_recipient_rebuild' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'auto_recipient_rebuild', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'CheckBox', - 'default' => '1', - 'title' => 'Enable automatic CiviMail recipient count display', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Enable this setting to rebuild recipient list automatically during composing mail. Disable will allow you to rebuild recipient manually.', - 'help_text' => 'CiviMail automatically fetches recipient list and count whenever mailing groups are included or excluded while composing bulk mail. This phenomena may degrade performance for large sites, so disable this setting to build and fetch recipients for selected groups, manually.', - ], - 'allow_mail_from_logged_in_contact' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'allow_mail_from_logged_in_contact', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'title' => 'Allow mail from logged in contact', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Allow sending email from the logged in contact\'s email address.', - 'help_text' => 'CiviCRM allows you to send email from the domain from email addresses and the logged in contact id addresses by default. Disable this if you only want to allow the domain from addresses to be used.', - ], - 'url_tracking_default' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'url_tracking_default', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'CheckBox', - 'default' => '1', - 'title' => 'Enable click-through tracking by default', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If checked, mailings will have click-through tracking enabled by default.', - 'help_text' => '', - ], - 'open_tracking_default' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'open_tracking_default', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'CheckBox', - 'default' => '1', - 'title' => 'Enable open tracking by default', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If checked, mailings will have open tracking enabled by default.', - 'help_text' => '', - ], - 'civimail_sync_interval' => [ - 'group_name' => 'Mailing Preferences', - 'group' => 'mailing', - 'name' => 'civimail_sync_interval', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 4, - 'maxlength' => 8, - ], - 'default' => 10, - 'title' => 'Database Update Frequency', - 'add' => '5.28', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'The frequency that CiviMail updates its sent mail database.', - 'help_text' => '', - ], - 'geoAPIKey' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Map Preferences', - 'group' => 'map', - 'name' => 'geoAPIKey', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '32', - 'maxlength' => '64', - ], - 'default' => '', - 'title' => 'Geo Provider Key', - 'description' => 'Enter the API key or Application ID associated with your geocoding provider.', - ], - 'geoProvider' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Map Preferences', - 'group' => 'map', - 'name' => 'geoProvider', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::geoProvider', - ], - 'default' => '', - 'title' => 'Geocoding Provider', - 'description' => 'This can be the same or different from the mapping provider selected.', - ], - 'mapAPIKey' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Map Preferences', - 'group' => 'map', - 'name' => 'mapAPIKey', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => '32', - 'maxlength' => '64', - ], - 'default' => '', - 'title' => 'Map Provider Key', - 'description' => 'Enter your API Key or Application ID. An API Key is required for the Google Maps API. Refer to developers.google.com for the latest information.', - ], - 'mapProvider' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'Map Preferences', - 'group' => 'map', - 'name' => 'mapProvider', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::mapProvider', - ], - 'default' => '', - 'title' => 'Mapping Provider', - 'description' => 'Choose the mapping provider that has the best coverage for the majority of your contact addresses.', - ], - 'default_renewal_contribution_page' => [ - 'group_name' => 'Member Preferences', - 'group' => 'member', - 'name' => 'default_renewal_contribution_page', - 'type' => 'Integer', - 'html_type' => 'select', - 'default' => '', - 'pseudoconstant' => [ - 'callback' => 'CRM_Contribute_PseudoConstant::contributionPage', - ], - 'add' => '4.1', - 'title' => 'Default online membership renewal page', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If you select a default online contribution page for self-service membership renewals, a \"renew\" link pointing to that page will be displayed on the Contact Dashboard for memberships which were entered offline. You will need to ensure that the membership block for the selected online contribution page includes any currently available memberships.', - 'help_text' => '', - ], - 'is_enabled' => [ - 'group_name' => 'Multi Site Preferences', - 'group' => 'multisite', - 'name' => 'is_enabled', - 'title' => 'Enable Multi Site Configuration', - 'html_type' => 'checkbox', - 'type' => 'Boolean', - 'default' => 0, - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Make CiviCRM aware of multiple domains. You should configure a domain group if enabled', - 'documentation_link' => [ - 'page' => 'Multi Site Installation', - 'resource' => 'wiki', - ], - 'help_text' => '', - 'settings_pages' => [ - 'multisite' => [ - 'weight' => 10, - ], - ], - ], - 'domain_group_id' => [ - 'group_name' => 'Multi Site Preferences', - 'group' => 'multisite', - 'name' => 'domain_group_id', - 'title' => 'Multisite Domain Group', - 'type' => 'Integer', - 'html_type' => 'entity_reference', - 'entity_reference_options' => [ - 'entity' => 'Group', - 'select' => [ - 'minimumInputLength' => 0, - ], - ], - 'default' => 0, - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Contacts created on this site are added to this group', - 'help_text' => '', - 'settings_pages' => [ - 'multisite' => [ - 'weight' => 20, - ], - ], - ], - 'event_price_set_domain_id' => [ - 'group_name' => 'Multi Site Preferences', - 'group' => 'multisite', - 'name' => 'event_price_set_domain_id', - 'title' => 'Domain Event Price Set', - 'type' => 'Integer', - 'default' => 0, - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'uniq_email_per_site' => [ - 'group_name' => 'Multi Site Preferences', - 'group' => 'multisite', - 'name' => 'uniq_email_per_site', - 'type' => 'Integer', - 'title' => 'Unique Email per Domain?', - 'default' => 0, - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], - 'search_autocomplete_count' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'search_autocomplete_count', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'number', - 'default' => 10, - 'add' => '4.3', - 'title' => 'Autocomplete Results', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'The maximum number of contacts to show at a time when typing in an autocomplete field.', - 'help_text' => '', - ], - 'enable_innodb_fts' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'enable_innodb_fts', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.4', - 'title' => 'InnoDB Full Text Search', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Enable InnoDB full-text search optimizations. (Requires MySQL 5.6+)', - 'help_text' => '', - 'on_change' => [ - '0' => [ - '0' => 'CRM_Core_InnoDBIndexer', - '1' => 'onToggleFts', - ], - ], - ], - 'includeOrderByClause' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'includeOrderByClause', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.6', - 'title' => 'Include Order By Clause', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If disabled, the search results will not be ordered. This may improve response time on search results on large datasets.', - 'help_text' => '', - ], - 'includeWildCardInName' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'includeWildCardInName', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.6', - 'title' => 'Automatic Wildcard', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, wildcards are automatically added to the beginning AND end of the search term when users search for contacts by Name. EXAMPLE: Searching for \'ada\' will return any contact whose name includes those letters - e.g. \'Adams, Janet\', \'Nadal, Jorge\', etc. If disabled, a wildcard is added to the end of the search term only. EXAMPLE: Searching for \'ada\' will return any contact whose last name begins with those letters - e.g. \'Adams, Janet\' but NOT \'Nadal, Jorge\'. Disabling this feature will speed up search significantly for larger databases, but users must manually enter wildcards (\'%\' or \'_\') to the beginning of the search term if they want to find all records which contain those letters. EXAMPLE: \'%ada\' will return \'Nadal, Jorge\'.', - 'help_text' => '', - ], - 'includeEmailInName' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'includeEmailInName', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.6', - 'title' => 'Include Email', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, email addresses are automatically included when users search by Name. Disabling this feature will speed up search significantly for larger databases, but users will need to use the Email search fields (from Advanced Search, Search Builder, or Profiles) to find contacts by email address.', - 'help_text' => '', - ], - 'includeNickNameInName' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'includeNickNameInName', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 0, - 'add' => '4.6', - 'title' => 'Include Nickname', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, nicknames are automatically included when users search by Name.', - 'help_text' => '', - ], - 'includeAlphabeticalPager' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'includeAlphabeticalPager', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.6', - 'title' => 'Include Alphabetical Pager', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If disabled, the alphabetical pager will not be displayed on the search screens. This will improve response time on search results on large datasets.', - 'help_text' => '', - ], - 'smartGroupCacheTimeout' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'smartGroupCacheTimeout', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'number', - 'default' => 5, - 'add' => '4.6', - 'title' => 'Smart group cache timeout', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'The number of minutes to cache smart group contacts. We strongly recommend that this value be greater than zero, since a value of zero means no caching at all. If your contact data changes frequently, you should set this value to at least 5 minutes.', - 'help_text' => '', - ], - 'defaultSearchProfileID' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'defaultSearchProfileID', - 'type' => 'Integer', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [ - 'class' => 'crm-select2', - ], - 'pseudoconstant' => [ - 'callback' => 'CRM_Admin_Form_Setting_Search::getAvailableProfiles', - ], - 'default' => '', - 'add' => '4.6', - 'title' => 'Default Contact Search Profile', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If set, this will be the default profile used for contact search.', - 'help_text' => '', - ], - 'prevNextBackend' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'prevNextBackend', - 'type' => 'String', - 'quick_form_type' => 'Select', - 'html_type' => 'Select', - 'html_attributes' => [], - 'default' => 'default', - 'add' => '5.9', - 'title' => 'PrevNext Cache', - 'is_domain' => 1, - 'is_contact' => 0, - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_BAO_PrevNextCache::getPrevNextBackends', - ], - 'description' => 'When performing a search, how should the search-results be cached?', - 'help_text' => '', - ], - 'searchPrimaryDetailsOnly' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'searchPrimaryDetailsOnly', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'default' => 1, - 'add' => '4.7', - 'title' => 'Search Primary Details Only', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'If enabled, only primary details (eg contact\'s primary email, phone, etc) will be included in Basic and Advanced Search results. Disabling this feature will allow users to match contacts using any email, phone etc detail.', - 'help_text' => '', - ], - 'quicksearch_options' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'quicksearch_options', - 'type' => 'string', - 'serialize' => 1, - 'html_type' => 'checkboxes', - 'sortable' => TRUE, - 'pseudoconstant' => [ - 'callback' => 'CRM_Core_SelectValues::quicksearchOptions', - ], - 'default' => [ - '0' => 'sort_name', - '1' => 'contact_id', - '2' => 'external_identifier', - '3' => 'first_name', - '4' => 'last_name', - '5' => 'email', - '6' => 'phone_numeric', - '7' => 'street_address', - '8' => 'city', - '9' => 'postal_code', - '10' => 'job_title', - ], - 'add' => '5.8', - 'title' => 'Quicksearch options', - 'is_domain' => '1', - 'is_contact' => 0, - 'description' => 'Which fields can be searched on in the menubar quicksearch box? Don\'t see your custom field here? Make sure it is marked as Searchable.', - 'help_text' => '', - ], - 'default_pager_size' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'default_pager_size', - 'type' => 'Integer', - 'quick_form_type' => 'Element', - 'html_type' => 'text', - 'html_attributes' => [ - 'size' => 2, - 'maxlength' => 3, - ], - 'default' => 50, - 'add' => '5.39', - 'title' => 'Default Search Pager size', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'What is the default number of records to show on a search', - 'help_text' => '', - ], - 'userFrameworkResourceURL' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group' => 'url', - 'group_name' => 'URL Preferences', - 'name' => 'userFrameworkResourceURL', - 'title' => 'CiviCRM Resource URL', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Absolute URL of the location where the civicrm module or component has been installed.', - 'help_text' => '', - 'validate_callback' => 'CRM_Utils_Rule::urlish', - ], - 'imageUploadURL' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group' => 'url', - 'group_name' => 'URL Preferences', - 'title' => 'Image Upload URL', - 'name' => 'imageUploadURL', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'URL of the location for uploaded image files.', - 'help_text' => '', - 'validate_callback' => 'CRM_Utils_Rule::urlish', - ], - 'customCSSURL' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group' => 'url', - 'group_name' => 'URL Preferences', - 'name' => 'customCSSURL', - 'title' => 'Custom CSS URL', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'You can modify the look and feel of CiviCRM by adding your own stylesheet. For small to medium sized modifications, use your css file to override some of the styles in civicrm.css. Or if you need to make drastic changes, you can choose to disable civicrm.css completely.', - 'help_text' => '', - 'validate_callback' => 'CRM_Utils_Rule::urlish', - ], - 'extensionsURL' => [ - 'bootstrap_comment' => 'This is a boot setting which may be loaded during bootstrap. Defaults are loaded via SettingsBag::getSystemDefaults().', - 'group' => 'url', - 'group_name' => 'URL Preferences', - 'title' => 'Extension Resource URL', - 'name' => 'extensionsURL', - 'type' => 'String', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'default' => '', - 'add' => '4.1', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Base URL for extension resources (images, stylesheets, etc). This should match extensionsDir.', - 'help_text' => '', - 'validate_callback' => 'CRM_Utils_Rule::urlish', - ], - 'enable_cart' => [ - 'name' => 'enable_cart', - 'group_name' => 'Event Preferences', - 'settings_pages' => [ - 'event' => [ - 'weight' => 10, - ], - ], - 'group' => 'event', - 'type' => 'Boolean', - 'quick_form_type' => 'CheckBox', - 'default' => 0, - 'add' => '4.1', - 'title' => 'Use Shopping Cart Style Event Registration', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'This feature allows users to register for more than one event at a time. When enabled, users will add event(s) to a \"cart\" and then pay for them all at once. Enabling this setting will affect online registration for all active events. The code is an alpha state, and you will potentially need to have developer resources to debug and fix sections of the codebase while testing and deploying it', - 'help_text' => '', - 'documentation_link' => [ - 'page' => 'CiviEvent Cart Checkout', - 'resource' => 'wiki', - ], - ], - 'acl_financial_type' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'acl_financial_type', - 'type' => 'Boolean', - 'html_type' => 'checkbox', - 'quick_form_type' => 'Element', - 'default' => 0, - 'add' => '4.7', - 'title' => 'Enable Access Control by Financial Type', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - 'help' => [ - 'id' => 'acl_financial_type', - ], - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 30, - ], - ], - 'on_change' => [ - '0' => 'financialacls_toggle', - ], - ], - 'recaptchaPublicKey' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'recaptchaPublicKey', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 64, - ], - 'html_type' => 'text', - 'default' => '', - 'add' => '4.3', - 'title' => 'reCAPTCHA Site Key', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - 'settings_pages' => [ - 'recaptcha' => [ - 'weight' => 10, - ], - ], - ], - 'recaptchaPrivateKey' => [ - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'recaptchaPrivateKey', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 64, - ], - 'html_type' => 'text', - 'default' => '', - 'add' => '4.3', - 'title' => 'reCAPTCHA Secret Key', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => '', - 'help_text' => '', - 'settings_pages' => [ - 'recaptcha' => [ - 'weight' => 10, - ], - ], - ], - 'forceRecaptcha' => [ - 'add' => '4.7', - 'help_text' => '', - 'is_domain' => 1, - 'is_contact' => 0, - 'group_name' => 'CiviCRM Preferences', - 'group' => 'core', - 'name' => 'forceRecaptcha', - 'type' => 'Boolean', - 'quick_form_type' => 'YesNo', - 'html_type' => '', - 'default' => 0, - 'title' => 'Force reCAPTCHA on Contribution pages', - 'description' => 'If enabled, reCAPTCHA will show on all contribution pages.', - 'settings_pages' => [ - 'recaptcha' => [ - 'weight' => 10, - ], - ], - ], - 'credit_notes_prefix' => [ - 'group_name' => 'Contribute Preferences', - 'group' => 'contribute', - 'name' => 'credit_notes_prefix', - 'html_type' => 'text', - 'quick_form_type' => 'Element', - 'add' => '5.23', - 'type' => 2, - 'title' => 'Credit Notes Prefix', - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => 'Prefix to be prepended to credit note ids', - 'default' => 'CN_', - 'help_text' => 'The credit note ID is generated when a contribution is set to Refunded, Cancelled or Chargeback. It is visible on invoices, if invoices are enabled', - 'settings_pages' => [ - 'contribute' => [ - 'weight' => 80, - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetFields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/GetSettingCurrentDomain.ex.php b/civicrm/api/v3/examples/Setting/GetSettingCurrentDomain.ex.php deleted file mode 100644 index b24dd50b40..0000000000 --- a/civicrm/api/v3/examples/Setting/GetSettingCurrentDomain.ex.php +++ /dev/null @@ -1,82 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.get API. - * - * Shows getting a variable for a current domain. - * - * @return array - * API result array - */ -function setting_get_example() { - $params = [ - 'return' => 'uniq_email_per_site', - ]; - - try { - $result = civicrm_api3('Setting', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'uniq_email_per_site' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetSetting" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/GetSpecifiedDomains.ex.php b/civicrm/api/v3/examples/Setting/GetSpecifiedDomains.ex.php deleted file mode 100644 index e5b6f83f62..0000000000 --- a/civicrm/api/v3/examples/Setting/GetSpecifiedDomains.ex.php +++ /dev/null @@ -1,90 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.get API. - * - * Shows getting a variable for specified domains. - * - * @return array - * API result array - */ -function setting_get_example() { - $params = [ - 'domain_id' => [ - '0' => 1, - '1' => 37, - ], - 'return' => [ - '0' => 'uniq_email_per_site', - ], - ]; - - try { - $result = civicrm_api3('Setting', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 2, - 'values' => [ - '1' => [ - 'uniq_email_per_site' => 0, - ], - '37' => [ - 'uniq_email_per_site' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSettingMultipleDomains" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/GetValue.ex.php b/civicrm/api/v3/examples/Setting/GetValue.ex.php deleted file mode 100644 index 9125ca5256..0000000000 --- a/civicrm/api/v3/examples/Setting/GetValue.ex.php +++ /dev/null @@ -1,73 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.getvalue API. - * - * Demonstrates getvalue action - intended for runtime use as better caching than get. - * - * @return array - * API result array - */ -function setting_getvalue_example() { - $params = [ - 'name' => 'petition_contacts', - 'group' => 'Campaign Preferences', - ]; - - try { - $result = civicrm_api3('Setting', 'getvalue', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_getvalue_expectedresult() { - - $expectedResult = 'Petition Contacts'; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetValue" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Setting/Revert.ex.php b/civicrm/api/v3/examples/Setting/Revert.ex.php deleted file mode 100644 index 5d414f9631..0000000000 --- a/civicrm/api/v3/examples/Setting/Revert.ex.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Setting.revert API. - * - * Demonstrates reverting a parameter to default value. - * - * @return array - * API result array - */ -function setting_revert_example() { - $params = [ - 'name' => 'address_format', - ]; - - try { - $result = civicrm_api3('Setting', 'revert', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function setting_revert_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 5, - 'id' => 1, - 'values' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'address_format' => '{contact.address_name} -{contact.street_address} -{contact.supplemental_address_1} -{contact.supplemental_address_2} -{contact.supplemental_address_3} -{contact.city}{, }{contact.state_province}{ }{contact.postal_code} -{contact.country}', - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testRevert" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SettingTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/StateProvince/Create.ex.php b/civicrm/api/v3/examples/StateProvince/Create.ex.php deleted file mode 100644 index 2d07ecf6b2..0000000000 --- a/civicrm/api/v3/examples/StateProvince/Create.ex.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the StateProvince.create API. - * - * @return array - * API result array - */ -function state_province_create_example() { - $params = [ - 'name' => 'Wessex', - 'abbreviation' => 'WEX', - 'country_id' => 1226, - ]; - - try { - $result = civicrm_api3('StateProvince', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function state_province_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 14064, - 'values' => [ - '14064' => [ - 'id' => '14064', - 'name' => 'Wessex', - 'abbreviation' => 'WEX', - 'country_id' => '1226', - 'is_active' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateStateProvince" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/StateProvinceTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/StateProvince/Delete.ex.php b/civicrm/api/v3/examples/StateProvince/Delete.ex.php deleted file mode 100644 index c51a5a0e69..0000000000 --- a/civicrm/api/v3/examples/StateProvince/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the StateProvince.delete API. - * - * @return array - * API result array - */ -function state_province_delete_example() { - $params = [ - 'id' => 14066, - ]; - - try { - $result = civicrm_api3('StateProvince', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function state_province_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteStateProvince" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/StateProvinceTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/StateProvince/Get.ex.php b/civicrm/api/v3/examples/StateProvince/Get.ex.php deleted file mode 100644 index 18d2a9ce4a..0000000000 --- a/civicrm/api/v3/examples/StateProvince/Get.ex.php +++ /dev/null @@ -1,84 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the StateProvince.get API. - * - * @return array - * API result array - */ -function state_province_get_example() { - $params = [ - 'name' => 'Wessex', - ]; - - try { - $result = civicrm_api3('StateProvince', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function state_province_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 14068, - 'values' => [ - '14068' => [ - 'id' => '14068', - 'name' => 'Wessex', - 'abbreviation' => 'WEX', - 'country_id' => '1226', - 'is_active' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/StateProvinceTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/StatusPreference/Create.ex.php b/civicrm/api/v3/examples/StatusPreference/Create.ex.php deleted file mode 100644 index 6eb9b4525d..0000000000 --- a/civicrm/api/v3/examples/StatusPreference/Create.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the StatusPreference.create API. - * - * @return array - * API result array - */ -function status_preference_create_example() { - $params = [ - 'name' => 'test_check', - 'domain_id' => 1, - 'hush_until' => '20151212', - 'ignore_severity' => 'cRItical', - 'check_info' => '', - ]; - - try { - $result = civicrm_api3('StatusPreference', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function status_preference_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 7, - 'values' => [ - '7' => [ - 'id' => '7', - 'domain_id' => '1', - 'name' => 'test_check', - 'hush_until' => '20151212000000', - 'ignore_severity' => '5', - 'prefs' => '', - 'check_info' => '', - 'is_active' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSeverityByName" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/StatusPreferenceTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/StatusPreference/Delete.ex.php b/civicrm/api/v3/examples/StatusPreference/Delete.ex.php deleted file mode 100644 index a4582c6eec..0000000000 --- a/civicrm/api/v3/examples/StatusPreference/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the StatusPreference.delete API. - * - * @return array - * API result array - */ -function status_preference_delete_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('StatusPreference', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function status_preference_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteStatusPreference" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/StatusPreferenceTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/StatusPreference/Get.ex.php b/civicrm/api/v3/examples/StatusPreference/Get.ex.php deleted file mode 100644 index f94a270575..0000000000 --- a/civicrm/api/v3/examples/StatusPreference/Get.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the StatusPreference.get API. - * - * @return array - * API result array - */ -function status_preference_get_example() { - $params = [ - 'id' => 5, - ]; - - try { - $result = civicrm_api3('StatusPreference', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function status_preference_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 5, - 'values' => [ - '5' => [ - 'id' => '5', - 'domain_id' => '1', - 'name' => 'test_check', - 'hush_until' => '2015-12-12', - 'ignore_severity' => '4', - 'is_active' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testStatusPreferenceGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/StatusPreferenceTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Survey/ChainedGetDelete.ex.php b/civicrm/api/v3/examples/Survey/ChainedGetDelete.ex.php deleted file mode 100644 index 4a24b150d9..0000000000 --- a/civicrm/api/v3/examples/Survey/ChainedGetDelete.ex.php +++ /dev/null @@ -1,98 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Survey.get API. - * - * Demonstrates get + delete in the same call. - * - * @return array - * API result array - */ -function survey_get_example() { - $params = [ - 'title' => 'survey title', - 'api.survey.delete' => 1, - ]; - - try { - $result = civicrm_api3('Survey', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function survey_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 4, - 'values' => [ - '4' => [ - 'id' => '4', - 'title' => 'survey title', - 'activity_type_id' => '30', - 'instructions' => 'Call people, ask for money', - 'max_number_of_contacts' => '12', - 'is_active' => '1', - 'is_default' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'bypass_confirm' => 0, - 'is_share' => '1', - 'api.survey.delete' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetSurveyChainDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SurveyTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Survey/Create.ex.php b/civicrm/api/v3/examples/Survey/Create.ex.php deleted file mode 100644 index ef2eba60f4..0000000000 --- a/civicrm/api/v3/examples/Survey/Create.ex.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Survey.create API. - * - * @return array - * API result array - */ -function survey_create_example() { - $params = [ - 'title' => 'survey title', - 'activity_type_id' => '30', - 'max_number_of_contacts' => 12, - 'instructions' => 'Call people, ask for money', - ]; - - try { - $result = civicrm_api3('Survey', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function survey_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'title' => 'survey title', - 'campaign_id' => '', - 'activity_type_id' => '30', - 'recontact_interval' => '', - 'instructions' => 'Call people, ask for money', - 'release_frequency' => '', - 'max_number_of_contacts' => '12', - 'default_number_of_contacts' => '', - 'is_active' => '', - 'is_default' => '', - 'created_id' => '', - 'created_date' => '2013-07-28 08:49:19', - 'last_modified_id' => '', - 'last_modified_date' => '', - 'result_id' => '', - 'bypass_confirm' => '', - 'thankyou_title' => '', - 'thankyou_text' => '', - 'is_share' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSurvey" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SurveyTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Survey/Delete.ex.php b/civicrm/api/v3/examples/Survey/Delete.ex.php deleted file mode 100644 index b93ad2be83..0000000000 --- a/civicrm/api/v3/examples/Survey/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Survey.delete API. - * - * @return array - * API result array - */ -function survey_delete_example() { - $params = [ - 'id' => 3, - ]; - - try { - $result = civicrm_api3('Survey', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function survey_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteSurvey" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SurveyTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Survey/Get.ex.php b/civicrm/api/v3/examples/Survey/Get.ex.php deleted file mode 100644 index 06a257139e..0000000000 --- a/civicrm/api/v3/examples/Survey/Get.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Survey.get API. - * - * @return array - * API result array - */ -function survey_get_example() { - $params = [ - 'title' => 'survey title', - 'activity_type_id' => '30', - 'max_number_of_contacts' => 12, - 'instructions' => 'Call people, ask for money', - ]; - - try { - $result = civicrm_api3('Survey', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function survey_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'title' => 'survey title', - 'activity_type_id' => '30', - 'instructions' => 'Call people, ask for money', - 'max_number_of_contacts' => '12', - 'is_active' => '1', - 'is_default' => 0, - 'created_date' => '2013-07-28 08:49:19', - 'bypass_confirm' => 0, - 'is_share' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetSurvey" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SurveyTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/SurveyRespondant/Get.ex.php b/civicrm/api/v3/examples/SurveyRespondant/Get.ex.php deleted file mode 100644 index 87ad6fa333..0000000000 --- a/civicrm/api/v3/examples/SurveyRespondant/Get.ex.php +++ /dev/null @@ -1,80 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the SurveyRespondant.get API. - * - * @deprecated - * The SurveyRespondant api is not currently supported. - * - * @return array - * API result array - */ -function survey_respondant_get_example() { - $params = [ - 'sequential' => '1', - 'survey_id' => 1, - ]; - - try { - $result = civicrm_api3('SurveyRespondant', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function survey_respondant_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - 'deprecated' => 'The SurveyRespondant api is not currently supported.', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetSurveyRespondants" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SurveyRespondantTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/System/Flush.ex.php b/civicrm/api/v3/examples/System/Flush.ex.php deleted file mode 100644 index 5e9f8acbdd..0000000000 --- a/civicrm/api/v3/examples/System/Flush.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the System.flush API. - * - * Flush all system caches. - * - * @return array - * API result array - */ -function system_flush_example() { - $params = []; - - try { - $result = civicrm_api3('System', 'flush', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function system_flush_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testFlush" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/SystemTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Tag/Create.ex.php b/civicrm/api/v3/examples/Tag/Create.ex.php deleted file mode 100644 index 92da15c578..0000000000 --- a/civicrm/api/v3/examples/Tag/Create.ex.php +++ /dev/null @@ -1,91 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Tag.create API. - * - * @return array - * API result array - */ -function tag_create_example() { - $params = [ - 'name' => 'Super Heros', - 'description' => 'Outside undie-wearers', - ]; - - try { - $result = civicrm_api3('Tag', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tag_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 17, - 'values' => [ - '17' => [ - 'id' => '17', - 'name' => 'Super Heros', - 'description' => 'Outside undie-wearers', - 'parent_id' => '', - 'is_selectable' => '', - 'is_reserved' => '', - 'is_tagset' => '', - 'used_for' => 'civicrm_contact', - 'created_id' => '', - 'color' => '', - 'created_date' => '2013-07-28 08:49:19', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Tag/Delete.ex.php b/civicrm/api/v3/examples/Tag/Delete.ex.php deleted file mode 100644 index a00738ac35..0000000000 --- a/civicrm/api/v3/examples/Tag/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Tag.delete API. - * - * @return array - * API result array - */ -function tag_delete_example() { - $params = [ - 'id' => '24', - ]; - - try { - $result = civicrm_api3('Tag', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tag_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testTagDeleteCorrectSyntax" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Tag/Get.ex.php b/civicrm/api/v3/examples/Tag/Get.ex.php deleted file mode 100644 index f2d1b724b6..0000000000 --- a/civicrm/api/v3/examples/Tag/Get.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Tag.get API. - * - * @return array - * API result array - */ -function tag_get_example() { - $params = [ - 'id' => '8', - 'name' => 'New Tag3', - ]; - - try { - $result = civicrm_api3('Tag', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tag_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 8, - 'values' => [ - '8' => [ - 'id' => '8', - 'name' => 'New Tag3', - 'description' => 'This is description for Our New Tag ', - 'is_selectable' => '1', - 'is_reserved' => 0, - 'is_tagset' => 0, - 'used_for' => 'civicrm_contact', - 'created_date' => '2013-07-28 08:49:19', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Tag/GetFields.ex.php b/civicrm/api/v3/examples/Tag/GetFields.ex.php deleted file mode 100644 index c754b5a433..0000000000 --- a/civicrm/api/v3/examples/Tag/GetFields.ex.php +++ /dev/null @@ -1,269 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Tag.getfields API. - * - * Demonstrate use of getfields to interrogate api. - * - * @return array - * API result array - */ -function tag_getfields_example() { - $params = [ - 'action' => 'create', - ]; - - try { - $result = civicrm_api3('Tag', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tag_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 11, - 'values' => [ - 'id' => [ - 'name' => 'id', - 'type' => 1, - 'title' => 'Tag ID', - 'description' => 'Tag ID', - 'required' => TRUE, - 'where' => 'civicrm_tag.id', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.aliases' => [ - '0' => 'tag', - ], - ], - 'name' => [ - 'name' => 'name', - 'type' => 2, - 'title' => 'Tag Name', - 'description' => 'Name of Tag.', - 'required' => TRUE, - 'maxlength' => 64, - 'size' => 30, - 'where' => 'civicrm_tag.name', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'add' => '1.1', - 'is_core_field' => TRUE, - 'api.required' => 1, - ], - 'description' => [ - 'name' => 'description', - 'type' => 2, - 'title' => 'Description', - 'description' => 'Optional verbose description of the tag.', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_tag.description', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'add' => '1.1', - 'is_core_field' => TRUE, - ], - 'parent_id' => [ - 'name' => 'parent_id', - 'type' => 1, - 'title' => 'Parent Tag ID', - 'description' => 'Optional parent id for this tag.', - 'where' => 'civicrm_tag.parent_id', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'FKClassName' => 'CRM_Core_DAO_Tag', - 'html' => [ - 'label' => 'Parent Tag', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'table' => 'civicrm_tag', - 'keyColumn' => 'id', - 'labelColumn' => 'name', - ], - 'add' => '1.1', - 'is_core_field' => TRUE, - 'FKApiName' => 'Tag', - ], - 'is_selectable' => [ - 'name' => 'is_selectable', - 'type' => 16, - 'title' => 'Display Tag?', - 'description' => 'Is this tag selectable / displayed', - 'where' => 'civicrm_tag.is_selectable', - 'default' => '1', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'add' => '2.1', - 'is_core_field' => TRUE, - ], - 'is_reserved' => [ - 'name' => 'is_reserved', - 'type' => 16, - 'title' => 'Reserved', - 'where' => 'civicrm_tag.is_reserved', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'add' => '3.2', - 'is_core_field' => TRUE, - ], - 'is_tagset' => [ - 'name' => 'is_tagset', - 'type' => 16, - 'title' => 'Tagset', - 'where' => 'civicrm_tag.is_tagset', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'add' => '3.2', - 'is_core_field' => TRUE, - ], - 'used_for' => [ - 'name' => 'used_for', - 'type' => 2, - 'title' => 'Used For', - 'maxlength' => 64, - 'size' => 30, - 'where' => 'civicrm_tag.used_for', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'serialize' => 5, - 'html' => [ - 'type' => 'Select', - 'maxlength' => 64, - 'size' => 30, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'tag_used_for', - 'optionEditPath' => 'civicrm/admin/options/tag_used_for', - ], - 'add' => '3.2', - 'is_core_field' => TRUE, - 'api.default' => 'civicrm_contact', - ], - 'created_id' => [ - 'name' => 'created_id', - 'type' => 1, - 'title' => 'Created By Contact ID', - 'description' => 'FK to civicrm_contact, who created this tag', - 'where' => 'civicrm_tag.created_id', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'html' => [ - 'label' => 'Created By', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '3.4', - 'is_core_field' => TRUE, - 'FKApiName' => 'Contact', - ], - 'color' => [ - 'name' => 'color', - 'type' => 2, - 'title' => 'Color', - 'description' => 'Hex color value e.g. #ffffff', - 'maxlength' => 255, - 'size' => 45, - 'where' => 'civicrm_tag.color', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'add' => '4.7', - 'is_core_field' => TRUE, - ], - 'created_date' => [ - 'name' => 'created_date', - 'type' => 12, - 'title' => 'Tag Created Date', - 'description' => 'Date and time that tag was created.', - 'where' => 'civicrm_tag.created_date', - 'table_name' => 'civicrm_tag', - 'entity' => 'Tag', - 'bao' => 'CRM_Core_BAO_Tag', - 'localizable' => 0, - 'add' => '3.4', - 'is_core_field' => TRUE, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testTagGetfields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Tag/GetList.ex.php b/civicrm/api/v3/examples/Tag/GetList.ex.php deleted file mode 100644 index d5f540c033..0000000000 --- a/civicrm/api/v3/examples/Tag/GetList.ex.php +++ /dev/null @@ -1,94 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Tag.getlist API. - * - * Demonstrates use of api.getlist for autocomplete and quicksearch applications. - * - * @return array - * API result array - */ -function tag_getlist_example() { - $params = [ - 'input' => 'New Tag3', - 'extra' => [ - '0' => 'used_for', - ], - ]; - - try { - $result = civicrm_api3('Tag', 'getlist', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tag_getlist_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 0, - 'values' => [ - '0' => [ - 'id' => '27', - 'label' => 'New Tag3', - 'description' => [ - '0' => 'This is description for Our New Tag ', - ], - 'extra' => [ - 'used_for' => 'civicrm_contact', - ], - ], - ], - 'page_num' => 1, - 'more_results' => '', - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testTagGetList" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Tag/GetReturnArray.ex.php b/civicrm/api/v3/examples/Tag/GetReturnArray.ex.php deleted file mode 100644 index d5518b1e7e..0000000000 --- a/civicrm/api/v3/examples/Tag/GetReturnArray.ex.php +++ /dev/null @@ -1,87 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Tag.get API. - * - * Demonstrates use of Return as an array. - * - * @return array - * API result array - */ -function tag_get_example() { - $params = [ - 'id' => '10', - 'name' => 'New Tag3', - 'return' => [ - '0' => 'name', - ], - ]; - - try { - $result = civicrm_api3('Tag', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tag_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 10, - 'values' => [ - '10' => [ - 'id' => '10', - 'name' => 'New Tag3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetReturnArray" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TagTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/TaxContributionPage/Create.ex.php b/civicrm/api/v3/examples/TaxContributionPage/Create.ex.php deleted file mode 100644 index 5c48e3b6be..0000000000 --- a/civicrm/api/v3/examples/TaxContributionPage/Create.ex.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example of using tax_contribution_page create API. - * - * @return array - * API result array - */ -function tax_contribution_page_create_example() { - $params = [ - 'contact_id' => 1, - 'receive_date' => '20120511', - 'total_amount' => '100', - 'financial_type_id' => 11, - 'contribution_page_id' => 1, - 'trxn_id' => 12345, - 'invoice_id' => 67890, - 'source' => 'SSF', - 'contribution_status_id' => 2, - ]; - - try { - $result = civicrm_api3('tax_contribution_page', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tax_contribution_page_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '1', - 'financial_type_id' => '11', - 'contribution_page_id' => '1', - 'payment_instrument_id' => '4', - 'receive_date' => '20120511000000', - 'non_deductible_amount' => '', - 'total_amount' => '120', - 'fee_amount' => 0, - 'net_amount' => '120', - 'trxn_id' => '12345', - 'invoice_id' => '67890', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '2', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => '20', - 'contribution_type_id' => '11', - ], - ], - ]; - - return $expectedResult; -} - -/** -* This example has been generated from the API test suite. -* The test that created it is called -* testCreateContributionPendingOnline -* and can be found in -* https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TaxContributionPageTest.php. -* -* You can see the outcome of the API tests at -* https://test.civicrm.org/job/CiviCRM-master-git/ -* -* To Learn about the API read -* http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API -* -* Browse the api on your own site with the api explorer -* http://MYSITE.ORG/path/to/civicrm/api -* -* Read more about testing here -* http://wiki.civicrm.org/confluence/display/CRM/Testing -* -* API Standards documentation: -* http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ diff --git a/civicrm/api/v3/examples/TaxContributionPage/CreateWithNestedLineItems.ex.php b/civicrm/api/v3/examples/TaxContributionPage/CreateWithNestedLineItems.ex.php deleted file mode 100644 index d71a6e2751..0000000000 --- a/civicrm/api/v3/examples/TaxContributionPage/CreateWithNestedLineItems.ex.php +++ /dev/null @@ -1,192 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example of using tax_contribution_page create API. - * - * Create Contribution with Nested Line Items. - * - * @return array - * API result array - */ -function tax_contribution_page_create_example() { - $params = [ - 'contact_id' => 1, - 'receive_date' => '20120511', - 'total_amount' => '400', - 'financial_type_id' => 7, - 'trxn_id' => 12345, - 'invoice_id' => 67890, - 'source' => 'SSF', - 'contribution_status_id' => 1, - 'skipLineItem' => 1, - 'api.line_item.create' => [ - '0' => [ - 'price_field_id' => [ - '0' => 3, - ], - 'qty' => 1, - 'line_total' => '100', - 'unit_price' => '100', - 'financial_type_id' => 7, - ], - '1' => [ - 'price_field_id' => [ - '0' => 3, - ], - 'qty' => 1, - 'line_total' => '300', - 'unit_price' => '300', - 'financial_type_id' => 8, - ], - ], - ]; - - try { - $result = civicrm_api3('tax_contribution_page', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tax_contribution_page_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '1', - 'financial_type_id' => '7', - 'contribution_page_id' => '', - 'payment_instrument_id' => '4', - 'receive_date' => '20120511000000', - 'non_deductible_amount' => '', - 'total_amount' => '435', - 'fee_amount' => 0, - 'net_amount' => '435', - 'trxn_id' => '12345', - 'invoice_id' => '67890', - 'currency' => 'USD', - 'cancel_date' => '', - 'cancel_reason' => '', - 'receipt_date' => '', - 'thankyou_date' => '', - 'source' => 'SSF', - 'amount_level' => '', - 'contribution_recur_id' => '', - 'is_test' => '', - 'is_pay_later' => '', - 'contribution_status_id' => '1', - 'address_id' => '', - 'check_number' => '', - 'campaign_id' => '', - 'creditnote_id' => '', - 'tax_amount' => '35', - 'contribution_type_id' => '7', - 'api.line_item.create' => [ - '0' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'entity_table' => 'civicrm_contribution', - 'entity_id' => '1', - 'contribution_id' => '1', - 'price_field_id' => [ - '0' => '3', - ], - 'label' => 'line item', - 'qty' => '1', - 'unit_price' => '100', - 'line_total' => '100', - 'participant_count' => '', - 'price_field_value_id' => '', - 'financial_type_id' => '7', - 'deductible_amount' => '', - 'tax_amount' => '20', - ], - ], - ], - '1' => [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '0' => [ - 'id' => '2', - 'entity_table' => 'civicrm_contribution', - 'entity_id' => '1', - 'contribution_id' => '1', - 'price_field_id' => [ - '0' => '3', - ], - 'label' => 'line item', - 'qty' => '1', - 'unit_price' => '300', - 'line_total' => '300', - 'participant_count' => '', - 'price_field_value_id' => '', - 'financial_type_id' => '8', - 'deductible_amount' => '', - 'tax_amount' => '15', - ], - ], - ], - ], - ], - ], - ]; - - return $expectedResult; -} - -/** -* This example has been generated from the API test suite. -* The test that created it is called -* testCreateContributionChainedLineItems -* and can be found in -* https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TaxContributionPageTest.php. -* -* You can see the outcome of the API tests at -* https://test.civicrm.org/job/CiviCRM-master-git/ -* -* To Learn about the API read -* http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API -* -* Browse the api on your own site with the api explorer -* http://MYSITE.ORG/path/to/civicrm/api -* -* Read more about testing here -* http://wiki.civicrm.org/confluence/display/CRM/Testing -* -* API Standards documentation: -* http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ diff --git a/civicrm/api/v3/examples/TaxContributionPage/Delete.ex.php b/civicrm/api/v3/examples/TaxContributionPage/Delete.ex.php deleted file mode 100644 index aab88461c9..0000000000 --- a/civicrm/api/v3/examples/TaxContributionPage/Delete.ex.php +++ /dev/null @@ -1,78 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example of using tax_contribution_page delete API. - * - * @return array - * API result array - */ -function tax_contribution_page_delete_example() { - $params = [ - 'id' => 1, - ]; - - try { - $result = civicrm_api3('tax_contribution_page', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'error' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function tax_contribution_page_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => 1, - ], - ]; - - return $expectedResult; -} - -/** -* This example has been generated from the API test suite. -* The test that created it is called -* testDeleteContribution -* and can be found in -* https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/TaxContributionPageTest.php. -* -* You can see the outcome of the API tests at -* https://test.civicrm.org/job/CiviCRM-master-git/ -* -* To Learn about the API read -* http://wiki.civicrm.org/confluence/display/CRMDOC/Using+the+API -* -* Browse the api on your own site with the api explorer -* http://MYSITE.ORG/path/to/civicrm/api -* -* Read more about testing here -* http://wiki.civicrm.org/confluence/display/CRM/Testing -* -* API Standards documentation: -* http://wiki.civicrm.org/confluence/display/CRM/API+Architecture+Standards -*/ diff --git a/civicrm/api/v3/examples/UFField/Create.ex.php b/civicrm/api/v3/examples/UFField/Create.ex.php deleted file mode 100644 index 79587ab169..0000000000 --- a/civicrm/api/v3/examples/UFField/Create.ex.php +++ /dev/null @@ -1,107 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFField.create API. - * - * @return array - * API result array - */ -function uf_field_create_example() { - $params = [ - 'field_name' => 'phone', - 'field_type' => 'Contact', - 'visibility' => 'Public Pages and Listings', - 'weight' => 1, - 'label' => 'Test Phone', - 'is_searchable' => 1, - 'is_active' => 1, - 'location_type_id' => 1, - 'phone_type_id' => 1, - 'uf_group_id' => 11, - ]; - - try { - $result = civicrm_api3('UFField', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_field_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'uf_group_id' => '11', - 'field_name' => 'phone', - 'is_active' => '1', - 'is_view' => '', - 'is_required' => '', - 'weight' => '1', - 'help_post' => '', - 'help_pre' => '', - 'visibility' => 'Public Pages and Listings', - 'in_selector' => '', - 'is_searchable' => '1', - 'location_type_id' => '1', - 'phone_type_id' => '1', - 'website_type_id' => '', - 'label' => 'Test Phone', - 'field_type' => 'Contact', - 'is_reserved' => '', - 'is_multi_summary' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateUFField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFField/Delete.ex.php b/civicrm/api/v3/examples/UFField/Delete.ex.php deleted file mode 100644 index 8b441b82de..0000000000 --- a/civicrm/api/v3/examples/UFField/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFField.delete API. - * - * @return array - * API result array - */ -function uf_field_delete_example() { - $params = [ - 'field_id' => 1, - ]; - - try { - $result = civicrm_api3('UFField', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_field_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => TRUE, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteUFField" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFField/Get.ex.php b/civicrm/api/v3/examples/UFField/Get.ex.php deleted file mode 100644 index 7ed1b1546f..0000000000 --- a/civicrm/api/v3/examples/UFField/Get.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFField.get API. - * - * @return array - * API result array - */ -function uf_field_get_example() { - $params = []; - - try { - $result = civicrm_api3('UFField', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_field_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'uf_group_id' => '11', - 'field_name' => 'phone', - 'is_active' => '1', - 'is_view' => 0, - 'is_required' => 0, - 'weight' => '1', - 'visibility' => 'Public Pages and Listings', - 'in_selector' => 0, - 'is_searchable' => '1', - 'location_type_id' => '1', - 'phone_type_id' => '1', - 'label' => 'Test Phone', - 'field_type' => 'Contact', - 'is_multi_summary' => 0, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetUFFieldSuccess" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFField/Replace.ex.php b/civicrm/api/v3/examples/UFField/Replace.ex.php deleted file mode 100644 index a3da0d3a30..0000000000 --- a/civicrm/api/v3/examples/UFField/Replace.ex.php +++ /dev/null @@ -1,173 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFField.replace API. - * - * @return array - * API result array - */ -function uf_field_replace_example() { - $params = [ - 'uf_group_id' => 11, - 'option.autoweight' => '', - 'values' => [ - '0' => [ - 'field_name' => 'first_name', - 'field_type' => 'Contact', - 'visibility' => 'Public Pages and Listings', - 'weight' => 3, - 'label' => 'Test First Name', - 'is_searchable' => 1, - 'is_active' => 1, - ], - '1' => [ - 'field_name' => 'country', - 'field_type' => 'Contact', - 'visibility' => 'Public Pages and Listings', - 'weight' => 2, - 'label' => 'Test Country', - 'is_searchable' => 1, - 'is_active' => 1, - 'location_type_id' => 1, - ], - '2' => [ - 'field_name' => 'phone', - 'field_type' => 'Contact', - 'visibility' => 'Public Pages and Listings', - 'weight' => 1, - 'label' => 'Test Phone', - 'is_searchable' => 1, - 'is_active' => 1, - 'location_type_id' => 1, - 'phone_type_id' => 1, - ], - ], - 'check_permissions' => TRUE, - ]; - - try { - $result = civicrm_api3('UFField', 'replace', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_field_replace_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 3, - 'values' => [ - '1' => [ - 'id' => '1', - 'uf_group_id' => '11', - 'field_name' => 'first_name', - 'is_active' => '1', - 'is_view' => '', - 'is_required' => '', - 'weight' => '3', - 'help_post' => '', - 'help_pre' => '', - 'visibility' => 'Public Pages and Listings', - 'in_selector' => '', - 'is_searchable' => '1', - 'location_type_id' => '', - 'phone_type_id' => '', - 'website_type_id' => '', - 'label' => 'Test First Name', - 'field_type' => 'Contact', - 'is_reserved' => '', - 'is_multi_summary' => '', - ], - '2' => [ - 'id' => '2', - 'uf_group_id' => '11', - 'field_name' => 'country', - 'is_active' => '1', - 'is_view' => '', - 'is_required' => '', - 'weight' => '2', - 'help_post' => '', - 'help_pre' => '', - 'visibility' => 'Public Pages and Listings', - 'in_selector' => '', - 'is_searchable' => '1', - 'location_type_id' => '1', - 'phone_type_id' => '', - 'website_type_id' => '', - 'label' => 'Test Country', - 'field_type' => 'Contact', - 'is_reserved' => '', - 'is_multi_summary' => '', - ], - '3' => [ - 'id' => '3', - 'uf_group_id' => '11', - 'field_name' => 'phone', - 'is_active' => '1', - 'is_view' => '', - 'is_required' => '', - 'weight' => '1', - 'help_post' => '', - 'help_pre' => '', - 'visibility' => 'Public Pages and Listings', - 'in_selector' => '', - 'is_searchable' => '1', - 'location_type_id' => '1', - 'phone_type_id' => '1', - 'website_type_id' => '', - 'label' => 'Test Phone', - 'field_type' => 'Contact', - 'is_reserved' => '', - 'is_multi_summary' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testReplaceUFFields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFFieldTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFGroup/Create.ex.php b/civicrm/api/v3/examples/UFGroup/Create.ex.php deleted file mode 100644 index baab92ae8c..0000000000 --- a/civicrm/api/v3/examples/UFGroup/Create.ex.php +++ /dev/null @@ -1,125 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFGroup.create API. - * - * @return array - * API result array - */ -function uf_group_create_example() { - $params = [ - 'add_captcha' => 1, - 'add_contact_to_group' => 1, - 'group' => 1, - 'cancel_url' => 'http://example.org/cancel', - 'created_date' => '2009-06-27 00:00:00', - 'created_id' => 1, - 'group_type' => 'Individual,Contact', - 'help_post' => 'help post', - 'help_pre' => 'help pre', - 'is_active' => 0, - 'is_cms_user' => 1, - 'is_edit_link' => 1, - 'is_map' => 1, - 'is_reserved' => 1, - 'is_uf_link' => 1, - 'is_update_dupe' => 1, - 'name' => 'Test_Group', - 'notify' => 'admin@example.org', - 'post_url' => 'http://example.org/post', - 'title' => 'Test Group', - ]; - - try { - $result = civicrm_api3('UFGroup', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_group_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'is_active' => 0, - 'group_type' => 'Individual,Contact', - 'title' => 'Test Group', - 'frontend_title' => '', - 'description' => '', - 'help_pre' => 'help pre', - 'help_post' => 'help post', - 'limit_listings_group_id' => '1', - 'post_url' => 'http://example.org/post', - 'add_to_group_id' => '1', - 'add_captcha' => '1', - 'is_map' => '1', - 'is_edit_link' => '1', - 'is_uf_link' => '1', - 'is_update_dupe' => '1', - 'cancel_url' => 'http://example.org/cancel', - 'is_cms_user' => '1', - 'notify' => 'admin@example.org', - 'is_reserved' => '1', - 'name' => 'Test_Group', - 'created_id' => '1', - 'created_date' => '2013-07-28 08:49:19', - 'is_proximity_search' => '', - 'cancel_button_text' => '', - 'submit_button_text' => '', - 'add_cancel_button' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUFGroupCreate" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFGroup/Delete.ex.php b/civicrm/api/v3/examples/UFGroup/Delete.ex.php deleted file mode 100644 index a1745bfb89..0000000000 --- a/civicrm/api/v3/examples/UFGroup/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFGroup.delete API. - * - * @return array - * API result array - */ -function uf_group_delete_example() { - $params = [ - 'id' => 2, - ]; - - try { - $result = civicrm_api3('UFGroup', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_group_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUFGroupDelete" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFGroup/Get.ex.php b/civicrm/api/v3/examples/UFGroup/Get.ex.php deleted file mode 100644 index 274b7c0c46..0000000000 --- a/civicrm/api/v3/examples/UFGroup/Get.ex.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFGroup.get API. - * - * @return array - * API result array - */ -function uf_group_get_example() { - $params = [ - 'id' => 2, - ]; - - try { - $result = civicrm_api3('UFGroup', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_group_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 2, - 'values' => [ - '2' => [ - 'id' => '2', - 'is_active' => 0, - 'group_type' => 'Individual,Contact', - 'title' => 'Test Group', - 'help_pre' => 'help pre', - 'help_post' => 'help post', - 'limit_listings_group_id' => '1', - 'post_url' => 'http://example.org/post', - 'add_to_group_id' => '1', - 'add_captcha' => '1', - 'is_map' => '1', - 'is_edit_link' => '1', - 'is_uf_link' => '1', - 'is_update_dupe' => '1', - 'cancel_URL' => 'http://example.org/cancel', - 'is_cms_user' => '1', - 'notify' => 'admin@example.org', - 'is_reserved' => '1', - 'name' => 'Test_Group', - 'created_id' => '1', - 'created_date' => '2013-07-28 08:49:19', - 'is_proximity_search' => 0, - 'add_cancel_button' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUFGroupGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFGroupTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFJoin/Create.ex.php b/civicrm/api/v3/examples/UFJoin/Create.ex.php deleted file mode 100644 index 52fcc0975b..0000000000 --- a/civicrm/api/v3/examples/UFJoin/Create.ex.php +++ /dev/null @@ -1,93 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFJoin.create API. - * - * @return array - * API result array - */ -function uf_join_create_example() { - $params = [ - 'module' => 'CiviCampaign', - 'entity_table' => 'civicrm_survey', - 'entity_id' => 1, - 'weight' => 1, - 'uf_group_id' => 11, - 'is_active' => 1, - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('UFJoin', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_join_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 0, - 'values' => [ - '0' => [ - 'id' => '1', - 'is_active' => '1', - 'module' => 'CiviCampaign', - 'entity_table' => 'civicrm_survey', - 'entity_id' => '1', - 'weight' => '1', - 'uf_group_id' => '11', - 'module_data' => '', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateSurveyUFJoin" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFJoinTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFJoin/Get.ex.php b/civicrm/api/v3/examples/UFJoin/Get.ex.php deleted file mode 100644 index 50ea381ebb..0000000000 --- a/civicrm/api/v3/examples/UFJoin/Get.ex.php +++ /dev/null @@ -1,88 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFJoin.get API. - * - * @return array - * API result array - */ -function uf_join_get_example() { - $params = [ - 'entity_table' => 'civicrm_contribution_page', - 'entity_id' => 1, - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('UFJoin', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_join_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '0' => [ - 'id' => '1', - 'is_active' => '1', - 'module' => 'CiviContribute', - 'entity_table' => 'civicrm_contribution_page', - 'entity_id' => '1', - 'weight' => '1', - 'uf_group_id' => '11', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetUFJoinId" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFJoinTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/UFMatch/Get.ex.php b/civicrm/api/v3/examples/UFMatch/Get.ex.php deleted file mode 100644 index d4d6e24c19..0000000000 --- a/civicrm/api/v3/examples/UFMatch/Get.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the UFMatch.get API. - * - * @return array - * API result array - */ -function uf_match_get_example() { - $params = [ - 'contact_id' => 69, - ]; - - try { - $result = civicrm_api3('UFMatch', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function uf_match_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'domain_id' => '1', - 'uf_id' => '42', - 'contact_id' => '69', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetUFID" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UFMatchTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/User/Get.ex.php b/civicrm/api/v3/examples/User/Get.ex.php deleted file mode 100644 index e5879ca59f..0000000000 --- a/civicrm/api/v3/examples/User/Get.ex.php +++ /dev/null @@ -1,83 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the User.get API. - * - * @return array - * API result array - */ -function user_get_example() { - $params = [ - 'contact_id' => 3, - 'sequential' => 1, - ]; - - try { - $result = civicrm_api3('User', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function user_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 6, - 'values' => [ - '0' => [ - 'id' => '6', - 'name' => 'superman', - 'contact_id' => '3', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testUserGet" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UserTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/User/GetFields.ex.php b/civicrm/api/v3/examples/User/GetFields.ex.php deleted file mode 100644 index 905194a08f..0000000000 --- a/civicrm/api/v3/examples/User/GetFields.ex.php +++ /dev/null @@ -1,92 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the User.getfields API. - * - * @return array - * API result array - */ -function user_getfields_example() { - $params = [ - 'action' => 'get', - ]; - - try { - $result = civicrm_api3('User', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function user_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 3, - 'values' => [ - 'contact_id' => [ - 'title' => 'Contact ID', - 'type' => 1, - 'api.required' => 1, - 'name' => 'contact_id', - ], - 'id' => [ - 'title' => 'CMS User ID', - 'type' => 1, - 'name' => 'id', - ], - 'name' => [ - 'title' => 'Username', - 'type' => 2, - 'name' => 'name', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetFields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/UserTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Website/Create.ex.php b/civicrm/api/v3/examples/Website/Create.ex.php deleted file mode 100644 index 2ec70d1cd3..0000000000 --- a/civicrm/api/v3/examples/Website/Create.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Website.create API. - * - * @return array - * API result array - */ -function website_create_example() { - $params = [ - 'contact_id' => 3, - 'url' => 'website.com', - 'website_type_id' => 1, - ]; - - try { - $result = civicrm_api3('Website', 'create', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function website_create_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 1, - 'values' => [ - '1' => [ - 'id' => '1', - 'contact_id' => '3', - 'url' => 'website.com', - 'website_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testCreateWebsite" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/WebsiteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Website/Delete.ex.php b/civicrm/api/v3/examples/Website/Delete.ex.php deleted file mode 100644 index c08be41dff..0000000000 --- a/civicrm/api/v3/examples/Website/Delete.ex.php +++ /dev/null @@ -1,75 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Website.delete API. - * - * @return array - * API result array - */ -function website_delete_example() { - $params = [ - 'id' => 5, - ]; - - try { - $result = civicrm_api3('Website', 'delete', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function website_delete_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'values' => 1, - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testDeleteWebsite" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/WebsiteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Website/Get.ex.php b/civicrm/api/v3/examples/Website/Get.ex.php deleted file mode 100644 index 63b3a32b18..0000000000 --- a/civicrm/api/v3/examples/Website/Get.ex.php +++ /dev/null @@ -1,85 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Website.get API. - * - * @return array - * API result array - */ -function website_get_example() { - $params = [ - 'contact_id' => 5, - 'url' => 'website.com', - 'website_type_id' => 1, - ]; - - try { - $result = civicrm_api3('Website', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function website_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 1, - 'id' => 3, - 'values' => [ - '3' => [ - 'id' => '3', - 'contact_id' => '5', - 'url' => 'website.com', - 'website_type_id' => '1', - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetWebsite" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/WebsiteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Website/GetFields.ex.php b/civicrm/api/v3/examples/Website/GetFields.ex.php deleted file mode 100644 index cb69653997..0000000000 --- a/civicrm/api/v3/examples/Website/GetFields.ex.php +++ /dev/null @@ -1,165 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Website.getfields API. - * - * @return array - * API result array - */ -function website_getfields_example() { - $params = [ - 'action' => 'get', - ]; - - try { - $result = civicrm_api3('Website', 'getfields', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function website_getfields_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 4, - 'values' => [ - 'id' => [ - 'name' => 'id', - 'type' => 1, - 'title' => 'Website ID', - 'description' => 'Unique Website ID', - 'required' => TRUE, - 'where' => 'civicrm_website.id', - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - 'size' => 6, - 'maxlength' => 14, - ], - 'readonly' => TRUE, - 'add' => '3.2', - 'is_core_field' => TRUE, - 'api.aliases' => [ - '0' => 'website_id', - ], - ], - 'contact_id' => [ - 'name' => 'contact_id', - 'type' => 1, - 'title' => 'Contact ID', - 'description' => 'FK to Contact ID', - 'where' => 'civicrm_website.contact_id', - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'html' => [ - 'label' => 'Contact', - 'size' => 6, - 'maxlength' => 14, - ], - 'add' => '3.2', - 'is_core_field' => TRUE, - 'FKApiName' => 'Contact', - ], - 'url' => [ - 'name' => 'url', - 'type' => 2, - 'title' => 'Website', - 'description' => 'Website', - 'maxlength' => 128, - 'size' => 30, - 'import' => TRUE, - 'where' => 'civicrm_website.url', - 'headerPattern' => '/Website/i', - 'dataPattern' => '/^[A-Za-z][0-9A-Za-z]{20,}$/', - 'export' => TRUE, - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => 128, - 'size' => 30, - ], - 'add' => '3.2', - 'is_core_field' => TRUE, - ], - 'website_type_id' => [ - 'name' => 'website_type_id', - 'type' => 1, - 'title' => 'Website Type', - 'description' => 'Which Website type does this website belong to.', - 'where' => 'civicrm_website.website_type_id', - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => 6, - 'maxlength' => 14, - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'website_type', - 'optionEditPath' => 'civicrm/admin/options/website_type', - ], - 'add' => '3.2', - 'is_core_field' => TRUE, - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetFields" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/WebsiteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/api/v3/examples/Website/GetWithMetadata.ex.php b/civicrm/api/v3/examples/Website/GetWithMetadata.ex.php deleted file mode 100644 index 652a3c562b..0000000000 --- a/civicrm/api/v3/examples/Website/GetWithMetadata.ex.php +++ /dev/null @@ -1,174 +0,0 @@ -<?php - -/** - * @file - */ - -/** - * Test Generated example demonstrating the Website.get API. - * - * Demonostrates returning field metadata. - * - * @return array - * API result array - */ -function website_get_example() { - $params = [ - 'options' => [ - 'metadata' => [ - '0' => 'fields', - ], - ], - ]; - - try { - $result = civicrm_api3('Website', 'get', $params); - } - catch (CRM_Core_Exception $e) { - // Handle error here. - $errorMessage = $e->getMessage(); - $errorCode = $e->getErrorCode(); - $errorData = $e->getExtraParams(); - return [ - 'is_error' => 1, - 'error_message' => $errorMessage, - 'error_code' => $errorCode, - 'error_data' => $errorData, - ]; - } - - return $result; -} - -/** - * Function returns array of result expected from previous function. - * - * @return array - * API result array - */ -function website_get_expectedresult() { - - $expectedResult = [ - 'is_error' => 0, - 'version' => 3, - 'count' => 0, - 'values' => [], - 'metadata' => [ - 'fields' => [ - 'id' => [ - 'name' => 'id', - 'type' => '1', - 'title' => 'Website ID', - 'description' => 'Unique Website ID', - 'required' => '1', - 'where' => 'civicrm_website.id', - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - 'size' => '6', - 'maxlength' => '14', - ], - 'readonly' => '1', - 'add' => '3.2', - 'is_core_field' => '1', - 'api.aliases' => [ - '0' => 'website_id', - ], - ], - 'contact_id' => [ - 'name' => 'contact_id', - 'type' => '1', - 'title' => 'Contact ID', - 'description' => 'FK to Contact ID', - 'where' => 'civicrm_website.contact_id', - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'FKClassName' => 'CRM_Contact_DAO_Contact', - 'html' => [ - 'label' => 'Contact', - 'size' => '6', - 'maxlength' => '14', - ], - 'add' => '3.2', - 'is_core_field' => '1', - 'FKApiName' => 'Contact', - ], - 'url' => [ - 'name' => 'url', - 'type' => '2', - 'title' => 'Website', - 'description' => 'Website', - 'maxlength' => '128', - 'size' => '30', - 'import' => '1', - 'where' => 'civicrm_website.url', - 'headerPattern' => '/Website/i', - 'dataPattern' => '/^[A-Za-z][0-9A-Za-z]{20,}$/', - 'export' => '1', - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'html' => [ - 'type' => 'Text', - 'maxlength' => '128', - 'size' => '30', - ], - 'add' => '3.2', - 'is_core_field' => '1', - ], - 'website_type_id' => [ - 'name' => 'website_type_id', - 'type' => '1', - 'title' => 'Website Type', - 'description' => 'Which Website type does this website belong to.', - 'where' => 'civicrm_website.website_type_id', - 'table_name' => 'civicrm_website', - 'entity' => 'Website', - 'bao' => 'CRM_Core_BAO_Website', - 'localizable' => 0, - 'html' => [ - 'type' => 'Select', - 'size' => '6', - 'maxlength' => '14', - ], - 'pseudoconstant' => [ - 'optionGroupName' => 'website_type', - 'optionEditPath' => 'civicrm/admin/options/website_type', - ], - 'add' => '3.2', - 'is_core_field' => '1', - ], - ], - ], - ]; - - return $expectedResult; -} - -/* - * This example has been generated from the API test suite. - * The test that created it is called "testGetMetadata" - * and can be found at: - * https://github.com/civicrm/civicrm-core/blob/master/tests/phpunit/api/v3/WebsiteTest.php - * - * You can see the outcome of the API tests at - * https://test.civicrm.org/job/CiviCRM-Core-Matrix/ - * - * To Learn about the API read - * https://docs.civicrm.org/dev/en/latest/api/ - * - * Browse the API on your own site with the API Explorer. It is in the main - * CiviCRM menu, under: Support > Development > API Explorer. - * - * Read more about testing here - * https://docs.civicrm.org/dev/en/latest/testing/ - * - * API Standards documentation: - * https://docs.civicrm.org/dev/en/latest/framework/api-architecture/ - */ diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index d6f0cd2ed0..1061837a50 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.65.2', + return array( 'version' => '5.66.0', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/composer.json b/civicrm/composer.json index dca1defecf..3e3eb89829 100644 --- a/civicrm/composer.json +++ b/civicrm/composer.json @@ -66,7 +66,7 @@ "psr/log": "~1.0 || ~2.0 || ~3.0", "symfony/finder": "~4.4 || ~6.0", "tecnickcom/tcpdf" : "6.4.*", - "totten/ca-config": "~22.11", + "totten/ca-config": "~23.07", "zetacomponents/base": "1.9.*", "zetacomponents/mail": "~1.9.4", "marcj/topsort": "~1.1", diff --git a/civicrm/composer.lock b/civicrm/composer.lock index b4a52e6f87..b4288d6318 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": "d53a256f9748f1facc1312352b5a9acb", + "content-hash": "377176179275d0aa4262d031e5bc4559", "packages": [ { "name": "adrienrn/php-mimetyper", @@ -5102,16 +5102,16 @@ }, { "name": "totten/ca-config", - "version": "v22.11.0", + "version": "v23.07.0", "source": { "type": "git", "url": "https://github.com/totten/ca_config.git", - "reference": "8a78926b11f00e6a154098aeb2110df53b8a3c67" + "reference": "12571f07b994d555bf1a956e310f224da3ebbd8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/totten/ca_config/zipball/8a78926b11f00e6a154098aeb2110df53b8a3c67", - "reference": "8a78926b11f00e6a154098aeb2110df53b8a3c67", + "url": "https://api.github.com/repos/totten/ca_config/zipball/12571f07b994d555bf1a956e310f224da3ebbd8d", + "reference": "12571f07b994d555bf1a956e310f224da3ebbd8d", "shasum": "" }, "require": { @@ -5137,9 +5137,9 @@ "homepage": "https://github.com/totten/ca_config", "support": { "issues": "https://github.com/totten/ca_config/issues", - "source": "https://github.com/totten/ca_config/tree/v22.11.0" + "source": "https://github.com/totten/ca_config/tree/v23.07.0" }, - "time": "2022-11-06T02:39:19+00:00" + "time": "2023-07-14T07:20:50+00:00" }, { "name": "totten/lurkerlite", diff --git a/civicrm/css/menubar-standalone.css b/civicrm/css/menubar-standalone.css index bcf1fb3343..019ff14567 100644 --- a/civicrm/css/menubar-standalone.css +++ b/civicrm/css/menubar-standalone.css @@ -1,3 +1,4 @@ +/* The title of this file is menubar-standalone, but the CSS is more general than that. @todo fixme */ @media (min-width: $breakMin) { body.crm-menubar-visible.crm-menubar-over-cms-menu { @@ -30,3 +31,17 @@ .breadcrumb ol li:not(:first-child)::before { content: " \BB "; } + +.standalone-errors { + background: #ffe8e4; + color: #422; + padding: 1rem; + margin-bottom: 1rem; +} + +.standalone-errors code { + color: #004e81; +} +.standalone-errors .backtrace { + font-size: 0.825rem; +} diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php index e788dfa74f..cf283b74a7 100644 --- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php +++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php @@ -129,7 +129,8 @@ class AfformAdminMeta { $idField = CoreUtil::getIdFieldName($entityName); $fields[$idField]['readonly'] = FALSE; $fields[$idField]['input_type'] = 'EntityRef'; - $fields[$idField]['is_id'] = TRUE; + // Afform-only (so far) metadata tells the form to update an existing entity autofilled from this value + $fields[$idField]['input_attrs']['autofill'] = 'update'; $fields[$idField]['fk_entity'] = $entityName; $fields[$idField]['label'] = E::ts('Existing %1', [1 => CoreUtil::getInfoItem($entityName, 'title')]); // Mix in alterations declared by afform entities diff --git a/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php b/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php index 0828b562b2..675bee1938 100644 --- a/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php +++ b/civicrm/ext/afform/admin/Civi/Api4/Action/Afform/LoadAdminData.php @@ -48,7 +48,7 @@ class LoadAdminData extends \Civi\Api4\Generic\AbstractAction { case 'form': $info['definition'] = $this->definition + [ 'title' => '', - 'permission' => 'access CiviCRM', + 'permission' => ['access CiviCRM'], 'layout' => [ [ '#tag' => 'af-form', @@ -70,7 +70,7 @@ class LoadAdminData extends \Civi\Api4\Generic\AbstractAction { case 'search': $info['definition'] = $this->definition + [ 'title' => '', - 'permission' => 'access CiviCRM', + 'permission' => ['access CiviCRM'], 'layout' => [ [ '#tag' => 'div', diff --git a/civicrm/ext/afform/admin/afformEntities/Note.php b/civicrm/ext/afform/admin/afformEntities/Note.php new file mode 100644 index 0000000000..a8a35545a2 --- /dev/null +++ b/civicrm/ext/afform/admin/afformEntities/Note.php @@ -0,0 +1,5 @@ +<?php +return [ + 'type' => 'join', + 'repeat_max' => NULL, +]; diff --git a/civicrm/ext/afform/admin/ang/afAdmin.js b/civicrm/ext/afform/admin/ang/afAdmin.js index cf77161755..8d45473732 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', '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', 'is_dashlet', 'contact_summary:label'] }); } } diff --git a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js index cb25346714..70c9536f93 100644 --- a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js +++ b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.controller.js @@ -32,22 +32,13 @@ if (afform['contact_summary:label']) { afform.placement.push(afform['contact_summary:label']); } + if (afform.submission_date) { + afform.submission_date = CRM.utils.formatDate(afform.submission_date); + } afforms[afform.type] = afforms[afform.type] || []; afforms[afform.type].push(afform); }, {}); - // Load aggregated submission stats for each form - crmApi4('AfformSubmission', 'get', { - select: ['afform_name', 'MAX(submission_date) AS last_submission', 'COUNT(id) AS submission_count'], - groupBy: ['afform_name'] - }).then(function(submissions) { - _.each(submissions, function(submission) { - var afform = _.findWhere(afforms, {name: submission.afform_name}) || {}; - afform.last_submission = CRM.utils.formatDate(submission.last_submission); - afform.submission_count = submission.submission_count; - }); - }); - // Change sort field/direction when clicking a column header this.sortBy = function(col) { ctrl.sortDir = ctrl.sortField === col ? !ctrl.sortDir : false; diff --git a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.html b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.html index b74450e4b8..a15be805b4 100644 --- a/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.html +++ b/civicrm/ext/afform/admin/ang/afAdmin/afAdminList.html @@ -60,6 +60,11 @@ <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'placement.length'"></i> {{:: ts('Placement') }} </th> + <th ng-if="$ctrl.tab === 'form'" title="{{:: ts('Click to sort') }}" ng-click="$ctrl.sortBy('submit_currently_open')"> + <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'submit_currently_open'"></i> + <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'submit_currently_open'"></i> + {{:: ts('Status') }} + </th> <th ng-if="$ctrl.tab === 'form'" title="{{:: ts('Click to sort') }}" ng-click="$ctrl.sortBy('submission_count')"> <i class="crm-i fa-sort disabled" ng-if="$ctrl.sortField !== 'submission_count'"></i> <i class="crm-i fa-sort-{{ $ctrl.sortDir ? 'asc' : 'desc' }}" ng-if="$ctrl.sortField === 'submission_count'"></i> @@ -86,12 +91,18 @@ </a> </td> <td>{{:: afform.placement.join(', ') }}</td> + <td ng-if="$ctrl.tab === 'form'"> + {{:: afform.submit_currently_open ? ts('Open') : ts('Closed') }} + <span ng-if="afform.submit_limit && afform.submit_enabled"> + ({{:: ts('%1 remaining', {1: afform.submit_limit - afform.submission_count}) }}) + </span> + </td> <td ng-if="$ctrl.tab === 'form'"> <a ng-if="afform.submission_count" ng-href="{{:: crmUrl('civicrm/admin/afform/submissions#/?name=' + afform.name) }}"> {{:: afform.submission_count === 1 ? ts('1 Submission') : ts('%1 Submissions', {1: afform.submission_count}) }} </a> - <div ng-if="afform.last_submission"> - {{:: ts('Last submitted: %1', {1: afform.last_submission}) }} + <div ng-if="afform.submission_date"> + {{:: ts('Last submitted: %1', {1: afform.submission_date}) }} </div> </td> <td> diff --git a/civicrm/ext/afform/admin/ang/afAdminFormSubmissionList.aff.json b/civicrm/ext/afform/admin/ang/afAdminFormSubmissionList.aff.json index 88d0a00294..3584ff5948 100644 --- a/civicrm/ext/afform/admin/ang/afAdminFormSubmissionList.aff.json +++ b/civicrm/ext/afform/admin/ang/afAdminFormSubmissionList.aff.json @@ -2,5 +2,6 @@ "type": "system", "title": "Submissions", "server_route": "civicrm/admin/afform/submissions", - "permission": [["administer CiviCRM", "administer afform"]] + "permission": ["administer CiviCRM", "administer afform"], + "permission_operator": "OR" } diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor.css b/civicrm/ext/afform/admin/ang/afGuiEditor.css index 3aca35836f..b15d5892c7 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor.css +++ b/civicrm/ext/afform/admin/ang/afGuiEditor.css @@ -346,6 +346,13 @@ body.af-gui-dragging { color: #0071bd; } +#afGuiEditor #af_config_form_permission { + width: calc(100% - 55px); +} +#afGuiEditor #af_config_form_permission_operator { + width: 45px; +} + #afGuiEditor .af-gui-layout-icon { width: 12px; height: 11px; diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js index 73ab209afe..07eb9fabeb 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js @@ -98,6 +98,7 @@ if (editor.mode === 'clone') { delete editor.afform.name; delete editor.afform.server_route; + delete editor.afform.navigation; editor.afform.is_dashlet = false; editor.afform.title += ' ' + ts('(copy)'); } @@ -118,6 +119,7 @@ if (editor.mode === 'create') { editor.addEntity(editor.entity); + editor.afform.submit_enabled = true; editor.afform.create_submission = true; editor.layout['#children'].push(afGui.meta.elements.submit.element); } @@ -136,6 +138,8 @@ editor.searchDisplays = getSearchDisplaysOnForm(); } + editor.afform.permission_operator = editor.afform.permission_operator || 'AND'; + // Initialize undo history undoAction = 'initialLoad'; undoHistory = [{ diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html index bc858eef3e..43f9225e85 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/config-form.html @@ -22,8 +22,17 @@ <label for="af_config_form_permission"> {{:: ts('Permission') }} </label> - <input ng-model="editor.afform.permission" class="form-control" id="af_config_form_permission" crm-ui-select="{data: editor.meta.permissions}" > - <p class="help-block">{{:: ts('What permission is required to use this form?') }}</p> + <div class="form-inline" > + <input ng-model="editor.afform.permission" class="form-control" id="af_config_form_permission" crm-ui-select="{data: editor.meta.permissions, multiple: true}" ng-list > + <select ng-model="editor.afform.permission_operator" class="form-control" id="af_config_form_permission_operator" > + <option value="AND">{{:: ts('And') }}</option> + <option value="OR">{{:: ts('Or') }}</option> + </select> + </div> + <p class="help-block"> + {{:: ts('What permission is required to use this form?') }} + {{:: ts('Join multiple permissions with "And" to require all, or "Or" to require at least one.') }} + </p> </div> <!-- Placement options do not apply to blocks --> @@ -114,25 +123,46 @@ <!-- Submit actions are only applicable to form types with a submit button (exclude blocks and search forms) --> <fieldset ng-if=":: editor.afform.type === 'form'"> - <legend>{{:: ts('Submit Actions') }}</legend> + <legend class="form-inline"> + {{:: ts('Submissions') }} + </legend> - <div class="form-group" > - <label> - <input type="checkbox" ng-model="editor.afform.create_submission" > - {{:: ts('Log Submissions') }} + <p class="form-inline"> + <label class="radio"> + <input class="crm-form-radio" type="radio" name="submit_enabled" ng-model="editor.afform.submit_enabled" ng-value="true"> + {{:: ts('Open') }} </label> - <p class="help-block">{{:: ts('Keep a log of the date, time, user, and items saved by each form submission.') }}</p> - </div> - - <div class="form-group" ng-class="{'has-error': !!config_form.redirect.$error.pattern}"> - <label for="af_config_redirect"> - {{:: ts('Post-Submit Page') }} + <label class="radio"> + <input class="crm-form-radio" type="radio" name="submit_enabled" ng-model="editor.afform.submit_enabled" ng-value="false"> + {{:: ts('Closed') }} </label> - <div class="input-group"> - <input ng-model="editor.afform.redirect" name="redirect" class="form-control" id="af_config_redirect" title="{{:: ts('Post-Submit Page') }}" pattern="^((http|https):\/\/|\/|civicrm\/)[-0-9a-zA-Z\/_.]\S+$" title="{{:: ts('Post-Submit Page must be either an absolute url, a relative url or a path starting with CiviCRM') }}" ng-model-options="editor.debounceMode" > - <af-gui-token-select class="input-group-addon" model="editor.afform" field="redirect"></af-gui-token-select> + </p> + + <div ng-if="editor.afform.submit_enabled"> + + <div class="form-group"> + <label> + <input type="checkbox" ng-model="editor.afform.create_submission" > + {{:: ts('Log Submissions') }} + </label> + <p class="help-block">{{:: ts('Keep a log of the date, time, user, and items saved by each form submission.') }}</p> + </div> + + <div class="form-inline" ng-if="editor.afform.create_submission"> + <label for="submit_limit">{{:: ts('Maximum Submissions') }}</label> + <input type="number" min="1" step="1" id="submit_limit" ng-model="editor.afform.submit_limit" placeholder="{{:: ts('Unlimited') }}"> + </div> + + <div class="form-group" ng-class="{'has-error': !!config_form.redirect.$error.pattern}"> + <label for="af_config_redirect"> + {{:: ts('Post-Submit Page') }} + </label> + <div class="input-group"> + <input ng-model="editor.afform.redirect" name="redirect" class="form-control" id="af_config_redirect" title="{{:: ts('Post-Submit Page') }}" pattern="^((http|https):\/\/|\/|civicrm\/)[-0-9a-zA-Z\/_.]\S+$" title="{{:: ts('Post-Submit Page must be either an absolute url, a relative url or a path starting with CiviCRM') }}" ng-model-options="editor.debounceMode" > + <af-gui-token-select class="input-group-addon" model="editor.afform" field="redirect"></af-gui-token-select> + </div> + <p class="help-block">{{:: ts('Enter a URL or path that the form should redirect to following a successful submission.') }}</p> </div> - <p class="help-block">{{:: ts('Enter a URL or path that the form should redirect to following a successful submission.') }}</p> </div> </fieldset> </ng-form> 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 7e729c1842..9c49cbcccd 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html @@ -1,4 +1,4 @@ -<li ng-if="!$ctrl.fieldDefn.is_id"> +<li ng-if="!$ctrl.fieldDefn.input_attrs || !$ctrl.fieldDefn.input_attrs.autofill"> <div href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown"> <label>{{:: ts('Type:') }}</label> <select class="form-control" ng-model="getSet('input_type')" ng-model-options="{getterSetter: true}" title="{{:: ts('Field type') }}"> @@ -50,7 +50,7 @@ {{:: ts('Required') }} </a> </li> -<li ng-if="!$ctrl.fieldDefn.is_id"> +<li ng-if="!$ctrl.fieldDefn.input_attrs || !$ctrl.fieldDefn.input_attrs.autofill"> <a href ng-click="toggleDefaultValue(); $event.stopPropagation(); $event.target.blur();" title="{{:: ts('Pre-fill this field with a value') }}"> <i class="crm-i fa-{{ $ctrl.hasDefaultValue ? 'check-' : '' }}square-o"></i> {{:: ts('Default value') }} diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml index 4f8949bd24..6f162974e3 100644 --- a/civicrm/ext/afform/admin/info.xml +++ b/civicrm/ext/afform/admin/info.xml @@ -13,10 +13,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-01-09</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</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/core/CRM/Afform/AfformScanner.php b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php index b7f3a5a47c..ae136c30c5 100644 --- a/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php +++ b/civicrm/ext/afform/core/CRM/Afform/AfformScanner.php @@ -149,7 +149,7 @@ class CRM_Afform_AfformScanner { 'is_dashlet' => FALSE, 'is_public' => FALSE, 'is_token' => FALSE, - 'permission' => 'access CiviCRM', + 'permission' => ['access CiviCRM'], 'type' => 'system', ]; @@ -157,7 +157,7 @@ class CRM_Afform_AfformScanner { if ($metaFile !== NULL) { $r = array_merge($defaults, json_decode(file_get_contents($metaFile), 1)); // Previous revisions of GUI allowed permission==''. array_merge() doesn't catch all forms of missing-ness. - if ($r['permission'] === '') { + if (empty($r['permission'])) { $r['permission'] = $defaults['permission']; } return $r; diff --git a/civicrm/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php b/civicrm/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php index 6985388f71..5d44252a86 100644 --- a/civicrm/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php +++ b/civicrm/ext/afform/core/CRM/Afform/BAO/AfformSubmission.php @@ -8,12 +8,28 @@ class CRM_Afform_BAO_AfformSubmission extends CRM_Afform_DAO_AfformSubmission { * @return array */ public static function getAllAfformsByName() { - return \Civi\Api4\Afform::get(FALSE) - ->addSelect('name', 'title') + $suffixMap = [ + 'id' => 'name', + 'name' => 'module_name', + 'abbr' => 'directive_name', + 'label' => 'title', + 'description' => 'description', + 'icon' => 'icon', + 'url' => 'server_route', + ]; + $afforms = \Civi\Api4\Afform::get(FALSE) + ->setSelect(array_values($suffixMap)) ->addOrderBy('title') - ->execute() - ->indexBy('name') - ->column('title'); + ->execute(); + $result = []; + foreach ($afforms as $afform) { + $formattedAfform = []; + foreach ($suffixMap as $suffix => $field) { + $formattedAfform[$suffix] = $afform[$field] ?? NULL; + } + $result[] = $formattedAfform; + } + return $result; } } diff --git a/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php b/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php index 1f951815e3..4a9a953969 100644 --- a/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php +++ b/civicrm/ext/afform/core/CRM/Afform/DAO/AfformSubmission.php @@ -6,7 +6,7 @@ * * Generated from org.civicrm.afform/xml/schema/CRM/Afform/AfformSubmission.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:dd7d40185eee992de1528f12c924a8dd) + * (GenCodeChecksum:a617b263eb7f1a2fcb6fb259c62d6fba) */ use CRM_Afform_ExtensionUtil as E; @@ -72,6 +72,15 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { */ public $submission_date; + /** + * fk to Afform Submission Status options in civicrm_option_values + * + * @var int|string + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $status_id; + /** * Class constructor. */ @@ -119,6 +128,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'title' => E::ts('Form Submission ID'), 'description' => E::ts('Unique Submission ID'), 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.id', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -134,6 +149,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'name' => 'contact_id', 'type' => CRM_Utils_Type::T_INT, 'title' => E::ts('User Contact ID'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.contact_id', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -152,6 +173,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'description' => E::ts('Name of submitted afform'), 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.afform_name', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -162,6 +189,14 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { ], 'pseudoconstant' => [ 'callback' => 'CRM_Afform_BAO_AfformSubmission::getAllAfformsByName', + 'suffixes' => [ + 'name', + 'label', + 'description', + 'abbr', + 'icon', + 'url', + ], ], 'add' => '5.41', ], @@ -170,6 +205,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'type' => CRM_Utils_Type::T_TEXT, 'title' => E::ts('Submission Data'), 'description' => E::ts('IDs of saved entities'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.data', 'table_name' => 'civicrm_afform_submission', 'entity' => 'AfformSubmission', @@ -182,6 +223,12 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'name' => 'submission_date', 'type' => CRM_Utils_Type::T_TIMESTAMP, 'title' => E::ts('Submission Date/Time'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], 'where' => 'civicrm_afform_submission.submission_date', 'default' => 'CURRENT_TIMESTAMP', 'table_name' => 'civicrm_afform_submission', @@ -194,6 +241,33 @@ class CRM_Afform_DAO_AfformSubmission extends CRM_Core_DAO { 'readonly' => TRUE, 'add' => '5.41', ], + 'status_id' => [ + 'name' => 'status_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('Submission Status'), + 'description' => E::ts('fk to Afform Submission Status options in civicrm_option_values'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_afform_submission.status_id', + 'default' => '1', + 'table_name' => 'civicrm_afform_submission', + 'entity' => 'AfformSubmission', + 'bao' => 'CRM_Afform_DAO_AfformSubmission', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select', + ], + 'pseudoconstant' => [ + 'optionGroupName' => 'afform_submission_status', + 'optionEditPath' => 'civicrm/admin/options/afform_submission_status', + ], + 'add' => '5.66', + ], ]; CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); } diff --git a/civicrm/ext/afform/core/CRM/Afform/Upgrader.php b/civicrm/ext/afform/core/CRM/Afform/Upgrader.php index 4859a2981a..3f4011555b 100644 --- a/civicrm/ext/afform/core/CRM/Afform/Upgrader.php +++ b/civicrm/ext/afform/core/CRM/Afform/Upgrader.php @@ -88,4 +88,15 @@ class CRM_Afform_Upgrader extends CRM_Extension_Upgrader_Base { return TRUE; } + /** + * Upgrade 1003 - add status column to afform submissions + * @see https://lab.civicrm.org/dev/core/-/issues/4232 + * @return bool + */ + public function upgrade_1003(): bool { + $this->ctx->log->info('Applying update 1003 - add status column to afform submissions.'); + $this->addColumn('civicrm_afform_submission', 'status_id', "INT UNSIGNED NOT NULL DEFAULT 1 COMMENT 'fk to Afform Submission Status options in civicrm_option_values'"); + return TRUE; + } + } diff --git a/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php b/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php index d793f59082..2aa4dbac14 100644 --- a/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php +++ b/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php @@ -138,7 +138,7 @@ class AfformMetadataInjector { if ($inputType === 'Select' || $inputType === 'ChainSelect') { $fieldInfo['input_attrs']['placeholder'] = E::ts('Select'); } - elseif ($inputType === 'EntityRef' && empty($field['is_id'])) { + elseif ($inputType === 'EntityRef' && empty($field['input_attrs']['placeholder'])) { $info = civicrm_api4('Entity', 'get', [ 'where' => [['name', '=', $fieldInfo['fk_entity']]], 'checkPermissions' => FALSE, diff --git a/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php b/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php index 816758c550..481c3ca455 100644 --- a/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php +++ b/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php @@ -123,9 +123,10 @@ class FormDataModel { return TRUE; } - // "Update" effectively means "read+save". + // "Get" is used for autofilling entities in "update" mode, but also for + // pre-populating fields from a template in "create" mode. if ($action === 'get') { - $action = 'update'; + return TRUE; } $result = !empty($entityDefn['actions'][$action]); @@ -237,8 +238,9 @@ class FormDataModel { $entityTitle = CoreUtil::getInfoItem($entityName, 'title'); $field['input_type'] = 'EntityRef'; $field['fk_entity'] = $entityName; - $field['is_id'] = TRUE; $field['label'] = E::ts('Existing %1', [1 => $entityTitle]); + // Afform-only (so far) metadata tells the form to update an existing entity autofilled from this value + $field['input_attrs']['autofill'] = 'update'; $field['input_attrs']['placeholder'] = E::ts('Select %1', [1 => $entityTitle]); } // If this is an implicit join, get new field from fk entity diff --git a/civicrm/ext/afform/core/Civi/Afform/Utils.php b/civicrm/ext/afform/core/Civi/Afform/Utils.php index 2dc219cb75..613787f0c6 100644 --- a/civicrm/ext/afform/core/Civi/Afform/Utils.php +++ b/civicrm/ext/afform/core/Civi/Afform/Utils.php @@ -12,6 +12,8 @@ namespace Civi\Afform; +use CRM_Afform_ExtensionUtil as E; + /** * * @package Civi\Afform @@ -65,14 +67,14 @@ class Utils { '<' => '<', '>=' => '≥', '<=' => '≤', - 'CONTAINS' => ts('Contains'), - 'NOT CONTAINS' => ts("Doesn't Contain"), - 'IN' => ts('Is One Of'), - 'NOT IN' => ts('Not One Of'), - 'LIKE' => ts('Is Like'), - 'NOT LIKE' => ts('Not Like'), - 'REGEXP' => ts('Matches Pattern'), - 'NOT REGEXP' => ts("Doesn't Match Pattern"), + 'CONTAINS' => E::ts('Contains'), + 'NOT CONTAINS' => E::ts("Doesn't Contain"), + 'IN' => E::ts('Is One Of'), + 'NOT IN' => E::ts('Not One Of'), + 'LIKE' => E::ts('Is Like'), + 'NOT LIKE' => E::ts('Not Like'), + 'REGEXP' => E::ts('Matches Pattern'), + 'NOT REGEXP' => E::ts("Doesn't Match Pattern"), ]; } diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php index 5351702076..fc4ad6a32f 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/AbstractProcessor.php @@ -5,8 +5,10 @@ namespace Civi\Api4\Action\Afform; use Civi\Afform\Event\AfformEntitySortEvent; use Civi\Afform\Event\AfformPrefillEvent; use Civi\Afform\FormDataModel; +use Civi\API\Exception\UnauthorizedException; use Civi\Api4\Generic\Result; use Civi\Api4\Utils\CoreUtil; +use CRM_Afform_ExtensionUtil as E; /** * Shared functionality for form submission pre & post processing. @@ -30,13 +32,6 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction { */ protected $args = []; - /** - * Used by prefill action to indicate if the entire form or just one entity is being filled. - * @var string - * @options form,entity - */ - protected $fillMode = 'form'; - /** * @var array */ @@ -67,8 +62,14 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction { * @throws \CRM_Core_Exception */ public function _run(Result $result) { - // This will throw an exception if the form doesn't exist or user lacks permission - $this->_afform = (array) civicrm_api4('Afform', 'get', ['where' => [['name', '=', $this->name]]], 0); + $this->_afform = civicrm_api4('Afform', 'get', [ + 'where' => [['name', '=', $this->name], ['submit_currently_open', '=', TRUE]], + ])->first(); + if (!$this->_afform) { + // Either the form doesn't exist, user lacks permission, + // or submit_currently_open = false. + throw new UnauthorizedException(E::ts('You do not have permission to submit this form')); + } $this->_formDataModel = new FormDataModel($this->_afform['layout']); $this->loadEntities(); $result->exchangeArray($this->processForm()); @@ -84,11 +85,12 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction { foreach ($sortedEntities as $entityName) { $entity = $this->_formDataModel->getEntity($entityName); $this->_entityIds[$entityName] = []; - $idField = CoreUtil::getIdFieldName($entity['type']); - if (!empty($entity['actions']['update'])) { + $matchField = $this->matchField ?? CoreUtil::getIdFieldName($entity['type']); + $matchFieldDefn = $this->_formDataModel->getField($entity['type'], $matchField, 'create'); + if (!empty($entity['actions'][$matchFieldDefn['input_attrs']['autofill']])) { if ( !empty($this->args[$entityName]) && - (!empty($entity['url-autofill']) || isset($entity['fields'][$idField])) + (!empty($entity['url-autofill']) || isset($entity['fields'][$matchField])) ) { $ids = (array) $this->args[$entityName]; $this->loadEntity($entity, $ids); @@ -108,7 +110,13 @@ abstract class AbstractProcessor extends \Civi\Api4\Generic\AbstractAction { public function loadEntity(array $entity, array $ids) { // Limit number of records based on af-repeat settings // If 'min' is set then it is repeatable, and max will either be a number or NULL for unlimited. - $ids = array_slice($ids, 0, isset($entity['min']) ? $entity['max'] : 1); + if (isset($entity['min']) && isset($entity['max'])) { + foreach (array_keys($ids) as $index) { + if ($index >= $entity['max']) { + unset($ids[$index]); + } + } + } $api4 = $this->_formDataModel->getSecureApi4($entity['name']); $idField = CoreUtil::getIdFieldName($entity['type']); 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 aa376d8a39..6ee8487073 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Get.php @@ -81,6 +81,9 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { if ($getComputed) { $scanner->addComputedFields($afforms[$name]); } + if (isset($afforms[$name]['permission']) && is_string($afforms[$name]['permission'])) { + $afforms[$name]['permission'] = explode(',', $afforms[$name]['permission']); + } if ($getLayout || $getSearchDisplays) { // Autogenerated layouts will already be in values but can be overridden; scanner takes priority $afforms[$name]['layout'] = $scanner->getLayout($name) ?? $afforms[$name]['layout'] ?? ''; @@ -96,6 +99,20 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { } } + // Fetch submission aggregates in bulk + if ($afforms && $this->_isFieldSelected('submission_count', 'submission_date', 'submit_currently_open')) { + $afformSubmissions = \Civi\Api4\AfformSubmission::get(FALSE) + ->addSelect('afform_name', 'COUNT(id) AS count', 'MAX(submission_date) AS date') + ->addWhere('afform_name', 'IN', array_keys($afforms)) + ->addGroupBy('afform_name') + ->execute()->indexBy('afform_name'); + foreach ($afforms as $name => $record) { + $afforms[$name]['submission_count'] = $afformSubmissions[$name]['count'] ?? 0; + $afforms[$name]['submission_date'] = $afformSubmissions[$name]['date'] ?? NULL; + $afforms[$name]['submit_currently_open'] = ($record['submit_enabled'] ?? TRUE) && (empty($record['submit_limit']) || $record['submit_limit'] > $afforms[$name]['submission_count']); + } + } + return $afforms; } @@ -163,7 +180,7 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { 'is_dashlet' => FALSE, 'is_public' => FALSE, 'is_token' => FALSE, - 'permission' => 'access CiviCRM', + 'permission' => ['access CiviCRM'], 'join_entity' => 'Custom_' . $custom['name'], 'entity_type' => $custom['extends'], ]; diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Prefill.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Prefill.php index a7d1257f6f..a614ef9778 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Prefill.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Prefill.php @@ -2,14 +2,37 @@ namespace Civi\Api4\Action\Afform; +use Civi\Api4\Utils\CoreUtil; + /** * Class Prefill * @package Civi\Api4\Action\Afform */ class Prefill extends AbstractProcessor { + /** + * Name of the field being matched (typically 'id') + * @var string + */ + protected $matchField; + protected function processForm() { - return \CRM_Utils_Array::makeNonAssociative($this->_entityValues, 'name', 'values'); + $entityValues = $this->_entityValues; + foreach ($entityValues as $afformEntityName => &$valueSets) { + $afformEntity = $this->_formDataModel->getEntity($afformEntityName); + if ($this->matchField) { + $matchFieldDefn = $this->_formDataModel->getField($afformEntity['type'], $this->matchField, 'create'); + // When creating an entity based on an existing one e.g. Event.template_id + if (($matchFieldDefn['input_attrs']['autofill'] ?? NULL) === 'create') { + $idField = CoreUtil::getIdFieldName($afformEntity['type']); + foreach ($valueSets as &$valueSet) { + $valueSet['fields'][$this->matchField] = $valueSet['fields'][$idField]; + unset($valueSet['fields'][$idField]); + } + } + } + } + return \CRM_Utils_Array::makeNonAssociative($entityValues, 'name', 'values'); } } diff --git a/civicrm/ext/afform/core/Civi/Api4/Afform.php b/civicrm/ext/afform/core/Civi/Api4/Afform.php index 71ce29fa65..f21cb4b5e6 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Afform.php +++ b/civicrm/ext/afform/core/Civi/Api4/Afform.php @@ -4,6 +4,7 @@ namespace Civi\Api4; use Civi\Api4\Generic\AutocompleteAction; use Civi\Api4\Generic\BasicGetFieldsAction; +use CRM_Afform_ExtensionUtil as E; /** * User-configurable forms. @@ -132,79 +133,116 @@ class Afform extends Generic\AbstractEntity { $fields = [ [ 'name' => 'name', + 'title' => E::ts('Name'), ], [ 'name' => 'type', + 'title' => E::ts('Type'), 'pseudoconstant' => ['optionGroupName' => 'afform_type'], ], [ 'name' => 'requires', + 'title' => E::ts('Requires'), 'data_type' => 'Array', ], [ 'name' => 'entity_type', + 'title' => E::ts('Block Entity'), 'description' => 'Block used for this entity type', ], [ 'name' => 'join_entity', + 'title' => E::ts('Join Entity'), 'description' => 'Used for blocks that join a sub-entity (e.g. Emails for a Contact)', ], [ 'name' => 'title', + 'title' => E::ts('Title'), 'required' => $self->getAction() === 'create', ], [ 'name' => 'description', + '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' => ts('Contact Summary Block'), - 'tab' => ts('Contact Summary Tab'), + 'block' => E::ts('Contact Summary Block'), + 'tab' => E::ts('Contact Summary Tab'), ], ], [ 'name' => 'summary_contact_type', + 'title' => E::ts('Summary Contact Type'), 'data_type' => 'Array', 'options' => \CRM_Contact_BAO_ContactType::contactTypePairs(), ], [ 'name' => 'icon', + 'title' => E::ts('Icon'), 'description' => 'Icon shown in the contact summary tab', ], [ 'name' => 'server_route', + 'title' => E::ts('Page Route'), ], [ 'name' => 'permission', + 'title' => E::ts('Permission'), + 'data_type' => 'Array', + ], + [ + 'name' => 'permission_operator', + 'title' => E::ts('Permission Operator'), + 'data_type' => 'String', + 'options' => \CRM_Core_SelectValues::andOr(), ], [ 'name' => 'redirect', + 'title' => E::ts('Post-Submit Page'), + ], + [ + 'name' => 'submit_enabled', + 'title' => E::ts('Allow Submissions'), + 'data_type' => 'Boolean', + 'default_value' => TRUE, + ], + [ + 'name' => 'submit_limit', + 'title' => E::ts('Maximum Submissions'), + 'data_type' => 'Integer', ], [ 'name' => 'create_submission', + 'title' => E::ts('Log Submissions'), 'data_type' => 'Boolean', ], [ 'name' => 'navigation', + 'title' => E::ts('Navigation Menu'), 'data_type' => 'Array', 'description' => 'Insert into navigation menu {parent: string, label: string, weight: int}', ], [ 'name' => 'layout', + 'title' => E::ts('Layout'), 'data_type' => 'Array', 'description' => 'HTML form layout; format is controlled by layoutFormat param', ], @@ -214,11 +252,37 @@ class Afform extends Generic\AbstractEntity { $fields[] = [ 'name' => 'module_name', 'type' => 'Extra', + 'description' => 'Name of generated Angular module (CamelCase)', 'readonly' => TRUE, ]; $fields[] = [ 'name' => 'directive_name', 'type' => 'Extra', + 'description' => 'Html tag name to invoke this form (dash-case)', + 'readonly' => TRUE, + ]; + $fields[] = [ + 'name' => 'submission_count', + 'type' => 'Extra', + 'data_type' => 'Integer', + 'input_type' => 'Number', + 'description' => 'Number of submission records for this form', + 'readonly' => TRUE, + ]; + $fields[] = [ + 'name' => 'submission_date', + 'type' => 'Extra', + 'data_type' => 'Timestamp', + 'input_type' => 'Date', + 'description' => 'Date & time of last form submission', + 'readonly' => TRUE, + ]; + $fields[] = [ + 'name' => 'submit_currently_open', + 'type' => 'Extra', + 'data_type' => 'Boolean', + 'input_type' => 'Select', + 'description' => 'Based on settings and current submission count, is the form open for submissions', 'readonly' => TRUE, ]; $fields[] = [ diff --git a/civicrm/ext/afform/core/Civi/Api4/Subscriber/AfformAutocompleteSubscriber.php b/civicrm/ext/afform/core/Civi/Api4/Subscriber/AfformAutocompleteSubscriber.php index 70a1bc05ef..98d5a551a9 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Subscriber/AfformAutocompleteSubscriber.php +++ b/civicrm/ext/afform/core/Civi/Api4/Subscriber/AfformAutocompleteSubscriber.php @@ -30,7 +30,7 @@ class AfformAutocompleteSubscriber extends AutoService implements EventSubscribe */ public static function getSubscribedEvents() { return [ - 'civi.api.prepare' => ['onApiPrepare', -20], + 'civi.api.prepare' => ['onApiPrepare', 200], ]; } diff --git a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php index 06147458ea..42416f11e2 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php +++ b/civicrm/ext/afform/core/Civi/Api4/Utils/AfformSaveTrait.php @@ -53,6 +53,9 @@ trait AfformSaveTrait { $meta = $item + (array) $orig; unset($meta['layout'], $meta['name']); + if (isset($meta['permission']) && is_string($meta['permission'])) { + $meta['permission'] = explode(',', $meta['permission']); + } if (!empty($meta)) { $metaPath = $scanner->createSiteLocalPath($item['name'], \CRM_Afform_AfformScanner::METADATA_FILE); \CRM_Utils_File::createDir(dirname($metaPath)); diff --git a/civicrm/ext/afform/core/afform.civix.php b/civicrm/ext/afform/core/afform.civix.php index 9519d92694..805881b5d5 100644 --- a/civicrm/ext/afform/core/afform.civix.php +++ b/civicrm/ext/afform/core/afform.civix.php @@ -133,8 +133,8 @@ function _afform_civix_insert_navigation_menu(&$menu, $path, $item) { if (empty($path)) { $menu[] = [ 'attributes' => array_merge([ - 'label' => CRM_Utils_Array::value('name', $item), - 'active' => 1, + 'label' => $item['name'] ?? NULL, + 'active' => 1, ], $item), ]; return TRUE; diff --git a/civicrm/ext/afform/core/afform.php b/civicrm/ext/afform/core/afform.php index ca1f7acdfa..007e52088a 100644 --- a/civicrm/ext/afform/core/afform.php +++ b/civicrm/ext/afform/core/afform.php @@ -136,8 +136,8 @@ function afform_civicrm_managed(&$entities, $modules) { 'values' => [ 'name' => $afform['name'], 'label' => $afform['navigation']['label'] ?: $afform['title'], - 'permission' => (array) $afform['permission'], - 'permission_operator' => 'OR', + 'permission' => $afform['permission'], + 'permission_operator' => $afform['permission_operator'] ?? 'AND', 'weight' => $afform['navigation']['weight'] ?? 0, 'url' => $afform['server_route'], 'is_active' => 1, @@ -171,7 +171,7 @@ function afform_civicrm_tabset($tabsetName, &$tabs, $context) { if ($tabsetName !== 'civicrm/contact/view') { return; } - $contactTypes = array_merge([$context['contact_type']] ?? [], $context['contact_sub_type'] ?? []); + $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') ->addWhere('contact_summary', '=', 'tab') @@ -181,8 +181,10 @@ function afform_civicrm_tabset($tabsetName, &$tabs, $context) { foreach ($afforms as $afform) { $summaryContactType = $afform['summary_contact_type'] ?? []; if (!$summaryContactType || !$contactTypes || array_intersect($summaryContactType, $contactTypes)) { + // Convention is to name the afform like "afformTabMyInfo" which gets the tab name "my_info" + $tabId = CRM_Utils_String::convertStringToSnakeCase(preg_replace('#^(afformtab|afsearchtab|afform|afsearch)#i', '', $afform['name'])); $tabs[] = [ - 'id' => $afform['name'], + 'id' => $tabId, 'title' => $afform['title'], 'weight' => $weight++, 'icon' => 'crm-i ' . ($afform['icon'] ?: 'fa-list-alt'), @@ -441,14 +443,21 @@ function afform_civicrm_permission_check($permission, &$granted, $contactId) { if (preg_match('/^@afform:(.*)/', $permission, $m)) { $name = $m[1]; - $afform = \Civi\Api4\Afform::get() - ->setCheckPermissions(FALSE) + $afform = \Civi\Api4\Afform::get(FALSE) ->addWhere('name', '=', $name) - ->setSelect(['permission']) + ->addSelect('permission', 'permission_operator') ->execute() ->first(); + // No permissions found... this shouldn't happen but just in case, set default. + if ($afform && empty($afform['permission'])) { + $afform['permission'] = ['access CiviCRM']; + } if ($afform) { - $granted = CRM_Core_Permission::check($afform['permission'], $contactId); + $check = (array) $afform['permission']; + if ($afform['permission_operator'] === 'OR') { + $check = [$check]; + } + $granted = CRM_Core_Permission::check($check, $contactId); } } } diff --git a/civicrm/ext/afform/core/ang/af/afField.component.js b/civicrm/ext/afform/core/ang/af/afField.component.js index 2b46d142f4..38f9c66af6 100644 --- a/civicrm/ext/afform/core/ang/af/afField.component.js +++ b/civicrm/ext/afform/core/ang/af/afField.component.js @@ -208,8 +208,8 @@ }; ctrl.isReadonly = function() { - if (ctrl.defn.is_id) { - return ctrl.afFieldset.getEntity().actions.update === false; + if (ctrl.defn.input_attrs && ctrl.defn.input_attrs.autofill) { + return ctrl.afFieldset.getEntity().actions[ctrl.defn.input_attrs.autofill] === false; } // TODO: Not actually used, but could be used if we wanted to render displayOnly // fields as more than just raw data. I think we probably ought to do so for entityRef fields @@ -220,11 +220,11 @@ // ngChange callback from Existing entity field ctrl.onSelectEntity = function() { - if (ctrl.defn.is_id) { + if (ctrl.defn.input_attrs && ctrl.defn.input_attrs.autofill) { var val = $scope.getSetSelect(); var entity = ctrl.afFieldset.modelName; var index = ctrl.getEntityIndex(); - ctrl.afFieldset.afFormCtrl.loadData(entity, index, val); + ctrl.afFieldset.afFormCtrl.loadData(entity, index, val, ctrl.defn.name); } }; diff --git a/civicrm/ext/afform/core/ang/af/afForm.component.js b/civicrm/ext/afform/core/ang/af/afForm.component.js index 6584171873..00fb929047 100644 --- a/civicrm/ext/afform/core/ang/af/afForm.component.js +++ b/civicrm/ext/afform/core/ang/af/afForm.component.js @@ -1,4 +1,5 @@ (function(angular, $, _) { + "use strict"; // Example usage: <af-form ctrl="afform"> angular.module('af').component('afForm', { bindings: { @@ -41,14 +42,15 @@ return $scope.$parent.meta; }; // With no arguments this will prefill the entire form based on url args + // and also check if the form is open for submissions. // With selectedEntity, selectedIndex & selectedId provided this will prefill a single entity - this.loadData = function(selectedEntity, selectedIndex, selectedId) { - var toLoad = 0, - params = {name: ctrl.getFormMeta().name, args: {}}; + this.loadData = function(selectedEntity, selectedIndex, selectedId, selectedField) { + let toLoad = true; + const params = {name: ctrl.getFormMeta().name, args: {}}; // Load single entity if (selectedEntity) { - toLoad = selectedId; - params.fillMode = 'entity'; + toLoad = !!selectedId; + params.matchField = selectedField; params.args[selectedEntity] = {}; params.args[selectedEntity][selectedIndex] = selectedId; } @@ -56,9 +58,6 @@ else { args = _.assign({}, $scope.$parent.routeParams || {}, $scope.$parent.options || {}); _.each(schema, function (entity, entityName) { - if (args[entityName] || entity.actions.update) { - toLoad++; - } if (args[entityName] && typeof args[entityName] === 'string') { args[entityName] = args[entityName].split(','); } @@ -67,19 +66,31 @@ } if (toLoad) { crmApi4('Afform', 'prefill', params) - .then(function(result) { - _.each(result, function(item) { - data[item.name] = data[item.name] || {}; - _.extend(data[item.name], item.values, schema[item.name].data || {}); + .then((result) => { + result.forEach((item) => { + // Use _.each() because item.values could be cast as an object if array keys are not sequential + _.each(item.values, (values, index) => { + data[item.name][index] = data[item.name][index] || {}; + data[item.name][index].joins = {}; + angular.merge(data[item.name][index], values, {fields: _.cloneDeep(schema[item.name].data || {})}); + }); }); + }, (error) => { + if (error.status === 403) { + // Permission denied + disableForm(); + } else { + // Unknown server error. What to do? + } }); } // Clear existing contact selection else if (selectedEntity) { - data[selectedEntity][selectedIndex].fields = {}; - if (data[selectedEntity][selectedIndex].joins) { - data[selectedEntity][selectedIndex].joins = {}; - } + // Delete object keys without breaking object references + Object.keys(data[selectedEntity][selectedIndex].fields).forEach(key => delete data[selectedEntity][selectedIndex].fields[key]); + // Fill pre-set values + angular.merge(data[selectedEntity][selectedIndex].fields, _.cloneDeep(schema[selectedEntity].data || {})); + data[selectedEntity][selectedIndex].joins = {}; } }; @@ -149,6 +160,13 @@ return valid; } + function disableForm() { + CRM.alert(ts('This form is not currently open for submissions.'), ts('Sorry'), 'error'); + $('af-form[ng-form="' + ctrl.getFormMeta().name + '"]') + .addClass('disabled') + .find('button[ng-click="afform.submit()"]').prop('disabled', true); + } + this.submit = function() { // validate required fields on the form if (!ctrl.ngForm.$valid || !validateFileFields()) { diff --git a/civicrm/ext/afform/core/ang/afblockContactNote.aff.html b/civicrm/ext/afform/core/ang/afblockContactNote.aff.html new file mode 100644 index 0000000000..d02d2f6408 --- /dev/null +++ b/civicrm/ext/afform/core/ang/afblockContactNote.aff.html @@ -0,0 +1,5 @@ +<div class="af-container af-layout-inline"> + <af-field name="note" /> + <af-field name="subject" /> + </div> + \ No newline at end of file diff --git a/civicrm/ext/afform/core/ang/afblockContactNote.aff.json b/civicrm/ext/afform/core/ang/afblockContactNote.aff.json new file mode 100644 index 0000000000..b3412870a7 --- /dev/null +++ b/civicrm/ext/afform/core/ang/afblockContactNote.aff.json @@ -0,0 +1,7 @@ +{ + "title": "Contact Note(s)", + "type": "block", + "entity_type": "Contact", + "join_entity": "Note" + } + \ No newline at end of file diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml index 0baab18d64..ac7f14d9e0 100644 --- a/civicrm/ext/afform/core/info.xml +++ b/civicrm/ext/afform/core/info.xml @@ -13,15 +13,15 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-01-09</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>The Form Core extension is required to use any dynamic form. To administer and edit forms, also install the FormBuilder extension.</comments> <civix> <namespace>CRM/Afform</namespace> - <format>23.02.0</format> + <format>23.02.1</format> </civix> <classloader> <psr4 prefix="Civi\" path="Civi"/> @@ -34,7 +34,7 @@ <mixin>ang-php@1.0.0</mixin> <mixin>mgd-php@1.0.0</mixin> <mixin>scan-classes@1.0.0</mixin> - <mixin>smarty-v2@1.0.0</mixin> + <mixin>smarty-v2@1.0.1</mixin> <mixin>entity-types-php@1.0.0</mixin> </mixins> <upgrader>CRM_Afform_Upgrader</upgrader> diff --git a/civicrm/ext/afform/core/managed/AfformSubmissionStatus.mgd.php b/civicrm/ext/afform/core/managed/AfformSubmissionStatus.mgd.php new file mode 100644 index 0000000000..0afae293c0 --- /dev/null +++ b/civicrm/ext/afform/core/managed/AfformSubmissionStatus.mgd.php @@ -0,0 +1,88 @@ +<?php + +use CRM_Afform_ExtensionUtil as E; + +// Adds option group for Afform.status_id +return [ + [ + 'name' => 'AfformSubmissionStatus', + 'entity' => 'OptionGroup', + 'update' => 'always', + 'cleanup' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'afform_submission_status', + 'title' => E::ts('Afform Submission Status'), + 'description' => NULL, + 'data_type' => NULL, + 'is_reserved' => TRUE, + 'is_active' => TRUE, + 'is_locked' => FALSE, + 'option_value_fields' => [ + 'name', + 'label', + 'icon', + 'description', + ], + ], + 'match' => ['name'], + ], + ], + [ + 'name' => 'AfformSubmissionStatus:Processed', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_submission_status', + 'name' => 'Processed', + 'value' => 1, + 'label' => E::ts('Processed'), + 'grouping' => NULL, + 'filter' => 0, + 'is_default' => FALSE, + 'description' => NULL, + 'is_optgroup' => FALSE, + 'is_reserved' => FALSE, + 'is_active' => TRUE, + 'component_id' => NULL, + 'domain_id' => NULL, + 'visibility_id' => NULL, + 'icon' => 'fa-check', + 'color' => NULL, + ], + 'match' => ['option_group_id', 'name'], + ], + ], + [ + 'name' => 'AfformSubmissionStatus:Pending', + 'entity' => 'OptionValue', + 'cleanup' => 'always', + 'update' => 'always', + 'params' => [ + 'version' => 4, + 'values' => [ + 'option_group_id.name' => 'afform_submission_status', + 'name' => 'Pending', + 'value' => 2, + 'label' => E::ts('Pending'), + 'grouping' => NULL, + 'filter' => 0, + 'is_default' => FALSE, + 'description' => NULL, + 'is_optgroup' => FALSE, + 'is_reserved' => FALSE, + 'is_active' => TRUE, + 'component_id' => NULL, + 'domain_id' => NULL, + 'visibility_id' => NULL, + 'icon' => 'fa-exclamation', + 'color' => NULL, + ], + 'match' => ['option_group_id', 'name'], + ], + ], +]; diff --git a/civicrm/ext/afform/core/phpunit.xml.dist b/civicrm/ext/afform/core/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/afform/core/phpunit.xml.dist +++ b/civicrm/ext/afform/core/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/afform/core/sql/auto_install.sql b/civicrm/ext/afform/core/sql/auto_install.sql index e18f3df3a9..44103e8398 100644 --- a/civicrm/ext/afform/core/sql/auto_install.sql +++ b/civicrm/ext/afform/core/sql/auto_install.sql @@ -39,6 +39,7 @@ CREATE TABLE `civicrm_afform_submission` ( `afform_name` varchar(255) COMMENT 'Name of submitted afform', `data` text COMMENT 'IDs of saved entities', `submission_date` timestamp DEFAULT CURRENT_TIMESTAMP, + `status_id` int unsigned NOT NULL DEFAULT 1 COMMENT 'fk to Afform Submission Status options in civicrm_option_values', PRIMARY KEY (`id`), CONSTRAINT FK_civicrm_afform_submission_contact_id FOREIGN KEY (`contact_id`) REFERENCES `civicrm_contact`(`id`) ON DELETE SET NULL ) diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php index f93fea9bdf..fa5766e857 100644 --- a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php +++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformGetTest.php @@ -72,7 +72,9 @@ class AfformGetTest extends \PHPUnit\Framework\TestCase implements HeadlessInter } public function testAfformAutocomplete(): void { - $title = uniqid(); + // Use a numeric title to test that the "search by id" feature + // doesn't kick in for Afforms (which don't have a numeric "id") + $title = (string) rand(1000, 999999); Afform::create() ->addValue('name', $this->formName) ->addValue('title', $title) diff --git a/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php new file mode 100644 index 0000000000..90f8d332b7 --- /dev/null +++ b/civicrm/ext/afform/core/tests/phpunit/Civi/Afform/AfformSubmissionTest.php @@ -0,0 +1,24 @@ +<?php +namespace Civi\Afform; + +use Civi\Api4\AfformSubmission; +use Civi\Test\HeadlessInterface; + +/** + * @group headless + */ +class AfformSubmissionTest extends \PHPUnit\Framework\TestCase implements HeadlessInterface { + + public function setUpHeadless() { + return \Civi\Test::headless()->install(['org.civicrm.search_kit', 'org.civicrm.afform', 'org.civicrm.afform_admin'])->apply(); + } + + public function testGetFields():void { + $fields = AfformSubmission::getFields(FALSE) + ->setAction('get') + ->execute()->indexBy('name'); + $this->assertTrue($fields['afform_name']['options']); + $this->assertEquals(['name', 'label', 'description', 'abbr', 'icon', 'url'], $fields['afform_name']['suffixes']); + } + +} diff --git a/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml b/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml index 34f064f268..70c12a6783 100644 --- a/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml +++ b/civicrm/ext/afform/core/xml/schema/CRM/Afform/AfformSubmission.xml @@ -52,6 +52,7 @@ <add>5.41</add> <pseudoconstant> <callback>CRM_Afform_BAO_AfformSubmission::getAllAfformsByName</callback> + <suffixes>name,label,description,abbr,icon,url</suffixes> </pseudoconstant> </field> @@ -76,4 +77,20 @@ <add>5.41</add> </field> + <field> + <name>status_id</name> + <title>Submission Status</title> + <type>int unsigned</type> + <required>true</required> + <html> + <type>Select</type> + </html> + <pseudoconstant> + <optionGroupName>afform_submission_status</optionGroupName> + </pseudoconstant> + <comment>fk to Afform Submission Status options in civicrm_option_values</comment> + <default>1</default> + <add>5.66</add> + </field> + </table> diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml index a26a0a7836..ac068d7dae 100644 --- a/civicrm/ext/afform/html/info.xml +++ b/civicrm/ext/afform/html/info.xml @@ -13,10 +13,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-01-09</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/afform/mock/ang/mockPublicForm.test.php b/civicrm/ext/afform/mock/ang/mockPublicForm.test.php index 0eff06c829..0fc9bf674f 100644 --- a/civicrm/ext/afform/mock/ang/mockPublicForm.test.php +++ b/civicrm/ext/afform/mock/ang/mockPublicForm.test.php @@ -76,7 +76,7 @@ class MockPublicFormTest extends \Civi\AfformMock\FormTestCase { $this->fail('Plain text message did not have URL in expected place: ' . $text); } $url = $m[1]; - $this->assertRegExp(';^https?:.*civicrm/mock-public-form.*;', $url, "URL should look plausible"); + $this->assertMatchesRegularExpression(';^https?:.*civicrm/mock-public-form.*;', $url, "URL should look plausible"); // Going to this page will cause us to authenticate as the target contact $http = $this->createGuzzle(['http_errors' => FALSE, 'cookies' => new \GuzzleHttp\Cookie\CookieJar()]); @@ -102,7 +102,7 @@ class MockPublicFormTest extends \Civi\AfformMock\FormTestCase { $this->fail('HTML message did not have URL in expected place: ' . $html); } $url = html_entity_decode($m[1]); - $this->assertRegExp(';^https?:.*civicrm/mock-public-form.*;', $url, "URL should look plausible"); + $this->assertMatchesRegularExpression(';^https?:.*civicrm/mock-public-form.*;', $url, "URL should look plausible"); // Going to this page will cause us to authenticate as the target contact $http = $this->createGuzzle(['cookies' => new \GuzzleHttp\Cookie\CookieJar()]); @@ -126,7 +126,7 @@ class MockPublicFormTest extends \Civi\AfformMock\FormTestCase { $this->assertEquals(1, $doc->find('a')->count(), 'Document should have hyperlink'); foreach ($doc->find('a') as $item) { /** @var \DOMElement $item */ - $this->assertRegExp(';^https?:.*civicrm/mock-public-form.*;', $item->getAttribute('href')); + $this->assertMatchesRegularExpression(';^https?:.*civicrm/mock-public-form.*;', $item->getAttribute('href')); $this->assertEquals('My public form', $item->firstChild->data); $url = $item->getAttribute('href'); } diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml index 71485fc852..cf63a6fe96 100644 --- a/civicrm/ext/afform/mock/info.xml +++ b/civicrm/ext/afform/mock/info.xml @@ -12,13 +12,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-01-09</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>alpha</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/afform/mock/phpunit.xml.dist b/civicrm/ext/afform/mock/phpunit.xml.dist index e3e4c4c151..1f804252c5 100644 --- a/civicrm/ext/afform/mock/phpunit.xml.dist +++ b/civicrm/ext/afform/mock/phpunit.xml.dist @@ -1,5 +1,22 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> @@ -8,11 +25,6 @@ <directory suffix=".test.php">./ang</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> 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 43b88fcf5a..ade9f0c09c 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformAutocompleteUsageTest.php @@ -68,8 +68,8 @@ EOHTML; ->execute(); $this->assertCount(2, $result); - $this->assertEquals('A ' . $lastName, $result[0]['label']); - $this->assertEquals('B ' . $lastName, $result[1]['label']); + $this->assertEquals($lastName . ', A', $result[0]['label']); + $this->assertEquals($lastName . ', B', $result[1]['label']); // Ensure form validates submission, restricting it to contacts A & B $values = [ @@ -168,8 +168,8 @@ EOHTML; ->execute(); $this->assertCount(2, $result); - $this->assertEquals('A ' . $lastName, $result[0]['label']); - $this->assertEquals('B ' . $lastName, $result[1]['label']); + $this->assertEquals($lastName . ', A', $result[0]['label']); + $this->assertEquals($lastName . ', B', $result[1]['label']); // Ensure form validates submission, restricting it to contacts A & B $values = [ @@ -262,8 +262,8 @@ EOHTML; ->execute(); $this->assertCount(2, $result); - $this->assertEquals('A ' . $lastName, $result[0]['label']); - $this->assertEquals('C ' . $lastName, $result[1]['label']); + $this->assertEquals($lastName . ', A', $result[0]['label']); + $this->assertEquals($lastName . ', C', $result[1]['label']); // Ensure form validates submission, restricting it to contacts A & C $values = [ 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 33245f63c9..2457fb510b 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformContactUsageTest.php @@ -1,4 +1,6 @@ <?php +require_once __DIR__ . '/AfformTestCase.php'; +require_once __DIR__ . '/AfformUsageTestCase.php'; /** * Test case for Afform.prefill and Afform.submit. @@ -90,7 +92,7 @@ EOHTML; ->execute() ->indexBy('name'); $this->assertEquals('Logged In', $prefill['me']['values'][0]['fields']['first_name']); - $this->assertRegExp('/^User/', $prefill['me']['values'][0]['fields']['last_name']); + $this->assertMatchesRegularExpression('/^User/', $prefill['me']['values'][0]['fields']['last_name']); $submission = [ ['fields' => ['first_name' => 'Firsty', 'last_name' => 'Lasty']], @@ -496,4 +498,65 @@ EOHTML; } + public function testSubmissionLimit() { + $this->useValues([ + 'layout' => self::$layouts['aboutMe'], + 'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, + 'create_submission' => TRUE, + 'submit_limit' => 3, + ]); + + $cid = $this->createLoggedInUser(); + CRM_Core_Config::singleton()->userPermissionTemp = new CRM_Core_Permission_Temp(); + + $submitValues = [ + ['fields' => ['first_name' => 'Firsty', 'last_name' => 'Lasty']], + ]; + + // Submit twice + Civi\Api4\Afform::submit() + ->setName($this->formName) + ->setValues(['me' => $submitValues]) + ->execute(); + Civi\Api4\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(); + + // Last time + Civi\Api4\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) + ->addSelect('submit_enabled', 'submission_count', 'submit_currently_open') + ->addWhere('name', '=', $this->formName) + ->execute()->single(); + $this->assertTrue($stats['submit_enabled']); + $this->assertFalse($stats['submit_currently_open']); + $this->assertEquals(3, $stats['submission_count']); + + // Prefilling and submitting are no longer allowed. + try { + Civi\Api4\Afform::prefill()->setName($this->formName)->execute(); + $this->fail(); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + } + try { + Civi\Api4\Afform::submit() + ->setName($this->formName) + ->setValues(['me' => $submitValues]) + ->execute(); + $this->fail(); + } + catch (\Civi\API\Exception\UnauthorizedException $e) { + } + } + } diff --git a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php new file mode 100644 index 0000000000..936eb8ed56 --- /dev/null +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformPrefillUsageTest.php @@ -0,0 +1,165 @@ +<?php + +/** + * Test case for Afform with autocomplete. + * + * @group headless + */ +class api_v4_AfformPrefillUsageTest extends api_v4_AfformUsageTestCase { + use \Civi\Test\Api4TestTrait; + + /** + * Ensure that Afform restricts autocomplete results when it's set to use a SavedSearch + */ + public function testPrefillWithRepeat(): void { + $layout = <<<EOHTML +<af-form ctrl="afform"> + <af-entity data="{contact_type: 'Individual'}" type="Contact" name="Individual1" label="Individual 1" actions="{create: true, update: true}" security="RBAC" url-autofill="1" /> + <fieldset af-fieldset="Individual1" class="af-container" af-title="Individual 1" af-repeat="Add" min="1" max="3"> + <div class="af-container"> + <af-field name="id"></af-field> + <af-field name="preferred_communication_method"></af-field> + <afblock-name-individual></afblock-name-individual> + </div> + <div af-join="Email" af-repeat="Add" af-copy="Copy" min="1"> + <afblock-contact-email></afblock-contact-email> + </div> + <div af-join="Phone" af-repeat="Add" af-copy="Copy" min="1" max="2"> + <afblock-contact-phone></afblock-contact-phone> + </div> + </fieldset> +</af-form> +EOHTML; + + $this->useValues([ + 'layout' => $layout, + 'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, + ]); + + $cid = $this->saveTestRecords('Contact', [ + 'records' => [ + ['first_name' => 'A', 'last_name' => '_A', 'preferred_communication_method' => [1, 3]], + ['first_name' => 'B', 'last_name' => '_B', 'email_primary.email' => 'b@afform.test'], + ['first_name' => 'C', 'last_name' => '_C'], + ['first_name' => 'D', 'last_name' => '_D', 'email_primary.email' => 'd@afform.test'], + ], + ])->column('id'); + + $this->saveTestRecords('Phone', [ + 'records' => [ + ['contact_id' => $cid[0], 'phone' => '0-1'], + ['contact_id' => $cid[0], 'phone' => '0-2'], + ['contact_id' => $cid[0], 'phone' => '0-3'], + ['contact_id' => $cid[2], 'phone' => '2-1'], + ['contact_id' => $cid[3], 'phone' => '3-1'], + ], + ]); + + $prefill = Civi\Api4\Afform::prefill() + ->setName($this->formName) + ->setArgs(['Individual1' => $cid]) + ->execute() + ->indexBy('name'); + + // Form entity has `max="3"` + $this->assertCount(3, $prefill['Individual1']['values']); + $this->assertEquals('A', $prefill['Individual1']['values'][0]['fields']['first_name']); + $this->assertEquals([1, 3], $prefill['Individual1']['values'][0]['fields']['preferred_communication_method']); + $this->assertEquals('B', $prefill['Individual1']['values'][1]['fields']['first_name']); + $this->assertEquals('C', $prefill['Individual1']['values'][2]['fields']['first_name']); + + // One email should have been filled + $this->assertCount(1, $prefill['Individual1']['values'][1]['joins']['Email']); + $this->assertEquals('b@afform.test', $prefill['Individual1']['values'][1]['joins']['Email'][0]['email']); + $this->assertEmpty($prefill['Individual1']['values'][0]['joins']['Email']); + $this->assertEmpty($prefill['Individual1']['values'][2]['joins']['Email']); + + // Phone join has `max="2"` + $this->assertCount(2, $prefill['Individual1']['values'][0]['joins']['Phone']); + $this->assertCount(1, $prefill['Individual1']['values'][2]['joins']['Phone']); + $this->assertEquals('2-1', $prefill['Individual1']['values'][2]['joins']['Phone'][0]['phone']); + $this->assertEmpty($prefill['Individual1']['values'][1]['joins']['Phone']); + + // Prefill a specific contact for the af-repeat entity + $prefill = Civi\Api4\Afform::prefill() + ->setName($this->formName) + ->setArgs(['Individual1' => [1 => $cid[3]]]) + ->execute() + ->indexBy('name'); + $this->assertCount(1, $prefill['Individual1']['values']); + $this->assertEquals('D', $prefill['Individual1']['values'][1]['fields']['first_name']); + $this->assertEquals('_D', $prefill['Individual1']['values'][1]['fields']['last_name']); + $this->assertEquals('d@afform.test', $prefill['Individual1']['values'][1]['joins']['Email'][0]['email']); + $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() + ->setName($this->formName) + ->setArgs(['Individual1' => [3 => $cid[0]]]) + ->execute(); + $this->assertTrue(empty($prefill['Individual1']['values'])); + } + + public function testPrefillByRelationship(): void { + + $layout = <<<EOHTML +<af-form ctrl="afform"> + <af-entity data="{contact_type: 'Individual', source: 'Child + parents'}" type="Contact" name="Children" label="Individual 1" actions="{create: true, update: true}" security="RBAC" autofill="relationship:Child of" autofill-relationship="user_contact_id" /> + <af-entity data="{contact_type: 'Individual', source: 'Child + parents'}" type="Contact" name="Parents" label="Individual 2" actions="{create: true, update: true}" security="RBAC" autofill="relationship:Parent of" autofill-relationship="Children" /> + <fieldset af-fieldset="Children" class="af-container" af-title="Individual 1" min="1" af-repeat="Add" af-copy="Copy"> + <afblock-name-individual></afblock-name-individual> + </fieldset> + <fieldset af-fieldset="Parents" class="af-container" af-title="Individual 2" min="1" af-repeat="Add" af-copy="Copy"> + <afblock-name-individual></afblock-name-individual> + </fieldset> + <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">Submit</button> +</af-form> +EOHTML; + + $this->useValues([ + 'layout' => $layout, + 'permission' => CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION, + ]); + + $uid = $this->createLoggedInUser(); + + $cid = $this->saveTestRecords('Contact', [ + 'records' => [ + ['first_name' => 'Co', 'last_name' => 'Parent'], + ['first_name' => 'First', 'last_name' => 'Child'], + ['first_name' => 'Second', 'last_name' => 'Child'], + ['first_name' => 'Third', 'last_name' => 'Child'], + ], + ])->column('id'); + + // Create parent/child relationships + foreach ([1, 2, 3] as $child) { + $values = [ + 'contact_id_a' => $cid[$child], + 'contact_id_b' => $cid[0], + 'relationship_type_id:name' => 'Child of', + ]; + civicrm_api4('Relationship', 'create', ['values' => $values]); + $values['contact_id_b'] = $uid; + civicrm_api4('Relationship', 'create', ['values' => $values]); + } + + $prefill = Civi\Api4\Afform::prefill() + ->setName($this->formName) + ->execute() + ->indexBy('name'); + + $this->assertCount(3, $prefill['Children']['values']); + $children = array_column($prefill['Children']['values'], 'fields'); + $this->assertContains('First', array_column($children, 'first_name')); + $this->assertContains('Second', array_column($children, 'first_name')); + $this->assertContains('Third', array_column($children, 'first_name')); + + $this->assertCount(2, $prefill['Parents']['values']); + $parents = array_column($prefill['Parents']['values'], 'fields'); + $this->assertContains('Co', array_column($parents, 'first_name')); + $this->assertContains($uid, array_column($parents, 'id')); + $this->assertContains($cid[0], array_column($parents, 'id')); + } + +} 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 00eb9ef401..9e609605c6 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformRoutingTest.php @@ -81,8 +81,8 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C private function assertNotAuthorized(Psr\Http\Message\ResponseInterface $result, $directive) { $contents = $result->getBody()->getContents(); $this->assertEquals(403, $result->getStatusCode()); - $this->assertRegExp(';You are not authorized to access;', $contents); - $this->assertNotRegExp(';' . preg_quote("<$directive>", ';') . ';', $contents); + $this->assertMatchesRegularExpression(';You are not authorized to access;', $contents); + $this->assertDoesNotMatchRegularExpression(';' . preg_quote("<$directive>", ';') . ';', $contents); } /** @@ -93,8 +93,8 @@ class api_v4_AfformRoutingTest extends \PHPUnit\Framework\TestCase implements \C private function assertOpensPage(Psr\Http\Message\ResponseInterface $result, $directive) { $contents = $result->getBody()->getContents(); $this->assertEquals(200, $result->getStatusCode()); - $this->assertNotRegExp(';You are not authorized to access;', $contents); - $this->assertRegExp(';' . preg_quote("<$directive>", ';') . ';', $contents); + $this->assertDoesNotMatchRegularExpression(';You are not authorized to access;', $contents); + $this->assertMatchesRegularExpression(';' . preg_quote("<$directive>", ';') . ';', $contents); } } 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 8f093eac42..6b381ed1fa 100644 --- a/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php +++ b/civicrm/ext/afform/mock/tests/phpunit/api/v4/AfformTest.php @@ -31,10 +31,10 @@ 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]], - ['mockBareFile', ['title' => '', 'description' => '', 'permission' => 'access CiviCRM', 'is_dashlet' => FALSE]], - ['mockFoo', ['title' => '', 'description' => '', 'permission' => 'access CiviCRM']], - ['mock-weird-name', ['title' => 'Weird Name', 'description' => '', 'permission' => 'access CiviCRM']], + ['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]], + ['mockFoo', ['title' => '', 'description' => '', 'permission' => ['access CiviCRM']], 'submit_enabled' => TRUE], + ['mock-weird-name', ['title' => 'Weird Name', 'description' => '', 'permission' => ['access CiviCRM']], 'submit_enabled' => TRUE], ]; } @@ -85,7 +85,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $result = Civi\Api4\Afform::update() ->addWhere('name', '=', $formName) ->addValue('description', 'The temporary description') - ->addValue('permission', 'access foo') + ->addValue('permission', ['access foo', 'access bar']) ->addValue('is_dashlet', empty($originalMetadata['is_dashlet'])) ->execute(); $this->assertEquals($formName, $result[0]['name'], $message); @@ -100,7 +100,7 @@ class api_v4_AfformTest extends api_v4_AfformTestCase { $this->assertEquals('The temporary description', $get($result[0], 'description'), $message); $this->assertEquals(empty($originalMetadata['is_dashlet']), $get($result[0], 'is_dashlet'), $message); $this->assertEquals($get($originalMetadata, 'server_route'), $get($result[0], 'server_route'), $message); - $this->assertEquals('access foo', $get($result[0], 'permission'), $message); + $this->assertEquals(['access foo', 'access bar'], $get($result[0], 'permission'), $message); $this->assertTrue(is_array($result[0]['layout']), $message); $this->assertEquals(TRUE, $get($result[0], 'has_base'), $message); $this->assertEquals(TRUE, $get($result[0], 'has_local'), $message); diff --git a/civicrm/ext/authx/Civi/Authx/Backdrop.php b/civicrm/ext/authx/Civi/Authx/Backdrop.php index c2d248f180..1252f92f96 100644 --- a/civicrm/ext/authx/Civi/Authx/Backdrop.php +++ b/civicrm/ext/authx/Civi/Authx/Backdrop.php @@ -19,7 +19,7 @@ class Backdrop implements AuthxInterface { public function checkPassword(string $username, string $password) { $uid = user_authenticate($username, $password); // Ensure strict nullness. - return $uid ? $uid : NULL; + return $uid ?: NULL; } /** diff --git a/civicrm/ext/authx/Civi/Authx/Drupal.php b/civicrm/ext/authx/Civi/Authx/Drupal.php index e9722cab20..f43e5b14a8 100644 --- a/civicrm/ext/authx/Civi/Authx/Drupal.php +++ b/civicrm/ext/authx/Civi/Authx/Drupal.php @@ -19,7 +19,7 @@ class Drupal implements AuthxInterface { public function checkPassword(string $username, string $password) { $uid = user_authenticate($username, $password); // Ensure strict nullness. - return $uid ? $uid : NULL; + return $uid ?: NULL; } /** diff --git a/civicrm/ext/authx/Civi/Authx/Drupal8.php b/civicrm/ext/authx/Civi/Authx/Drupal8.php index 54f8c122a6..89ff2d8d07 100644 --- a/civicrm/ext/authx/Civi/Authx/Drupal8.php +++ b/civicrm/ext/authx/Civi/Authx/Drupal8.php @@ -19,7 +19,7 @@ class Drupal8 implements AuthxInterface { public function checkPassword(string $username, string $password) { $uid = \Drupal::service('user.auth')->authenticate($username, $password); // Ensure strict nullness. - return $uid ? $uid : NULL; + return $uid ?: NULL; } /** diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml index d8570c9b9f..165c0c6d42 100644 --- a/civicrm/ext/authx/info.xml +++ b/civicrm/ext/authx/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-02-11</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</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> diff --git a/civicrm/ext/authx/phpunit.xml.dist b/civicrm/ext/authx/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/authx/phpunit.xml.dist +++ b/civicrm/ext/authx/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php index 0afa38b433..f02d987211 100644 --- a/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php +++ b/civicrm/ext/authx/tests/phpunit/Civi/Authx/AllFlowsTest.php @@ -608,7 +608,7 @@ class AllFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterf $loginArgs = ['principal' => [$principalField => $principalValue]]; $report = $withCv(sprintf('try { return authx_login(%s); } catch (Exception $e) { return [get_class($e), $e->getMessage()]; }', var_export($loginArgs, 1))); $this->assertTrue(isset($report[0], $report[1]), "authx_login() should fail with invalid credentials ($principalField=>$principalValue). Received array: " . json_encode($report)); - $this->assertRegExp($expectExceptionMessage, $report[1], "Invalid principal ($principalField=>$principalValue) should generate exception."); + $this->assertMatchesRegularExpression($expectExceptionMessage, $report[1], "Invalid principal ($principalField=>$principalValue) should generate exception."); $this->assertEquals($expectExceptionClass, $report[0], "Invalid principal ($principalField=>$principalValue) should generate exception."); } } @@ -636,7 +636,7 @@ class AllFlowsTest extends \PHPUnit\Framework\TestCase implements EndToEndInterf $this->fail('Untrusted sessions should require authentication credentials'); } catch (JsonRpcMethodException $e) { - $this->assertRegExp(';not trusted;', $e->getMessage()); + $this->assertMatchesRegularExpression(';not trusted;', $e->getMessage()); } $login = $rpc->call('login', ['cred' => $this->credJwt($this->getDemoCID())]); diff --git a/civicrm/ext/civi_campaign/info.xml b/civicrm/ext/civi_campaign/info.xml index 57da6fdf3e..b74ddd14cb 100644 --- a/civicrm/ext/civi_campaign/info.xml +++ b/civicrm/ext/civi_campaign/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_case/Civi/Api4/CiviCase.php b/civicrm/ext/civi_case/Civi/Api4/CiviCase.php index 2b0005fe66..23312605e7 100644 --- a/civicrm/ext/civi_case/Civi/Api4/CiviCase.php +++ b/civicrm/ext/civi_case/Civi/Api4/CiviCase.php @@ -28,7 +28,7 @@ class CiviCase extends Generic\DAOEntity { * * @return string */ - protected static function getEntityName() { + public static function getEntityName(): string { return 'Case'; } diff --git a/civicrm/ext/civi_case/civi_case.php b/civicrm/ext/civi_case/civi_case.php index 444ef886e7..82665f72e3 100644 --- a/civicrm/ext/civi_case/civi_case.php +++ b/civicrm/ext/civi_case/civi_case.php @@ -1,3 +1,16 @@ <?php require_once 'civi_case.civix.php'; +use CRM_Case_ExtensionUtil as E; + +/** + * Implements hook_civicrm_managed(). + */ +function civi_case_civicrm_managed(&$entities, $modules) { + // Don't optimize for $modules because the below functions delegate to other extensions + $entities = array_merge($entities, + CRM_Case_ManagedEntities::createManagedCaseTypes(), + CRM_Case_ManagedEntities::createManagedActivityTypes(CRM_Case_XMLRepository::singleton(), CRM_Core_ManagedEntities::singleton()), + CRM_Case_ManagedEntities::createManagedRelationshipTypes(CRM_Case_XMLRepository::singleton(), CRM_Core_ManagedEntities::singleton()) + ); +} diff --git a/civicrm/ext/civi_case/info.xml b/civicrm/ext/civi_case/info.xml index 1a210ee5c0..8f9e6ffb85 100644 --- a/civicrm/ext/civi_case/info.xml +++ b/civicrm/ext/civi_case/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_contribute/Civi/Api4/Contribution.php b/civicrm/ext/civi_contribute/Civi/Api4/Contribution.php index 67d61be1f7..b2a275d353 100644 --- a/civicrm/ext/civi_contribute/Civi/Api4/Contribution.php +++ b/civicrm/ext/civi_contribute/Civi/Api4/Contribution.php @@ -14,6 +14,7 @@ namespace Civi\Api4; * Contribution entity. * * @searchable primary + * @searchFields contact_id.sort_name,total_amount * @since 5.19 * @package Civi\Api4 */ diff --git a/civicrm/ext/civi_contribute/info.xml b/civicrm/ext/civi_contribute/info.xml index cae6cbbd50..f131a68c9b 100644 --- a/civicrm/ext/civi_contribute/info.xml +++ b/civicrm/ext/civi_contribute/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_event/Civi/Api4/Participant.php b/civicrm/ext/civi_event/Civi/Api4/Participant.php index 425020067e..3224d94bff 100644 --- a/civicrm/ext/civi_event/Civi/Api4/Participant.php +++ b/civicrm/ext/civi_event/Civi/Api4/Participant.php @@ -14,6 +14,7 @@ namespace Civi\Api4; * Participant entity, stores the participation record of a contact in an event. * * @searchable primary + * @searchFields contact_id.sort_name,event_id.title * @since 5.19 * @package Civi\Api4 */ 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 fb2b2b10ff..5a31a24193 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 @@ -30,10 +30,13 @@ class EventCreationSpecProvider extends \Civi\Core\Service\AutoService implement $spec->getFieldByName('start_date')->setRequiredIf('empty($values.is_template)'); $spec->getFieldByName('template_title')->setRequiredIf('!empty($values.is_template)'); - $template_id = new FieldSpec('template_id', 'Event', 'Integer'); - $template_id - ->setTitle('Template Id') - ->setDescription('Template on which to base this new event'); + $template_id = (new FieldSpec('template_id', 'Event', 'Integer')) + ->setTitle(ts('Event Template')) + ->setDescription(ts('Template on which to base this new event')) + ->setInputType('EntityRef') + // Afform-only (so far) metadata tells the form this field is used to create a new entity rather than update + ->setInputAttr('autofill', 'create') + ->setFkEntity('Event'); $spec->addFieldSpec($template_id); } diff --git a/civicrm/ext/civi_event/info.xml b/civicrm/ext/civi_event/info.xml index 5267e6d7dd..564772fd0b 100644 --- a/civicrm/ext/civi_event/info.xml +++ b/civicrm/ext/civi_event/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</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 72cd45acf5..4e2a06f0c1 100644 --- a/civicrm/ext/civi_mail/info.xml +++ b/civicrm/ext/civi_mail/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_member/Civi/Api4/Membership.php b/civicrm/ext/civi_member/Civi/Api4/Membership.php index 751cd65e32..1a8eda1d21 100644 --- a/civicrm/ext/civi_member/Civi/Api4/Membership.php +++ b/civicrm/ext/civi_member/Civi/Api4/Membership.php @@ -14,6 +14,7 @@ namespace Civi\Api4; * Membership entity. * * @searchable primary + * @searchFields contact_id.sort_name * @since 5.42 * @package Civi\Api4 */ diff --git a/civicrm/ext/civi_member/info.xml b/civicrm/ext/civi_member/info.xml index ba8c9db74c..67fe69e551 100644 --- a/civicrm/ext/civi_member/info.xml +++ b/civicrm/ext/civi_member/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civi_pledge/Civi/Api4/Pledge.php b/civicrm/ext/civi_pledge/Civi/Api4/Pledge.php index c571f9d464..df39ede1ef 100644 --- a/civicrm/ext/civi_pledge/Civi/Api4/Pledge.php +++ b/civicrm/ext/civi_pledge/Civi/Api4/Pledge.php @@ -15,6 +15,7 @@ namespace Civi\Api4; * * @see https://docs.civicrm.org/user/en/latest/pledges/what-is-civipledge/ * @searchable primary + * @searchFields contact_id.display_name,amount * @since 5.35 * @package Civi\Api4 */ diff --git a/civicrm/ext/civi_pledge/info.xml b/civicrm/ext/civi_pledge/info.xml index f6299ac422..0a75749d04 100644 --- a/civicrm/ext/civi_pledge/info.xml +++ b/civicrm/ext/civi_pledge/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</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 04bd19e289..c633d0bbbc 100644 --- a/civicrm/ext/civi_report/info.xml +++ b/civicrm/ext/civi_report/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-04-08</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.html index 7c8cde1dcc..d1dd1833a8 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.html +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageContributionPages.aff.html @@ -3,7 +3,7 @@ </div> <div af-fieldset=""> <div class="af-container af-layout-inline"> - <af-field name="title" defn="{label: 'Title', input_attrs: {}, help_post: 'Complete OR partial Contribution Page Title'}" /> + <af-field name="title" defn="{label: 'Title', input_attrs: {}}" /> <af-field name="financial_type_id" defn="{input_type: 'CheckBox', input_attrs: {}}" /> </div> <div class="btn-group pull-right"> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageScheduledJobs.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageScheduledJobs.aff.html index 311a39dbe9..282393cc5f 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageScheduledJobs.aff.html +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageScheduledJobs.aff.html @@ -12,7 +12,7 @@ <af-field name="is_active" defn="{input_type: 'Radio', input_attrs: {}}" /> </div> <div class="btn-group pull-right"> - <a class="btn btn-primary" ng-href="{{:: crmUrl('civicrm/admin/job', {reset: 1, action: 'add'}) }}"> + <a class="btn btn-primary" ng-href="{{:: crmUrl('civicrm/admin/job/add', {reset: 1, action: 'add'}) }}"> <i class="crm-i fa-plus-circle"/> {{:: ts('Add Scheduled Job') }} </a> diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml index bd5b2ddb18..9a5a0f17c0 100644 --- a/civicrm/ext/civicrm_admin_ui/info.xml +++ b/civicrm/ext/civicrm_admin_ui/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2022-01-02</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <requires> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php index c19aef7753..e6e3387768 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Scheduled_Reminders.mgd.php @@ -32,7 +32,9 @@ return [ 'absolute_date', ], 'orderBy' => [], - 'where' => [], + 'where' => [ + ['used_for', 'IS EMPTY'], + ], 'groupBy' => [], 'join' => [], 'having' => [], diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php index e76d2daa72..3efe2e216d 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php @@ -2,6 +2,7 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; +// This SearchDisplay shows an editable-in-place field for Enabled? for all rows, including the bounce processing mail account, which cannot actually be disabled (you can change it to No, but it won't actually be disabled). So this is FIXME for when we can set rows to edit-in-place conditionally. return [ [ 'name' => 'SavedSearch_Mail_Accounts', diff --git a/civicrm/ext/civicrm_search_ui/info.xml b/civicrm/ext/civicrm_search_ui/info.xml index 03ec5bc5ba..b2de1e8163 100644 --- a/civicrm/ext/civicrm_search_ui/info.xml +++ b/civicrm/ext/civicrm_search_ui/info.xml @@ -15,14 +15,14 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2023-07-17</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>alpha</develStage> <requires> <ext>org.civicrm.search_kit</ext> <ext>org.civicrm.afform</ext> </requires> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Replacement SearchKit/FormBuilder pages for core Search pages.</comments> <classloader> diff --git a/civicrm/ext/civigrant/Civi/Api4/Grant.php b/civicrm/ext/civigrant/Civi/Api4/Grant.php index 96caf2375e..83ad0f87d5 100644 --- a/civicrm/ext/civigrant/Civi/Api4/Grant.php +++ b/civicrm/ext/civigrant/Civi/Api4/Grant.php @@ -18,6 +18,7 @@ namespace Civi\Api4; * @see https://docs.civicrm.org/user/en/latest/grants/what-is-civigrant/ * * @searchable primary + * @searchFields contact_id.sort_name,grant_type_id:label * @since 5.33 * @package Civi\Api4 */ diff --git a/civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php b/civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php deleted file mode 100644 index e5c0388126..0000000000 --- a/civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php +++ /dev/null @@ -1,83 +0,0 @@ -<?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\Autocomplete; - -use Civi\Core\Event\GenericHookEvent; -use Civi\Core\HookInterface; - -/** - * @service - * @internal - */ -class GrantAutocompleteProvider extends \Civi\Core\Service\AutoService implements HookInterface { - - /** - * Provide default SavedSearch for Grant autocompletes - * - * @param \Civi\Core\Event\GenericHookEvent $e - */ - public static function on_civi_search_autocompleteDefault(GenericHookEvent $e) { - if (!is_array($e->savedSearch) || $e->savedSearch['api_entity'] !== 'Grant') { - return; - } - $e->savedSearch['api_params'] = [ - 'version' => 4, - 'select' => [ - 'id', - 'contact_id.display_name', - 'grant_type_id:label', - 'financial_type_id:label', - 'status_id:label', - ], - 'orderBy' => [], - 'where' => [], - 'groupBy' => [], - 'join' => [], - 'having' => [], - ]; - } - - /** - * Provide default SearchDisplay for Grant autocompletes - * - * @param \Civi\Core\Event\GenericHookEvent $e - */ - public static function on_civi_search_defaultDisplay(GenericHookEvent $e) { - if ($e->display['settings'] || $e->display['type'] !== 'autocomplete' || $e->savedSearch['api_entity'] !== 'Grant') { - return; - } - $e->display['settings'] = [ - 'sort' => [ - ['contact_id.sort_name', 'ASC'], - ['application_received_date', 'DESC'], - ], - 'columns' => [ - [ - 'type' => 'field', - 'key' => 'contact_id.display_name', - 'rewrite' => '[contact_id.display_name] - [grant_type_id:label]', - ], - [ - 'type' => 'field', - 'key' => 'financial_type_id:label', - 'rewrite' => '#[id] [status_id:label]', - ], - [ - 'type' => 'field', - 'key' => 'financial_type_id:label', - ], - ], - ]; - } - -} diff --git a/civicrm/ext/civigrant/ang/afsearchGrants.aff.html b/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.html similarity index 100% rename from civicrm/ext/civigrant/ang/afsearchGrants.aff.html rename to civicrm/ext/civigrant/ang/afsearchTabGrant.aff.html diff --git a/civicrm/ext/civigrant/ang/afsearchGrants.aff.json b/civicrm/ext/civigrant/ang/afsearchTabGrant.aff.json similarity index 100% rename from civicrm/ext/civigrant/ang/afsearchGrants.aff.json rename to civicrm/ext/civigrant/ang/afsearchTabGrant.aff.json diff --git a/civicrm/ext/civigrant/civigrant.php b/civicrm/ext/civigrant/civigrant.php index 9f4ca39e70..d0e24ed5ac 100644 --- a/civicrm/ext/civigrant/civigrant.php +++ b/civicrm/ext/civigrant/civigrant.php @@ -39,7 +39,7 @@ function civigrant_civicrm_summaryActions(&$menu, $cid) { 'weight' => 26, 'ref' => 'new-grant', 'key' => 'grant', - 'tab' => 'afsearchGrants', + 'tab' => 'grant', 'href' => CRM_Utils_System::url('civicrm/contact/view/grant', 'reset=1&action=add&context=grant' ), diff --git a/civicrm/ext/civigrant/info.xml b/civicrm/ext/civigrant/info.xml index d2a23149ea..acd004a210 100644 --- a/civicrm/ext/civigrant/info.xml +++ b/civicrm/ext/civigrant/info.xml @@ -13,10 +13,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-11-11</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>CiviGrant was originally a core component before migrating to an extension</comments> <requires> diff --git a/civicrm/ext/civigrant/phpunit.xml.dist b/civicrm/ext/civigrant/phpunit.xml.dist index 0b6c17274e..5fe8daddfe 100644 --- a/civicrm/ext/civigrant/phpunit.xml.dist +++ b/civicrm/ext/civigrant/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml index d00e307f6f..3c03e8532f 100644 --- a/civicrm/ext/civiimport/info.xml +++ b/civicrm/ext/civiimport/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2022-08-11</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>Core extension for us to start moving import logic into, has more functionality</comments> <requires> diff --git a/civicrm/ext/civiimport/phpunit.xml.dist b/civicrm/ext/civiimport/phpunit.xml.dist index ea391745fa..5fe8daddfe 100644 --- a/civicrm/ext/civiimport/phpunit.xml.dist +++ b/civicrm/ext/civiimport/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" cacheResult="false" bootstrap="tests/phpunit/bootstrap.php"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml index f29ff3f14e..3dbe6e83b6 100644 --- a/civicrm/ext/ckeditor4/info.xml +++ b/civicrm/ext/ckeditor4/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">https://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-05-23</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</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 1fe224984f..2bf04dbb95 100644 --- a/civicrm/ext/contributioncancelactions/info.xml +++ b/civicrm/ext/contributioncancelactions/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-10-12</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</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/contributioncancelactions/phpunit.xml.dist b/civicrm/ext/contributioncancelactions/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/contributioncancelactions/phpunit.xml.dist +++ b/civicrm/ext/contributioncancelactions/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml index 1f73e243b3..64fd0cfdb4 100644 --- a/civicrm/ext/elavon/info.xml +++ b/civicrm/ext/elavon/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2022-08-05</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments/> <classloader> diff --git a/civicrm/ext/elavon/phpunit.xml.dist b/civicrm/ext/elavon/phpunit.xml.dist index ea391745fa..5fe8daddfe 100644 --- a/civicrm/ext/elavon/phpunit.xml.dist +++ b/civicrm/ext/elavon/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" cacheResult="false" bootstrap="tests/phpunit/bootstrap.php"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml index d46f9825b8..df2f2c851c 100644 --- a/civicrm/ext/eventcart/info.xml +++ b/civicrm/ext/eventcart/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-08-03</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl index 6069f6a1b2..9e952522c6 100644 --- a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl +++ b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ConferenceEvents.tpl @@ -1,5 +1,3 @@ -{include file="CRM/common/TrackingFields.tpl"} - <h3>{ts 1=$mer_participant->display_name 2=$mer_participant->email}Choose Events For %1 (%2){/ts}</h3> {foreach from=$slot_fields key=slot_name item=field_name} diff --git a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl index 5b465d625a..0d7dd4d033 100644 --- a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl +++ b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ParticipantsAndPrices.tpl @@ -1,5 +1,3 @@ -{include file="CRM/common/TrackingFields.tpl"} - <div class="crm-block crm-form-block crm-eventcart-participantsandprices"> {if $contact} diff --git a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl index 60d841abc3..3c7dd1d3e6 100644 --- a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl +++ b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/Payment.tpl @@ -1,5 +1,3 @@ -{include file="CRM/common/TrackingFields.tpl"} - <table> <thead> <tr> diff --git a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl index f149c2247b..d8c21fe709 100644 --- a/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl +++ b/civicrm/ext/eventcart/templates/CRM/Event/Cart/Form/Checkout/ThankYou.tpl @@ -1,5 +1,3 @@ -{include file="CRM/common/TrackingFields.tpl"} - <div class="crm-block crm-event-thankyou-form-block"> <p> {ts}This is your receipt of payment made for the following event registration.{/ts} diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml index 38fce6560c..0cdc9dc835 100644 --- a/civicrm/ext/ewaysingle/info.xml +++ b/civicrm/ext/ewaysingle/info.xml @@ -15,13 +15,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-10-07</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>This is an extension to contain the eWAY Single Currency Payment Processor</comments> <classloader> diff --git a/civicrm/ext/ewaysingle/phpunit.xml.dist b/civicrm/ext/ewaysingle/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/ewaysingle/phpunit.xml.dist +++ b/civicrm/ext/ewaysingle/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/financialacls/financialacls.php b/civicrm/ext/financialacls/financialacls.php index 3265558fed..0e079fe401 100644 --- a/civicrm/ext/financialacls/financialacls.php +++ b/civicrm/ext/financialacls/financialacls.php @@ -383,3 +383,28 @@ function financialacls_civicrm_alterMenu(array &$menu): void { } $menu['civicrm/admin/financial/financialType']['access_arguments'] = [['administer CiviCRM Financial Types']]; } + +/** + * 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 + * + * Implements hook_civicrm_links() + */ +function financialacls_civicrm_links(string $op, ?string $objectName, $objectID, array &$links, ?int &$mask, array &$values) { + if ($objectName === 'MembershipType') { + $financialType = CRM_Core_PseudoConstant::getName('CRM_Member_BAO_MembershipType', 'financial_type_id', CRM_Member_BAO_MembershipType::getMembershipType($objectID)['financial_type_id']); + $hasEditPermission = CRM_Core_Permission::check('edit contributions of type ' . $financialType); + $hasDeletePermission = CRM_Core_Permission::check('delete contributions of type ' . $financialType); + if (!$hasDeletePermission || !$hasEditPermission) { + foreach ($links as $index => $link) { + if (!$hasEditPermission && in_array($link['name'], ['Edit', 'Enable', 'Disable'], TRUE)) { + unset($links[$index]); + } + if (!$hasDeletePermission && $link['name'] === 'Delete') { + unset($links[$index]); + } + } + } + } + +} diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml index 50def07d30..acb01d0847 100644 --- a/civicrm/ext/financialacls/info.xml +++ b/civicrm/ext/financialacls/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-08-27</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <tags> <tag>mgmt:hidden</tag> diff --git a/civicrm/ext/financialacls/phpunit.xml.dist b/civicrm/ext/financialacls/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/financialacls/phpunit.xml.dist +++ b/civicrm/ext/financialacls/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/MembershipTypesTest.php b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/MembershipTypesTest.php index 0d45587232..6b1370d07a 100644 --- a/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/MembershipTypesTest.php +++ b/civicrm/ext/financialacls/tests/phpunit/Civi/Financialacls/MembershipTypesTest.php @@ -32,12 +32,31 @@ class MembershipTypesTest extends BaseTestClass { $assigned = \CRM_Core_Smarty::singleton()->get_template_vars(); $this->assertArrayNotHasKey($types['Forbidden']['id'], $assigned['rows']); $this->assertArrayHasKey($types['Go for it']['id'], $assigned['rows']); + $links = $assigned['rows'][$types['Go for it']['id']]['action']; + $this->assertStringContainsString("title='Edit Membership Type' ", $links); + $this->assertStringContainsString("title='Disable Membership Type' ", $links); + $this->assertStringContainsString("title='Delete Membership Type' ", $links); + + // Now check that the edit & delete links are removed if we remove those permissions. + $permissions = \CRM_Core_Config::singleton()->userPermissionClass->permissions; + foreach ($permissions as $index => $permission) { + if (in_array($permission, ['edit contributions of type Donation', 'delete contributions of type Donation'], TRUE)) { + unset($permissions[$index]); + } + } + $this->setPermissions($permissions); + $page->browse(); + $assigned = \CRM_Core_Smarty::singleton()->get_template_vars(); + $this->assertEquals('<span></span>', $assigned['rows'][$types['Go for it']['id']]['action']); } /** + * Set up a membership scenario where the user can access one type but not the other. + * * @return \Civi\Api4\Generic\Result - * @throws \CRM_Core_Exception - * @throws \Civi\API\Exception\UnauthorizedException + * + * @noinspection PhpDocMissingThrowsInspection + * @noinspection PhpUnhandledExceptionInspection */ protected function setUpMembershipTypesACLLimited(): Result { $types = MembershipType::save(FALSE) diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml index 56b62409a1..04de8f7c41 100644 --- a/civicrm/ext/flexmailer/info.xml +++ b/civicrm/ext/flexmailer/info.xml @@ -15,7 +15,7 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-08-05</releaseDate> - <version>5.65.2</version> + <version>5.66.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.65</ver> + <ver>5.66</ver> </compatibility> <tags> <tag>mgmt:required</tag> diff --git a/civicrm/ext/flexmailer/phpunit.xml.dist b/civicrm/ext/flexmailer/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/flexmailer/phpunit.xml.dist +++ b/civicrm/ext/flexmailer/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/flexmailer/src/FlexMailer.php b/civicrm/ext/flexmailer/src/FlexMailer.php index c46160a738..844ee66659 100644 --- a/civicrm/ext/flexmailer/src/FlexMailer.php +++ b/civicrm/ext/flexmailer/src/FlexMailer.php @@ -133,7 +133,7 @@ class FlexMailer { */ public function __construct($context = array(), EventDispatcherInterface $dispatcher = NULL) { $this->context = $context; - $this->dispatcher = $dispatcher ? $dispatcher : \Civi::service('dispatcher'); + $this->dispatcher = $dispatcher ?: \Civi::service('dispatcher'); } /** diff --git a/civicrm/ext/flexmailer/src/Validator.php b/civicrm/ext/flexmailer/src/Validator.php index 455d6f0538..549d028e3c 100644 --- a/civicrm/ext/flexmailer/src/Validator.php +++ b/civicrm/ext/flexmailer/src/Validator.php @@ -54,7 +54,7 @@ class Validator { * @param \Symfony\Component\EventDispatcher\EventDispatcherInterface $dispatcher */ public function __construct(EventDispatcherInterface $dispatcher = NULL) { - $this->dispatcher = $dispatcher ? $dispatcher : \Civi::service('dispatcher'); + $this->dispatcher = $dispatcher ?: \Civi::service('dispatcher'); } /** diff --git a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ValidatorTest.php b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ValidatorTest.php index 58e8108309..a0bd66b3d4 100644 --- a/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ValidatorTest.php +++ b/civicrm/ext/flexmailer/tests/phpunit/Civi/FlexMailer/ValidatorTest.php @@ -91,7 +91,7 @@ class ValidatorTest extends \CiviUnitTestCase { array_keys($expectedErrors) ); foreach ($expectedErrors as $key => $pat) { - $this->assertRegExp($pat, $actualErrors[$key], "Error for \"$key\" should match pattern"); + $this->assertMatchesRegularExpression($pat, $actualErrors[$key], "Error for \"$key\" should match pattern"); } } diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml index 2436be1880..47d165987d 100644 --- a/civicrm/ext/greenwich/info.xml +++ b/civicrm/ext/greenwich/info.xml @@ -15,13 +15,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-07-21</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php index 2e5d19a28e..942cfea4aa 100644 --- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php +++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php @@ -138,7 +138,7 @@ class CRM_Contact_Form_Search_Custom extends CRM_Contact_Form_Search { $fileName = $this->_customClass->templateFile(); } - return $fileName ? $fileName : parent::getTemplateFileName(); + return $fileName ?: parent::getTemplateFileName(); } public function postProcess() { diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php index 7170f7e821..06385ec856 100644 --- a/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php +++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php @@ -157,6 +157,7 @@ class CRM_Contact_Selector_Custom extends CRM_Contact_Selector { 'qs' => "reset=1&cid=%%id%%{$extraParams}{$searchContext}", 'class' => 'no-popup', 'title' => ts('View Contact Details'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Edit'), @@ -164,6 +165,7 @@ class CRM_Contact_Selector_Custom extends CRM_Contact_Selector { 'qs' => 'reset=1&action=update&cid=%%id%%', 'class' => 'no-popup', 'title' => ts('Edit Contact Details'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], ]; diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml index d4d3e0a102..9eb71cb67e 100644 --- a/civicrm/ext/legacycustomsearches/info.xml +++ b/civicrm/ext/legacycustomsearches/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-07-25</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</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/phpunit.xml.dist b/civicrm/ext/legacycustomsearches/phpunit.xml.dist index a55cbea553..c54932add4 100644 --- a/civicrm/ext/legacycustomsearches/phpunit.xml.dist +++ b/civicrm/ext/legacycustomsearches/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="Legacy custom searches"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml index fcaa37db65..ce9e985a6c 100644 --- a/civicrm/ext/message_admin/info.xml +++ b/civicrm/ext/message_admin/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-06-12</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</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 3b1a1e8a1b..d4904961d6 100644 --- a/civicrm/ext/oauth-client/info.xml +++ b/civicrm/ext/oauth-client/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-10-23</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <requires> <ext version="~4.5">org.civicrm.afform</ext> diff --git a/civicrm/ext/oauth-client/phpunit.xml.dist b/civicrm/ext/oauth-client/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/oauth-client/phpunit.xml.dist +++ b/civicrm/ext/oauth-client/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientGrantTest.php b/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientGrantTest.php index f33bf1cf0b..923084a9b6 100644 --- a/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientGrantTest.php +++ b/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientGrantTest.php @@ -48,11 +48,11 @@ class api_v4_OAuthClientGrantTest extends \PHPUnit\Framework\TestCase implements $this->assertEquals('/one/auth', $url['path']); \parse_str($url['query'], $actualQuery); $this->assertEquals('code', $actualQuery['response_type']); - $this->assertRegExp(';^[cs]_[a-zA-Z0-9]+$;', $actualQuery['state']); + $this->assertMatchesRegularExpression(';^[cs]_[a-zA-Z0-9]+$;', $actualQuery['state']); $this->assertEquals('scope-1-foo,scope-1-bar', $actualQuery['scope']); // ? // $this->assertEquals('auto', $actualQuery['approval_prompt']); $this->assertEquals('example-id', $actualQuery['client_id']); - $this->assertRegExp(';civicrm/oauth-client/return;', $actualQuery['redirect_uri']); + $this->assertMatchesRegularExpression(';civicrm/oauth-client/return;', $actualQuery['redirect_uri']); } } diff --git a/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php b/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php index b9186dac99..47a1a82374 100644 --- a/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php +++ b/civicrm/ext/oauth-client/tests/phpunit/api/v4/OAuthClientTest.php @@ -79,7 +79,7 @@ class api_v4_OAuthClientTest extends \PHPUnit\Framework\TestCase implements Head $this->fail("Expected exception: invalid provider"); } catch (CRM_Core_Exception $e) { - $this->assertRegExp(';Invalid provider;', $e->getMessage()); + $this->assertMatchesRegularExpression(';Invalid provider;', $e->getMessage()); } } @@ -105,7 +105,7 @@ class api_v4_OAuthClientTest extends \PHPUnit\Framework\TestCase implements Head $this->fail("Expected exception: invalid provider"); } catch (CRM_Core_Exception $e) { - $this->assertRegExp(';Invalid provider;', $e->getMessage()); + $this->assertMatchesRegularExpression(';Invalid provider;', $e->getMessage()); } Civi\Api4\OAuthClient::update() diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml index 01e4c021e4..fda22e8534 100644 --- a/civicrm/ext/payflowpro/info.xml +++ b/civicrm/ext/payflowpro/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-04-13</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <comments>This extension is extraction of the original Core Payflow Pro Payment Processor</comments> <classloader> diff --git a/civicrm/ext/payflowpro/phpunit.xml.dist b/civicrm/ext/payflowpro/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/payflowpro/phpunit.xml.dist +++ b/civicrm/ext/payflowpro/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml index 29e4b907bd..35665f9481 100644 --- a/civicrm/ext/recaptcha/info.xml +++ b/civicrm/ext/recaptcha/info.xml @@ -13,13 +13,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-04-03</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/scheduled_communications/Civi/Search/ActionMapping.php b/civicrm/ext/scheduled_communications/Civi/Search/ActionMapping.php new file mode 100644 index 0000000000..7986f6f543 --- /dev/null +++ b/civicrm/ext/scheduled_communications/Civi/Search/ActionMapping.php @@ -0,0 +1,180 @@ +<?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 | + +--------------------------------------------------------------------+ + */ + +/** + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + */ + +namespace Civi\Search; + +use Civi\Api4\Generic\Traits\SavedSearchInspectorTrait; +use Civi\Api4\Query\Api4Query; +use Civi\Api4\Query\SqlExpression; +use Civi\Api4\SavedSearch; +use Civi\Api4\Utils\CoreUtil; + +/** + * This enables scheduled-reminders to be run based on a SavedSearch. + */ +class ActionMapping extends \Civi\ActionSchedule\MappingBase { + + use SavedSearchInspectorTrait; + + /** + * @return string + */ + public function getName(): string { + return 'saved_search'; + } + + public function getEntityName(): string { + return 'SavedSearch'; + } + + public function getEntityTable(\CRM_Core_DAO_ActionSchedule $actionSchedule): string { + $this->loadSavedSearch($actionSchedule->entity_value); + return \CRM_Core_DAO_AllCoreTables::getTableForEntityName($this->savedSearch['api_entity']); + } + + public function modifySpec(\Civi\Api4\Service\Spec\RequestSpec $spec) { + $spec->getFieldByName('entity_value') + ->setLabel(ts('Saved Search')) + ->setInputAttr('multiple', FALSE); + $spec->getFieldByName('entity_status') + ->setLabel(ts('Contact ID Field')) + ->setInputAttr('multiple', FALSE) + ->setRequired(TRUE); + } + + /** + * + * @return array + */ + public function getValueLabels(): array { + return SavedSearch::get(FALSE) + ->addSelect('id', 'name', 'label') + ->addOrderBy('label') + ->addWhere('api_entity', 'IS NOT NULL') + ->addWhere('is_current', '=', TRUE) + // Limit to searches that have something to do with contacts + // FIXME: Matching `api_params LIKE %contact%` is a cheap trick with no real understanding of the appropriateness of the SavedSearch for use as a Scheduled Reminder. + ->addClause('OR', ['api_entity', '=', 'Contact'], ['api_params', 'LIKE', '%contact%']) + ->execute()->getArrayCopy(); + } + + /** + * @param array|null $entityValue + * @return array + */ + public function getStatusLabels(?array $entityValue): array { + if (!$entityValue) { + return []; + } + $this->loadSavedSearch(\CRM_Utils_Array::first($entityValue)); + $fieldNames = []; + foreach ($this->getSelectClause() as $columnAlias => $columnInfo) { + // TODO: It would be nice to return only fields with an FK to contact.id + // For now returning fields of type Int or unknown + if (in_array($columnInfo['dataType'], ['Integer', NULL], TRUE)) { + $fieldNames[$columnAlias] = $this->getColumnLabel($columnInfo['expr']); + } + } + return $fieldNames; + } + + /** + * @param array|null $entityValue + * @return array + */ + public function getDateFields(?array $entityValue = NULL): array { + if (!$entityValue) { + return []; + } + $this->loadSavedSearch(\CRM_Utils_Array::first($entityValue)); + $fieldNames = []; + foreach ($this->getSelectClause() as $columnAlias => $columnInfo) { + // Only return date fields + // For now also including fields of unknown type since SQL functions sometimes don't know their return type + if (in_array($columnInfo['dataType'], ['Date', 'Timestamp', NULL], TRUE)) { + $fieldNames[$columnAlias] = $this->getColumnLabel($columnInfo['expr']); + } + } + return $fieldNames; + } + + /** + * @param $schedule + * @return bool + */ + public function resetOnTriggerDateChange($schedule): bool { + return FALSE; + } + + /** + * Generate a query to locate recipients. + * + * @param \CRM_Core_DAO_ActionSchedule $schedule + * The schedule as configured by the administrator. + * @param string $phase + * See, e.g., RecipientBuilder::PHASE_RELATION_FIRST. + * + * @param array $defaultParams + * + * @return \CRM_Utils_SQL_Select + * @see RecipientBuilder + */ + public function createQuery($schedule, $phase, $defaultParams): \CRM_Utils_SQL_Select { + $this->loadSavedSearch($schedule->entity_value); + $this->savedSearch['api_params']['checkPermissions'] = FALSE; + $mainTableAlias = Api4Query::MAIN_TABLE_ALIAS; + // This mapping type requires exactly one 'entity_status': the name of the contact.id field. + $contactIdFieldName = $schedule->entity_status; + // The RecipientBuilder needs to know the name of the Contact table. + // Check if Contact is the main table or an explicit join + if ($contactIdFieldName === 'id' || str_ends_with($contactIdFieldName, '.id')) { + $contactPrefix = substr($contactIdFieldName, 0, strrpos($contactIdFieldName, 'id')); + $contactJoin = $this->getJoin($contactPrefix); + $contactTable = $contactJoin['alias'] ?? $mainTableAlias; + } + // Else if contact id is an FK field, use implicit join syntax + else { + $contactPrefix = $contactIdFieldName . '.'; + } + // Exclude deceased and deleted contacts + $this->savedSearch['api_params']['where'][] = [$contactPrefix . 'is_deceased', '=', FALSE]; + $this->savedSearch['api_params']['where'][] = [$contactPrefix . 'is_deleted', '=', FALSE]; + // Refresh search query with new api params + $this->loadSavedSearch(); + $apiQuery = $this->getQuery(); + // If contact id is an FK field, find table name by rendering the id field and stripping off the field name + if (!isset($contactTable)) { + $contactIdSql = SqlExpression::convert($contactPrefix . 'id')->render($apiQuery); + $contactTable = str_replace('.`id`', '', $contactIdSql); + } + $apiQuery->getSql(); + $sqlSelect = \CRM_Utils_SQL_Select::from($apiQuery->getQuery()->getFrom()); + $sqlSelect->merge($apiQuery->getQuery(), ['joins', 'wheres']); + $sqlSelect->param($defaultParams); + $sqlSelect['casAddlCheckFrom'] = $sqlSelect->getFrom(); + $sqlSelect['casContactIdField'] = SqlExpression::convert($contactIdFieldName)->render($apiQuery); + $sqlSelect['casEntityIdField'] = '`' . $mainTableAlias . '`.`' . CoreUtil::getIdFieldName($this->savedSearch['api_entity']) . '`'; + $sqlSelect['casContactTableAlias'] = $contactTable; + if ($schedule->absolute_date) { + $sqlSelect['casDateField'] = "'" . \CRM_Utils_Type::escape($schedule->absolute_date, 'String') . "'"; + } + else { + $sqlSelect['casDateField'] = SqlExpression::convert($schedule->start_action_date)->render($apiQuery); + } + return $sqlSelect; + } + +} diff --git a/civicrm/ext/scheduled_communications/info.xml b/civicrm/ext/scheduled_communications/info.xml new file mode 100644 index 0000000000..f4ee882a24 --- /dev/null +++ b/civicrm/ext/scheduled_communications/info.xml @@ -0,0 +1,34 @@ +<?xml version="1.0"?> +<extension key="scheduled_communications" type="module"> + <file>scheduled_communications</file> + <name>Scheduled Communications</name> + <description>Schedule communications using SearchKit</description> + <license>AGPL-3.0</license> + <maintainer> + <author>CiviCRM</author> + <email>info@civicrm.org</email> + </maintainer> + <urls> + <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.66.0</version> + <develStage>beta</develStage> + <compatibility> + <ver>5.66</ver> + </compatibility> + <comments>Click on the chat link above to discuss development, report problems or ask questions.</comments> + <classloader> + <psr0 prefix="CRM_" path="."/> + <psr4 prefix="Civi\" path="Civi"/> + </classloader> + <civix> + <namespace>CRM/ScheduledCommunications</namespace> + <format>23.02.1</format> + <angularModule>crmScheduledCommunications</angularModule> + </civix> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> +</extension> diff --git a/civicrm/ext/scheduled_communications/scheduled_communications.civix.php b/civicrm/ext/scheduled_communications/scheduled_communications.civix.php new file mode 100644 index 0000000000..3a1cbc6393 --- /dev/null +++ b/civicrm/ext/scheduled_communications/scheduled_communications.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_ScheduledCommunications_ExtensionUtil { + const SHORT_NAME = 'scheduled_communications'; + const LONG_NAME = 'scheduled_communications'; + const CLASS_PREFIX = 'CRM_ScheduledCommunications'; + + /** + * 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_ScheduledCommunications_ExtensionUtil as E; + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config + */ +function _scheduled_communications_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 _scheduled_communications_civix_civicrm_install() { + _scheduled_communications_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 _scheduled_communications_civix_civicrm_enable(): void { + _scheduled_communications_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 _scheduled_communications_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 = _scheduled_communications_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _scheduled_communications_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _scheduled_communications_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _scheduled_communications_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _scheduled_communications_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _scheduled_communications_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'])) { + _scheduled_communications_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} diff --git a/civicrm/ext/scheduled_communications/scheduled_communications.php b/civicrm/ext/scheduled_communications/scheduled_communications.php new file mode 100644 index 0000000000..5a7c64a056 --- /dev/null +++ b/civicrm/ext/scheduled_communications/scheduled_communications.php @@ -0,0 +1,47 @@ +<?php + +require_once 'scheduled_communications.civix.php'; +use CRM_ScheduledCommunications_ExtensionUtil as E; + +/** + * Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/ + */ +function scheduled_communications_civicrm_config(&$config): void { + _scheduled_communications_civix_civicrm_config($config); +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function scheduled_communications_civicrm_install(): void { + _scheduled_communications_civix_civicrm_install(); +} + +/** + * Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function scheduled_communications_civicrm_enable(): void { + _scheduled_communications_civix_civicrm_enable(); +} + +/** + * Implements hook_civicrm_post(). + */ +function scheduled_communications_civicrm_post($op, $entity, $id, $object): void { + // Delete scheduled communications linked to a deleted saved search + if ($entity === 'SavedSearch' && $op === 'delete' && $id) { + civicrm_api4('ActionSchedule', 'delete', [ + 'checkPermissions' => FALSE, + 'where' => [ + ['mapping_id', '=', 'saved_search'], + ['entity_value', '=', $id], + ], + ]); + } +} diff --git a/civicrm/ext/search_kit/CRM/Search/Upgrader.php b/civicrm/ext/search_kit/CRM/Search/Upgrader.php index aa37914a90..24f573e1c5 100644 --- a/civicrm/ext/search_kit/CRM/Search/Upgrader.php +++ b/civicrm/ext/search_kit/CRM/Search/Upgrader.php @@ -121,8 +121,7 @@ class CRM_Search_Upgrader extends CRM_Extension_Upgrader_Base { */ public function upgrade_1005(): bool { $this->ctx->log->info('Applying update 1005 - add acl_bypass column.'); - $this->addTask('Add Cancel Button Setting to the Profile', 'addColumn', - 'civicrm_search_display', 'acl_bypass', "tinyint DEFAULT 0 COMMENT 'Skip permission checks and ACLs when running this display.'"); + $this->addColumn('civicrm_search_display', 'acl_bypass', "tinyint DEFAULT 0 COMMENT 'Skip permission checks and ACLs when running this display.'"); return TRUE; } @@ -158,7 +157,7 @@ class CRM_Search_Upgrader extends CRM_Extension_Upgrader_Base { */ public function upgrade_1007(): bool { $this->ctx->log->info('Applying update 1007 - add SearchSegment table.'); - if (!CRM_Core_DAO::singleValueQuery("SHOW TABLES LIKE 'civicrm_search_segment'")) { + if (!CRM_Core_DAO::checkTableExists('civicrm_search_segment')) { $createTable = " CREATE TABLE `civicrm_search_segment` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'Unique SearchSegment ID', 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 f49ec49808..78ae7ae59b 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php @@ -89,6 +89,8 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { private $editableInfo = []; + private $currencyFields = []; + /** * Override execute method to change the result object type * @return \Civi\Api4\Result\SearchDisplayRunResult @@ -576,6 +578,15 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { } return TRUE; } + // Convert the conditional value of 'current_domain' into an actual value that filterCompare can work with + if ($item['condition'][2] === 'current_domain') { + if (str_ends_with($item['condition'][0], ':label') !== FALSE) { + $item['condition'][2] = \CRM_Core_BAO_Domain::getDomain()->name; + } + else { + $item['condition'][2] = \CRM_Core_Config::domainID(); + } + } return self::filterCompare($data, $item['condition']); } @@ -699,7 +710,7 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { /** * @param array $column * @param array $data - * @return array{entity: string, action: string, input_type: string, data_type: string, options: bool, serialize: bool, nullable: bool, fk_entity: string, value_key: string, record: array, value: mixed}|null + * @return array{entity: string, action: string, input_type: string, data_type: string, options: bool, serialize: bool, nullable: bool, fk_entity: string, value_key: string, record: array, value_path: string}|null */ private function formatEditableColumn($column, $data) { $editable = $this->getEditableInfo($column['key']); @@ -708,7 +719,6 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { if (!empty($data[$editable['id_path']])) { $editable['action'] = 'update'; $editable['record'][$editable['id_key']] = $data[$editable['id_path']]; - $editable['value'] = $data[$editable['value_path']]; // Ensure field is appropriate to this entity sub-type $field = $this->getField($column['key']); $entityValues = FormattingUtil::filterByPath($data, $editable['id_path'], $editable['id_key']); @@ -719,7 +729,6 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { // Generate params to create new record, if applicable elseif ($editable['explicit_join'] && !$this->getJoin($editable['explicit_join'])['bridge']) { $editable['action'] = 'create'; - $editable['value'] = NULL; $editable['nullable'] = FALSE; // Get values for creation from the join clause $join = $this->getQuery()->getExplicitJoin($editable['explicit_join']); @@ -769,8 +778,14 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { 'values' => $entityValues, ], 0)['access']; if ($access) { + // Add currency formatting info + if ($editable['data_type'] === 'Money') { + $currencyField = $this->getCurrencyField($column['key']); + $currency = is_string($data[$currencyField] ?? NULL) ? $data[$currencyField] : NULL; + $editable['currency_format'] = \Civi::format()->money(1234.56, $currency); + } // Remove info that's for internal use only - \CRM_Utils_Array::remove($editable, 'id_key', 'id_path', 'value_path', 'explicit_join', 'grouping_fields'); + \CRM_Utils_Array::remove($editable, 'id_key', 'id_path', 'explicit_join', 'grouping_fields'); return $editable; } } @@ -1113,7 +1128,8 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { foreach ($apiParams['select'] as $select) { // When selecting monetary fields, also select currency $currencyFieldName = $this->getCurrencyField($select); - if ($currencyFieldName) { + // Only select currency field if it doesn't break ONLY_FULL_GROUP_BY + if ($currencyFieldName && !$this->canAggregate($currencyFieldName)) { $this->addSelectExpression($currencyFieldName); } // Add field dependencies needed to resolve pseudoconstants @@ -1133,60 +1149,103 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { } /** - * Given a field that contains money, find the corresponding currency field + * Return the corresponding currency field if a select expression is monetary * * @param string $select * @return string|null */ - private function getCurrencyField(string $select):?string { + private function getCurrencyField(string $select): ?string { + // This function is called one or more times per row so cache the results + if (array_key_exists($select, $this->currencyFields)) { + return $this->currencyFields[$select]; + } + $this->currencyFields[$select] = NULL; + $clause = $this->getSelectExpression($select); // Only deal with fields of type money. - // TODO: In theory it might be possible to support aggregated columns but be careful about FULL_GROUP_BY errors - if (!($clause && $clause['dataType'] === 'Money' && $clause['fields'])) { + if (!$clause || !$clause['fields'] || $clause['dataType'] !== 'Money') { return NULL; } + $moneyFieldAlias = array_keys($clause['fields'])[0]; $moneyField = $clause['fields'][$moneyFieldAlias]; + $prefix = substr($moneyFieldAlias, 0, strrpos($moneyFieldAlias, $moneyField['name'])); + // Custom fields do their own thing wrt currency if ($moneyField['type'] === 'Custom') { return NULL; } - $prefix = substr($moneyFieldAlias, 0, strrpos($moneyFieldAlias, $moneyField['name'])); + // First look for a currency field on the same entity as the money field + $ownCurrencyField = $this->findCurrencyField($moneyField['entity']); + if ($ownCurrencyField) { + return $this->currencyFields[$select] = $prefix . $ownCurrencyField; + } - // If using aggregation, this will only work if grouping by currency - if ($clause['expr']->isType('SqlFunction')) { - $groupingByCurrency = array_intersect([$prefix . 'currency', 'currency'], $this->savedSearch['api_params']['groupBy'] ?? []); - return \CRM_Utils_Array::first($groupingByCurrency); + // Next look at the previously-joined entity + if ($prefix && $this->getQuery()) { + $parentJoin = $this->getQuery()->getJoinParent(rtrim($prefix, '.')); + $parentCurrencyField = $parentJoin ? $this->findCurrencyField($this->getQuery()->getExplicitJoin($parentJoin)['entity']) : NULL; + if ($parentCurrencyField) { + return $this->currencyFields[$select] = $parentJoin . '.' . $parentCurrencyField; + } } - // If the entity has a field named 'currency', just assume that's it. - if ($this->getField($prefix . 'currency')) { - return $prefix . 'currency'; + // Fall back on the base entity + $baseCurrencyField = $this->findCurrencyField($this->savedSearch['api_entity']); + if ($baseCurrencyField) { + return $this->currencyFields[$select] = $baseCurrencyField; } - // Some currency fields go by other names like `fee_currency`. We find them by checking the pseudoconstant. - $entityDao = CoreUtil::getInfoItem($moneyField['entity'], 'dao'); + + // Finally, try adding an implicit join + // e.g. the LineItem entity can use `contribution_id.currency` + foreach ($this->findFKFields($moneyField['entity']) as $fieldName => $fkEntity) { + $joinCurrencyField = $this->findCurrencyField($fkEntity); + if ($joinCurrencyField) { + return $this->currencyFields[$select] = $prefix . $fieldName . '.' . $joinCurrencyField; + } + } + return NULL; + } + + /** + * Find currency field for an entity. + * + * @param string $entityName + * @return string|null + */ + private function findCurrencyField(string $entityName): ?string { + $entityDao = CoreUtil::getInfoItem($entityName, 'dao'); if ($entityDao) { + // Check for a pseudoconstant that points to civicrm_currency. foreach ($entityDao::getSupportedFields() as $fieldName => $field) { if (($field['pseudoconstant']['table'] ?? NULL) === 'civicrm_currency') { - return $prefix . $fieldName; + return $fieldName; } } } - // If the base entity has a field named 'currency', fall back on that. - if ($this->getField('currency')) { - return 'currency'; - } - // Finally, if there's a FK field to civicrm_contribution, we can use an implicit join - // E.G. the LineItem entity has no `currency` field of its own & uses that of the contribution record + return NULL; + } + + /** + * Return all fields for this entity with a foreign key + * + * @param string $entityName + * @return string[] + */ + private function findFKFields(string $entityName): array { + $entityDao = CoreUtil::getInfoItem($entityName, 'dao'); + $fkFields = []; if ($entityDao) { + // Check for a pseudoconstant that points to civicrm_currency. foreach ($entityDao::getSupportedFields() as $fieldName => $field) { - if (($field['FKClassName'] ?? NULL) === 'CRM_Contribute_DAO_Contribution') { - return $prefix . $fieldName . '.currency'; + $fkEntity = !empty($field['FKClassName']) ? CoreUtil::getApiNameFromBAO($field['FKClassName']) : NULL; + if ($fkEntity) { + $fkFields[$fieldName] = $fkEntity; } } } - return NULL; + return $fkFields; } /** diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php index 994e2018ec..cad99c7697 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php @@ -8,10 +8,7 @@ use Civi\Api4\Utils\FormattingUtil; use Civi\Core\Event\GenericHookEvent; use Civi\Search\Display; use CRM_Search_ExtensionUtil as E; -use Civi\Api4\Query\SqlEquation; -use Civi\Api4\Query\SqlExpression; use Civi\Api4\Query\SqlField; -use Civi\Api4\Query\SqlFunction; use Civi\Api4\Query\SqlFunctionGROUP_CONCAT; use Civi\Api4\Utils\CoreUtil; @@ -50,11 +47,6 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { */ protected $context = []; - /** - * @var array - */ - private $_joinMap; - /** * @param \Civi\Api4\Generic\Result $result * @throws \CRM_Core_Exception @@ -109,7 +101,7 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { } /** - * @param array{fields: array, expr: SqlExpression, dataType: string} $clause + * @param array{fields: array, expr: \Civi\Api4\Query\SqlExpression, dataType: string} $clause * @param string $key * @return array */ @@ -124,78 +116,15 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { return $col; } - /** - * @param \Civi\Api4\Query\SqlExpression $expr - * @return string - */ - private function getColumnLabel(SqlExpression $expr) { - if ($expr instanceof SqlFunction) { - $args = []; - foreach ($expr->getArgs() as $arg) { - foreach ($arg['expr'] ?? [] as $ex) { - $args[] = $this->getColumnLabel($ex); - } - } - return '(' . $expr->getTitle() . ')' . ($args ? ' ' . implode(',', array_filter($args)) : ''); - } - if ($expr instanceof SqlEquation) { - $args = []; - foreach ($expr->getArgs() as $arg) { - if (is_array($arg) && !empty($arg['expr'])) { - $args[] = $this->getColumnLabel(SqlExpression::convert($arg['expr'])); - } - } - return '(' . implode(',', array_filter($args)) . ')'; - } - elseif ($expr instanceof SqlField) { - $field = $this->getField($expr->getExpr()); - $label = ''; - if (!empty($field['explicit_join'])) { - $label = $this->getJoinLabel($field['explicit_join']) . ': '; - } - if (!empty($field['implicit_join']) && empty($field['custom_field_id'])) { - $field = $this->getField(substr($expr->getAlias(), 0, -1 - strlen($field['name']))); - } - return $label . $field['label']; - } - else { - return NULL; - } - } - - /** - * @param string $joinAlias - * @return string - */ - private function getJoinLabel($joinAlias) { - if (!isset($this->_joinMap)) { - $this->_joinMap = []; - $joinCount = [$this->savedSearch['api_entity'] => 1]; - foreach ($this->savedSearch['api_params']['join'] ?? [] as $join) { - [$entityName, $alias] = explode(' AS ', $join[0]); - $num = ''; - if (!empty($joinCount[$entityName])) { - $num = ' ' . (++$joinCount[$entityName]); - } - else { - $joinCount[$entityName] = 1; - } - $label = CoreUtil::getInfoItem($entityName, 'title'); - $this->_joinMap[$alias] = $label . $num; - } - } - return $this->_joinMap[$joinAlias]; - } - /** * @param array $col - * @param array{fields: array, expr: SqlExpression, dataType: string} $clause + * @param array{fields: array, expr: \Civi\Api4\Query\SqlExpression, dataType: string} $clause */ private function getColumnLink(&$col, $clause) { if ($clause['expr'] instanceof SqlField || $clause['expr'] instanceof SqlFunctionGROUP_CONCAT) { $field = \CRM_Utils_Array::first($clause['fields'] ?? []); if ($field && - CoreUtil::getInfoItem($field['entity'], 'label_field') === $field['name'] && + in_array($field['name'], array_merge(CoreUtil::getSearchFields($field['entity']), [CoreUtil::getInfoItem($field['entity'], 'label_field')]), TRUE) && !empty(CoreUtil::getInfoItem($field['entity'], 'paths')['view']) ) { $col['link'] = [ 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 9eadab8c5e..3a66af498d 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/Run.php @@ -63,6 +63,7 @@ class Run extends AbstractRunAction { case 'tally': unset($apiParams['orderBy'], $apiParams['limit']); $api = Request::create($entityName, 'get', $apiParams); + $api->setDefaultWhereClause(); $query = new Api4SelectQuery($api); $query->forceSelectId = FALSE; $sql = $query->getSql(); diff --git a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php index 20fa233a4b..03649969ba 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php +++ b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php @@ -59,8 +59,8 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements throw new \CRM_Core_Exception("Entity name is required to get autocomplete default display."); } $idField = CoreUtil::getIdFieldName($entityName); - $labelField = CoreUtil::getInfoItem($entityName, 'label_field'); - if (!$labelField) { + $searchFields = CoreUtil::getSearchFields($entityName); + if (!$searchFields) { throw new \CRM_Core_Exception("Entity $entityName has no default label field."); } @@ -69,11 +69,17 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements $apiGet = Request::create($entityName, 'get', ['version' => 4]); $fields = $apiGet->entityFields(); - $columns = [$labelField]; + $columns = array_slice($searchFields, 0, 1); // Add grouping fields like "event_type_id" in the description - $grouping = (array) (CoreUtil::getCustomGroupExtends($entityName)['grouping'] ?? []); + $grouping = (array) (CoreUtil::getCustomGroupExtends($entityName)['grouping'] ?? ['financial_type_id']); foreach ($grouping as $fieldName) { - $columns[] = "$fieldName:label"; + if (!empty($fields[$fieldName]['options']) && !in_array("$fieldName:label", $searchFields)) { + $columns[] = "$fieldName:label"; + } + } + $statusField = $fields['status_id'] ?? $fields[strtolower($entityName) . '_status_id'] ?? NULL; + if (!empty($statusField['options']) && !in_array("{$statusField['name']}:label", $searchFields)) { + $columns[] = "{$statusField['name']}:label"; } if (isset($fields['description'])) { $columns[] = 'description'; @@ -86,11 +92,15 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements 'key' => $columnField, ]; } + if (count($searchFields) > 1) { + $e->display['settings']['columns'][0]['rewrite'] = '[' . implode('] - [', $searchFields) . ']'; + } // Include entity id on the second line $e->display['settings']['columns'][1] = [ 'type' => 'field', - 'key' => $idField, + 'key' => $columns[1] ?? $idField, 'rewrite' => "#[$idField]" . (isset($columns[1]) ? " [$columns[1]]" : ''), + 'empty_value' => "#[$idField]", ]; // Default icons @@ -152,8 +162,12 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements * @return array */ protected static function getDefaultSort($entityName) { - $sortField = CoreUtil::getInfoItem($entityName, 'order_by') ?: CoreUtil::getInfoItem($entityName, 'label_field'); - return $sortField ? [[$sortField, 'ASC']] : []; + $result = []; + $sortFields = (array) (CoreUtil::getInfoItem($entityName, 'order_by') ?: CoreUtil::getSearchFields($entityName)); + foreach ($sortFields as $sortField) { + $result[] = [$sortField, 'ASC']; + } + return $result; } } diff --git a/civicrm/ext/search_kit/Civi/Search/Admin.php b/civicrm/ext/search_kit/Civi/Search/Admin.php index 1ebf866016..6c224e1630 100644 --- a/civicrm/ext/search_kit/Civi/Search/Admin.php +++ b/civicrm/ext/search_kit/Civi/Search/Admin.php @@ -131,7 +131,7 @@ class Admin { public static function getSchema(): array { $schema = []; $entities = Entity::get() - ->addSelect('name', 'title', 'title_plural', 'bridge_title', 'type', 'primary_key', 'description', 'label_field', 'icon', 'dao', 'bridge', 'ui_join_filters', 'searchable', 'order_by') + ->addSelect('name', 'title', 'title_plural', 'bridge_title', 'type', 'primary_key', 'description', 'label_field', 'search_fields', 'icon', 'dao', 'bridge', 'ui_join_filters', 'searchable', 'order_by') ->addWhere('searchable', '!=', 'none') ->addOrderBy('title_plural') ->setChain([ @@ -154,7 +154,7 @@ class Admin { 'select' => ['name', 'title', 'label', 'description', 'type', 'options', 'input_type', 'input_attrs', 'data_type', 'serialize', 'entity', 'fk_entity', 'readonly', 'operators', 'suffixes', 'nullable'], 'where' => [['deprecated', '=', FALSE], ['name', 'NOT IN', ['api_key', 'hash']]], 'orderBy' => ['label'], - ]); + ])->indexBy('name'); } catch (\CRM_Core_Exception $e) { \Civi::log()->warning('Entity could not be loaded', ['entity' => $entity['name']]); @@ -170,6 +170,7 @@ class Admin { } $entity['fields'][] = $field; } + $entity['default_columns'] = self::getDefaultColumns($entity, $getFields); $params = $entity['get'][0]; // Entity must support at least these params or it is too weird for search kit if (!array_diff(['select', 'where', 'orderBy', 'limit', 'offset'], array_keys($params))) { @@ -182,6 +183,44 @@ class Admin { return $schema; } + /** + * Build default columns - these are used when creating a new search with this entity + * + * @param array $entity + * @param iterable $getFields + * @return array + */ + private static function getDefaultColumns(array $entity, iterable $getFields): array { + // Start with id & label + $defaultColumns = array_merge( + $entity['primary_key'], + $entity['search_fields'] ?? [] + ); + $possibleColumns = []; + // Include grouping fields like "event_type_id" + foreach ((array) (CoreUtil::getCustomGroupExtends($entity['name'])['grouping'] ?? []) as $column) { + $possibleColumns[$column] = "$column:label"; + } + // Other possible relevant columns... now we're just guessing + $possibleColumns['financial_type_id'] = 'financial_type_id:label'; + $possibleColumns['description'] = 'description'; + // E.g. "activity_status_id" + $possibleColumns[strtolower($entity['name']) . 'status_id'] = strtolower($entity['name']) . 'status_id:label'; + $possibleColumns['start_date'] = 'start_date'; + $possibleColumns['end_date'] = 'end_date'; + $possibleColumns['is_active'] = 'is_active'; + foreach ($possibleColumns as $fieldName => $columnName) { + if ( + (str_contains($columnName, ':') && !empty($getFields[$fieldName]['options'])) || + (!str_contains($columnName, ':') && !empty($getFields[$fieldName])) + ) { + $defaultColumns[] = $columnName; + } + } + // `array_unique` messes with the index so reset it with `array_values` so it cleanly encodes to a json array + return array_values(array_unique($defaultColumns)); + } + /** * Add in FK fields for implicit joins. * @@ -194,22 +233,27 @@ class Admin { foreach ($schema as &$entity) { if ($entity['searchable'] !== 'bridge') { foreach (array_reverse($entity['fields'] ?? [], TRUE) as $index => $field) { - if (!empty($field['fk_entity']) && !$field['options'] && !$field['suffixes'] && !empty($schema[$field['fk_entity']]['label_field'])) { - $isCustom = strpos($field['name'], '.'); - // Custom fields: append "Contact ID" etc. to original field label - if ($isCustom) { - $idField = array_column($schema[$field['fk_entity']]['fields'], NULL, 'name')['id']; - $entity['fields'][$index]['label'] .= ' ' . $idField['title']; - } - // DAO fields: use title instead of label since it represents the id (title usually ends in ID but label does not) - else { - $entity['fields'][$index]['label'] = $field['title']; + if (!empty($field['fk_entity']) && !$field['options'] && !$field['suffixes'] && !empty($schema[$field['fk_entity']]['search_fields'])) { + $labelFields = array_unique(array_merge($schema[$field['fk_entity']]['search_fields'], (array) ($schema[$field['fk_entity']]['label_field'] ?? []))); + foreach ($labelFields as $labelField) { + $isCustom = strpos($field['name'], '.'); + // Custom fields: append "Contact ID" etc. to original field label + if ($isCustom) { + $idField = array_column($schema[$field['fk_entity']]['fields'], NULL, 'name')['id']; + $entity['fields'][$index]['label'] .= ' ' . $idField['title']; + } + // DAO fields: use title instead of label since it represents the id (title usually ends in ID but label does not) + else { + $entity['fields'][$index]['label'] = $field['title']; + } + // Add the label field from the other entity to this entity's list of fields + $newField = \CRM_Utils_Array::findAll($schema[$field['fk_entity']]['fields'], ['name' => $labelField])[0] ?? NULL; + if ($newField) { + $newField['name'] = $field['name'] . '.' . $labelField; + $newField['label'] = $field['label'] . ' ' . $newField['label']; + array_splice($entity['fields'], $index + 1, 0, [$newField]); + } } - // Add the label field from the other entity to this entity's list of fields - $newField = \CRM_Utils_Array::findAll($schema[$field['fk_entity']]['fields'], ['name' => $schema[$field['fk_entity']]['label_field']])[0]; - $newField['name'] = $field['name'] . '.' . $schema[$field['fk_entity']]['label_field']; - $newField['label'] = $field['label'] . ' ' . $newField['label']; - array_splice($entity['fields'], $index, 0, [$newField]); } } // Useful address fields (see ContactSchemaMapSubscriber) diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js index 34633bed32..970a83a86d 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js @@ -61,7 +61,7 @@ if (!this.savedSearch.id) { var defaults = { version: 4, - select: getDefaultSelect(), + select: searchMeta.getEntity(ctrl.savedSearch.api_entity).default_columns, orderBy: {}, where: [], }; @@ -329,8 +329,15 @@ params.push(condition); }); ctrl.savedSearch.api_params.join.push(params); - if (entity.label_field && $scope.controls.joinType !== 'EXCLUDE') { - ctrl.savedSearch.api_params.select.push(join.alias + '.' + entity.label_field); + if (entity.search_fields && $scope.controls.joinType !== 'EXCLUDE') { + // Add columns for newly-joined entity + entity.search_fields.forEach((fieldName) => { + // Try to avoid adding duplicate columns + const simpleName = _.last(fieldName.split('.')); + if (!ctrl.savedSearch.api_params.select.join(',').includes(simpleName)) { + ctrl.savedSearch.api_params.select.push(join.alias + '.' + fieldName); + } + }); } loadFieldOptions(); } @@ -535,16 +542,6 @@ return {results: ctrl.getSelectFields()}; }; - // Sets the default select clause based on commonly-named fields - function getDefaultSelect() { - var entity = searchMeta.getEntity(ctrl.savedSearch.api_entity); - return _.transform(entity.fields, function(defaultSelect, field) { - if (field.name === 'id' || field.name === entity.label_field) { - defaultSelect.push(field.name); - } - }); - } - this.getAllFields = function(suffix, allowedTypes, disabledIf, topJoin) { disabledIf = disabledIf || _.noop; allowedTypes = allowedTypes || ['Field', 'Custom', 'Extra', 'Filter']; diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayAutocomplete.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayAutocomplete.component.js index df55c2e731..c8803ef76d 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayAutocomplete.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/searchAdminDisplayAutocomplete.component.js @@ -26,8 +26,9 @@ sort: ctrl.parent.getDefaultSort(), columns: [] }; - var labelField = searchMeta.getEntity(ctrl.apiEntity).label_field; - _.each([labelField, 'description'], function(field) { + var searchFields = searchMeta.getEntity(ctrl.apiEntity).search_fields || []; + searchFields.push('description'); + searchFields.forEach((field) => { if (_.includes(ctrl.parent.savedSearch.api_params.select, field)) { ctrl.display.settings.columns.push(searchMeta.fieldToColumn(field, {})); } diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/communications.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/communications.html new file mode 100644 index 0000000000..5041de124f --- /dev/null +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/communications.html @@ -0,0 +1,20 @@ +<div class="btn-group"> + <button type="button" ng-click="row.openScheduleMenu = true" class="btn btn-xs dropdown-toggle btn-primary-outline" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> + {{:: row.data.schedule_id.length === 1 ? ts('1 Communication') : ts('%1 Communications', {1: row.data.schedule_id ? row.data.schedule_id.length : 0}) }} <span class="caret"></span> + </button> + <ul class="dropdown-menu" ng-if=":: row.openScheduleMenu"> + <li ng-repeat="schedule_id in row.data.schedule_id" title="{{:: ts('Edit Scheduled Communication') }}"> + <a ng-href="{{ crmUrl('civicrm/admin/scheduleReminders/edit?reset=1&action=update&mapping_id=saved_search&id=' + schedule_id + '&entity_value=' + row.data.id) }}" target="crm-popup"> + <i class="crm-i fa-pencil"></i> + {{ row.data.schedule_title[$index] }} + </a> + </li> + <li class="divider" role="separator"></li> + <li title="{{:: ts('Add Scheduled Communication') }}"> + <a ng-href="{{ crmUrl('civicrm/admin/scheduleReminders/edit?reset=1&action=add&mapping_id=saved_search&entity_value=' + row.data.id) }}" target="crm-popup"> + <i class="crm-i fa-plus"></i> + {{:: ts('New Communication') }} + </a> + </li> + </ul> +</div> diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/crmSearchAdminSearchListing.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/crmSearchAdminSearchListing.component.js index 977e965f69..9cb68b2bf0 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/crmSearchAdminSearchListing.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/crmSearchAdminSearchListing.component.js @@ -14,11 +14,13 @@ ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait), _.cloneDeep(searchDisplaySortableTrait)), afformLoad; + $scope.crmUrl = CRM.url; this.searchDisplayPath = CRM.url('civicrm/search'); this.afformPath = CRM.url('civicrm/admin/afform'); this.afformEnabled = 'org.civicrm.afform' in CRM.crmSearchAdmin.modules; this.afformAdminEnabled = (CRM.checkPerm('administer CiviCRM') || CRM.checkPerm('administer afform')) && 'org.civicrm.afform_admin' in CRM.crmSearchAdmin.modules; + const scheduledCommunicationsEnabled = 'scheduled_communications' in CRM.crmSearchAdmin.modules; this.apiEntity = 'SavedSearch'; this.search = { @@ -45,13 +47,16 @@ 'DATE(created_date) AS date_created', 'DATE(modified_date) AS date_modified', 'DATE(expires_date) AS expires', - 'GROUP_CONCAT(display.name ORDER BY display.id) AS display_name', - 'GROUP_CONCAT(display.label ORDER BY display.id) AS display_label', - 'GROUP_CONCAT(display.type:icon ORDER BY display.id) AS display_icon', - 'GROUP_CONCAT(display.acl_bypass ORDER BY display.id) AS display_acl_bypass', + // Get all search displays + 'GROUP_CONCAT(UNIQUE display.name ORDER BY display.label) AS display_name', + 'GROUP_CONCAT(UNIQUE display.label ORDER BY display.label) AS display_label', + 'GROUP_CONCAT(UNIQUE display.type:icon ORDER BY display.label) AS display_icon', + 'GROUP_CONCAT(UNIQUE display.acl_bypass ORDER BY display.label) AS display_acl_bypass', 'tags', // Not a selectable field but this hacks around the requirement that filters be in the select clause - 'GROUP_CONCAT(DISTINCT entity_tag.tag_id) AS tag_id', - 'GROUP_CONCAT(DISTINCT group.title) AS groups' + 'GROUP_CONCAT(UNIQUE entity_tag.tag_id) AS tag_id', + // Really there can only be 1 smart group per saved-search; aggregation is just for the sake of the query + 'GROUP_CONCAT(UNIQUE group.id) AS group_id', + 'GROUP_CONCAT(UNIQUE group.title) AS groups' ], join: [ ['SearchDisplay AS display', 'LEFT', ['id', '=', 'display.saved_search_id']], @@ -63,6 +68,13 @@ } }; + // Add scheduled communication to query if extension is enabled + if (scheduledCommunicationsEnabled) { + this.search.api_params.select.push('GROUP_CONCAT(UNIQUE schedule.id ORDER BY schedule.title) AS schedule_id'); + this.search.api_params.select.push('GROUP_CONCAT(UNIQUE schedule.title ORDER BY schedule.title) AS schedule_title'); + this.search.api_params.join.push(['ActionSchedule AS schedule', 'LEFT', ['schedule.mapping_id', '=', '"saved_search"'], ['id', '=', 'schedule.entity_value']]); + } + this.$onInit = function() { buildDisplaySettings(); this.initializeDisplay($scope, $element); @@ -136,6 +148,9 @@ _.each(search.groups, function (smartGroup) { msg += '<li class="crm-error"><i class="crm-i fa-exclamation-triangle"></i> ' + _.escape(ts('Smart group "%1" will also be deleted.', {1: smartGroup})) + '</li>'; }); + _.each(search.schedule_title, (communication) => { + msg += '<li class="crm-error"><i class="crm-i fa-exclamation-triangle"></i> ' + _.escape(ts('Communication "%1" will also be deleted.', {1: communication})) + '</li>'; + }); if (row.afform_count) { _.each(ctrl.afforms[search.name], function (afform) { msg += '<li class="crm-error"><i class="crm-i fa-exclamation-triangle"></i> ' + _.escape(ts('Form "%1" will also be deleted because it contains an embedded display from this search.', {1: afform.title})) + '</li>'; @@ -228,8 +243,16 @@ path: '~/crmSearchAdmin/searchListing/afforms.html' }); } + // Add scheduled communication column if extension is enabled + if (scheduledCommunicationsEnabled) { + ctrl.display.settings.columns.push({ + type: 'include', + label: ts('Communications'), + path: '~/crmSearchAdmin/searchListing/communications.html' + }); + } ctrl.display.settings.columns.push( - searchMeta.fieldToColumn('GROUP_CONCAT(DISTINCT group.title) AS groups', { + searchMeta.fieldToColumn('GROUP_CONCAT(UNIQUE group.title) AS groups', { label: ts('Smart Group') }) ); diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html index 06678c917a..ceb1664696 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html +++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html @@ -1,10 +1,10 @@ -<crm-search-display-editable row="row" col="colData" do-save="$ctrl.runSearch({inPlaceEdit: apiCall}, {}, row)" cancel="$ctrl.editing = null;" ng-if="colData.edit && $ctrl.editing && $ctrl.editing[0] === rowIndex && $ctrl.editing[1] === colIndex"></crm-search-display-editable> -<span ng-if="::!colData.links" ng-class="{'crm-editable-enabled': colData.edit && !$ctrl.editing, 'crm-editable-disabled': colData.edit && $ctrl.editing}" ng-click="colData.edit && !$ctrl.editing && ($ctrl.editing = [rowIndex, colIndex])"> +<crm-search-display-editable row="row" col="colData" cancel="$ctrl.editing = null;" ng-if="colData.edit && $ctrl.isEditing(rowIndex, colIndex)"></crm-search-display-editable> +<span ng-if="!colData.links && !$ctrl.isEditing(rowIndex, colIndex)" ng-class="{'crm-editable-enabled': colData.edit && !$ctrl.editing, 'crm-editable-disabled': colData.edit && $ctrl.editing}" ng-click="colData.edit && !$ctrl.editing && ($ctrl.editing = [rowIndex, colIndex])"> <i ng-repeat="icon in colData.icons" ng-if="icon.side === 'left'" class="crm-i {{:: icon['class'] }}"></i> {{:: $ctrl.formatFieldValue(colData) }} <i ng-repeat="icon in colData.icons" ng-if="icon.side === 'right'" class="crm-i {{:: icon['class'] }}"></i> </span> -<span ng-if="::colData.links"> +<span ng-if="colData.links && !$ctrl.isEditing(rowIndex, colIndex)"> <span ng-repeat="link in colData.links"> <a target="{{:: link.target }}" ng-href="{{:: link.url }}" title="{{:: link.title }}" ng-click="$ctrl.onClickLink(link, row.key, $event)"> <i ng-repeat="icon in colData.icons" ng-if="icon.side === 'left'" class="crm-i {{:: icon['class'] }}"></i> diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js b/civicrm/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js index cedb4db87d..46eed4615d 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/crmSearchDisplayEditable.component.js @@ -8,23 +8,23 @@ bindings: { row: '<', col: '<', - cancel: '&', - doSave: '&' + cancel: '&' }, templateUrl: '~/crmSearchDisplay/crmSearchDisplayEditable.html', - controller: function($scope, $element, crmApi4) { + controller: function($scope, $element, crmApi4, crmStatus) { var ctrl = this, initialValue, col; this.$onInit = function() { col = this.col; - this.value = _.cloneDeep(col.edit.value); - initialValue = _.cloneDeep(col.edit.value); + this.value = _.cloneDeep(this.row.data[col.edit.value_path]); + initialValue = _.cloneDeep(this.row.data[col.edit.value_path]); this.field = { data_type: col.edit.data_type, input_type: col.edit.input_type, + entity: col.edit.entity, name: col.edit.value_key, options: col.edit.options, fk_entity: col.edit.fk_entity, @@ -50,16 +50,52 @@ }; this.save = function() { - if (ctrl.value === initialValue) { - ctrl.cancel(); - return; + const value = formatDataType(ctrl.value); + if (value !== initialValue) { + col.edit.record[col.edit.value_key] = value; + crmStatus({}, crmApi4(col.edit.entity, col.edit.action, {values: col.edit.record})); + ctrl.row.data[col.edit.value_path] = value; + col.val = formatDisplayValue(value); } - var record = _.cloneDeep(col.edit.record); - record[col.edit.value_key] = ctrl.value; - $('input', $element).attr('disabled', true); - ctrl.doSave({apiCall: [col.edit.entity, col.edit.action, {values: record}]}); + ctrl.cancel(); }; + function formatDataType(val) { + if (_.isArray(val)) { + const formatted = angular.copy(val); + formatted.forEach((v, i) => formatted[i] = formatDataType(v)); + return formatted; + } + if (ctrl.field.data_type === 'Integer') { + return +val; + } + return val; + } + + function formatDisplayValue(val) { + let displayValue = angular.copy(val); + if (_.isArray(displayValue)) { + displayValue.forEach((v, i) => displayValue[i] = formatDisplayValue(v)); + return displayValue; + } + if (ctrl.field.options) { + ctrl.field.options.forEach((option) => { + if (('' + option.id) === ('' + val)) { + displayValue = option.label; + } + }); + } else if (ctrl.field.data_type === 'Boolean' && val === true) { + displayValue = ts('Yes'); + } else if (ctrl.field.data_type === 'Boolean' && val === false) { + displayValue = ts('No'); + } else if (ctrl.field.data_type === 'Date' || ctrl.field.data_type === 'Timestamp') { + displayValue = CRM.utils.formatDate(val, null, ctrl.field.data_type === 'Timestamp'); + } else if (ctrl.field.data_type === 'Money') { + displayValue = CRM.formatMoney(displayValue, false, col.edit.currency_format); + } + return displayValue; + } + function loadOptions() { var cacheKey = col.edit.entity + ' ' + ctrl.field.name; if (optionsCache[cacheKey]) { diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js b/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js index 1afb4aa559..e7d067bf7a 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js +++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js @@ -201,6 +201,9 @@ }, formatFieldValue: function(colData) { return angular.isArray(colData.val) ? colData.val.join(', ') : colData.val; + }, + isEditing: function(rowIndex, colIndex) { + return this.editing && this.editing[0] === rowIndex && this.editing[1] === colIndex; } }; }); diff --git a/civicrm/ext/search_kit/css/crmSearchTasks.css b/civicrm/ext/search_kit/css/crmSearchTasks.css index d70be29fff..f6b6f6c795 100644 --- a/civicrm/ext/search_kit/css/crmSearchTasks.css +++ b/civicrm/ext/search_kit/css/crmSearchTasks.css @@ -14,10 +14,6 @@ position: relative; } -.crm-search-display crm-search-display-editable + span.crm-editable-disabled { - display: none !important; -} - .crm-search-display .crm-search-display-editable-buttons { position: absolute; bottom: -24px; diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml index f04895703b..ce63c544b4 100644 --- a/civicrm/ext/search_kit/info.xml +++ b/civicrm/ext/search_kit/info.xml @@ -15,13 +15,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-01-06</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>stable</develStage> <tags> <tag>mgmt:required</tag> </tags> <compatibility> - <ver>5.65</ver> + <ver>5.66</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/phpunit.xml.dist b/civicrm/ext/search_kit/phpunit.xml.dist index 9de8491119..7c3a69d0fe 100644 --- a/civicrm/ext/search_kit/phpunit.xml.dist +++ b/civicrm/ext/search_kit/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="SearchKit Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/AbstractRunActionTest.php b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/AbstractRunActionTest.php index f453238050..47456076d6 100644 --- a/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/AbstractRunActionTest.php +++ b/civicrm/ext/search_kit/tests/phpunit/api/v4/SearchDisplay/AbstractRunActionTest.php @@ -7,6 +7,7 @@ use Civi\Api4\CustomField; use Civi\Api4\Contact; use Civi\Test\HeadlessInterface; use Civi\Test\TransactionalInterface; +use Civi\Api4\Mailing; /** * @group headless @@ -205,4 +206,242 @@ class AbstractRunActionTest extends \PHPUnit\Framework\TestCase implements Headl $this->assertTrue(implode(', ', $resultData) === $result[0]['columns'][1]['val']); } + public function testDomainConditional(): void { + Mailing::create()->setValues([ + 'title' => 'Test Mailing' . __FUNCTION__, + 'body_html' => 'Test content', + ])->execute(); + $entity = 'SearchDisplay'; + $action = 'run'; + $params = [ + 'return' => 'page:1', + 'savedSearch' => [ + 'id' => 2, + 'name' => 'Test_Mailing', + 'label' => 'Test Mailing', + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'Mailing', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'name', + 'domain_id:label', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'created_id' => 203, + 'modified_id' => 203, + 'expires_date' => NULL, + 'created_date' => '2022-08-12 13:49:17', + 'modified_date' => '2022-08-12 17:18:24', + 'description' => NULL, + 'tag_id' => [], + 'groups' => [], + 'displays' => [ + [ + 'id' => 2, + 'name' => 'Test_Mailing_Table_1', + 'label' => 'Test Mailing Table 1', + 'saved_search_id' => 2, + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'dataType' => 'Integer', + 'label' => 'Mailing ID', + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'name', + 'dataType' => 'String', + 'label' => 'Mailing Name', + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'domain_id:label', + 'dataType' => 'Integer', + 'label' => 'Domain', + 'sortable' => TRUE, + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'Mailing', + 'action' => 'view', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-external-link', + 'text' => 'View Mailing', + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [ + 'domain_id:label', + '=', + 'current_domain', + ], + ], + [ + 'entity' => 'Mailing', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-pencil', + 'text' => 'Update Mailing', + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'entity' => 'Mailing', + 'action' => 'preview', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-eye', + 'text' => 'Preview Mailing', + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + 'acl_bypass' => FALSE, + ], + ], + ], + 'display' => [ + 'id' => 2, + 'name' => 'Test_Mailing_Table_1', + 'label' => 'Test Mailing Table 1', + 'saved_search_id' => 2, + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'dataType' => 'Integer', + 'label' => 'Mailing ID', + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'name', + 'dataType' => 'String', + 'label' => 'Mailing Name', + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'domain_id:label', + 'dataType' => 'Integer', + 'label' => 'Domain', + 'sortable' => TRUE, + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'Mailing', + 'action' => 'view', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-external-link', + 'text' => 'View Mailing', + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [ + 'domain_id:label', + '=', + 'current_domain', + ], + ], + [ + 'entity' => 'Mailing', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-pencil', + 'text' => 'Update Mailing', + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + [ + 'entity' => 'Mailing', + 'action' => 'preview', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-eye', + 'text' => 'Preview Mailing', + 'style' => 'default', + 'path' => '', + 'task' => '', + 'condition' => [], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + 'acl_bypass' => FALSE, + ], + 'limit' => 50, + 'seed' => 1660599799146, + 'filters' => [], + 'afform' => NULL, + 'debug' => TRUE, + 'checkPermissions' => TRUE, + ]; + $result = civicrm_api4($entity, $action, $params); + $this->assertCount(3, $result[0]['columns'][3]['links']); + } + } 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 c55317d581..82f33532cc 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 @@ -553,7 +553,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('String', $result[0]['columns'][0]['edit']['data_type']); $this->assertEquals('first_name', $result[0]['columns'][0]['edit']['value_key']); $this->assertEquals('update', $result[0]['columns'][0]['edit']['action']); - $this->assertEquals('One', $result[0]['columns'][0]['edit']['value']); + $this->assertEquals('One', $result[0]['data'][$result[0]['columns'][0]['edit']['value_path']]); // Contact 1 email can be updated $this->assertEquals('testmail@unit.test', $result[0]['columns'][1]['val']); @@ -563,7 +563,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('String', $result[0]['columns'][1]['edit']['data_type']); $this->assertEquals('email', $result[0]['columns'][1]['edit']['value_key']); $this->assertEquals('update', $result[0]['columns'][1]['edit']['action']); - $this->assertEquals('testmail@unit.test', $result[0]['columns'][1]['edit']['value']); + $this->assertEquals('testmail@unit.test', $result[0]['data'][$result[0]['columns'][1]['edit']['value_path']]); // Contact 1 - new phone can be created $this->assertNull($result[0]['columns'][2]['val']); @@ -573,7 +573,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('String', $result[0]['columns'][2]['edit']['data_type']); $this->assertEquals('phone', $result[0]['columns'][2]['edit']['value_key']); $this->assertEquals('create', $result[0]['columns'][2]['edit']['action']); - $this->assertNull($result[0]['columns'][2]['edit']['value']); + $this->assertEquals('Contact_Phone_contact_id_01.phone', $result[0]['columns'][2]['edit']['value_path']); // Contact 2 first name can be added $this->assertNull($result[1]['columns'][0]['val']); @@ -583,7 +583,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('String', $result[1]['columns'][0]['edit']['data_type']); $this->assertEquals('first_name', $result[1]['columns'][0]['edit']['value_key']); $this->assertEquals('update', $result[1]['columns'][0]['edit']['action']); - $this->assertNull($result[1]['columns'][0]['edit']['value']); + $this->assertEquals('first_name', $result[1]['columns'][0]['edit']['value_path']); // Contact 2 - new email can be created $this->assertNull($result[1]['columns'][1]['val']); @@ -593,7 +593,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('String', $result[1]['columns'][1]['edit']['data_type']); $this->assertEquals('email', $result[1]['columns'][1]['edit']['value_key']); $this->assertEquals('create', $result[1]['columns'][1]['edit']['action']); - $this->assertNull($result[1]['columns'][1]['edit']['value']); + $this->assertEquals('Contact_Email_contact_id_01.email', $result[1]['columns'][1]['edit']['value_path']); // Contact 2 phone can be updated $this->assertEquals('123456', $result[1]['columns'][2]['val']); @@ -603,7 +603,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('String', $result[1]['columns'][2]['edit']['data_type']); $this->assertEquals('phone', $result[1]['columns'][2]['edit']['value_key']); $this->assertEquals('update', $result[1]['columns'][2]['edit']['action']); - $this->assertEquals('123456', $result[1]['columns'][2]['edit']['value']); + $this->assertEquals('123456', $result[1]['data'][$result[0]['columns'][2]['edit']['value_path']]); } /** @@ -1499,7 +1499,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { 'value_key' => 'first_name', 'record' => ['id' => $contact[0]['id']], 'action' => 'update', - 'value' => 'One', + 'value_path' => 'first_name', ]; // Ensure first_name is editable but not organization_name or household_name $this->assertEquals($expectedFirstNameEdit, $result[0]['columns'][0]['edit']); @@ -1508,7 +1508,6 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { // Second Individual $expectedFirstNameEdit['record']['id'] = $contact[1]['id']; - $expectedFirstNameEdit['value'] = NULL; $this->assertEquals($contact[1]['id'], $result[1]['key']); $this->assertEquals($expectedFirstNameEdit, $result[1]['columns'][0]['edit']); $this->assertTrue(!isset($result[1]['columns'][1]['edit'])); @@ -1517,6 +1516,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { // Third contact: Organization $expectedFirstNameEdit['record']['id'] = $contact[2]['id']; $expectedFirstNameEdit['value_key'] = 'organization_name'; + $expectedFirstNameEdit['value_path'] = 'organization_name'; $this->assertTrue(!isset($result[2]['columns'][0]['edit'])); $this->assertEquals($expectedFirstNameEdit, $result[2]['columns'][1]['edit']); $this->assertTrue(!isset($result[2]['columns'][2]['edit'])); @@ -1524,17 +1524,19 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { // Third contact: Household $expectedFirstNameEdit['record']['id'] = $contact[3]['id']; $expectedFirstNameEdit['value_key'] = 'household_name'; + $expectedFirstNameEdit['value_path'] = 'household_name'; $this->assertTrue(!isset($result[3]['columns'][0]['edit'])); $this->assertTrue(!isset($result[3]['columns'][1]['edit'])); $this->assertEquals($expectedFirstNameEdit, $result[3]['columns'][2]['edit']); } public function testContributionCurrency():void { + $cid = $this->saveTestRecords('Contact', ['records' => 3])->column('id'); $contributions = $this->saveTestRecords('Contribution', [ 'records' => [ - ['total_amount' => 100, 'currency' => 'GBP'], - ['total_amount' => 200, 'currency' => 'USD'], - ['total_amount' => 500, 'currency' => 'JPY'], + ['total_amount' => 100, 'currency' => 'GBP', 'contact_id' => $cid[0]], + ['total_amount' => 200, 'currency' => 'USD', 'contact_id' => $cid[1]], + ['total_amount' => 500, 'currency' => 'JPY', 'contact_id' => $cid[2]], ], ]); @@ -1545,6 +1547,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { 'api_entity' => 'Contribution', 'api_params' => [ 'version' => 4, + // Include `id` column so the `sort` works 'select' => ['total_amount', 'id'], 'where' => [['id', 'IN', $contributions->column('id')]], ], @@ -1588,15 +1591,41 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('JPY', $result[0]['data']['contribution_id.currency']); $this->assertEquals('Â¥500', $result[0]['columns'][0]['val']); + + // Now try it via joins + $params['savedSearch'] = [ + 'api_entity' => 'Contact', + 'api_params' => [ + 'version' => 4, + 'select' => ['line_item.line_total', 'id'], + 'where' => [['contribution.id', 'IN', $contributions->column('id')]], + 'join' => [ + ['Contribution AS contribution', 'INNER', ['id', '=', 'contribution.contact_id']], + ['LineItem AS line_item', 'INNER', ['contribution.id', '=', 'line_item.contribution_id']], + ], + ], + ]; + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(3, $result); + + // The parent join should have been used rather than adding an unnecessary implicit join + $this->assertEquals('GBP', $result[2]['data']['contribution.currency']); + $this->assertEquals('£100.00', $result[2]['columns'][0]['val']); + + $this->assertEquals('USD', $result[1]['data']['contribution.currency']); + $this->assertEquals('$200.00', $result[1]['columns'][0]['val']); + + $this->assertEquals('JPY', $result[0]['data']['contribution.currency']); + $this->assertEquals('Â¥500', $result[0]['columns'][0]['val']); } public function testContributionAggregateCurrency():void { $contributions = $this->saveTestRecords('Contribution', [ 'records' => [ ['total_amount' => 100, 'currency' => 'GBP'], - ['total_amount' => 200, 'currency' => 'USD'], + ['total_amount' => 150, 'currency' => 'USD'], ['total_amount' => 500, 'currency' => 'JPY'], - ['total_amount' => 200, 'currency' => 'USD'], + ['total_amount' => 250, 'currency' => 'USD'], ], ]); @@ -1631,6 +1660,83 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('USD', $result[2]['data']['currency']); $this->assertEquals('$400.00', $result[2]['columns'][0]['val']); $this->assertEquals(2, $result[2]['columns'][1]['val']); + + $params = [ + 'checkPermissions' => FALSE, + 'return' => 'page:1', + 'savedSearch' => [ + 'api_entity' => 'Contribution', + 'api_params' => [ + 'version' => 4, + 'select' => ['SUM(line_item.line_total) AS total', 'id'], + 'where' => [['id', 'IN', $contributions->column('id')]], + 'groupBy' => ['id'], + 'join' => [ + ['LineItem AS line_item', 'INNER', ['id', '=', 'line_item.contribution_id']], + ], + ], + ], + 'display' => NULL, + 'sort' => [['id', 'ASC']], + ]; + + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(4, $result); + + // Currency should have been used to format the aggregated values + $this->assertEquals('GBP', $result[0]['data']['currency']); + $this->assertEquals('£100.00', $result[0]['columns'][0]['val']); + + $this->assertEquals('USD', $result[1]['data']['currency']); + $this->assertEquals('$150.00', $result[1]['columns'][0]['val']); + + $this->assertEquals('JPY', $result[2]['data']['currency']); + $this->assertEquals('Â¥500', $result[2]['columns'][0]['val']); + + $this->assertEquals('USD', $result[3]['data']['currency']); + $this->assertEquals('$250.00', $result[3]['columns'][0]['val']); + } + + public function testContributionTotalCountWithTestAndTemplateContributions():void { + // Add a source here for the where below, as if we use id, we get the test and template contributions + $contributions = $this->saveTestRecords('Contribution', [ + 'records' => [ + ['is_test' => TRUE, 'source' => 'TestTemplate'], + ['is_template' => TRUE, 'source' => 'TestTemplate'], + ['source' => 'TestTemplate'], + ], + ]); + + $params = [ + 'checkPermissions' => FALSE, + 'return' => 'page:1', + 'savedSearch' => [ + 'api_entity' => 'Contribution', + 'api_params' => [ + 'version' => 4, + 'select' => ['id'], + 'where' => [['source', '=', 'TestTemplate']], + ], + ], + 'display' => [ + 'settings' => [ + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'tally' => [ + 'fn' => 'COUNT', + ], + ], + ], + ], + ], + ]; + + $return = civicrm_api4('SearchDisplay', 'run', $params); + $params['return'] = 'tally'; + $total = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertEquals($return->rowCount, $total[0]['id']); } public function testSelectEquations() { 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 5096e3f03c..2cf32ba633 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 @@ -360,9 +360,9 @@ class SearchRunWithCustomFieldTest extends CustomTestBase { 'value_key' => 'meeting_phone.sub_field', 'record' => ['id' => $activity[0]['id']], 'action' => 'update', - 'value' => 'Abc', + 'value_path' => 'meeting_phone.sub_field', ]; - $expectedSubjectEdit = ['value_key' => 'subject', 'value' => $subject] + $expectedCustomFieldEdit; + $expectedSubjectEdit = ['value_key' => 'subject', 'value_path' => 'subject'] + $expectedCustomFieldEdit; // First Activity $this->assertEquals($expectedSubjectEdit, $result[0]['columns'][0]['edit']); @@ -372,7 +372,6 @@ class SearchRunWithCustomFieldTest extends CustomTestBase { // Second Activity $expectedSubjectEdit['record']['id'] = $activity[1]['id']; $expectedCustomFieldEdit['record']['id'] = $activity[1]['id']; - $expectedCustomFieldEdit['value'] = NULL; $this->assertEquals($expectedSubjectEdit, $result[1]['columns'][0]['edit']); $this->assertEquals($expectedCustomFieldEdit, $result[1]['columns'][1]['edit']); $this->assertEquals($activityTypes['Phone Call'], $result[1]['data']['activity_type_id']); diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml index c7773e5167..45722d5a61 100644 --- a/civicrm/ext/sequentialcreditnotes/info.xml +++ b/civicrm/ext/sequentialcreditnotes/info.xml @@ -15,13 +15,13 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2020-01-28</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <mixins> <mixin>setting-php@1.0.0</mixin> diff --git a/civicrm/ext/sequentialcreditnotes/phpunit.xml.dist b/civicrm/ext/sequentialcreditnotes/phpunit.xml.dist index 01bca9b019..5fe8daddfe 100644 --- a/civicrm/ext/sequentialcreditnotes/phpunit.xml.dist +++ b/civicrm/ext/sequentialcreditnotes/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" bootstrap="tests/phpunit/bootstrap.php" cacheResult="false"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php index dc52eb190b..b3a40144e9 100644 --- a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php @@ -20,7 +20,7 @@ class CRM_Standaloneusers_Page_Login extends CRM_Core_Page { /** * Log out. */ - public function logout() { + public static function logout() { Security::singleton()->logoutUser(); // Dump them back on the log-IN page. CRM_Utils_System::redirect('/civicrm/login?justLoggedOut'); diff --git a/civicrm/ext/standaloneusers/Civi/Standalone/Security.php b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php index 411e4eca3d..a6ddaa0792 100644 --- a/civicrm/ext/standaloneusers/Civi/Standalone/Security.php +++ b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php @@ -295,7 +295,7 @@ class Security { * @return array */ public function getCMSPermissionsUrlParams() { - return ['ufAccessURL' => '/fixme/standalone/permissions/url/params']; + return ['ufAccessURL' => '/civicrm/admin/roles']; } /** diff --git a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json index 30cf8bf663..0608fbdfe3 100644 --- a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json +++ b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json @@ -16,8 +16,8 @@ "redirect": null, "create_submission": false, "navigation": { - "parent": "Administer", - "label": "Administer User Accounts", + "parent": "Users and Permissions", + "label": "User Accounts", "weight": 0 } } diff --git a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json index cc62bb4a7e..46224d8692 100644 --- a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json +++ b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json @@ -6,7 +6,7 @@ "server_route": "civicrm/admin/roles", "permission": "cms:administer users", "navigation": { - "parent": "Administer", + "parent": "Users and Permissions", "label": "User Roles", "weight": 0 }, diff --git a/civicrm/ext/standaloneusers/info.xml b/civicrm/ext/standaloneusers/info.xml index 97c33ff794..f27435bdd8 100644 --- a/civicrm/ext/standaloneusers/info.xml +++ b/civicrm/ext/standaloneusers/info.xml @@ -15,10 +15,10 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2022-11-11</releaseDate> - <version>5.65.2</version> + <version>5.66.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.65</ver> + <ver>5.66</ver> </compatibility> <requires> <ext>org.civicrm.search_kit</ext> diff --git a/civicrm/ext/standaloneusers/phpunit.xml.dist b/civicrm/ext/standaloneusers/phpunit.xml.dist index ea391745fa..5fe8daddfe 100644 --- a/civicrm/ext/standaloneusers/phpunit.xml.dist +++ b/civicrm/ext/standaloneusers/phpunit.xml.dist @@ -1,15 +1,27 @@ <?xml version="1.0"?> -<phpunit backupGlobals="false" backupStaticAttributes="false" colors="true" convertErrorsToExceptions="true" convertNoticesToExceptions="true" convertWarningsToExceptions="true" convertDeprecationsToExceptions="true" processIsolation="false" stopOnFailure="false" cacheResult="false" bootstrap="tests/phpunit/bootstrap.php"> +<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd" + backupGlobals="false" + backupStaticAttributes="false" + colors="true" + convertErrorsToExceptions="true" + convertNoticesToExceptions="true" + convertWarningsToExceptions="true" + convertDeprecationsToExceptions="true" + processIsolation="false" + stopOnFailure="false" + bootstrap="tests/phpunit/bootstrap.php" + cacheResult="false"> + <coverage> + <include> + <directory suffix=".php">./</directory> + </include> + </coverage> <testsuites> <testsuite name="My Test Suite"> <directory>./tests/phpunit</directory> </testsuite> </testsuites> - <filter> - <whitelist> - <directory suffix=".php">./</directory> - </whitelist> - </filter> <listeners> <listener class="Civi\Test\CiviTestListener"> <arguments/> diff --git a/civicrm/js/crm.ajax.js b/civicrm/js/crm.ajax.js index 7478709d91..ecd7c73c5e 100644 --- a/civicrm/js/crm.ajax.js +++ b/civicrm/js/crm.ajax.js @@ -304,7 +304,7 @@ }, refresh: function() { var that = this, - hash = this.options.url.split('#')[1]; + hash = this.options.url.split('#')[1], url = this._formatUrl(this.options.url, 'json'); $(this.element).data('urlHash', hash); if (this.options.crmForm) $('form', this.element).ajaxFormUnbind(); diff --git a/civicrm/js/crm.menubar.js b/civicrm/js/crm.menubar.js index 65fe533bf3..d5e98fd532 100644 --- a/civicrm/js/crm.menubar.js +++ b/civicrm/js/crm.menubar.js @@ -288,22 +288,28 @@ var option = $('input[name=quickSearchField]:checked'), params = { - name: request.term, - field_name: option.val() + formName: 'crmMenubar', + fieldName: 'crm-qsearch-input', + filters: {}, }; - CRM.api3('contact', 'getquick', params).done(function(result) { + if (option.val() === 'sort_name') { + params.input = request.term; + } else { + params.filters[option.val()] = request.term; + } + CRM.api4('Contact', 'autocomplete', params).then(function(result) { var ret = []; - if (result.values.length > 0) { + if (result.length > 0) { $('#crm-qsearch-input').autocomplete('widget').menu('option', 'disabled', false); - $.each(result.values, function(k, v) { - ret.push({value: v.id, label: v.data}); + $.each(result, function(key, item) { + ret.push({value: item.id, label: item.label}); }); } else { $('#crm-qsearch-input').autocomplete('widget').menu('option', 'disabled', true); var label = option.closest('label').text(); var msg = ts('%1 not found.', {1: label}); // Remind user they are not searching by contact name (unless they enter a number) - if (params.field_name !== 'sort_name' && !(/[\d].*/.test(params.name))) { + if (option.val() !== 'sort_name' && !(/[\d].*/.test(params.name))) { msg += ' ' + ts('Did you mean to search by Name/Email instead?'); } ret.push({value: '0', label: msg}); diff --git a/civicrm/packages/Smarty/plugins/modifier.escape.php b/civicrm/packages/Smarty/plugins/modifier.escape.php index a2f52b232c..aa7b4b9d02 100644 --- a/civicrm/packages/Smarty/plugins/modifier.escape.php +++ b/civicrm/packages/Smarty/plugins/modifier.escape.php @@ -21,6 +21,11 @@ */ function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1') { + // Early return for null, '', or '0', none of which need to be escaped and null will cause e-notices. + if (empty($string)) { + return (string) $string; + } + switch ($esc_type) { case 'html': return htmlspecialchars($string, ENT_QUOTES, $char_set); diff --git a/civicrm/packages/html2text/rcube_html2text.php b/civicrm/packages/html2text/rcube_html2text.php deleted file mode 100644 index 42c568a9c1..0000000000 --- a/civicrm/packages/html2text/rcube_html2text.php +++ /dev/null @@ -1,708 +0,0 @@ -<?php - -/** - * We have switched to using the roundcube version since it appears to - * be maintained and updated compared to the original version - * - * CRM-12766 - */ - -/** - +-----------------------------------------------------------------------+ - | This file is part of the Roundcube Webmail client | - | Copyright (C) 2008-2012, The Roundcube Dev Team | - | Copyright (c) 2005-2007, Jon Abernathy <jon@chuggnutt.com> | - | | - | Licensed under the GNU General Public License version 3 or | - | any later version with exceptions for skins & plugins. | - | See the README file for a full license statement. | - | | - | PURPOSE: | - | Converts HTML to formatted plain text (based on html2text class) | - +-----------------------------------------------------------------------+ - | Author: Thomas Bruederli <roundcube@gmail.com> | - | Author: Aleksander Machniak <alec@alec.pl> | - | Author: Jon Abernathy <jon@chuggnutt.com> | - +-----------------------------------------------------------------------+ - */ - -/** - * Takes HTML and converts it to formatted, plain text. - * - * Thanks to Alexander Krug (http://www.krugar.de/) to pointing out and - * correcting an error in the regexp search array. Fixed 7/30/03. - * - * Updated set_html() function's file reading mechanism, 9/25/03. - * - * Thanks to Joss Sanglier (http://www.dancingbear.co.uk/) for adding - * several more HTML entity codes to the $search and $replace arrays. - * Updated 11/7/03. - * - * Thanks to Darius Kasperavicius (http://www.dar.dar.lt/) for - * suggesting the addition of $allowed_tags and its supporting function - * (which I slightly modified). Updated 3/12/04. - * - * Thanks to Justin Dearing for pointing out that a replacement for the - * <TH> tag was missing, and suggesting an appropriate fix. - * Updated 8/25/04. - * - * Thanks to Mathieu Collas (http://www.myefarm.com/) for finding a - * display/formatting bug in the _build_link_list() function: email - * readers would show the left bracket and number ("[1") as part of the - * rendered email address. - * Updated 12/16/04. - * - * Thanks to Wojciech Bajon (http://histeria.pl/) for submitting code - * to handle relative links, which I hadn't considered. I modified his - * code a bit to handle normal HTTP links and MAILTO links. Also for - * suggesting three additional HTML entity codes to search for. - * Updated 03/02/05. - * - * Thanks to Jacob Chandler for pointing out another link condition - * for the _build_link_list() function: "https". - * Updated 04/06/05. - * - * Thanks to Marc Bertrand (http://www.dresdensky.com/) for - * suggesting a revision to the word wrapping functionality; if you - * specify a $width of 0 or less, word wrapping will be ignored. - * Updated 11/02/06. - * - * *** Big housecleaning updates below: - * - * Thanks to Colin Brown (http://www.sparkdriver.co.uk/) for - * suggesting the fix to handle </li> and blank lines (whitespace). - * Christian Basedau (http://www.movetheweb.de/) also suggested the - * blank lines fix. - * - * Special thanks to Marcus Bointon (http://www.synchromedia.co.uk/), - * Christian Basedau, Norbert Laposa (http://ln5.co.uk/), - * Bas van de Weijer, and Marijn van Butselaar - * for pointing out my glaring error in the <th> handling. Marcus also - * supplied a host of fixes. - * - * Thanks to Jeffrey Silverman (http://www.newtnotes.com/) for pointing - * out that extra spaces should be compressed--a problem addressed with - * Marcus Bointon's fixes but that I had not yet incorporated. - * - * Thanks to Daniel Schledermann (http://www.typoconsult.dk/) for - * suggesting a valuable fix with <a> tag handling. - * - * Thanks to Wojciech Bajon (again!) for suggesting fixes and additions, - * including the <a> tag handling that Daniel Schledermann pointed - * out but that I had not yet incorporated. I haven't (yet) - * incorporated all of Wojciech's changes, though I may at some - * future time. - * - * *** End of the housecleaning updates. Updated 08/08/07. - */ - -/** - * Converts HTML to formatted plain text - * - * @package Framework - * @subpackage Utils - */ -class rcube_html2text -{ - /** - * Contains the HTML content to convert. - * - * @var string $html - */ - protected $html; - - /** - * Contains the converted, formatted text. - * - * @var string $text - */ - protected $text; - - /** - * 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. - * - * @var integer $width - */ - protected $width = 70; - - /** - * Target character encoding for output text - * - * @var string $charset - */ - protected $charset = 'UTF-8'; - - /** - * 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[^>]*>.*?<\/head>/i', // <head> - '/<script[^>]*>.*?<\/script>/i', // <script>s -- which strip_tags supposedly has problems with - '/<style[^>]*>.*?<\/style>/i', // <style>s -- which strip_tags supposedly has problems with - '/<p[^>]*>/i', // <P> - '/<br[^>]*>/i', // <br> - '/<i[^>]*>(.*?)<\/i>/i', // <i> - '/<em[^>]*>(.*?)<\/em>/i', // <em> - '/(<ul[^>]*>|<\/ul>)/i', // <ul> and </ul> - '/(<ol[^>]*>|<\/ol>)/i', // <ol> and </ol> - '/<li[^>]*>(.*?)<\/li>/i', // <li> and </li> - '/<li[^>]*>/i', // <li> - '/<hr[^>]*>/i', // <hr> - '/<div[^>]*>/i', // <div> - '/(<table[^>]*>|<\/table>)/i', // <table> and </table> - '/(<tr[^>]*>|<\/tr>)/i', // <tr> and </tr> - '/<td[^>]*>(.*?)<\/td>/i', // <td> and </td> - ); - - /** - * 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 - "\n\n", // <P> - "\n", // <br> - '_\\1_', // <i> - '_\\1_', // <em> - "\n\n", // <ul> and </ul> - "\n\n", // <ol> and </ol> - "\t* \\1\n", // <li> and </li> - "\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> - ); - - /** - * List of preg* regular expression patterns to search for, - * used in conjunction with $ent_replace. - * - * @var array $ent_search - * @see $ent_replace - */ - protected $ent_search = array( - '/&(nbsp|#160);/i', // Non-breaking space - '/&(quot|rdquo|ldquo|#8220|#8221|#147|#148);/i', - // Double quotes - '/&(apos|rsquo|lsquo|#8216|#8217);/i', // Single quotes - '/>/i', // Greater-than - '/</i', // Less-than - '/&(copy|#169);/i', // Copyright - '/&(trade|#8482|#153);/i', // Trademark - '/&(reg|#174);/i', // Registered - '/&(mdash|#151|#8212);/i', // mdash - '/&(ndash|minus|#8211|#8722);/i', // ndash - '/&(bull|#149|#8226);/i', // Bullet - '/&(pound|#163);/i', // Pound sign - '/&(euro|#8364);/i', // Euro sign - '/&(amp|#38);/i', // Ampersand: see _converter() - '/[ ]{2,}/', // Runs of spaces, post-handling - ); - - /** - * List of pattern replacements corresponding to patterns searched. - * - * @var array $ent_replace - * @see $ent_search - */ - protected $ent_replace = array( - ' ', // Non-breaking space - '"', // Double quotes - "'", // Single quotes - '>', - '<', - '(c)', - '(tm)', - '(R)', - '--', - '-', - '*', - '£', - 'EUR', // Euro sign. € ? - '|+|amp|+|', // Ampersand: see _converter() - ' ', // Runs of spaces, post-handling - ); - - /** - * List of preg* regular expression patterns to search for - * and replace using callback function. - * - * @var array $callback_search - */ - protected $callback_search = array( - '/<(a) [^>]*href=("|\')([^"\']+)\2[^>]*>(.*?)<\/a>/i', // <a href=""> - '/<(h)[123456]( [^>]*)?>(.*?)<\/h[123456]>/i', // h1 - h6 - '/<(b)( [^>]*)?>(.*?)<\/b>/i', // <b> - '/<(strong)( [^>]*)?>(.*?)<\/strong>/i', // <strong> - '/<(th)( [^>]*)?>(.*?)<\/th>/i', // <th> and </th> - ); - - /** - * List of preg* regular expression patterns to search for in PRE body, - * used in conjunction with $pre_replace. - * - * @var array $pre_search - * @see $pre_replace - */ - protected $pre_search = array( - "/\n/", - "/\t/", - '/ /', - '/<pre[^>]*>/', - '/<\/pre>/' - ); - - /** - * List of pattern replacements corresponding to patterns searched for PRE body. - * - * @var array $pre_replace - * @see $pre_search - */ - protected $pre_replace = array( - '<br>', - ' ', - ' ', - '', - '' - ); - - /** - * Contains a list of HTML tags to allow in the resulting text. - * - * @var string $allowed_tags - * @see set_allowed_tags() - */ - protected $allowed_tags = ''; - - /** - * Contains the base URL that relative links should resolve to. - * - * @var string $url - */ - protected $url; - - /** - * 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 $_link_list - * @see _build_link_list() - */ - protected $_link_list = array(); - - /** - * Boolean flag, true if a table of link URLs should be listed after the text. - * - * @var boolean $_do_links - * @see __construct() - */ - protected $_do_links = true; - - /** - * Constructor. - * - * If the HTML source string (or file) is supplied, the class - * will instantiate with that source propagated, all that has - * to be done it to call get_text(). - * - * @param string $source HTML content - * @param boolean $from_file Indicates $source is a file to pull content from - * @param boolean $do_links Indicate whether a table of link URLs is desired - * @param integer $width Maximum width of the formatted text, 0 for no limit - */ - function __construct($source = '', $from_file = false, $do_links = true, $width = 75, $charset = 'UTF-8') - { - if (!empty($source)) { - $this->set_html($source, $from_file); - } - - $this->set_base_url(); - - $this->_do_links = $do_links; - $this->width = $width; - $this->charset = $charset; - } - - /** - * Loads source HTML into memory, either from $source string or a file. - * - * @param string $source HTML content - * @param boolean $from_file Indicates $source is a file to pull content from - */ - function set_html($source, $from_file = false) - { - if ($from_file && file_exists($source)) { - $this->html = file_get_contents($source); - } - else { - $this->html = $source; - } - - $this->_converted = false; - } - - /** - * Returns the text, converted from HTML. - * - * @return string Plain text - */ - function get_text() - { - if (!$this->_converted) { - $this->_convert(); - } - - return $this->text; - } - - /** - * Prints the text, converted from HTML. - */ - function print_text() - { - print $this->get_text(); - } - - /** - * Sets the allowed HTML tags to pass through to the resulting text. - * - * Tags should be in the form "<p>", with no corresponding closing tag. - */ - function set_allowed_tags($allowed_tags = '') - { - if (!empty($allowed_tags)) { - $this->allowed_tags = $allowed_tags; - } - } - - /** - * Sets a base URL to handle relative links. - */ - function set_base_url($url = '') - { - if (empty($url)) { - if (!empty($_SERVER['HTTP_HOST'])) { - $this->url = 'http://' . $_SERVER['HTTP_HOST']; - } - else { - $this->url = ''; - } - } - else { - // Strip any trailing slashes for consistency (relative - // URLs may already start with a slash like "/file.html") - if (substr($url, -1) == '/') { - $url = substr($url, 0, -1); - } - $this->url = $url; - } - } - - /** - * Workhorse function that does actual conversion (calls _converter() method). - */ - protected function _convert() - { - // Variables used for building the link list - $this->_link_list = array(); - - $text = trim(stripslashes($this->html)); - - // Convert HTML to TXT - $this->_converter($text); - - // Add link list - if (!empty($this->_link_list)) { - $text .= "\n\nLinks:\n------\n"; - foreach ($this->_link_list as $idx => $url) { - $text .= '[' . ($idx+1) . '] ' . $url . "\n"; - } - } - - $this->text = $text; - $this->_converted = true; - } - - /** - * Workhorse function that does actual conversion. - * - * First performs custom tag replacement specified by $search and - * $replace arrays. Then strips any remaining HTML tags, reduces whitespace - * and newlines to a readable format, and word wraps the text to - * $width characters. - * - * @param string Reference to HTML content string - */ - protected function _converter(&$text) - { - // Convert <BLOCKQUOTE> (before PRE!) - $this->_convert_blockquotes($text); - - // Convert <PRE> - $this->_convert_pre($text); - - // Run our defined tags search-and-replace - $text = preg_replace($this->search, $this->replace, $text); - - // Run our defined tags search-and-replace with callback - $text = preg_replace_callback($this->callback_search, array($this, 'tags_preg_callback'), $text); - - // Strip any other HTML tags - $text = strip_tags($text, $this->allowed_tags); - - // Run our defined entities/characters search-and-replace - $text = preg_replace($this->ent_search, $this->ent_replace, $text); - - // Replace known html entities - $text = html_entity_decode($text, ENT_QUOTES, $this->charset); - - // 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); - - // Bring down number of empty lines to 2 max - $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"); - - // Wrap the text to a readable format - // for PHP versions >= 4.0.2. Default width is 75 - // If width is 0 or less, don't wrap the text. - if ( $this->width > 0 ) { - $text = wordwrap($text, $this->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 - */ - protected function _build_link_list( $link, $display ) - { - if (!$this->_do_links || empty($link)) { - return $display; - } - - // Ignored link types - if (preg_match('!^(javascript:|mailto:|#)!i', $link)) { - return $display; - } - - if (preg_match('!^([a-z][a-z0-9.+-]+:)!i', $link)) { - $url = $link; - } - else { - $url = $this->url; - if (substr($link, 0, 1) != '/') { - $url .= '/'; - } - $url .= "$link"; - } - - if (($index = array_search($url, $this->_link_list)) === false) { - $index = count($this->_link_list); - $this->_link_list[] = $url; - } - - return $display . ' [' . ($index+1) . ']'; - } - - /** - * Helper function for PRE body conversion. - * - * @param string HTML content - */ - protected function _convert_pre(&$text) - { - // get the content of PRE element - while (preg_match('/<pre[^>]*>(.*)<\/pre>/ismU', $text, $matches)) { - $this->pre_content = $matches[1]; - - // Run our defined tags search-and-replace with callback - $this->pre_content = preg_replace_callback($this->callback_search, - array($this, 'tags_preg_callback'), $this->pre_content); - - // convert the content - $this->pre_content = sprintf('<div><br>%s<br></div>', - preg_replace($this->pre_search, $this->pre_replace, $this->pre_content)); - - // replace the content (use callback because content can contain $0 variable) - $text = preg_replace_callback('/<pre[^>]*>.*<\/pre>/ismU', - array($this, 'pre_preg_callback'), $text, 1); - - // free memory - $this->pre_content = ''; - } - } - - /** - * Helper function for BLOCKQUOTE body conversion. - * - * @param string HTML content - */ - protected function _convert_blockquotes(&$text) - { - $level = 0; - $offset = 0; - while (($start = strpos($text, '<blockquote', $offset)) !== false) { - $offset = $start + 12; - do { - $end = strpos($text, '</blockquote>', $offset); - $next = strpos($text, '<blockquote', $offset); - - // nested <blockquote>, skip - if ($next !== false && $next < $end) { - $offset = $next + 12; - $level++; - } - // nested </blockquote> tag - if ($end !== false && $level > 0) { - $offset = $end + 12; - $level--; - } - // found matching end tag - else if ($end !== false && $level == 0) { - $taglen = strpos($text, '>', $start) - $start; - $startpos = $start + $taglen + 1; - - // get blockquote content - $body = trim(substr($text, $startpos, $end - $startpos)); - - // adjust text wrapping width - $p_width = $this->width; - if ($this->width > 0) $this->width -= 2; - - // replace content with inner blockquotes - $this->_converter($body); - - // resore text width - $this->width = $p_width; - - // Add citation markers and create <pre> block - $body = preg_replace_callback('/((?:^|\n)>*)([^\n]*)/', array($this, 'blockquote_citation_ballback'), trim($body)); - $body = '<pre>' . htmlspecialchars($body) . '</pre>'; - - $text = substr($text, 0, $start) . $body . "\n" . substr($text, $end + 13); - $offset = 0; - break; - } - } while ($end || $next); - } - } - - /** - * Callback function to correctly add citation markers for blockquote contents - */ - public function blockquote_citation_ballback($m) - { - $line = ltrim($m[2]); - $space = $line[0] == '>' ? '' : ' '; - return $m[1] . '>' . $space . $line; - } - - /** - * Callback function for preg_replace_callback use. - * - * @param array PREG matches - * @return string - */ - public function tags_preg_callback($matches) - { - switch (strtolower($matches[1])) { - case 'b': - case 'strong': - return $this->_toupper($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': - // Remove spaces in URL (#1487805) - $url = str_replace(' ', '', $matches[3]); - return $this->_build_link_list($url, $matches[4]); - } - } - - /** - * Callback function for preg_replace_callback use in PRE content handler. - * - * @param array PREG matches - * @return string - */ - public function pre_preg_callback($matches) - { - return $this->pre_content; - } - - /** - * Strtoupper function with HTML tags and entities handling. - * - * @param string $str Text to convert - * @return string Converted text - */ - private function _toupper($str) - { - // string can containg HTML tags - $chunks = preg_split('/(<[^>]*>)/', $str, null, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE); - - // convert toupper only the text between HTML tags - foreach ($chunks as $idx => $chunk) { - if ($chunk[0] != '<') { - $chunks[$idx] = $this->_strtoupper($chunk); - } - } - - return implode($chunks); - } - - /** - * Strtoupper multibyte wrapper function with HTML entities handling. - * - * @param string $str Text to convert - * @return string Converted text - */ - private function _strtoupper($str) - { - $str = html_entity_decode($str, ENT_COMPAT, $this->charset); - $str = mb_strtoupper($str); - $str = htmlspecialchars($str, ENT_COMPAT, $this->charset); - - return $str; - } -} diff --git a/civicrm/packages/kcfinder/conf/config.php b/civicrm/packages/kcfinder/conf/config.php index bb461e3114..c49f5ff541 100644 --- a/civicrm/packages/kcfinder/conf/config.php +++ b/civicrm/packages/kcfinder/conf/config.php @@ -101,7 +101,7 @@ $_CONFIG = array( 'mime_magic' => "", - 'cookieDomain' => "", + 'cookieDomain' => preg_replace(';:\d+$;', '', $_SERVER['HTTP_HOST']), 'cookiePath' => "", 'cookiePrefix' => 'KCFINDER_', diff --git a/civicrm/packages/kcfinder/lib/class_fastImage.php b/civicrm/packages/kcfinder/lib/class_fastImage.php index bd4d5c24e2..3f821028b2 100644 --- a/civicrm/packages/kcfinder/lib/class_fastImage.php +++ b/civicrm/packages/kcfinder/lib/class_fastImage.php @@ -202,6 +202,7 @@ class fastImage private function getChars($n) { $response = null; + $this->str = $this->str ?: ''; /* buffer should be a string */ // do we need more data? if ($this->strpos + $n -1 >= strlen($this->str)) diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index 2f17029cab..a4ba38a48d 100644 --- a/civicrm/release-notes.md +++ b/civicrm/release-notes.md @@ -15,23 +15,16 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress -## CiviCRM 5.65.2 +## CiviCRM 5.66.0 -Released September 19, 2023 +Released October 4, 2023 -- **[Synopsis](release-notes/5.65.2.md#synopsis)** -- **[Bugs resolved](release-notes/5.65.2.md#bugs)** -- **[Credits](release-notes/5.65.2.md#credits)** -- **[Feedback](release-notes/5.65.2.md#feedback)** - -## CiviCRM 5.65.1 - -Released September 8, 2023 - -- **[Synopsis](release-notes/5.65.1.md#synopsis)** -- **[Bugs resolved](release-notes/5.65.1.md#bugs)** -- **[Credits](release-notes/5.65.1.md#credits)** -- **[Feedback](release-notes/5.65.1.md#feedback)** +- **[Synopsis](release-notes/5.66.0.md#synopsis)** +- **[Features](release-notes/5.66.0.md#features)** +- **[Bugs resolved](release-notes/5.66.0.md#bugs)** +- **[Miscellany](release-notes/5.66.0.md#misc)** +- **[Credits](release-notes/5.66.0.md#credits)** +- **[Feedback](release-notes/5.66.0.md#feedback)** ## CiviCRM 5.65.0 diff --git a/civicrm/release-notes/5.65.1.md b/civicrm/release-notes/5.65.1.md deleted file mode 100644 index 2dcf34ef98..0000000000 --- a/civicrm/release-notes/5.65.1.md +++ /dev/null @@ -1,42 +0,0 @@ -# CiviCRM 5.65.1 - -Released September 8, 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?** | **yes** | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_CiviEvent_: Token `{event.fee_label}` is blank ([#27372](https://github.com/civicrm/civicrm-core/pull/27372))** -* **_Upgrader_: Failure involving `MappingBase::getLabel() must be of the type string' ([#27354](https://github.com/civicrm/civicrm-core/pull/27354))** -* **_Upgrader_: Failure involving `CRM_*_DAO_* not found in CRM_Core_PseudoConstant::get()` ([#27358](https://github.com/civicrm/civicrm-core/pull/27358))** -* **_Upgrader_: Failure involving combination of multilingual and data-logging ([#27364](https://github.com/civicrm/civicrm-core/pull/27364))** -* **_Testing_: Test-suite compatibility ([drupal#671](https://github.com/civicrm/civicrm-drupal/pull/671))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wildsight - Lars Sander-Green; Wikimedia Foundation - Eileen McNaughton; Squiffle -Consulting - Aidan Saunders; JMA Consulting - Seamus Lee; Fuzion - Peter Davis; Dave D; -CiviCRM - Coleman Watts, Tim Otten; catorghans - -## <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.65.2.md b/civicrm/release-notes/5.65.2.md deleted file mode 100644 index b6bd68520c..0000000000 --- a/civicrm/release-notes/5.65.2.md +++ /dev/null @@ -1,42 +0,0 @@ -# CiviCRM 5.65.2 - -Released September 19, 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?** | **yes (rare)** | -| **Fix problems installing or upgrading to a previous version?** | **yes** | -| Introduce features? | no | -| **Fix bugs?** | **yes** | -| Fix security vulnerabilities? | no | - -## <a name="bugs"></a>Bugs resolved - -* **_Custom Data_: Restricted visibility of `$groupTree` may cause some customizations to fail ([#27492](https://github.com/civicrm/civicrm-core/pull/27492))** -* **_Status Check_: Display warning(s) if a previous upgrade left inconsistencies in the configuration of "Components" ([#27453](https://github.com/civicrm/civicrm-core/pull/27453), [#27475](https://github.com/civicrm/civicrm-core/pull/27475))** -* **_Upgrader_: Upgrades may fail if customizations depend on migrated component APIs ([dev/core#4521](https://lab.civicrm.org/dev/core/-/issues/4521): [#27481](https://github.com/civicrm/civicrm-core/pull/27481))** -* **_Upgrader_: Upgrades may fail due to interaction between migrated component APIs, breadcrumbs, and views/entities ([dev/core#4605](https://lab.civicrm.org/dev/core/-/issues/4605): [#27518](https://github.com/civicrm/civicrm-core/pull/27518))** - -## <a name="credits"></a>Credits - -This release was developed by the following authors and reviewers: - -Wildsight - Lars Sander-Green; Wikimedia Foundation - Eileen McNaughton; Megaphone -Technology Consulting - Jon Goldberg; Dave D; Coop SymbioTIC - Mathieu Lutfy; CiviCRM - -Coleman Watts, Tim Otten; Circle Interactive - Pradeep Nayak; BrightMinded Ltd - Bradley -Taylor; aiden_g; 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.66.0.md b/civicrm/release-notes/5.66.0.md new file mode 100644 index 0000000000..4ff6cfb135 --- /dev/null +++ b/civicrm/release-notes/5.66.0.md @@ -0,0 +1,1001 @@ +# CiviCRM 5.66.0 + +Released October 4, 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? | no | +| **Fix problems installing or upgrading to a previous version?** | **yes** | +| **Introduce features?** | **yes** | +| **Fix bugs?** | **yes** | + +## <a name="features"></a>Features + +### Core CiviCRM + +- **Add "phpstorm" extension ([27168](https://github.com/civicrm/civicrm-core/pull/27168), + [27175](https://github.com/civicrm/civicrm-core/pull/27175), + [27178](https://github.com/civicrm/civicrm-core/pull/27178), + [27179](https://github.com/civicrm/civicrm-core/pull/27179), + [27239](https://github.com/civicrm/civicrm-core/pull/27239), and [27262](https://github.com/civicrm/civicrm-core/pull/27262))** + + Adds a "phpstorm" extension which implements a process for integrating some + dynamic data into PhpStorm. + +- **Improve FormBuilder handling of non logged in flows + (Work Towards [dev/core#4232](https://lab.civicrm.org/dev/core/-/issues/4232): + [27041](https://github.com/civicrm/civicrm-core/pull/27041))** + + Improves FormBuilder schema to better handle form flows for anonymous users. + +- **New core extension for scheduled reminders using criteria from + search-kit + ([dev/core#2644](https://lab.civicrm.org/dev/core/-/issues/2644): + [27081](https://github.com/civicrm/civicrm-core/pull/27081))** + + Adds the Scheduled Communications extension which makes it so one can set up + scheduled reminders using criteria from search-kit. + +- **User experience improvement, hide by default the Latitude and Longitude + fields, users can enable display if needed + ([dev/core#2640](https://lab.civicrm.org/dev/core/-/issues/2640): + [27100](https://github.com/civicrm/civicrm-core/pull/27100))** + + Hides the Latitude and Longitude fields by default. + +- **Pass html text through a formatter when translating it to tokens + ([27204](https://github.com/civicrm/civicrm-core/pull/27204) and + [27203](https://github.com/civicrm/civicrm-core/pull/27203))** + + Converts new lines to page breaks when rendering text tokens to html. + +- **Add custom data when creating smart group + ([23312](https://github.com/civicrm/civicrm-core/pull/23312))** + + Adds group custom fields when creating a new smart group from search action + Group -> Create Smart Group. + +- **Add sort for country/state fields in reports + ([dev/core#4532](https://lab.civicrm.org/dev/core/-/issues/4532): + [27135](https://github.com/civicrm/civicrm-core/pull/27135))** + + Adds sort for country/state fields in reports. + +- **Add system check for missing component extensions + ([27453](https://github.com/civicrm/civicrm-core/pull/27453))** + + Expands the system check for required extensions to also cover component + extensions. + +- **Bump search_autocomplete_count default from 10 to 15 + ([27116](https://github.com/civicrm/civicrm-core/pull/27116))** + + Improves the overall responsiveness of Autocompletes by fetching more results + at a time. + +- **Schema - Improve pseudoconstant metadata for `prefetch` and `controlField` + ([27054](https://github.com/civicrm/civicrm-core/pull/27054))** + + Improves schema metadata with an eye toward optimizing APIv4 pseudoconstant + lookups. + +- **Afform - Support multiple permissions in the GUI + ([27272](https://github.com/civicrm/civicrm-core/pull/27272))** + + Allows multiple permissions to be set for an Afform. + +- **Afform - Allow submissions to be disabled and limited + ([27211](https://github.com/civicrm/civicrm-core/pull/27211))** + + Adds FormBuilder settings to disable submissions or limit the number of + submissions. + +- **SearchKit - Improve handling of money currency + ([27202](https://github.com/civicrm/civicrm-core/pull/27202))** + + Improves SearchKit support for different types of monetary entities (e.g. the + Expenses extension). + +- **SearchKit - Expose sql functions provided by extensions + ([27197](https://github.com/civicrm/civicrm-core/pull/27197))** + + Allows extensions to contribute SqlFunctions to SearchKit. + +- **SearchKit - In-place edit without refreshing results + ([27105](https://github.com/civicrm/civicrm-core/pull/27105))** + + Speeds up the process of in-place-editing on a SearchKit display. + +- **Afform - Add Note as an afformEntity + ([27110](https://github.com/civicrm/civicrm-core/pull/27110))** + + Adds the Note entity to Form Builder. + +- **APIv4 Explorer - Keep list of suffixes in-sync + ([27109](https://github.com/civicrm/civicrm-core/pull/27109))** + + Keeps the list of available pseudoconstant suffixes in APIv4 Explorer + consistent with the master list. + +- **API - Switched to cached function for looking up pemissioned groups + ([27140](https://github.com/civicrm/civicrm-core/pull/27140))** + + Performance improvement for looking up acl groups. + +- **Afform - Enhance returned values from AfformSubmission.afform_name options + ([27108](https://github.com/civicrm/civicrm-core/pull/27108))** + + Improves the psueudoconstant options list returned from + AfformSubmission.afform_name so that more attributes of the afform can be + accessed. + +- **Allow for configuration of activity contacts, type and campaign for + email-to-activity + ([26905](https://github.com/civicrm/civicrm-core/pull/26905))** + + Adds more options when setting up email-to-activity. + +- **APIv4 - Proper ACLs for relationship entity + ([27183](https://github.com/civicrm/civicrm-core/pull/27183))** + + Improves v4 Relationship API to use fine-grained ACLs instead of + coarse-grained permission check which was too restrictive. + +- **APIv4 - Add missing input type options + ([27236](https://github.com/civicrm/civicrm-core/pull/27236))** + + Makes APIv4 aware of a couple more input types (both core and custom fields + can have these types). + +- **Add API-based EntityLookupTrait + ([27257](https://github.com/civicrm/civicrm-core/pull/27257))** + + Adds a helper class to make it easy to lookup entity values. + +- **Distmaker: add CiviCRM Standalone support + ([27104](https://github.com/civicrm/civicrm-core/pull/27104))** + + Adds support for building CiviCRM Standalone tar.gz archives for + nightly/rc/stable releases. + +- **Standalone: add error handler + ([26965](https://github.com/civicrm/civicrm-core/pull/26965))** + + Adds error handling for standalone implementations. + +- **Update a couple more tpl variables to tokens + ([27372](https://github.com/civicrm/civicrm-core/pull/27372), + [27004](https://github.com/civicrm/civicrm-core/pull/27004) and + [27017](https://github.com/civicrm/civicrm-core/pull/27017))** + + Updates a couple smarty template variables to use tokens instead. + +- **SearchKit - Use Contact.sort_name instead of display_name for searches and + Autocompletes ([27112](https://github.com/civicrm/civicrm-core/pull/27112))** + + Improves searchkit user experience by using contact sort name instead of + display name for searches and autocompletes. + +### CiviCase + +- **Be able to remove clients from a case from the manage case view + ([27200](https://github.com/civicrm/civicrm-core/pull/27200))** + + Makes it so users can remove clients from a case from the manage case view. + +### CiviContribute + +- **Add `Discount` to APIv4 + ([27122](https://github.com/civicrm/civicrm-core/pull/27122))** + + Adds APIv4 Discount entity. + +### CiviEvent + +- **Afform - Enable creating event from a template + ([27058](https://github.com/civicrm/civicrm-core/pull/27058))** + + Enables selecting an event template when using Afform to create a new event. + +### CiviMail + +- **Update SMS cannot send message to specify that a mobile phone number is + required ([27194](https://github.com/civicrm/civicrm-core/pull/27194))** + + Improves the error message when SMS cannot be sent to phone number because it + is not a mobile phone. + +### CiviMember + +- **Membership Detail improvements (Work towards + [dev/core#4522](https://lab.civicrm.org/dev/core/-/issues/4522): + [27118](https://github.com/civicrm/civicrm-core/pull/27118) and + [27249](https://github.com/civicrm/civicrm-core/pull/27249))** + + Improves the Membership detail report by adding: Membership Status, + Auto-Renew, Auto-Renew Subscription Status, Start Date and End Date to the + sorting tab. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **Admin UI: Attempting to delete custom field group with custom fields opens + the listing page in modal window + ([dev/core#4094](https://lab.civicrm.org/dev/core/-/issues/4094): + [27056](https://github.com/civicrm/civicrm-core/pull/27056))** + + Use statusBounce instead of redirect when a custom group cannot be deleted. + +- **Standalone: language change does not stick (Work towards + [dev/core#4425](https://lab.civicrm.org/dev/core/-/issues/4425): + [27040](https://github.com/civicrm/civicrm-core/pull/27040), [27639](https://github.com/civicrm/civicrm-core/pull/27639))** + + Ensures currentPath for Standalone implementations does not return empty so + that language-switcher extension can work. + +- **Import caching issue (Work towards + [dev/core#4467](https://lab.civicrm.org/dev/core/-/issues/4467): + [27076](https://github.com/civicrm/civicrm-core/pull/27076))** + + Ensure saving and updating an import field mapping saves correctly. + +- **Redis performance issue on delete contact + ([dev/core#4501](https://lab.civicrm.org/dev/core/-/issues/4501): + [27115](https://github.com/civicrm/civicrm-core/pull/27115))** + +- **Search Kit - Links conditional doesn't work with domain_id or domain = + current domain + ([dev/core#4509](https://lab.civicrm.org/dev/core/-/issues/4509): + [27093](https://github.com/civicrm/civicrm-core/pull/27093))** + +- **ACLs' priority sometimes does the opposite of what it says it does + ([dev/core#4542](https://lab.civicrm.org/dev/core/-/issues/4542): + [27381](https://github.com/civicrm/civicrm-core/pull/27381))** + +- **ACLs - Fix recent regression handling "edit all contacts" ([27409](https://github.com/civicrm/civicrm-core/pull/27409))** + +- **Autocomplete - Fix search-by-id for entities without a numeric id ([27629](https://github.com/civicrm/civicrm-core/pull/27629))** + +- **When using a Contribution Page with a Membership Price Set, the contribution + amount information never shows on the thank you page + ([dev/core#4555](https://lab.civicrm.org/dev/core/-/issues/4555): + [27330](https://github.com/civicrm/civicrm-core/pull/27330))** + +- **SearchKit: Totals include test, template and deleted entities, while rows do + not, leading to mismatch + ([dev/core#4559](https://lab.civicrm.org/dev/core/-/issues/4559): + [27383](https://github.com/civicrm/civicrm-core/pull/27383))** + +- **Auto-complete option values aren't available to anonymous users + ([dev/core#3049](https://lab.civicrm.org/dev/core/-/issues/3049): + [26841](https://github.com/civicrm/civicrm-core/pull/26841))** + +- **Add weights on profile fields page to fix notices + ([27452](https://github.com/civicrm/civicrm-core/pull/27452))** + +- **Upgrader - Skip snapshots on some MariaDB env's (roughly: 10.6.0-10.6.5) + ([27404](https://github.com/civicrm/civicrm-core/pull/27404), [27464](https://github.com/civicrm/civicrm-core/pull/27464))** + +- **APIv4: Implicit joins for email_primary, etc cause error + ([dev/core#4562](https://lab.civicrm.org/dev/core/-/issues/4562): + [27399](https://github.com/civicrm/civicrm-core/pull/27399))** + +- **APIv4 - Fix setting nullable/required/default_value field metadata + ([27302](https://github.com/civicrm/civicrm-core/pull/27302))** + +- **Let unset weights give an e-notice + ([26243](https://github.com/civicrm/civicrm-core/pull/26243))** + +- **Add weight to a few more links + ([27216](https://github.com/civicrm/civicrm-core/pull/27216), + [27323](https://github.com/civicrm/civicrm-core/pull/27323), + [27229](https://github.com/civicrm/civicrm-core/pull/27229), + [27283](https://github.com/civicrm/civicrm-core/pull/27283), + [27284](https://github.com/civicrm/civicrm-core/pull/27284) and + [27230](https://github.com/civicrm/civicrm-core/pull/27230))** + +- **Standalone: Fix ACL help/links, tweak Users and Permissions menu + ([27119](https://github.com/civicrm/civicrm-core/pull/27119))** + +- **Improve error handling by using civicrm_api3 not civicrm_api + ([27321](https://github.com/civicrm/civicrm-core/pull/27321))** + +- **Switch to using token for trxn_id, online contribution receipt + ([27295](https://github.com/civicrm/civicrm-core/pull/27295))** + +- **Delete probably-unused TrackingFields.tpl and adds a pre-upgrade message to + warn people ([27233](https://github.com/civicrm/civicrm-core/pull/27233) and + [27276](https://github.com/civicrm/civicrm-core/pull/27276))** + +- **Re-enable any queues that were disabled for background processing, on end + ([27023](https://github.com/civicrm/civicrm-core/pull/27023))** + +- **Update one of our complex confirm tests to use full form flow, fix + discovered failure to send to additional participants + ([27277](https://github.com/civicrm/civicrm-core/pull/27277))** + +- **Replace deprecated RegExp PHPUnit functions for v9 + ([27139](https://github.com/civicrm/civicrm-core/pull/27139))** + +- **Switch menubar search to use APIv4 & delete deprecated v3 'getquick' action + ([26676](https://github.com/civicrm/civicrm-core/pull/26676) and + [27263](https://github.com/civicrm/civicrm-core/pull/27263))** + +- **EntityLookupTrait - Skip queries when looking up id + ([27261](https://github.com/civicrm/civicrm-core/pull/27261))** + +- **PHP8 date range not rendered correctly + ([27228](https://github.com/civicrm/civicrm-core/pull/27228))** + +- **standaloneusers: logout function must be static + ([27265](https://github.com/civicrm/civicrm-core/pull/27265))**s + +- **Afform - make summary tab names less weird + ([27196](https://github.com/civicrm/civicrm-core/pull/27196))** + +- **Afform - Ensure prefill entities are populated correctly ([27615](https://github.com/civicrm/civicrm-core/pull/27615))** + +- **Improve initialization crash message + ([27138](https://github.com/civicrm/civicrm-core/pull/27138))** + +- **Set weight on Note Form + ([27106](https://github.com/civicrm/civicrm-core/pull/27106))** + +- **Make import parser external ID error message more helpful + ([27103](https://github.com/civicrm/civicrm-core/pull/27103))** + +- **Show which extension has a parse error in info.xml + ([27028](https://github.com/civicrm/civicrm-core/pull/27028))** + +- **E:: to make it look after the extension's translation + ([27027](https://github.com/civicrm/civicrm-core/pull/27027))** + +- **Use phpunit when running on PHP 7.3+ + ([27036](https://github.com/civicrm/civicrm-core/pull/27036))** + +- **ScheduledJob - Clean up form code & improve validation + ([26879](https://github.com/civicrm/civicrm-core/pull/26879))** + +- **Fix Domain Organization form for notices & PHP 8 compliance + ([27190](https://github.com/civicrm/civicrm-core/pull/27190))** + +- **Flush Redis `prevnext` cache when clearing `civicrm_cache` + ([27113](https://github.com/civicrm/civicrm-core/pull/27113))** + +- **Pass specific ids rather than ids array + ([27274](https://github.com/civicrm/civicrm-core/pull/27274))** + +- **Fix fatal on Manage Extensions caused by financialacls links + ([27264](https://github.com/civicrm/civicrm-core/pull/27264))** + +- **Fix weight notices on ActivityType (option values) pages + ([27395](https://github.com/civicrm/civicrm-core/pull/27395))** + +- **PseudoConstant - Prevent fatal when entity not available + ([27358](https://github.com/civicrm/civicrm-core/pull/27358))** + +- **SearchKit - Fix autocomplete filters on in-place-edit fields + ([27253](https://github.com/civicrm/civicrm-core/pull/27253))** + +- **Fix sort groups on PHP 8 + ([27210](https://github.com/civicrm/civicrm-core/pull/27210))** + +- **ContactSummary - Fix smarty notices in communication preferences section + ([27209](https://github.com/civicrm/civicrm-core/pull/27209))** + +- **Afform - Fix broken prefill functionality + ([27121](https://github.com/civicrm/civicrm-core/pull/27121))** + +- **E-notice fix - switch order of and params check around + ([27188](https://github.com/civicrm/civicrm-core/pull/27188))** + +- **Fix deprecation notice on ExecuteJob screen + ([27157](https://github.com/civicrm/civicrm-core/pull/27157))** + +- **Fix PHP8.1 repeated notice errors in Table.tpl + ([27137](https://github.com/civicrm/civicrm-core/pull/27137))** + +- **Fix notices, PHP errors on event location tab + ([27212](https://github.com/civicrm/civicrm-core/pull/27212))** + +- **Fix notices on domain.tpl by just adding what we need + ([27189](https://github.com/civicrm/civicrm-core/pull/27189))** + +- **Notice fix - schedule reminders + ([27154](https://github.com/civicrm/civicrm-core/pull/27154))** + +- **Undefined property fix + ([27148](https://github.com/civicrm/civicrm-core/pull/27148))** + +- **Notice fix on contact types browse + ([27153](https://github.com/civicrm/civicrm-core/pull/27153))** + +- **Fix e-notice by removing conditionality + ([27152](https://github.com/civicrm/civicrm-core/pull/27152))** + +- **Windows fix for CRM_Utils_File::isChildPath + ([27102](https://github.com/civicrm/civicrm-core/pull/27102))** + +- **Fix Standalone error handler: remove 5th argument + ([27099](https://github.com/civicrm/civicrm-core/pull/27099))** + +- **Fatal error fixes in PHP 8.1 + ([27077](https://github.com/civicrm/civicrm-core/pull/27077))** + +- **Path fixes + ([27026](https://github.com/civicrm/civicrm-core/pull/27026))** + +- **Fix warning caused by passing null to strpos + ([300](https://github.com/civicrm/civicrm-wordpress/pull/300))** + +- **kcfinder - Fix PHP 8.1 warnings from fastImage + ([368](https://github.com/civicrm/civicrm-packages/pull/368))** + +- **kcfinder - Fix cookies when running on alt HTTP port + ([367](https://github.com/civicrm/civicrm-packages/pull/367))** + +- **Smarty - Fix e-notice in modifier.escape.php + ([366](https://github.com/civicrm/civicrm-packages/pull/366))** + +- **Enotice fix ([27002](https://github.com/civicrm/civicrm-core/pull/27002))** + +- **E-notice fix ([27001](https://github.com/civicrm/civicrm-core/pull/27001))** + +- **E-notice fix, don't skip loading NULL fields + ([27048](https://github.com/civicrm/civicrm-core/pull/27048))** + +- **Fix missing weights on Custom data screen (notices) + ([27428](https://github.com/civicrm/civicrm-core/pull/27428))** + +- **Add weights on profile links (remove notices) + ([27432](https://github.com/civicrm/civicrm-core/pull/27432))** + +- **Fix mistake in just-merged email processor code + ([27408](https://github.com/civicrm/civicrm-core/pull/27408))** + +- **Fix undeclared properties in crufty old report + ([27220](https://github.com/civicrm/civicrm-core/pull/27220))** + +- **ajax.js - Fix undeclared variable + ([27269](https://github.com/civicrm/civicrm-core/pull/27269))** + +- **Move smarty assign to be always assigned (notices) + ([27207](https://github.com/civicrm/civicrm-core/pull/27207))** + +- **Fix undeclared property - use locally scoped variable + ([27090](https://github.com/civicrm/civicrm-core/pull/27090))** + +- **Smarty-notice fix - use array_key_exists + ([27117](https://github.com/civicrm/civicrm-core/pull/27117))** + +- **PHP 8.x fatal fix + bonus smarty consistency + ([27091](https://github.com/civicrm/civicrm-core/pull/27091))** + +### CiviCampaign + +- **avoid double clicks on petition page + ([27251](https://github.com/civicrm/civicrm-core/pull/27251))** + +### CiviCase + +- **Set link weight on manage case + ([27327](https://github.com/civicrm/civicrm-core/pull/27327))** + +- **Cannot add case type in multilingual installation with MariaDB 10.2 strict + mode ([dev/core#2581](https://lab.civicrm.org/dev/core/-/issues/2581): + [27226](https://github.com/civicrm/civicrm-core/pull/27226))** + +### CiviContribute + +- **Add contribution page tokens to contribution tokens + ([27201](https://github.com/civicrm/civicrm-core/pull/27201))** + + Adds contribution page tokens to contribution tokens. + +- **Fix Financial Items incorrectly recorded when using Payment API + ([26987](https://github.com/civicrm/civicrm-core/pull/26987))** + +- **Contribution pages with extra URL parameters lead to incorrect AJAX URL + constructed in buildPaymentBlock – users cannot proceed to pay + ([dev/core#4487](https://lab.civicrm.org/dev/core/-/issues/4487): + [27037](https://github.com/civicrm/civicrm-core/pull/27037))** + +- **Ensure tax_amount is not null + ([26993](https://github.com/civicrm/civicrm-core/pull/26993))** + +- **Fix permission check on Contribution form, clarify underlying functions + ([27013](https://github.com/civicrm/civicrm-core/pull/27013))** + +- **Fix PHP 8.0 implode on ContributionBase + ([27053](https://github.com/civicrm/civicrm-core/pull/27053))** + +- **Show Contribution Page receipt text in offline contribution receipt + ([27173](https://github.com/civicrm/civicrm-core/pull/27173))** + +- **Fix Contribution_Tab links to have weight, improve test + ([27227](https://github.com/civicrm/civicrm-core/pull/27227))** + +### CiviEvent + +- **Registering a participant with Pending event payment gives misleading + information. ([dev/core#3410](https://lab.civicrm.org/dev/core/-/issues/3410): + [27288](https://github.com/civicrm/civicrm-core/pull/27288))** + + Show 0 rather than nothing when paid amount is zero + +- **Event Dashboard: show events that have not ended yet + ([27329](https://github.com/civicrm/civicrm-core/pull/27329))** + + Ensure events that span more than 7 days don't disappear from the Event + Dashboard before the event ends. + +- **Crash when saving repeating event + ([dev/core#4550](https://lab.civicrm.org/dev/core/-/issues/4550): + [27315](https://github.com/civicrm/civicrm-core/pull/27315))** + +- **Replace Event Total with Total Amount on confirm/thankyou pages + ([dev/core#4485](https://lab.civicrm.org/dev/core/-/issues/4485): + [27024](https://github.com/civicrm/civicrm-core/pull/27024))** + +- **View and Edit links for event participants are inconsistent and in some + cases do not allow editing + ([dev/core/#3361](https://lab.civicrm.org/dev/core/-/issues/3361): + [24657](https://github.com/civicrm/civicrm-core/pull/24657))** + +- **Fix variable leakage in online event receipt + ([27443](https://github.com/civicrm/civicrm-core/pull/27443))** + +- **Fix notice on unpaid event + ([27367](https://github.com/civicrm/civicrm-core/pull/27367))** + +- **Fix incorrect event receipt regression + ([27159](https://github.com/civicrm/civicrm-core/pull/27159))** + +- **Fix Manage Events breadcrumb regression + ([27095](https://github.com/civicrm/civicrm-core/pull/27095))** + +- **Manage event - fix too many brackets + ([27061](https://github.com/civicrm/civicrm-core/pull/27061))** + +- **Fix event templates to use end_date token + ([27005](https://github.com/civicrm/civicrm-core/pull/27005))** + +- **Ensure event ID is an integer + ([27363](https://github.com/civicrm/civicrm-core/pull/27363))** + +- **Also add event confirm text as default receipt_text for edit Participant + ([27160](https://github.com/civicrm/civicrm-core/pull/27160))** + +- **Online Event Receipt - Remove deprecated backticks ([27671](https://github.com/civicrm/civicrm-core/pull/27671))** + +### CiviMail + +- **Scheduled Job, fetch_bounces with is_create_activities=1 parameter creates + a new Contact using the Return-path email address which is incorrect + (Work towards [dev/core#2800](https://lab.civicrm.org/dev/core/-/issues/2800): + [27356](https://github.com/civicrm/civicrm-core/pull/27356))** + + Fixes bounce processing to handle verp emails. + +- **Wording changes in the Unsubscribe form + ([27022](https://github.com/civicrm/civicrm-core/pull/27022))** + +- **"New Mailing" - Unsubscribe field doesn't appear ([27626](https://github.com/civicrm/civicrm-core/pull/27626))** + +- **Finish CiviCRM 2.1 deprecation - old-style VERP + ([27318](https://github.com/civicrm/civicrm-core/pull/27318))** + +### CiviMember + +- **Report improvements (Work towards + [dev/core#4536](https://lab.civicrm.org/dev/core/-/issues/4536): + [27169](https://github.com/civicrm/civicrm-core/pull/27169))** + + Fixes the 'Primary Membership' filter options in the Membership Details report + template. + +- **Membership renewal on Feb 29 of a leap year is calculated incorrectly + ([dev/core#4541](https://lab.civicrm.org/dev/core/-/issues/4541): + [27198](https://github.com/civicrm/civicrm-core/pull/27198))** + +- **Add weights to membership type links + ([27231](https://github.com/civicrm/civicrm-core/pull/27231))** + +### Backdrop Integration + +- **Global $language should be an object, not a string + ([dev/backdrop#80](https://lab.civicrm.org/dev/backdrop/-/issues/80): + [27038](https://github.com/civicrm/civicrm-core/pull/27038))** + +### Drupal Integration + +- **phpunit.xml.dist - Fix compatibility with phpunit9 + ([670](https://github.com/civicrm/civicrm-drupal/pull/670))** + +### WordPress Integration + +- **E2E_Core_PathUrlTest::testGetUrl_WpAdmin() fails because CiviCRM routing is + confusing (Work towards + [dev/core#4433](https://lab.civicrm.org/dev/core/-/issues/4433): + [26861](https://github.com/civicrm/civicrm-core/pull/26861))** + +- **Plugin compatibility architecture and loss of locale on "Secondary URLs" + when using Polylang + ([dev/wordpress#143](https://lab.civicrm.org/dev/wordpress/-/issues/143): + [27128](https://github.com/civicrm/civicrm-core/pull/27128) and + [301](https://github.com/civicrm/civicrm-wordpress/pull/301))** + +## <a name="misc"></a>Miscellany + +- **phpunit.xml.dist - Update extensions to use phpunit9 format + ([27133](https://github.com/civicrm/civicrm-core/pull/27133))** + +- **APIv3 - Delete API examples + ([27174](https://github.com/civicrm/civicrm-core/pull/27174))** + +- **EntityLookupTrait - Add isDefined and getDefinition methods + ([27275](https://github.com/civicrm/civicrm-core/pull/27275))** + +- **API - Soft-deprecate civicrm_api() wrapper + ([27180](https://github.com/civicrm/civicrm-core/pull/27180))** + +- **APIv3 Explorer - Delete unused code + ([27181](https://github.com/civicrm/civicrm-core/pull/27181))** + +- **Pass in function values, rather than handling by form-name + ([27092](https://github.com/civicrm/civicrm-core/pull/27092))** + +- **Use new lookup trait to eliminate use of undefined properties + `userDisplayName` + ([27259](https://github.com/civicrm/civicrm-core/pull/27259))** + + +- **Joomla - Add placeholder to fix errors related to deleted file ([27591](https://github.com/civicrm/civicrm-core/pull/27591))** + +- **Upgrader - Add breadcrumb guard ([27518](https://github.com/civicrm/civicrm-core/pull/27518))** + +- **Upgrader - Add multilingual schema updates ([27446](https://github.com/civicrm/civicrm-core/pull/27446))** + +- **CiviCampaign - Refactor civicrm_survey.recontact_interval + ([27268](https://github.com/civicrm/civicrm-core/pull/27268))** + +- **Move regex processing in EmailProcessor to handling class + ([27337](https://github.com/civicrm/civicrm-core/pull/27337))** + +- **Bump recommended PHP version to 8.1, min recommendation to 8.0 + ([26985](https://github.com/civicrm/civicrm-core/pull/26985))** + +- **Add code comments re the cleanup I didn't do + ([27451](https://github.com/civicrm/civicrm-core/pull/27451))** + +- **Fold deprecated function back into the caller + ([27345](https://github.com/civicrm/civicrm-core/pull/27345))** + +- **Replace another badly named undeclared property + ([27215](https://github.com/civicrm/civicrm-core/pull/27215))** + +- **Move no-longer-shared function back to it's form + ([27213](https://github.com/civicrm/civicrm-core/pull/27213))** + +- **Fold private function back into calling function + ([27145](https://github.com/civicrm/civicrm-core/pull/27145))** + +- **Further fix forms to full form flow + ([27256](https://github.com/civicrm/civicrm-core/pull/27256))** + +- **Move form specific code to relevant form (rather than access + mostly-undeclared property) + ([27069](https://github.com/civicrm/civicrm-core/pull/27069))** + +- **Extract `getDiscountID()` + ([27049](https://github.com/civicrm/civicrm-core/pull/27049) and + [27050](https://github.com/civicrm/civicrm-core/pull/27050))** + +- **ScheduledReminders - Rewrite entire form using metadata + ([27003](https://github.com/civicrm/civicrm-core/pull/27003))** + +- **Move form-specific check to form + ([27068](https://github.com/civicrm/civicrm-core/pull/27068))** + +- **Simplify queries of NOT NULL fields + ([27008](https://github.com/civicrm/civicrm-core/pull/27008))** + +- **Clarify doc-block for form variable + ([27051](https://github.com/civicrm/civicrm-core/pull/27051))** + +- **Separate getStatusMessage function + ([27015](https://github.com/civicrm/civicrm-core/pull/27015))** + +- **Added details for sebalis in contributor-key.xml + ([27039](https://github.com/civicrm/civicrm-core/pull/27039))** + +- **Move function to only form that calls it + ([27299](https://github.com/civicrm/civicrm-core/pull/27299))** + +- **Unconditionally assign smarty variable + ([27300](https://github.com/civicrm/civicrm-core/pull/27300))** + +- **Unconditionally assign smarty-var, remove unused variables + ([26051](https://github.com/civicrm/civicrm-core/pull/26051))** + +- **Make function private, after universe search in EmailProcessor + ([27309](https://github.com/civicrm/civicrm-core/pull/27309))** + +- **Make function private to reflect usage + ([27308](https://github.com/civicrm/civicrm-core/pull/27308))** + +- **Declare CRM_Core_Exception in cleanDir, add type hints + ([27306](https://github.com/civicrm/civicrm-core/pull/27306))** + +- **Make splitjob function static & private, Remove a couple of unused variables + ([27304](https://github.com/civicrm/civicrm-core/pull/27304))** + +- **Do the todo (move the function to the trait as suggested + ([27063](https://github.com/civicrm/civicrm-core/pull/27063))** + +- **Api4 - Remove unused key from getFields + ([27060](https://github.com/civicrm/civicrm-core/pull/27060))** + +- **CRM_Core_Form - Remove unused protected properties + ([27191](https://github.com/civicrm/civicrm-core/pull/27191))** + +- **Remove isset from Arb.xml + ([27224](https://github.com/civicrm/civicrm-core/pull/27224))** + +- **Remove some copy & paste code + ([27214](https://github.com/civicrm/civicrm-core/pull/27214))** + +- **Remove Html2text security check, package deleted + ([27218](https://github.com/civicrm/civicrm-core/pull/27218))** + +- **Remove decade-only typo + ([27219](https://github.com/civicrm/civicrm-core/pull/27219))** + +- **Remove some unnecessary variables & pass by ref + ([27273](https://github.com/civicrm/civicrm-core/pull/27273))** + +- **Remove unused profiles from offline event receipts + ([27150](https://github.com/civicrm/civicrm-core/pull/27150))** + +- **Remove unused CONST + ([27301](https://github.com/civicrm/civicrm-core/pull/27301))** + +- **Remove always-true empty check + ([27193](https://github.com/civicrm/civicrm-core/pull/27193))** + +- **Remove unusable assigns (copy & paste I believe) + ([26952](https://github.com/civicrm/civicrm-core/pull/26952))** + +- **Remove broken deprecated function + ([27163](https://github.com/civicrm/civicrm-core/pull/27163))** + +- **Remove use of sometimes-php8-warning causing `_quickConfig` property… (use + `isQuickConfig()` function) + ([27070](https://github.com/civicrm/civicrm-core/pull/27070))** + +- **Remove line that gives error & does nothing + ([27064](https://github.com/civicrm/civicrm-core/pull/27064))** + +- **Remove long-broken function + ([27317](https://github.com/civicrm/civicrm-core/pull/27317))** + +- **Remove unused variable + ([27350](https://github.com/civicrm/civicrm-core/pull/27350))** + +- **Remove unused parameter, pass by reference in private function with one + caller ([27320](https://github.com/civicrm/civicrm-core/pull/27320))** + +- **Remove some unused undefined properties from participant export + ([27298](https://github.com/civicrm/civicrm-core/pull/27298))** + +- **Remove unneeded descriptions and clean up on search forms + ([26292](https://github.com/civicrm/civicrm-core/pull/26292))** + +- **Remove do-nothing code. + ([27047](https://github.com/civicrm/civicrm-core/pull/27047))** + +- **Remove excessive data handling & some unused variables + ([27019](https://github.com/civicrm/civicrm-core/pull/27019))** + +- **Remove unused parse function for Incoming Mail + ([27011](https://github.com/civicrm/civicrm-core/pull/27011))** + +- **Remove unreachable page + ([27305](https://github.com/civicrm/civicrm-core/pull/27305))** + +- **Remove, extraneous: punctuation? + ([27297](https://github.com/civicrm/civicrm-core/pull/27297))** + +- **Delete html2text, not in use + ([370](https://github.com/civicrm/civicrm-packages/pull/370))** + +- **[REF] SearchKit - Cleanup upgrade code + ([27042](https://github.com/civicrm/civicrm-core/pull/27042))** + +- **(REF) civicrm_data.tpl - Stop using Smarty's {php} + ([27052](https://github.com/civicrm/civicrm-core/pull/27052))** + +- **[REF] APIv4 - Simplify entity name gathering + ([27177](https://github.com/civicrm/civicrm-core/pull/27177))** + +- **[REF] Remove unreachable handling + ([27192](https://github.com/civicrm/civicrm-core/pull/27192))** + +- **[REF] - Cleanup managed entities to all go through `hook_civicrm_managed` + and deprecate unnamed entities + ([27254](https://github.com/civicrm/civicrm-core/pull/27254))** + +- **[REF] Convert from session status to deprecation warning + ([27255](https://github.com/civicrm/civicrm-core/pull/27255))** + +- **[REF] Fix Notice Errors on ACL listing page by assigning fields consistently + ([27164](https://github.com/civicrm/civicrm-core/pull/27164))** + +- **[REF] Update Zetacomponents/mail to be 1.9.5 to fix email validation + handling ([27344](https://github.com/civicrm/civicrm-core/pull/27344))** + +- **Revert "[REF] Update Zetacomponents/mail to be 1.9.5 to fix email validation + handling" ([27394](https://github.com/civicrm/civicrm-core/pull/27394))** + +- **REF - Simplify inline conditionals with Elvis + ([27141](https://github.com/civicrm/civicrm-core/pull/27141))** + +- **[REF] Ensure that any NULL values in the title field are fixed prior to + changing the column + ([27368](https://github.com/civicrm/civicrm-core/pull/27368))** + +- **[REF] Improve cron job handling when there is an invalid report instance id + passed to mail_report job + ([27185](https://github.com/civicrm/civicrm-core/pull/27185))** + +- **[REF] Fix infinite loop when trying to load a report instance with an id + that does not exist + ([27184](https://github.com/civicrm/civicrm-core/pull/27184))** + +- **[REF] PCP - Update BAO to use writeRecord/deleteRecord + ([27127](https://github.com/civicrm/civicrm-core/pull/27127))** + +- **[REF] Add pseudoconstant suffixes to xml/dao + ([27172](https://github.com/civicrm/civicrm-core/pull/27172))** + +- **[REF] ðŸŒï¸ CRM_Utils_Array cleanup + ([27187](https://github.com/civicrm/civicrm-core/pull/27187))** + +- **[NFC] Be more confident and informative in the comment for + CRM_Core_Session::set() + ([27313](https://github.com/civicrm/civicrm-core/pull/27313))** + +- **[NFC] Test - Add return type hints to test functions + ([27186](https://github.com/civicrm/civicrm-core/pull/27186))** + +- **(NFC) Test class - Fix inconsistent namespace + ([27055](https://github.com/civicrm/civicrm-core/pull/27055))** + +- **[NFC] Add some email processor hooks tests + ([27097](https://github.com/civicrm/civicrm-core/pull/27097))** + +- **(NFC) Fix random test failures ([27574](https://github.com/civicrm/civicrm-core/pull/27574))** + +- **(NFC) Fix test failure on PHP 7.3 ([27714](https://github.com/civicrm/civicrm-core/pull/27714))** + +- **Update ca-config for better PHP 8.2 support ([27550](https://github.com/civicrm/civicrm-core/pull/27550))** + +- **Add missing weights for `hook_civicrm_links` ([27528](https://github.com/civicrm/civicrm-core/pull/27528), [27544](https://github.com/civicrm/civicrm-core/pull/27544), [27566](https://github.com/civicrm/civicrm-core/pull/27566), [27710](https://github.com/civicrm/civicrm-core/pull/27710))** + +- **Remove old tests that only test test functions + ([27208](https://github.com/civicrm/civicrm-core/pull/27208))** + +- **Concurrency Tests - Update ExternalBatch for symfony/proces v4.1+ (esp + Drupal 10) ([27072](https://github.com/civicrm/civicrm-core/pull/27072))** + +- **Simplify test + ([27205](https://github.com/civicrm/civicrm-core/pull/27205))** + +- **Test fix, towards full form flow + ([27067](https://github.com/civicrm/civicrm-core/pull/27067))** + +- **Remove never called testCleanUp function + ([27206](https://github.com/civicrm/civicrm-core/pull/27206))** + +- **Add test & fix for getOptions on options with a domain id + ([27161](https://github.com/civicrm/civicrm-core/pull/27161))** + +- **Test Cleanup - Refactor out uses of deprecated `callAPIAndDocument()` + ([27176](https://github.com/civicrm/civicrm-core/pull/27176))** + +- **Remove some unused parameters in test class + ([27166](https://github.com/civicrm/civicrm-core/pull/27166))** + +- **ActionScheduleTest - Update for compatibility with PHPUnit 9 + ([27101](https://github.com/civicrm/civicrm-core/pull/27101))** + +- **Unit tests - replace deprecated function with newer one + ([27032](https://github.com/civicrm/civicrm-core/pull/27032))** + +- **Fix forms to call full form flow + ([27250](https://github.com/civicrm/civicrm-core/pull/27250))** + +- **Add form helper for tests + ([27267](https://github.com/civicrm/civicrm-core/pull/27267))** + +- **Fix participantTest to not use transactions + ([27260](https://github.com/civicrm/civicrm-core/pull/27260))** + +- **Participant Form Test fixes + ([27245](https://github.com/civicrm/civicrm-core/pull/27245))** + +- **Superficial clean up in test class + ([27238](https://github.com/civicrm/civicrm-core/pull/27238))** + +- **Cleanup signature for test function `getFormObject` + ([27225](https://github.com/civicrm/civicrm-core/pull/27225))** + +- **Switch tests to use createTestEntity for payment processor + ([27217](https://github.com/civicrm/civicrm-core/pull/27217))** + +- **Add email helper to new form test helper + ([27384](https://github.com/civicrm/civicrm-core/pull/27384))** + +- **Fix financial transfer test to use form flow, allow all pending to transfer + ([27281](https://github.com/civicrm/civicrm-core/pull/27281))** + +- **Fix token consistency test with new lines and <br>s + ([27314](https://github.com/civicrm/civicrm-core/pull/27314))** + +- **Trivial cleanup in EmailProcessorTest + ([27307](https://github.com/civicrm/civicrm-core/pull/27307))** + +- **[test] [cleanup] Move _REQUEST cleanup to tearDown + ([27285](https://github.com/civicrm/civicrm-core/pull/27285))** + +- **Update further tests to additional form flow, lock in bug fix + ([27279](https://github.com/civicrm/civicrm-core/pull/27279))** + +- **Minor cleanup in test + ([27282](https://github.com/civicrm/civicrm-core/pull/27282))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Alice Frumin, Andie Hunt; ALL IN APPLI admin; Artful Robot - +Rich Lott; cdhassell; Christian Wach; Circle Interactive - Pradeep Nayak; +CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; civiservice.de - +Sebastian Lisken; Coop SymbioTIC - Mathieu Lutfy; Dave D; Humanists UK - Andrew +West; JMA Consulting - Seamus Lee; Just Hope - Phil Morice Brubaker; Lemniscus - +Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - +Matthew Wire; Progressive Technology Project - Jamie McClelland; Robert J. Lang; +SebastianLisken; Squiffle Consulting - Aidan Saunders; Third Sector Design - +Kurund Jalmi; Wikimedia Foundation - Damilare Adedoyin, Eileen McNaughton, +Wenjun Fan; Wildsight - Lars Sander-Green + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +Agileware - Justin Freeman; Andy Clark; ASMAC (American Society of Music +Arrangers and Composers) - Jeff Kellem; Australian Greens - Andrew +Cormick-Dockery, John Twyman; Francesc Bassas i Bullich; Freeform Solutions - +Herb van den Dool; Guydn; JMA Consulting - Joe Murray, Monish Deb; Korlon - +Stuart Gaston; Megaphone Technology Consulting - Brienne Kordis; Tadpole +Collective - Kevin Cristiano; Third Sector Design - William Mortada; Tobias +Voigt; yurg + +## <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/settings/Core.setting.php b/civicrm/settings/Core.setting.php index a8dbafd990..3a7309025b 100644 --- a/civicrm/settings/Core.setting.php +++ b/civicrm/settings/Core.setting.php @@ -99,7 +99,7 @@ return [ 'pseudoconstant' => [ 'optionGroupName' => 'address_options', ], - 'default' => '12345689101112', + 'default' => '1234568910', 'add' => '4.1', 'title' => ts('Address Fields'), 'is_domain' => 1, diff --git a/civicrm/settings/Search.setting.php b/civicrm/settings/Search.setting.php index 62a97d8362..dfdbb46de9 100644 --- a/civicrm/settings/Search.setting.php +++ b/civicrm/settings/Search.setting.php @@ -25,7 +25,7 @@ return [ 'type' => 'Integer', 'quick_form_type' => 'Element', 'html_type' => 'number', - 'default' => 10, + 'default' => 15, 'add' => '4.3', 'title' => ts('Autocomplete Results'), 'is_domain' => 1, @@ -184,7 +184,19 @@ return [ 'pseudoconstant' => [ 'callback' => 'CRM_Core_SelectValues::quicksearchOptions', ], - 'default' => ['sort_name', 'contact_id', 'external_identifier', 'first_name', 'last_name', 'email', 'phone_numeric', 'street_address', 'city', 'postal_code', 'job_title'], + 'default' => [ + 'sort_name', + 'id', + 'external_identifier', + 'first_name', + 'last_name', + 'email_primary.email', + 'phone_primary.phone_numeric', + 'address_primary.street_address', + 'address_primary.city', + 'address_primary.postal_code', + 'job_title', + ], 'add' => '5.8', 'title' => ts('Quicksearch options'), 'is_domain' => '1', diff --git a/civicrm/setup/plugins/checkRequirements/CheckDbWellFormed.civi-setup.php b/civicrm/setup/plugins/checkRequirements/CheckDbWellFormed.civi-setup.php index 4f09d7c832..968a80bd89 100644 --- a/civicrm/setup/plugins/checkRequirements/CheckDbWellFormed.civi-setup.php +++ b/civicrm/setup/plugins/checkRequirements/CheckDbWellFormed.civi-setup.php @@ -13,7 +13,12 @@ if (!defined('CIVI_SETUP')) { ->addListener('civi.setup.checkRequirements', function (\Civi\Setup\Event\CheckRequirementsEvent $e) { \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'checkRequirements')); - $dbFields = array('db', 'cmsDb'); + $dbFields = ['db']; + + if ($e->getModel()->cms !== 'Standalone') { + $dbFields[] = 'cmsDb'; + } + foreach ($dbFields as $dbField) { $errors = 0; $db = $e->getModel()->{$dbField}; diff --git a/civicrm/setup/res/index.php.txt b/civicrm/setup/res/index.php.txt index 31e3af3e07..1af5a24da1 100644 --- a/civicrm/setup/res/index.php.txt +++ b/civicrm/setup/res/index.php.txt @@ -64,13 +64,60 @@ $classLoader = implode(DIRECTORY_SEPARATOR, [$civiCorePath, 'CRM', 'Core', 'Clas require_once $classLoader; CRM_Core_ClassLoader::singleton()->register(); +function standaloneErrorHandler( + int $errno, + string $errstr, + ?string $errfile, + ?int $errline) { + static $handlingError = FALSE; + if ($handlingError) { + throw new \RuntimeException("Died: error was thrown during error handling"); + } + $config = CRM_Core_Config::singleton(); + if (!$config->debug) { + // For these errors to show, we must be debugging. + return; + } + + $handlingError = TRUE; + $trace = ''; + if ($config->backtrace) { + // Backtrace is configured for errors. + $trace = []; + foreach (array_slice(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS), 1) as $item) { + $_ = ''; + if (!empty($item['function'])) { + if (!empty($item['class']) && !empty($item['type'])) { + $_ = htmlspecialchars("$item[class]$item[type]$item[function]() "); + } + else { + $_ = htmlspecialchars("$item[function]() "); + } + } + $_ .= "<code>" . htmlspecialchars($item['file']) . '</code> line ' . $item['line']; + $trace[] = $_; + } + $trace = '<pre class=backtrace>' . implode("\n", $trace) . '</pre>'; + } + + if (!isset(Civi::$statics[__FUNCTION__])) { + Civi::$statics[__FUNCTION__] = []; + } + Civi::$statics[__FUNCTION__][] = '<li style="white-space:pre-wrap">' + . htmlspecialchars("$errstr [$errno]\n") . '<code>' . htmlspecialchars($errfile) . "</code> line $errline" + . $trace + . '</li>'; + CRM_Core_Smarty::singleton()->assign('standaloneErrors', implode("\n", Civi::$statics[__FUNCTION__])); + + $handlingError = FALSE; +} + if (file_exists(findStandaloneSettings())) { require_once findStandaloneSettings(); + set_error_handler('standaloneErrorHandler', E_ALL); invoke(); } else { - $coreUrl = '/assets/civicrm/core'; - \Civi\Setup::assertProtocolCompatibility(1.0); \Civi\Setup::init([ @@ -78,8 +125,10 @@ else { 'cms' => 'Standalone', 'srcPath' => $civiCorePath, ]); - $ctrl = \Civi\Setup::instance()->createController()->getCtrl(); + $coreUrl = \Civi\Setup::instance()->getModel()->mandatorySettings['userFrameworkResourceURL']; + + $ctrl = \Civi\Setup::instance()->createController()->getCtrl(); $ctrl->setUrls([ // The URL of this setup controller. May be used for POST-backs 'ctrl' => '/civicrm', /* @todo this had url('civicrm') ? */ diff --git a/civicrm/setup/src/Setup.php b/civicrm/setup/src/Setup.php index 18e38b8964..1d7ead79db 100644 --- a/civicrm/setup/src/Setup.php +++ b/civicrm/setup/src/Setup.php @@ -77,7 +77,7 @@ class Setup { '/^civi\.setupui\./' => 'run', '/./' => 'fail', ]); - self::$instance->log = $log ? $log : new NullLogger(); + self::$instance->log = $log ?: new NullLogger(); $pluginDir = dirname(__DIR__) . '/plugins'; $pluginFiles = array(); diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index ae9301bdd8..fdc591ae7b 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -1062,7 +1062,6 @@ CREATE TABLE `civicrm_survey` ( `title` varchar(255) NOT NULL COMMENT 'Title of the Survey.', `campaign_id` int unsigned DEFAULT NULL COMMENT 'Foreign key to the Campaign.', `activity_type_id` int unsigned DEFAULT NULL COMMENT 'Implicit FK to civicrm_option_value where option_group = activity_type', - `recontact_interval` text COMMENT 'Recontact intervals for each status.', `instructions` text COMMENT 'Script instructions for volunteers to use for the survey.', `release_frequency` int unsigned DEFAULT NULL COMMENT 'Number of days for recurrence of release.', `max_number_of_contacts` int unsigned DEFAULT NULL COMMENT 'Maximum number of contacts to allow for survey.', @@ -1650,8 +1649,15 @@ CREATE TABLE `civicrm_mail_settings` ( `activity_status` varchar(255) COMMENT 'Name of status to use when creating email to activity.', `is_non_case_email_skipped` tinyint NOT NULL DEFAULT 0 COMMENT 'Enabling this option will have CiviCRM skip any emails that do not have the Case ID or Case Hash so that the system will only process emails that can be placed on case records. Any emails that are not processed will be moved to the ignored folder.', `is_contact_creation_disabled_if_no_match` tinyint NOT NULL DEFAULT 0, + `is_active` tinyint NOT NULL DEFAULT 1 COMMENT 'Ignored for bounce processing, only for email-to-activity', + `activity_type_id` int unsigned COMMENT 'Implicit FK to civicrm_option_value where option_group = activity_type', + `campaign_id` int unsigned DEFAULT NULL COMMENT 'Foreign key to the Campaign.', + `activity_source` varchar(4) COMMENT 'Which email recipient to add as the activity source (from, to, cc, bcc).', + `activity_targets` varchar(16) COMMENT 'Which email recipients to add as the activity targets (from, to, cc, bcc).', + `activity_assignees` varchar(16) COMMENT 'Which email recipients to add as the activity assignees (from, to, cc, bcc).', PRIMARY KEY (`id`), - CONSTRAINT FK_civicrm_mail_settings_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE + CONSTRAINT FK_civicrm_mail_settings_domain_id FOREIGN KEY (`domain_id`) REFERENCES `civicrm_domain`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_mail_settings_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; @@ -2733,7 +2739,7 @@ ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMA -- *******************************************************/ CREATE TABLE `civicrm_discount` ( `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key', - `entity_table` varchar(64) COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event', + `entity_table` varchar(64) NOT NULL COMMENT 'physical tablename for entity being joined to discount, e.g. civicrm_event', `entity_id` int unsigned NOT NULL COMMENT 'FK to entity table specified in entity_table column.', `price_set_id` int unsigned NOT NULL COMMENT 'FK to civicrm_price_set', `start_date` date COMMENT 'Date when discount starts.', @@ -2889,7 +2895,7 @@ ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMA -- *******************************************************/ CREATE TABLE `civicrm_action_schedule` ( `id` int unsigned NOT NULL AUTO_INCREMENT, - `name` varchar(64) COMMENT 'Name of the action(reminder)', + `name` varchar(64) NOT NULL COMMENT 'Name of the action(reminder)', `title` varchar(64) COMMENT 'Title of the action(reminder)', `recipient` varchar(64) COMMENT 'Recipient', `limit_to` int COMMENT 'Is this the recipient criteria limited to OR in addition to?', @@ -2931,6 +2937,7 @@ CREATE TABLE `civicrm_action_schedule` ( `effective_start_date` timestamp NULL COMMENT 'Earliest date to consider start events from.', `effective_end_date` timestamp NULL COMMENT 'Latest date to consider end events from.', PRIMARY KEY (`id`), + UNIQUE INDEX `UI_name`(name), CONSTRAINT FK_civicrm_action_schedule_group_id FOREIGN KEY (`group_id`) REFERENCES `civicrm_group`(`id`) ON DELETE SET NULL, CONSTRAINT FK_civicrm_action_schedule_msg_template_id FOREIGN KEY (`msg_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL, CONSTRAINT FK_civicrm_action_schedule_sms_template_id FOREIGN KEY (`sms_template_id`) REFERENCES `civicrm_msg_template`(`id`) ON DELETE SET NULL, @@ -3812,7 +3819,7 @@ CREATE TABLE `civicrm_contribution` ( `check_number` varchar(255), `campaign_id` int unsigned COMMENT 'The campaign for which this contribution has been triggered.', `creditnote_id` varchar(255) COMMENT 'unique credit note id, system generated or passed in', - `tax_amount` decimal(20,2) COMMENT 'Total tax amount of this contribution.', + `tax_amount` decimal(20,2) NOT NULL DEFAULT 0 COMMENT 'Total tax amount of this contribution.', `revenue_recognition_date` datetime COMMENT 'Stores the date when revenue should be recognized.', `is_template` tinyint NOT NULL DEFAULT 0 COMMENT 'Shows this is a template for recurring contributions.', PRIMARY KEY (`id`), @@ -4120,7 +4127,7 @@ CREATE TABLE `civicrm_line_item` ( `price_field_value_id` int unsigned DEFAULT NULL COMMENT 'FK to civicrm_price_field_value', `financial_type_id` int unsigned DEFAULT NULL COMMENT 'FK to Financial Type.', `non_deductible_amount` decimal(20,2) NOT NULL DEFAULT 0.0 COMMENT 'Portion of total amount which is NOT tax deductible.', - `tax_amount` decimal(20,2) COMMENT 'tax of each item', + `tax_amount` decimal(20,2) NOT NULL DEFAULT 0 COMMENT 'tax of each item', `membership_num_terms` int unsigned DEFAULT NULL COMMENT 'Number of terms for this membership (only supported in Order->Payment flow). If the field is NULL it means unknown and it will be assumed to be 1 during payment.create if entity_table is civicrm_membership', PRIMARY KEY (`id`), UNIQUE INDEX `UI_line_item_value`(entity_id, entity_table, contribution_id, price_field_value_id, price_field_id), diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index 1803f377b1..da6d3c4e8d 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -4698,6 +4698,7 @@ INSERT INTO civicrm_location_type (`description`,`display_name`,`is_active`,`is_ ("Other location","Other","1","0","0","Other",NULL), ("Billing Address location","Billing","1","0","1","Billing",NULL) ; + INSERT INTO civicrm_relationship_type (`contact_type_a`,`contact_type_b`,`description`,`is_reserved`,`label_a_b`,`label_b_a`,`name_a_b`,`name_b_a`) VALUES ("Individual","Individual","Parent/child relationship.","0","Child of","Parent of","Child of","Parent of"), ("Individual","Individual","Spousal relationship.","0","Spouse of","Spouse of","Spouse of","Spouse of"), @@ -4710,6 +4711,7 @@ INSERT INTO civicrm_relationship_type (`contact_type_a`,`contact_type_b`,`descri ("Individual","Individual","Case Coordinator","0","Case Coordinator is","Case Coordinator","Case Coordinator is","Case Coordinator"), ("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"), @@ -4717,6 +4719,7 @@ INSERT INTO civicrm_tag (`description`,`name`,`parent_id`,`used_for`) VALUES ("High-value supporter of our organization.","Major Donor",NULL,"civicrm_contact"), ("Active volunteers.","Volunteer",NULL,"civicrm_contact") ; + INSERT INTO civicrm_mailing_component (`body_html`,`body_text`,`component_type`,`is_active`,`is_default`,`name`,`subject`) VALUES ("Sample Header for HTML formatted content.","Sample Header for TEXT formatted content.","Header","1","1","Mailing Header","Descriptive Title for this Header"), ("Sample Footer for HTML formatted content<br/><a href=\"{action.optOutUrl}\">Unsubscribe</a> <br/> {domain.address}","to unsubscribe: {action.optOutUrl}\n{domain.address}","Footer","1","1","Mailing Footer","Descriptive Title for this Footer."), @@ -4727,12 +4730,14 @@ INSERT INTO civicrm_mailing_component (`body_html`,`body_text`,`component_type`, ("Your email address has been removed from {domain.name} mailing lists.","Your email address has been removed from {domain.name} mailing lists.","OptOut","1","1","Opt-out Message","Opt-out Confirmation"), ("This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.","This is an automated reply from an un-attended mailbox. Please send any inquiries to the contact email address listed on our web-site.","Reply","1","1","Auto-responder","Please Send Inquiries to Our Contact Email Address") ; + INSERT INTO civicrm_financial_type (`is_active`,`is_deductible`,`is_reserved`,`name`) VALUES ("1","1","0","Donation"), ("1","1","0","Member Dues"), ("1","0","0","Campaign Contribution"), ("1","0","0","Event Fee") ; + INSERT INTO civicrm_option_group (`is_active`,`is_reserved`,`name`,`option_value_fields`,`title`) VALUES ("1","1","preferred_communication_method","name,label,description","Preferred Communication Method") ; @@ -4806,7 +4811,8 @@ INSERT INTO civicrm_option_value (`color`,`component_id`,`description`,`domain_i (NULL,NULL,"Emailed Invoice.",NULL,"1",NULL,NULL,"1","0","0","1","Emailed Invoice","Emailed Invoice",@this_option_group_id,"50",NULL,"50"), (NULL,NULL,"Contact Merged",NULL,"1",NULL,NULL,"1","0","0","1","Contact Merged","Contact Merged",@this_option_group_id,"51",NULL,"51"), (NULL,NULL,"Contact was merged into another contact",NULL,"1",NULL,NULL,"1","0","0","1","Contact Deleted by Merge","Contact Deleted by Merge",@this_option_group_id,"52",NULL,"52"), -(NULL,"2","Failed Payment",NULL,"1",NULL,NULL,"1","0","0","1","Failed Payment","Failed Payment",@this_option_group_id,"54",NULL,"54") +(NULL,"2","Failed Payment",NULL,"1",NULL,NULL,"1","0","0","1","Failed Payment","Failed Payment",@this_option_group_id,"54",NULL,"54"), +(NULL,"7","Case client was removed from a case",NULL,"0",NULL,"fa-trash","1","0","0","0","Case Client was removed from Case","Case Client Removed",@this_option_group_id,"55",NULL,"55") ; INSERT INTO civicrm_option_group (`data_type`,`description`,`is_active`,`is_reserved`,`name`,`option_value_fields`,`title`) VALUES ("Integer","CiviCRM is pre-configured with standard options for individual gender (Male, Female, Other). Modify these options as needed for your installation.","1","1","gender","name,label,description","Gender") @@ -6078,6 +6084,7 @@ INSERT INTO civicrm_option_group (`data_type`,`is_active`,`is_reserved`,`name`,` ("Integer","1","1","file_type","name,label,description","File Type") ; + -- CRM-6138 -- -- Generated from languages.tpl @@ -6307,6 +6314,7 @@ INSERT INTO civicrm_option_value (`color`,`component_id`,`description`,`domain_i (NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","1","Letter Mail","letter_mail",@this_option_group_id,"5",NULL,"5") ; + INSERT INTO civicrm_membership_status (`end_event`,`end_event_adjust_interval`,`end_event_adjust_unit`,`is_active`,`is_admin`,`is_current_member`,`is_default`,`is_reserved`,`label`,`name`,`start_event`,`start_event_adjust_interval`,`start_event_adjust_unit`,`weight`) VALUES ("join_date","3","month","1","0","1","0","0","New","New","join_date",NULL,NULL,"1"), ("end_date",NULL,NULL,"1","0","1","1","0","Current","Current","start_date",NULL,NULL,"2"), @@ -6316,6 +6324,7 @@ INSERT INTO civicrm_membership_status (`end_event`,`end_event_adjust_interval`,` ("join_date",NULL,NULL,"1","0","0","0","1","Cancelled","Cancelled","join_date",NULL,NULL,"6"), (NULL,NULL,NULL,"1","1","0","0","1","Deceased","Deceased",NULL,NULL,NULL,"7") ; + INSERT INTO civicrm_preferences_date (`date_format`,`description`,`end`,`name`,`start`,`time_format`) VALUES ("","Date for relationships. activities. contributions: receive, receipt, cancel. membership: join, start, renew. case: start, end.","10","activityDate","20",""), ("","Date and time for activity: scheduled. participant: registered.","10","activityDateTime","20","1"), @@ -6325,6 +6334,7 @@ INSERT INTO civicrm_preferences_date (`date_format`,`description`,`end`,`name`,` ("","Date and time. Used for scheduling mailings.","1","mailing","0",""), ("","Used in search forms.","20","searchDate","20","") ; + INSERT INTO civicrm_payment_processor_type (`billing_mode`,`class_name`,`description`,`is_active`,`is_default`,`is_recur`,`name`,`password_label`,`signature_label`,`subject_label`,`title`,`url_api_default`,`url_api_test_default`,`url_button_default`,`url_button_test_default`,`url_recur_default`,`url_recur_test_default`,`url_site_default`,`url_site_test_default`,`user_name_label`) VALUES ("4","Payment_PayPalImpl",NULL,"1","0","1","PayPal_Standard",NULL,NULL,NULL,"PayPal - Website Payments Standard",NULL,NULL,NULL,NULL,"https://www.paypal.com/","https://www.sandbox.paypal.com/","https://www.paypal.com/","https://www.sandbox.paypal.com/","Merchant Account Email"), ("3","Payment_PayPalImpl",NULL,"1","0","1","PayPal","Password","Signature",NULL,"PayPal - Website Payments Pro","https://api-3t.paypal.com/","https://api-3t.sandbox.paypal.com/","https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif","https://www.paypal.com/en_US/i/btn/btn_xpressCheckout.gif","https://www.paypal.com/","https://www.sandbox.paypal.com/","https://www.paypal.com/","https://www.sandbox.paypal.com/","User Name"), @@ -6336,6 +6346,7 @@ INSERT INTO civicrm_payment_processor_type (`billing_mode`,`class_name`,`descrip ("1","Payment_FirstData","FirstData (aka linkpoint)","0","0","0","FirstData","certificate path",NULL,NULL,"FirstData (aka linkpoint)",NULL,NULL,NULL,NULL,NULL,NULL,"https://secure.linkpt.net","https://staging.linkpt.net","Store name") ; + INSERT INTO civicrm_dedupe_rule_group (`contact_type`,`is_reserved`,`name`,`threshold`,`title`,`used`) VALUES ("Individual","1","IndividualSupervised","20","Name and Email (reserved)","Supervised") ; @@ -6348,6 +6359,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@drgid,"last_name","civicrm_contact","7"), (@drgid,"email","civicrm_email","10") ; + INSERT INTO civicrm_dedupe_rule_group (`contact_type`,`is_reserved`,`name`,`threshold`,`title`,`used`) VALUES ("Organization","0","OrganizationSupervised","10","Name or Email","Supervised") ; @@ -6359,6 +6371,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@drgid,"organization_name","civicrm_contact","10"), (@drgid,"email","civicrm_email","10") ; + INSERT INTO civicrm_dedupe_rule_group (`contact_type`,`is_reserved`,`name`,`threshold`,`title`,`used`) VALUES ("Household","0","HouseholdSupervised","10","Name or Email","Supervised") ; @@ -6370,6 +6383,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@drgid,"household_name","civicrm_contact","10"), (@drgid,"email","civicrm_email","10") ; + INSERT INTO civicrm_dedupe_rule_group (`contact_type`,`is_reserved`,`name`,`threshold`,`title`,`used`) VALUES ("Individual","1","IndividualUnsupervised","10","Email (reserved)","Unsupervised") ; @@ -6380,6 +6394,7 @@ WHERE (name = "IndividualUnsupervised") INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table`,`rule_weight`) VALUES (@drgid,"email","civicrm_email","10") ; + INSERT INTO civicrm_dedupe_rule_group (`contact_type`,`is_reserved`,`name`,`threshold`,`title`,`used`) VALUES ("Organization","0","OrganizationUnsupervised","10","Name or Email","Unsupervised") ; @@ -6391,6 +6406,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@drgid,"organization_name","civicrm_contact","10"), (@drgid,"email","civicrm_email","10") ; + INSERT INTO civicrm_dedupe_rule_group (`contact_type`,`is_reserved`,`name`,`threshold`,`title`,`used`) VALUES ("Household","0","HouseholdUnsupervised","10","Name or Email","Unsupervised") ; @@ -6402,6 +6418,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@drgid,"household_name","civicrm_contact","10"), (@drgid,"email","civicrm_email","10") ; + INSERT INTO civicrm_dedupe_rule_group (`contact_type`,`is_reserved`,`name`,`threshold`,`title`,`used`) VALUES ("Individual","1","IndividualGeneral","15","Name and Address (reserved)","General") ; @@ -6417,6 +6434,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@drgid,"suffix_id","civicrm_contact","1") ; + INSERT INTO civicrm_county (`name`,`state_province_id`) VALUES ("Alameda","1004"), ("Contra Costa","1004"), @@ -6426,6 +6444,7 @@ INSERT INTO civicrm_county (`name`,`state_province_id`) VALUES ("Santa Clara","1004") ; + -- Bounce classification patterns INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("AOL Terms of Service complaint","1","AOL") @@ -6437,6 +6456,7 @@ WHERE (name = "AOL") INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"Client TOS Notification") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Recipient is on vacation","30","Away") ; @@ -6448,6 +6468,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"(be|am)? (out of|away from) (the|my)? (office|computer|town)"), (@bounceTypeID,"i am on vacation") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Unable to resolve recipient domain","3","Dns") ; @@ -6462,6 +6483,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"Host or domain name not found"), (@bounceTypeID,"Unable to resolve MX record for") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Unable to deliver to destintation mail server","3","Host") ; @@ -6490,6 +6512,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"server requires authentication"), (@bounceTypeID,"authentication (is )?required") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("User account is no longer active","1","Inactive") ; @@ -6517,6 +6540,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"account that you tried to reach is disabled"), (@bounceTypeID,"User banned") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Email address is not valid","1","Invalid") ; @@ -6579,6 +6603,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"Elektronski naslov (je ukinjen|ne obstaja)"), (@bounceTypeID,"nepravilno nastavljen predal") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Mail routing error","3","Loop") ; @@ -6594,6 +6619,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"message was forwarded more than the maximum allowed times"), (@bounceTypeID,"too many (hops|recursive forwards)") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("User inbox is full","3","Quota") ; @@ -6620,6 +6646,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"exceeded storage allocation"), (@bounceTypeID,"running out of disk space") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Unable to reach destination mail server","3","Relay") ; @@ -6643,6 +6670,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"Rejected by next-hop"), (@bounceTypeID,"not permitted to( *550)? relay through this server") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Message caught by a content filter","1","Spam") ; @@ -6679,6 +6707,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"ni bilo mogo..?e dostaviti zaradi varnostnega pravilnika"), (@bounceTypeID,"abuse report") ; + INSERT INTO civicrm_mailing_bounce_type (`description`,`hold_threshold`,`name`) VALUES ("Error in SMTP transaction","3","Syntax") ; @@ -6692,6 +6721,7 @@ INSERT INTO civicrm_mailing_bounce_pattern (`bounce_type_id`,`pattern`) VALUES (@bounceTypeID,"unknown smtp code") ; + INSERT INTO civicrm_uf_group (`frontend_title`,`group_type`,`help_post`,`id`,`is_cms_user`,`is_reserved`,`name`,`title`) VALUES ("Name and Address","Individual,Contact",NULL,"1","0","0","name_and_address","Name and Address"), ("Supporter Profile","Individual,Contact","<p><strong>The information you provide will NOT be shared with any third party organisations.</strong></p><p>Thank you for getting involved in our campaign!</p>","2","2","0","supporter_profile","Supporter Profile"), @@ -6707,6 +6737,7 @@ INSERT INTO civicrm_uf_group (`frontend_title`,`group_type`,`help_post`,`id`,`is ("Your Registration Info","Individual,Contact",NULL,"12","0","0","event_registration","Your Registration Info"), ("Honoree Individual","Individual,Contact",NULL,"13","0","1","honoree_individual","Honoree Individual") ; + INSERT INTO civicrm_uf_join (`entity_id`,`entity_table`,`is_active`,`module`,`uf_group_id`,`weight`) VALUES (NULL,NULL,"1","User Registration","1","1"), (NULL,NULL,"1","User Account","1","1"), @@ -6714,6 +6745,7 @@ INSERT INTO civicrm_uf_join (`entity_id`,`entity_table`,`is_active`,`module`,`uf (NULL,NULL,"1","Profile","2","2"), (NULL,NULL,"1","Profile","12","11") ; + INSERT INTO civicrm_uf_field (`field_name`,`field_type`,`help_post`,`in_selector`,`is_required`,`is_reserved`,`is_searchable`,`label`,`location_type_id`,`phone_type_id`,`uf_group_id`,`visibility`,`weight`) VALUES ("first_name","Individual",NULL,"0","1","0","0","First Name",NULL,NULL,"1","User and User Admin Only","1"), ("last_name","Individual",NULL,"0","1","0","0","Last Name",NULL,NULL,"1","User and User Admin Only","2"), @@ -6790,6 +6822,7 @@ INSERT INTO civicrm_uf_field (`field_name`,`field_type`,`help_post`,`in_selector ("last_name","Individual",NULL,"0","1","1","0","Last Name",NULL,NULL,"13","User and User Admin Only","3"), ("email","Contact",NULL,"0","0","1","0","Email Address","1",NULL,"13","User and User Admin Only","4") ; + INSERT INTO civicrm_participant_status_type (`class`,`is_active`,`is_counted`,`is_reserved`,`label`,`name`,`visibility_id`,`weight`) VALUES ("Positive","1","1","1","Registered","Registered","1","1"), ("Positive","1","1","0","Attended","Attended","2","2"), @@ -6808,12 +6841,14 @@ INSERT INTO civicrm_participant_status_type (`class`,`is_active`,`is_counted`,`i ("Positive","1","1","1","Pending refund","Pending refund","2","15"), ("Negative","1","0","1","Transferred","Transferred","2","16") ; + INSERT INTO civicrm_contact_type (`icon`,`id`,`image_URL`,`is_active`,`is_reserved`,`label`,`name`,`parent_id`) VALUES ("fa-user","1",NULL,"1","1","Individual","Individual",NULL), ("fa-home","2",NULL,"1","1","Household","Household",NULL), ("fa-building","3",NULL,"1","1","Organization","Organization",NULL) ; + -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | @@ -7381,7 +7416,10 @@ INSERT INTO civicrm_msg_template ('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name} ', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{ts}Below you will find a receipt for this contribution.{/ts} +{if {contribution.contribution_page_id.receipt_text|boolean}} +{contribution.contribution_page_id.receipt_text} +{else}{ts}Below you will find a receipt for this contribution.{/ts} +{/if} =========================================================== {ts}Contribution Information{/ts} @@ -7427,7 +7465,7 @@ INSERT INTO civicrm_msg_template {if \'{contribution.receipt_date}\'} {ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:"shortdate"} {/if} -{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)} +{if {contribution.payment_instrument_id|boolean}} {ts}Paid By{/ts}: {contribution.payment_instrument_id:label} {if \'{contribution.check_number}\'} {ts}Check Number{/ts}: {contribution.check_number} @@ -7514,7 +7552,10 @@ INSERT INTO civicrm_msg_template <tr> <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - <p>{ts}Below you will find a receipt for this contribution.{/ts}</p> + <p> + {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text} + {else}{ts}Below you will find a receipt for this contribution.{/ts}{/if} + </p> </td> </tr> <tr> @@ -7656,7 +7697,7 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)} + {if {contribution.payment_instrument_id|boolean}} <tr> <td {$labelStyle}> {ts}Paid By{/ts} @@ -7809,7 +7850,10 @@ INSERT INTO civicrm_msg_template ('Contributions - Receipt (off-line)', '{ts}Contribution Receipt{/ts} - {contact.display_name} ', '{assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{ts}Below you will find a receipt for this contribution.{/ts} +{if {contribution.contribution_page_id.receipt_text|boolean}} +{contribution.contribution_page_id.receipt_text} +{else}{ts}Below you will find a receipt for this contribution.{/ts} +{/if} =========================================================== {ts}Contribution Information{/ts} @@ -7855,7 +7899,7 @@ INSERT INTO civicrm_msg_template {if \'{contribution.receipt_date}\'} {ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:"shortdate"} {/if} -{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)} +{if {contribution.payment_instrument_id|boolean}} {ts}Paid By{/ts}: {contribution.payment_instrument_id:label} {if \'{contribution.check_number}\'} {ts}Check Number{/ts}: {contribution.check_number} @@ -7942,7 +7986,10 @@ INSERT INTO civicrm_msg_template <tr> <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - <p>{ts}Below you will find a receipt for this contribution.{/ts}</p> + <p> + {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text} + {else}{ts}Below you will find a receipt for this contribution.{/ts}{/if} + </p> </td> </tr> <tr> @@ -8084,7 +8131,7 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)} + {if {contribution.payment_instrument_id|boolean}} <tr> <td {$labelStyle}> {ts}Paid By{/ts} @@ -8291,8 +8338,8 @@ INSERT INTO civicrm_msg_template {ts}Date{/ts}: {$receive_date|crmDate} {/if} -{if !empty($is_monetary) and !empty($trxn_id)} -{ts}Transaction #{/ts}: {$trxn_id} +{if {contribution.trxn_id|boolean}} +{ts}Transaction #{/ts}: {contribution.trxn_id} {/if} {if !empty($is_recur)} @@ -8426,9 +8473,7 @@ INSERT INTO civicrm_msg_template =========================================================== {foreach from=$customPre item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} @@ -8439,9 +8484,7 @@ INSERT INTO civicrm_msg_template =========================================================== {foreach from=$customPost item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -8597,13 +8640,13 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if !empty($is_monetary) and !empty($trxn_id)} + {if {contribution.trxn_id|boolean}} <tr> <td {$labelStyle}> {ts}Transaction #{/ts} </td> <td {$valueStyle}> - {$trxn_id} + {contribution.trxn_id} </td> </tr> {/if} @@ -8853,7 +8896,6 @@ INSERT INTO civicrm_msg_template </th> </tr> {foreach from=$customPre item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -8862,7 +8904,6 @@ INSERT INTO civicrm_msg_template {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -8873,7 +8914,6 @@ INSERT INTO civicrm_msg_template </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -8882,7 +8922,6 @@ INSERT INTO civicrm_msg_template {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -8946,8 +8985,8 @@ INSERT INTO civicrm_msg_template {ts}Date{/ts}: {$receive_date|crmDate} {/if} -{if !empty($is_monetary) and !empty($trxn_id)} -{ts}Transaction #{/ts}: {$trxn_id} +{if {contribution.trxn_id|boolean}} +{ts}Transaction #{/ts}: {contribution.trxn_id} {/if} {if !empty($is_recur)} @@ -9081,9 +9120,7 @@ INSERT INTO civicrm_msg_template =========================================================== {foreach from=$customPre item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} @@ -9094,9 +9131,7 @@ INSERT INTO civicrm_msg_template =========================================================== {foreach from=$customPost item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -9252,13 +9287,13 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if !empty($is_monetary) and !empty($trxn_id)} + {if {contribution.trxn_id|boolean}} <tr> <td {$labelStyle}> {ts}Transaction #{/ts} </td> <td {$valueStyle}> - {$trxn_id} + {contribution.trxn_id} </td> </tr> {/if} @@ -9508,7 +9543,6 @@ INSERT INTO civicrm_msg_template </th> </tr> {foreach from=$customPre item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -9517,7 +9551,6 @@ INSERT INTO civicrm_msg_template {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -9528,7 +9561,6 @@ INSERT INTO civicrm_msg_template </th> </tr> {foreach from=$customPost item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -9537,7 +9569,6 @@ INSERT INTO civicrm_msg_template {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -12703,7 +12734,7 @@ INSERT INTO civicrm_msg_template ==========================================================={if !empty($pricesetFieldsCount) }===================={/if} {event.title} -{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} +{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 !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)} {ts}Participant Role{/ts}: {$event.participant_role} @@ -12732,7 +12763,7 @@ INSERT INTO civicrm_msg_template {/if} -{if !empty($event.is_public)} +{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} @@ -12804,14 +12835,14 @@ INSERT INTO civicrm_msg_template {/foreach} {/if} -{if $totalTaxAmount} -{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency} +{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}: {if {contribution.paid_amount|boolean}}{contribution.paid_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} +{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}: {if {contribution.total_amount|boolean}}{contribution.total_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} +{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} {/if} {if !empty($pricesetFieldsCount) } @@ -12841,8 +12872,8 @@ INSERT INTO civicrm_msg_template {/if} -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} +{if {participant.register_date|boolean}} +{ts}Registration Date{/ts}: {participant.register_date} {/if} {if $receive_date} {ts}Transaction Date{/ts}: {$receive_date|crmDate} @@ -12884,62 +12915,6 @@ INSERT INTO civicrm_msg_template {/if} {/if} {* End of conditional section for Paid events *} -{if !empty($customPre)} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{$customPre_grouptitle} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$customPre item=value key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} -{$customName}: {$value} -{/if} -{/foreach} -{/if} - -{if !empty($customPost)} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{$customPost_grouptitle} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$customPost item=value key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} -{$customName}: {$value} -{/if} -{/foreach} -{/if} -{if !empty($customProfile)} - -{foreach from=$customProfile item=value key=customName} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{ts 1=$customName+1}Participant Information - Participant %1{/ts} - -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$value item=val key=field} -{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' } -{if $field eq \'additionalCustomPre\' } -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{$additionalCustomPre_grouptitle} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{else} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{$additionalCustomPost_grouptitle} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{/if} -{foreach from=$val item=v key=f} -{$f}: {$v} -{/foreach} -{/if} -{/foreach} -{/foreach} -{/if} {if !empty($customGroup)} {foreach from=$customGroup item=value key=customName} =========================================================={if !empty($pricesetFieldsCount) }===================={/if} @@ -12979,7 +12954,7 @@ INSERT INTO civicrm_msg_template {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} - <p>{$event.confirm_email_text|htmlize}</p> + <p>{$event.confirm_email_text}</p> {/if} {if !empty($isOnWaitlist)} @@ -13005,7 +12980,7 @@ INSERT INTO civicrm_msg_template <tr> <td colspan="2" {$valueStyle}> {event.title}<br /> - {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} + {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} </td> </tr> @@ -13089,7 +13064,7 @@ INSERT INTO civicrm_msg_template {/if} - {if !empty($event.is_public)} + {if {event.is_public|boolean}} <tr> <td colspan="2" {$valueStyle}> {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} @@ -13225,13 +13200,13 @@ INSERT INTO civicrm_msg_template </tr> {/foreach} {/if} - {if $totalTaxAmount} + {if {contribution.tax_amount|boolean}} <tr> <td {$labelStyle}> {ts}Total Tax Amount{/ts} </td> <td {$valueStyle}> - {$totalTaxAmount|crmMoney:$currency} + {contribution.tax_amount} </td> </tr> {/if} @@ -13240,7 +13215,7 @@ INSERT INTO civicrm_msg_template <tr> <td {$labelStyle}>{ts}Total Paid{/ts}</td> <td {$valueStyle}> - {if {contribution.paid_amount|boolean}}{contribution.paid_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> <tr> @@ -13251,7 +13226,7 @@ INSERT INTO civicrm_msg_template <tr> <td {$labelStyle}>{ts}Total Amount{/ts}</td> <td {$valueStyle}> - {if {contribution.total_amount|boolean}}{contribution.total_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> {/if} @@ -13285,13 +13260,13 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if $register_date} + {if {participant.register_date|boolean}} <tr> <td {$labelStyle}> {ts}Registration Date{/ts} </td> <td {$valueStyle}> - {$register_date|crmDate} + {participant.register_date} </td> </tr> {/if} @@ -13384,79 +13359,6 @@ INSERT INTO civicrm_msg_template {/if} {* End of conditional section for Paid events *} - {if !empty($customPre)} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=value key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if !empty($customPost)} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=value key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if !empty($customProfile)} - {foreach from=$customProfile item=value key=customName} - <tr> - <th {$headerStyle}> - {ts 1=$customName+1}Participant Information - Participant %1{/ts} - </th> - </tr> - {foreach from=$value item=val key=field} - {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'} - <tr> - <td colspan="2" {$labelStyle}> - {if $field eq \'additionalCustomPre\'} - {$additionalCustomPre_grouptitle} - {else} - {$additionalCustomPost_grouptitle} - {/if} - </td> - </tr> - {foreach from=$val item=v key=f} - <tr> - <td {$labelStyle}> - {$f} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/if} - {/foreach} - {/foreach} - {/if} - {if !empty($customGroup)} {foreach from=$customGroup item=value key=customName} <tr> @@ -13527,7 +13429,7 @@ INSERT INTO civicrm_msg_template ==========================================================={if !empty($pricesetFieldsCount) }===================={/if} {event.title} -{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} +{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 !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)} {ts}Participant Role{/ts}: {$event.participant_role} @@ -13556,7 +13458,7 @@ INSERT INTO civicrm_msg_template {/if} -{if !empty($event.is_public)} +{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} @@ -13628,14 +13530,14 @@ INSERT INTO civicrm_msg_template {/foreach} {/if} -{if $totalTaxAmount} -{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency} +{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}: {if {contribution.paid_amount|boolean}}{contribution.paid_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} +{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}: {if {contribution.total_amount|boolean}}{contribution.total_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} +{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} {/if} {if !empty($pricesetFieldsCount) } @@ -13665,8 +13567,8 @@ INSERT INTO civicrm_msg_template {/if} -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} +{if {participant.register_date|boolean}} +{ts}Registration Date{/ts}: {participant.register_date} {/if} {if $receive_date} {ts}Transaction Date{/ts}: {$receive_date|crmDate} @@ -13708,62 +13610,6 @@ INSERT INTO civicrm_msg_template {/if} {/if} {* End of conditional section for Paid events *} -{if !empty($customPre)} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{$customPre_grouptitle} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$customPre item=value key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} -{$customName}: {$value} -{/if} -{/foreach} -{/if} - -{if !empty($customPost)} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{$customPost_grouptitle} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$customPost item=value key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} -{$customName}: {$value} -{/if} -{/foreach} -{/if} -{if !empty($customProfile)} - -{foreach from=$customProfile item=value key=customName} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{ts 1=$customName+1}Participant Information - Participant %1{/ts} - -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$value item=val key=field} -{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' } -{if $field eq \'additionalCustomPre\' } -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{$additionalCustomPre_grouptitle} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{else} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{$additionalCustomPost_grouptitle} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{/if} -{foreach from=$val item=v key=f} -{$f}: {$v} -{/foreach} -{/if} -{/foreach} -{/foreach} -{/if} {if !empty($customGroup)} {foreach from=$customGroup item=value key=customName} =========================================================={if !empty($pricesetFieldsCount) }===================={/if} @@ -13803,7 +13649,7 @@ INSERT INTO civicrm_msg_template {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} - <p>{$event.confirm_email_text|htmlize}</p> + <p>{$event.confirm_email_text}</p> {/if} {if !empty($isOnWaitlist)} @@ -13829,7 +13675,7 @@ INSERT INTO civicrm_msg_template <tr> <td colspan="2" {$valueStyle}> {event.title}<br /> - {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} + {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} </td> </tr> @@ -13913,7 +13759,7 @@ INSERT INTO civicrm_msg_template {/if} - {if !empty($event.is_public)} + {if {event.is_public|boolean}} <tr> <td colspan="2" {$valueStyle}> {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} @@ -14049,13 +13895,13 @@ INSERT INTO civicrm_msg_template </tr> {/foreach} {/if} - {if $totalTaxAmount} + {if {contribution.tax_amount|boolean}} <tr> <td {$labelStyle}> {ts}Total Tax Amount{/ts} </td> <td {$valueStyle}> - {$totalTaxAmount|crmMoney:$currency} + {contribution.tax_amount} </td> </tr> {/if} @@ -14064,7 +13910,7 @@ INSERT INTO civicrm_msg_template <tr> <td {$labelStyle}>{ts}Total Paid{/ts}</td> <td {$valueStyle}> - {if {contribution.paid_amount|boolean}}{contribution.paid_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> <tr> @@ -14075,7 +13921,7 @@ INSERT INTO civicrm_msg_template <tr> <td {$labelStyle}>{ts}Total Amount{/ts}</td> <td {$valueStyle}> - {if {contribution.total_amount|boolean}}{contribution.total_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> {/if} @@ -14109,13 +13955,13 @@ INSERT INTO civicrm_msg_template </tr> {/if} - {if $register_date} + {if {participant.register_date|boolean}} <tr> <td {$labelStyle}> {ts}Registration Date{/ts} </td> <td {$valueStyle}> - {$register_date|crmDate} + {participant.register_date} </td> </tr> {/if} @@ -14208,79 +14054,6 @@ INSERT INTO civicrm_msg_template {/if} {* End of conditional section for Paid events *} - {if !empty($customPre)} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=value key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if !empty($customPost)} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=value key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if !empty($customProfile)} - {foreach from=$customProfile item=value key=customName} - <tr> - <th {$headerStyle}> - {ts 1=$customName+1}Participant Information - Participant %1{/ts} - </th> - </tr> - {foreach from=$value item=val key=field} - {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'} - <tr> - <td colspan="2" {$labelStyle}> - {if $field eq \'additionalCustomPre\'} - {$additionalCustomPre_grouptitle} - {else} - {$additionalCustomPost_grouptitle} - {/if} - </td> - </tr> - {foreach from=$val item=v key=f} - <tr> - <td {$labelStyle}> - {$f} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/if} - {/foreach} - {/foreach} - {/if} - {if !empty($customGroup)} {foreach from=$customGroup item=value key=customName} <tr> @@ -14544,9 +14317,7 @@ You were registered by: {$payer.name} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} {foreach from=$customPr item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/foreach} {/if} @@ -14559,9 +14330,7 @@ You were registered by: {$payer.name} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} {foreach from=$customPos item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/foreach} {/if} @@ -14591,7 +14360,7 @@ You were registered by: {$payer.name} {if !empty($event.allow_selfcancelxfer) } {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} - {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`$participant.id`&{contact.checksum}" h=0 a=1 fe=1}{/capture} + {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture} {ts}Transfer or cancel your registration:{/ts} {$selfService} {/if} ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -14622,8 +14391,8 @@ You were registered by: {$payer.name} <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} - <p>{$event.confirm_email_text|htmlize}</p> + {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))} + <p>{event.confirm_email_text}</p> {else} <p>{ts}Thank you for your registration.{/ts} @@ -14660,7 +14429,7 @@ You were registered by: {$payer.name} <tr> <td colspan="2" {$valueStyle}> {event.title}<br /> - {event.start_date|crmDate:"%A"} {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:"%A"} {$event.event_end_date|crmDate}{/if}{/if} + {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} </td> </tr> @@ -14785,12 +14554,12 @@ You were registered by: {$payer.name} </tr> {if $isShowLineItems} - {foreach from=$participants key=index item=participant} - {if $isPrimary || {participant.id} === $participant.id} + {foreach from=$participants key=index item=currentParticipant} + {if $isPrimary || {participant.id} === $currentParticipant.id} {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *} <tr> <td colspan="2" {$labelStyle}> - {ts 1=$participant.index}Participant %1{/ts} {$participant.contact.display_name} + {ts 1=$currentParticipant.index}Participant %1{/ts} {$currentParticipant.contact.display_name} </td> </tr> {/if} @@ -14809,7 +14578,7 @@ You were registered by: {$payer.name} <th>{ts}Total{/ts}</th> {if !empty($pricesetFieldsCount)}<th>{ts}Total Participants{/ts}</th>{/if} </tr> - {foreach from=$participant.line_items item=line} + {foreach from=$currentParticipant.line_items item=line} <tr> <td {$tdfirstStyle}>{$line.title}</td> <td {$tdStyle} align="middle">{$line.qty}</td> @@ -14830,9 +14599,9 @@ You were registered by: {$payer.name} {if $isShowTax} <tr {$participantTotal}> <td colspan=3>{ts}Participant Total{/ts}</td> - <td colspan=2>{$participant.totals.total_amount_exclusive|crmMoney}</td> - <td colspan=1>{$participant.totals.tax_amount|crmMoney}</td> - <td colspan=2>{$participant.totals.total_amount_inclusive|crmMoney}</td> + <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td> + <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td> + <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td> </tr> {/if} </table> @@ -15018,12 +14787,10 @@ You were registered by: {$payer.name} {foreach from=$customPre item=customPr key=i} <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> {foreach from=$customPr item=customValue key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} <tr> <td {$labelStyle}>{$customName}</td> <td {$valueStyle}>{$customValue}</td> </tr> - {/if} {/foreach} {/foreach} {/if} @@ -15032,13 +14799,11 @@ You were registered by: {$payer.name} {foreach from=$customPost item=customPos key=j} <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> {foreach from=$customPos item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} <tr> <td {$labelStyle}>{$customName}</td> <td {$valueStyle}>{$customValue}</td> </tr> -{/if} -{/foreach} + {/foreach} {/foreach} {/if} @@ -15063,7 +14828,7 @@ You were registered by: {$payer.name} <tr> <td colspan="2" {$valueStyle}> {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 /> - {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`{participant.id}`&{contact.checksum}" h=0 a=1 fe=1}{/capture} + {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture} <a href="{$selfService}">{ts}Click here to transfer or cancel your registration.{/ts}</a> </td> </tr> @@ -15305,9 +15070,7 @@ You were registered by: {$payer.name} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} {foreach from=$customPr item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/foreach} {/if} @@ -15320,9 +15083,7 @@ You were registered by: {$payer.name} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} {foreach from=$customPos item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/foreach} {/if} @@ -15352,7 +15113,7 @@ You were registered by: {$payer.name} {if !empty($event.allow_selfcancelxfer) } {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} - {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`$participant.id`&{contact.checksum}" h=0 a=1 fe=1}{/capture} + {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture} {ts}Transfer or cancel your registration:{/ts} {$selfService} {/if} ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -15383,8 +15144,8 @@ You were registered by: {$payer.name} <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} - <p>{$event.confirm_email_text|htmlize}</p> + {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))} + <p>{event.confirm_email_text}</p> {else} <p>{ts}Thank you for your registration.{/ts} @@ -15421,7 +15182,7 @@ You were registered by: {$payer.name} <tr> <td colspan="2" {$valueStyle}> {event.title}<br /> - {event.start_date|crmDate:"%A"} {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:"%A"} {$event.event_end_date|crmDate}{/if}{/if} + {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} </td> </tr> @@ -15546,12 +15307,12 @@ You were registered by: {$payer.name} </tr> {if $isShowLineItems} - {foreach from=$participants key=index item=participant} - {if $isPrimary || {participant.id} === $participant.id} + {foreach from=$participants key=index item=currentParticipant} + {if $isPrimary || {participant.id} === $currentParticipant.id} {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *} <tr> <td colspan="2" {$labelStyle}> - {ts 1=$participant.index}Participant %1{/ts} {$participant.contact.display_name} + {ts 1=$currentParticipant.index}Participant %1{/ts} {$currentParticipant.contact.display_name} </td> </tr> {/if} @@ -15570,7 +15331,7 @@ You were registered by: {$payer.name} <th>{ts}Total{/ts}</th> {if !empty($pricesetFieldsCount)}<th>{ts}Total Participants{/ts}</th>{/if} </tr> - {foreach from=$participant.line_items item=line} + {foreach from=$currentParticipant.line_items item=line} <tr> <td {$tdfirstStyle}>{$line.title}</td> <td {$tdStyle} align="middle">{$line.qty}</td> @@ -15591,9 +15352,9 @@ You were registered by: {$payer.name} {if $isShowTax} <tr {$participantTotal}> <td colspan=3>{ts}Participant Total{/ts}</td> - <td colspan=2>{$participant.totals.total_amount_exclusive|crmMoney}</td> - <td colspan=1>{$participant.totals.tax_amount|crmMoney}</td> - <td colspan=2>{$participant.totals.total_amount_inclusive|crmMoney}</td> + <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td> + <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td> + <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td> </tr> {/if} </table> @@ -15779,12 +15540,10 @@ You were registered by: {$payer.name} {foreach from=$customPre item=customPr key=i} <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> {foreach from=$customPr item=customValue key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} <tr> <td {$labelStyle}>{$customName}</td> <td {$valueStyle}>{$customValue}</td> </tr> - {/if} {/foreach} {/foreach} {/if} @@ -15793,13 +15552,11 @@ You were registered by: {$payer.name} {foreach from=$customPost item=customPos key=j} <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> {foreach from=$customPos item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} <tr> <td {$labelStyle}>{$customName}</td> <td {$valueStyle}>{$customValue}</td> </tr> -{/if} -{/foreach} + {/foreach} {/foreach} {/if} @@ -15824,7 +15581,7 @@ You were registered by: {$payer.name} <tr> <td colspan="2" {$valueStyle}> {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 /> - {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid=`{participant.id}`&{contact.checksum}" h=0 a=1 fe=1}{/capture} + {capture assign=selfService}{crmURL p=\'civicrm/event/selfsvcupdate\' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture} <a href="{$selfService}">{ts}Click here to transfer or cancel your registration.{/ts}</a> </td> </tr> @@ -19102,9 +18859,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> =========================================================== {foreach from=$customPre item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} @@ -19115,9 +18870,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> =========================================================== {foreach from=$customPost item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -19634,7 +19387,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </th> </tr> {foreach from=$customPre item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -19643,7 +19395,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -19896,9 +19647,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> =========================================================== {foreach from=$customPre item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} @@ -19909,9 +19658,7 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> =========================================================== {foreach from=$customPost item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} ', '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> @@ -20428,7 +20175,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> </th> </tr> {foreach from=$customPre item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -20437,7 +20183,6 @@ or want to inquire about reinstating your registration for this event.{/ts}</p> {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -23038,6 +22783,7 @@ INSERT INTO civicrm_job (`api_action`,`api_entity`,`description`,`domain_id`,`is ("update_email_resetdate","Mailing","Updates the reset_date on an email address to indicate that there was a valid delivery to this email address.",@domainID,"0",NULL,"Validate Email Address from Mailings.","minDays, maxDays=Consider mailings that have completed between minDays and maxDays","Daily") ; + -- financial accounts SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; SELECT @opval := value FROM civicrm_option_value WHERE name = 'Revenue' and option_group_id = @option_group_id_fat; @@ -23062,6 +22808,7 @@ INSERT INTO civicrm_financial_account (`account_type_code`,`accounting_code`,`co ("OCLIAB","2740",@contactID,"Membership revenue to be recognized in future months",@opLiability,"1","0","0","0","Deferred Revenue - Member Dues") ; + SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; SELECT @option_value_rel_id := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Income Account is'; SELECT @option_value_rel_id_exp := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Expense Account is'; @@ -23157,6 +22904,7 @@ INSERT IGNORE INTO civicrm_extension (`file`,`full_name`,`is_active`,`label`,`na ("civi_pledge","civi_pledge","1","CiviPledge","CiviPledge","module"), ("civi_report","civi_report","1","CiviReport","CiviReport","module") ; + INSERT INTO civicrm_option_group (`is_active`,`is_reserved`,`name`,`option_value_fields`,`title`) VALUES ("1","1","soft_credit_type","name,label,description","Soft Credit Types") ; @@ -23177,6 +22925,7 @@ INSERT INTO civicrm_option_value (`color`,`component_id`,`description`,`domain_i (NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","1","Personal Campaign Page","pcp",@this_option_group_id,"10",NULL,"10"), (NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","1","Gift","gift",@this_option_group_id,"11",NULL,"11") ; + INSERT INTO civicrm_option_group (`is_active`,`is_reserved`,`name`,`option_value_fields`,`title`) VALUES ("1","1","recent_items_providers","name,label,description","Recent Items Providers") ; @@ -23545,8 +23294,8 @@ SET @usersPermslastID:=LAST_INSERT_ID(); INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) VALUES - ( @domainID, 'civicrm/admin/access?reset=1', 'Permissions (Access Control)', 'Permissions (Access Control)', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 1 ), - ( @domainID, 'civicrm/admin/synchUser?reset=1', 'Synchronize Users to Contacts', 'Synchronize Users to Contacts', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 2 ); + ( @domainID, 'civicrm/admin/access?reset=1', 'Access Control Lists', 'Permissions (Access Control)', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 5 ), + ( @domainID, 'civicrm/admin/synchUser?reset=1', 'Synchronize Users to Contacts', 'Synchronize Users to Contacts', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 10 ); INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) @@ -23952,4 +23701,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.65.2'; +UPDATE civicrm_domain SET version = '5.66.0'; diff --git a/civicrm/sql/civicrm_data/civicrm_option_group/activity_type.sqldata.php b/civicrm/sql/civicrm_data/civicrm_option_group/activity_type.sqldata.php index eb33c6d5c1..0dae02cea2 100644 --- a/civicrm/sql/civicrm_data/civicrm_option_group/activity_type.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_option_group/activity_type.sqldata.php @@ -469,5 +469,13 @@ return CRM_Core_CodeGen_OptionGroup::create('activity_type', 'a/0002') 'is_reserved' => 1, 'component_id' => 2, ], + [ + 'label' => ts('Case Client was removed from Case'), + 'value' => 55, + 'name' => 'Case Client Removed', + 'description' => ts('Case client was removed from a case'), + 'component_id' => 7, + 'icon' => 'fa-trash', + ], ]) ->syncColumns('fill', ['value' => 'weight']); diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 81cf4e35bc..e0cb5a53a4 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -53,7 +53,7 @@ LOCK TABLES `civicrm_acl_entity_role` WRITE; /*!40000 ALTER TABLE `civicrm_acl_entity_role` DISABLE KEYS */; INSERT INTO `civicrm_acl_entity_role` (`id`, `acl_role_id`, `entity_table`, `entity_id`, `is_active`) VALUES (1,1,'civicrm_group',1,1), - (2,868,'civicrm_group',4,1); + (2,869,'civicrm_group',4,1); /*!40000 ALTER TABLE `civicrm_acl_entity_role` ENABLE KEYS */; UNLOCK TABLES; @@ -82,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,22,'Subject for Print/Merge Document','2023-08-10 23:44:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (2,NULL,1,'Subject for Meeting','2023-03-25 19:00:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (3,NULL,2,'Subject for Phone Call','2023-07-16 17:02:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (4,NULL,9,'Subject for Tell a Friend','2023-03-25 00:23:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (5,NULL,55,'Subject for Interview','2023-08-18 19:20:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (6,NULL,2,'Subject for Phone Call','2022-09-10 13:13:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (7,NULL,1,'Subject for Meeting','2023-05-14 13:42:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (8,NULL,2,'Subject for Phone Call','2022-09-27 18:13:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (9,NULL,22,'Subject for Print/Merge Document','2023-04-30 15:01:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (10,NULL,9,'Subject for Tell a Friend','2023-05-05 04:43:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (11,NULL,1,'Subject for Meeting','2023-01-29 18:28:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (12,NULL,9,'Subject for Tell a Friend','2023-02-16 18:11:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (13,NULL,22,'Subject for Print/Merge Document','2022-10-11 20:10:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (14,NULL,9,'Subject for Tell a Friend','2023-06-01 00:44:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (15,NULL,2,'Subject for Phone Call','2023-07-06 03:39:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (16,NULL,22,'Subject for Print/Merge Document','2023-07-30 06:33:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (17,NULL,55,'Subject for Interview','2023-03-20 16:30:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (18,NULL,55,'Subject for Interview','2022-09-27 01:21:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (19,NULL,1,'Subject for Meeting','2023-03-30 21:44:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (20,NULL,22,'Subject for Print/Merge Document','2023-07-14 12:33:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (21,NULL,9,'Subject for Tell a Friend','2023-05-24 08:26:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (22,NULL,9,'Subject for Tell a Friend','2022-09-16 08:07:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (23,NULL,55,'Subject for Interview','2023-04-17 19:12:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (24,NULL,55,'Subject for Interview','2023-06-22 02:55:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (25,NULL,22,'Subject for Print/Merge Document','2023-04-20 04:40:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (26,NULL,22,'Subject for Print/Merge Document','2023-01-09 17:05:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (27,NULL,55,'Subject for Interview','2022-10-19 11:59:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (28,NULL,22,'Subject for Print/Merge Document','2022-10-10 08:39:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (29,NULL,2,'Subject for Phone Call','2023-05-15 10:14:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (30,NULL,1,'Subject for Meeting','2023-08-24 17:02:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (31,NULL,1,'Subject for Meeting','2023-03-21 08:02:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (32,NULL,1,'Subject for Meeting','2023-01-07 12:49:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (33,NULL,22,'Subject for Print/Merge Document','2022-10-18 18:21:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (34,NULL,1,'Subject for Meeting','2022-09-24 16:08:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:01','2023-09-06 22:14:01'), - (35,NULL,1,'Subject for Meeting','2023-02-24 08:11:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (36,NULL,1,'Subject for Meeting','2023-06-11 13:04:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (37,NULL,9,'Subject for Tell a Friend','2022-09-08 07:08:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (38,NULL,1,'Subject for Meeting','2023-04-24 12:54:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (39,NULL,1,'Subject for Meeting','2022-11-10 02:12:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (40,NULL,9,'Subject for Tell a Friend','2023-04-26 15:29:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (41,NULL,55,'Subject for Interview','2023-01-05 07:04:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (42,NULL,22,'Subject for Print/Merge Document','2023-03-16 13:22:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (43,NULL,1,'Subject for Meeting','2023-01-03 03:43:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (44,NULL,9,'Subject for Tell a Friend','2023-05-28 16:25:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (45,NULL,9,'Subject for Tell a Friend','2023-03-26 03:14:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (46,NULL,9,'Subject for Tell a Friend','2023-05-17 03:49:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (47,NULL,1,'Subject for Meeting','2022-09-20 21:17:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (48,NULL,55,'Subject for Interview','2023-04-06 23:53:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (49,NULL,55,'Subject for Interview','2023-08-03 10:09:15',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (50,NULL,1,'Subject for Meeting','2023-06-12 10:50:22',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (51,NULL,55,'Subject for Interview','2023-07-27 20:51:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (52,NULL,1,'Subject for Meeting','2023-01-16 13:03:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (53,NULL,1,'Subject for Meeting','2023-03-20 19:10:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (54,NULL,1,'Subject for Meeting','2023-04-25 04:40:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (55,NULL,22,'Subject for Print/Merge Document','2023-01-19 23:26:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (56,NULL,1,'Subject for Meeting','2023-08-11 04:25:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (57,NULL,1,'Subject for Meeting','2023-08-16 09:28:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (58,NULL,22,'Subject for Print/Merge Document','2023-03-07 23:34:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (59,NULL,22,'Subject for Print/Merge Document','2023-03-21 09:59:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (60,NULL,22,'Subject for Print/Merge Document','2023-02-22 07:14:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (61,NULL,22,'Subject for Print/Merge Document','2023-03-20 22:07:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (62,NULL,1,'Subject for Meeting','2022-12-06 13:29:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (63,NULL,9,'Subject for Tell a Friend','2022-10-15 21:54:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (64,NULL,22,'Subject for Print/Merge Document','2023-03-11 20:46:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (65,NULL,22,'Subject for Print/Merge Document','2023-07-17 15:09:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (66,NULL,9,'Subject for Tell a Friend','2023-08-24 08:42:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (67,NULL,9,'Subject for Tell a Friend','2023-05-08 01:44:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (68,NULL,1,'Subject for Meeting','2023-05-31 06:33:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (69,NULL,22,'Subject for Print/Merge Document','2023-02-22 20:40:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (70,NULL,22,'Subject for Print/Merge Document','2023-05-10 00:12:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (71,NULL,55,'Subject for Interview','2022-10-26 18:44:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (72,NULL,55,'Subject for Interview','2022-11-27 06:51:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (73,NULL,9,'Subject for Tell a Friend','2023-01-28 18:55:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (74,NULL,2,'Subject for Phone Call','2022-11-04 22:10:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (75,NULL,9,'Subject for Tell a Friend','2023-01-05 04:02:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (76,NULL,2,'Subject for Phone Call','2023-09-05 08:27:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (77,NULL,9,'Subject for Tell a Friend','2023-07-14 01:15:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (78,NULL,55,'Subject for Interview','2022-12-29 03:33:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (79,NULL,2,'Subject for Phone Call','2023-04-06 15:16:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (80,NULL,22,'Subject for Print/Merge Document','2023-09-01 01:50:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (81,NULL,9,'Subject for Tell a Friend','2023-02-16 09:08:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (82,NULL,55,'Subject for Interview','2022-11-10 13:14:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (83,NULL,55,'Subject for Interview','2022-11-16 02:05:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (84,NULL,22,'Subject for Print/Merge Document','2023-07-05 05:58:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (85,NULL,22,'Subject for Print/Merge Document','2022-12-07 16:04:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (86,NULL,2,'Subject for Phone Call','2022-11-06 20:08:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (87,NULL,55,'Subject for Interview','2022-09-09 21:40:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (88,NULL,1,'Subject for Meeting','2023-08-23 12:37:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (89,NULL,1,'Subject for Meeting','2022-11-27 23:20:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (90,NULL,22,'Subject for Print/Merge Document','2023-02-05 13:57:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (91,NULL,1,'Subject for Meeting','2023-05-31 06:22:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (92,NULL,1,'Subject for Meeting','2023-08-25 18:58:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (93,NULL,1,'Subject for Meeting','2023-08-21 16:31:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (94,NULL,9,'Subject for Tell a Friend','2022-11-25 17:42:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (95,NULL,55,'Subject for Interview','2022-10-09 00:42:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (96,NULL,2,'Subject for Phone Call','2023-06-15 08:03:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (97,NULL,2,'Subject for Phone Call','2022-09-25 02:17:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (98,NULL,9,'Subject for Tell a Friend','2023-01-09 07:07:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (99,NULL,2,'Subject for Phone Call','2023-05-07 22:11:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (100,NULL,9,'Subject for Tell a Friend','2023-05-24 07:25:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (101,NULL,55,'Subject for Interview','2023-06-08 14:37:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (102,NULL,2,'Subject for Phone Call','2023-01-20 00:42:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (103,NULL,22,'Subject for Print/Merge Document','2023-01-10 06:36:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (104,NULL,1,'Subject for Meeting','2022-11-26 14:42:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (105,NULL,2,'Subject for Phone Call','2022-11-01 07:36:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (106,NULL,9,'Subject for Tell a Friend','2022-12-12 19:51:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (107,NULL,55,'Subject for Interview','2023-01-25 11:32:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (108,NULL,55,'Subject for Interview','2023-06-03 00:16:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (109,NULL,1,'Subject for Meeting','2022-12-19 00:47:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (110,NULL,1,'Subject for Meeting','2022-10-27 02:59:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (111,NULL,2,'Subject for Phone Call','2023-07-21 13:16:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (112,NULL,9,'Subject for Tell a Friend','2022-12-22 02:56:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (113,NULL,22,'Subject for Print/Merge Document','2023-04-25 06:43:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (114,NULL,1,'Subject for Meeting','2023-07-29 20:47:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (115,NULL,1,'Subject for Meeting','2022-11-12 09:11:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (116,NULL,55,'Subject for Interview','2022-12-06 17:21:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (117,NULL,9,'Subject for Tell a Friend','2023-05-26 16:40:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (118,NULL,22,'Subject for Print/Merge Document','2023-03-13 22:33:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (119,NULL,2,'Subject for Phone Call','2023-01-18 06:29:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (120,NULL,2,'Subject for Phone Call','2023-01-23 18:56:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (121,NULL,22,'Subject for Print/Merge Document','2023-04-14 06:50:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (122,NULL,55,'Subject for Interview','2023-07-05 05:49:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (123,NULL,55,'Subject for Interview','2023-02-09 22:05:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (124,NULL,22,'Subject for Print/Merge Document','2023-07-17 06:37:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (125,NULL,9,'Subject for Tell a Friend','2023-01-03 07:58:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (126,NULL,9,'Subject for Tell a Friend','2023-03-07 15:53:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (127,NULL,9,'Subject for Tell a Friend','2023-05-07 15:27:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (128,NULL,22,'Subject for Print/Merge Document','2022-10-05 07:25:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (129,NULL,9,'Subject for Tell a Friend','2023-03-03 08:01:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (130,NULL,1,'Subject for Meeting','2023-07-16 04:01:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (131,NULL,22,'Subject for Print/Merge Document','2022-12-21 09:23:15',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (132,NULL,22,'Subject for Print/Merge Document','2022-10-29 09:51:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (133,NULL,2,'Subject for Phone Call','2022-09-24 22:40:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (134,NULL,1,'Subject for Meeting','2023-07-07 18:30:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (135,NULL,22,'Subject for Print/Merge Document','2022-12-10 13:32:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (136,NULL,2,'Subject for Phone Call','2023-05-21 20:36:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (137,NULL,1,'Subject for Meeting','2023-08-15 11:15:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (138,NULL,1,'Subject for Meeting','2023-04-26 09:33:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (139,NULL,2,'Subject for Phone Call','2023-06-04 20:49:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (140,NULL,22,'Subject for Print/Merge Document','2022-10-11 02:46:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (141,NULL,55,'Subject for Interview','2022-09-10 14:07:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (142,NULL,9,'Subject for Tell a Friend','2023-07-17 06:51:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (143,NULL,2,'Subject for Phone Call','2023-07-31 21:45:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (144,NULL,2,'Subject for Phone Call','2023-08-05 14:56:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (145,NULL,55,'Subject for Interview','2023-03-24 14:13:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (146,NULL,1,'Subject for Meeting','2022-10-03 18:01:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (147,NULL,9,'Subject for Tell a Friend','2022-10-02 10:20:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (148,NULL,2,'Subject for Phone Call','2023-08-29 06:28:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (149,NULL,55,'Subject for Interview','2023-01-27 04:12:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (150,NULL,9,'Subject for Tell a Friend','2022-10-06 22:30:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (151,NULL,1,'Subject for Meeting','2023-08-09 03:06:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (152,NULL,2,'Subject for Phone Call','2023-08-06 20:43:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (153,NULL,1,'Subject for Meeting','2023-06-01 18:02:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (154,NULL,2,'Subject for Phone Call','2022-10-22 08:48:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (155,NULL,55,'Subject for Interview','2023-06-16 01:43:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (156,NULL,2,'Subject for Phone Call','2023-05-11 01:24:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (157,NULL,9,'Subject for Tell a Friend','2023-07-31 10:03:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (158,NULL,55,'Subject for Interview','2023-08-01 01:42:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (159,NULL,1,'Subject for Meeting','2023-04-09 13:24:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (160,NULL,2,'Subject for Phone Call','2023-04-17 20:29:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (161,NULL,9,'Subject for Tell a Friend','2022-12-30 21:58:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (162,NULL,2,'Subject for Phone Call','2023-03-20 07:55:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (163,NULL,1,'Subject for Meeting','2022-09-14 23:24:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (164,NULL,2,'Subject for Phone Call','2022-11-13 16:14:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (165,NULL,22,'Subject for Print/Merge Document','2023-08-02 13:12:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (166,NULL,1,'Subject for Meeting','2023-01-16 19:12:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (167,NULL,1,'Subject for Meeting','2022-09-17 05:23:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (168,NULL,22,'Subject for Print/Merge Document','2022-12-31 17:56:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (169,NULL,55,'Subject for Interview','2023-08-11 10:49:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (170,NULL,55,'Subject for Interview','2023-01-24 14:07:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (171,NULL,2,'Subject for Phone Call','2023-02-28 17:26:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (172,NULL,55,'Subject for Interview','2022-12-12 08:09:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (173,NULL,9,'Subject for Tell a Friend','2023-07-01 08:45:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (174,NULL,22,'Subject for Print/Merge Document','2022-12-21 00:44:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (175,NULL,2,'Subject for Phone Call','2022-12-03 11:44:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (176,NULL,55,'Subject for Interview','2023-09-02 18:49:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (177,NULL,9,'Subject for Tell a Friend','2022-12-17 13:27:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (178,NULL,9,'Subject for Tell a Friend','2023-08-16 14:18:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (179,NULL,2,'Subject for Phone Call','2022-12-24 14:37:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (180,NULL,9,'Subject for Tell a Friend','2023-04-08 16:56:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (181,NULL,22,'Subject for Print/Merge Document','2023-06-29 09:10:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (182,NULL,1,'Subject for Meeting','2022-11-22 12:50:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (183,NULL,22,'Subject for Print/Merge Document','2022-10-12 05:46:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (184,NULL,9,'Subject for Tell a Friend','2023-08-05 02:12:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (185,NULL,55,'Subject for Interview','2023-02-12 10:32:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (186,NULL,55,'Subject for Interview','2022-09-09 07:49:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (187,NULL,1,'Subject for Meeting','2023-02-17 00:07:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (188,NULL,22,'Subject for Print/Merge Document','2023-02-24 19:46:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (189,NULL,22,'Subject for Print/Merge Document','2023-01-27 16:24:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (190,NULL,22,'Subject for Print/Merge Document','2023-07-29 23:01:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (191,NULL,1,'Subject for Meeting','2023-08-30 03:20:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (192,NULL,55,'Subject for Interview','2022-11-16 17:06:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (193,NULL,9,'Subject for Tell a Friend','2023-07-19 23:37:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (194,NULL,2,'Subject for Phone Call','2022-12-02 14:02:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (195,NULL,1,'Subject for Meeting','2023-01-01 03:11:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (196,NULL,9,'Subject for Tell a Friend','2023-05-09 17:56:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (197,NULL,9,'Subject for Tell a Friend','2023-03-17 08:22:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (198,NULL,9,'Subject for Tell a Friend','2023-06-20 19:57:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (199,NULL,55,'Subject for Interview','2022-09-16 00:44:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (200,NULL,22,'Subject for Print/Merge Document','2023-08-28 10:42:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (201,NULL,1,'Subject for Meeting','2022-10-07 08:56:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (202,NULL,55,'Subject for Interview','2023-05-02 05:52:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (203,NULL,2,'Subject for Phone Call','2022-09-19 02:10:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (204,NULL,1,'Subject for Meeting','2023-06-21 00:17:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (205,NULL,9,'Subject for Tell a Friend','2023-04-13 16:39:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (206,NULL,55,'Subject for Interview','2022-10-02 05:24:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (207,NULL,2,'Subject for Phone Call','2022-12-10 07:14:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (208,NULL,1,'Subject for Meeting','2023-08-09 20:18:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (209,NULL,1,'Subject for Meeting','2023-01-02 20:26:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (210,NULL,9,'Subject for Tell a Friend','2022-09-27 18:52:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (211,NULL,9,'Subject for Tell a Friend','2023-09-05 23:33:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (212,NULL,55,'Subject for Interview','2022-09-12 06:00:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (213,NULL,9,'Subject for Tell a Friend','2022-12-07 13:44:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (214,NULL,2,'Subject for Phone Call','2022-11-08 06:04:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (215,NULL,55,'Subject for Interview','2023-05-22 09:24:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (216,NULL,55,'Subject for Interview','2023-02-12 00:39:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (217,NULL,2,'Subject for Phone Call','2023-07-24 14:13:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (218,NULL,1,'Subject for Meeting','2023-08-05 00:29:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (219,NULL,9,'Subject for Tell a Friend','2022-09-28 04:08:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (220,NULL,22,'Subject for Print/Merge Document','2023-06-14 08:17:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (221,NULL,55,'Subject for Interview','2022-12-28 19:42:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (222,NULL,9,'Subject for Tell a Friend','2023-01-09 15:57:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (223,NULL,2,'Subject for Phone Call','2022-09-13 22:33:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (224,NULL,55,'Subject for Interview','2023-07-15 01:02:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (225,NULL,55,'Subject for Interview','2023-02-20 14:30:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (226,NULL,9,'Subject for Tell a Friend','2023-07-24 06:55:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (227,NULL,2,'Subject for Phone Call','2023-08-05 09:35:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (228,NULL,55,'Subject for Interview','2023-05-01 10:56:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (229,NULL,55,'Subject for Interview','2023-08-13 08:57:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (230,NULL,55,'Subject for Interview','2022-12-22 15:03:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (231,NULL,1,'Subject for Meeting','2023-04-01 13:03:22',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (232,NULL,9,'Subject for Tell a Friend','2023-06-20 02:13:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (233,NULL,55,'Subject for Interview','2023-03-22 18:54:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (234,NULL,9,'Subject for Tell a Friend','2023-08-17 11:40:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (235,NULL,22,'Subject for Print/Merge Document','2023-06-20 16:15:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (236,NULL,2,'Subject for Phone Call','2022-11-24 20:44:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (237,NULL,55,'Subject for Interview','2022-10-14 14:46:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (238,NULL,9,'Subject for Tell a Friend','2022-12-26 13:13:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (239,NULL,2,'Subject for Phone Call','2023-03-28 06:00:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (240,NULL,1,'Subject for Meeting','2023-06-24 21:38:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (241,NULL,22,'Subject for Print/Merge Document','2023-07-06 01:27:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (242,NULL,1,'Subject for Meeting','2022-12-22 23:29:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (243,NULL,1,'Subject for Meeting','2023-02-05 22:30:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (244,NULL,1,'Subject for Meeting','2023-05-28 16:41:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (245,NULL,2,'Subject for Phone Call','2023-05-21 01:03:20',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (246,NULL,22,'Subject for Print/Merge Document','2023-09-02 10:25:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (247,NULL,2,'Subject for Phone Call','2022-10-04 18:40:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (248,NULL,2,'Subject for Phone Call','2022-11-26 10:10:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (249,NULL,55,'Subject for Interview','2023-07-14 13:38:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (250,NULL,22,'Subject for Print/Merge Document','2023-05-02 17:41:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (251,NULL,9,'Subject for Tell a Friend','2023-04-22 04:20:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (252,NULL,55,'Subject for Interview','2022-11-16 20:46:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (253,NULL,9,'Subject for Tell a Friend','2023-06-15 14:05:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (254,NULL,22,'Subject for Print/Merge Document','2023-03-24 13:16:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (255,NULL,55,'Subject for Interview','2023-06-23 17:19:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (256,NULL,9,'Subject for Tell a Friend','2023-06-01 09:08:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (257,NULL,1,'Subject for Meeting','2022-11-06 07:58:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (258,NULL,1,'Subject for Meeting','2023-08-26 04:00:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (259,NULL,55,'Subject for Interview','2023-07-07 17:44:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (260,NULL,1,'Subject for Meeting','2023-06-11 04:35:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (261,NULL,9,'Subject for Tell a Friend','2023-05-21 20:19:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (262,NULL,55,'Subject for Interview','2023-05-21 00:24:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (263,NULL,2,'Subject for Phone Call','2022-11-11 01:45:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (264,NULL,55,'Subject for Interview','2023-02-01 03:16:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (265,NULL,22,'Subject for Print/Merge Document','2023-07-31 03:47:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (266,NULL,55,'Subject for Interview','2023-05-31 07:29:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (267,NULL,2,'Subject for Phone Call','2023-08-13 09:29:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (268,NULL,22,'Subject for Print/Merge Document','2022-12-22 17:12:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (269,NULL,9,'Subject for Tell a Friend','2022-09-20 20:42:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (270,NULL,1,'Subject for Meeting','2023-08-21 19:38:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (271,NULL,9,'Subject for Tell a Friend','2023-05-02 15:17:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (272,NULL,1,'Subject for Meeting','2023-06-13 06:06:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (273,NULL,2,'Subject for Phone Call','2023-01-02 06:29:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (274,NULL,2,'Subject for Phone Call','2023-03-06 15:05:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (275,NULL,55,'Subject for Interview','2023-05-06 12:06:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (276,NULL,1,'Subject for Meeting','2023-07-04 19:03:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (277,NULL,55,'Subject for Interview','2023-05-21 18:09:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (278,NULL,55,'Subject for Interview','2023-05-08 07:17:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (279,NULL,9,'Subject for Tell a Friend','2022-12-29 09:03:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (280,NULL,22,'Subject for Print/Merge Document','2022-10-29 05:33:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (281,NULL,22,'Subject for Print/Merge Document','2023-06-03 11:57:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (282,NULL,1,'Subject for Meeting','2023-06-09 18:39:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (283,NULL,2,'Subject for Phone Call','2023-08-29 20:28:19',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (284,NULL,2,'Subject for Phone Call','2022-12-17 01:59:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (285,NULL,9,'Subject for Tell a Friend','2022-10-30 08:20:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (286,NULL,1,'Subject for Meeting','2023-09-06 01:53:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (287,NULL,55,'Subject for Interview','2023-06-15 02:26:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (288,NULL,9,'Subject for Tell a Friend','2022-09-14 06:17:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (289,NULL,1,'Subject for Meeting','2022-09-25 06:09:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (290,NULL,55,'Subject for Interview','2023-01-19 01:04:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (291,NULL,9,'Subject for Tell a Friend','2023-05-14 09:12:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (292,NULL,1,'Subject for Meeting','2023-01-14 15:36:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (293,NULL,9,'Subject for Tell a Friend','2023-07-16 11:52:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (294,NULL,55,'Subject for Interview','2023-07-06 11:34:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (295,NULL,1,'Subject for Meeting','2023-08-29 08:06:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (296,NULL,9,'Subject for Tell a Friend','2023-07-03 03:04:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (297,NULL,55,'Subject for Interview','2022-10-01 13:26:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (298,NULL,9,'Subject for Tell a Friend','2023-06-13 12:44:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (299,NULL,22,'Subject for Print/Merge Document','2023-05-21 04:47:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (300,NULL,1,'Subject for Meeting','2022-11-24 10:20:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (301,NULL,55,'Subject for Interview','2022-12-19 01:34:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (302,NULL,2,'Subject for Phone Call','2022-11-02 14:12:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (303,NULL,9,'Subject for Tell a Friend','2023-08-02 21:25:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (304,NULL,9,'Subject for Tell a Friend','2022-10-13 02:17:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (305,NULL,55,'Subject for Interview','2022-12-12 14:25:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (306,NULL,9,'Subject for Tell a Friend','2023-07-13 11:50:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (307,NULL,9,'Subject for Tell a Friend','2023-01-05 17:21:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (308,NULL,22,'Subject for Print/Merge Document','2023-07-28 01:30:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (309,NULL,9,'Subject for Tell a Friend','2023-08-02 02:15:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (310,NULL,9,'Subject for Tell a Friend','2023-01-13 14:27:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (311,NULL,1,'Subject for Meeting','2022-10-12 13:12:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (312,NULL,2,'Subject for Phone Call','2023-02-22 05:53:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (313,NULL,55,'Subject for Interview','2022-09-27 09:29:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (314,NULL,55,'Subject for Interview','2023-05-10 19:07:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (315,NULL,55,'Subject for Interview','2023-02-26 07:41:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (316,NULL,1,'Subject for Meeting','2023-06-03 13:01:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:02','2023-09-06 22:14:02'), - (317,NULL,55,'Subject for Interview','2022-10-05 11:13:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (318,NULL,1,'Subject for Meeting','2023-04-29 09:50:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (319,NULL,1,'Subject for Meeting','2023-06-07 05:07:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (320,NULL,2,'Subject for Phone Call','2023-07-21 20:42:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (321,NULL,55,'Subject for Interview','2022-11-09 17:27:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (322,NULL,55,'Subject for Interview','2022-09-27 02:12:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (323,NULL,1,'Subject for Meeting','2023-07-11 22:15:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (324,NULL,9,'Subject for Tell a Friend','2022-12-30 18:24:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (325,NULL,9,'Subject for Tell a Friend','2022-10-30 02:27:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (326,NULL,2,'Subject for Phone Call','2023-02-23 03:25:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (327,NULL,22,'Subject for Print/Merge Document','2023-03-02 15:25:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (328,NULL,2,'Subject for Phone Call','2023-06-29 10:33:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (329,NULL,9,'Subject for Tell a Friend','2023-02-01 06:24:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (330,NULL,22,'Subject for Print/Merge Document','2022-09-22 10:44:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (331,NULL,22,'Subject for Print/Merge Document','2023-04-08 17:20:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (332,NULL,55,'Subject for Interview','2023-02-26 03:54:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (333,NULL,22,'Subject for Print/Merge Document','2022-09-24 12:00:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (334,NULL,1,'Subject for Meeting','2023-02-09 13:55:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (335,NULL,22,'Subject for Print/Merge Document','2023-09-03 18:49:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (336,NULL,2,'Subject for Phone Call','2023-06-28 19:09:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (337,NULL,55,'Subject for Interview','2023-07-23 15:46:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (338,NULL,55,'Subject for Interview','2023-06-27 01:02:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (339,NULL,1,'Subject for Meeting','2022-09-10 11:16:14',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (340,NULL,55,'Subject for Interview','2023-03-20 14:26:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (341,NULL,22,'Subject for Print/Merge Document','2023-03-31 06:40:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (342,NULL,55,'Subject for Interview','2023-06-04 14:43:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (343,NULL,2,'Subject for Phone Call','2023-04-06 07:45:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (344,NULL,9,'Subject for Tell a Friend','2022-10-01 17:38:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (345,NULL,1,'Subject for Meeting','2023-08-22 06:00:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (346,NULL,2,'Subject for Phone Call','2023-03-25 02:03:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (347,NULL,2,'Subject for Phone Call','2023-05-19 02:10:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (348,NULL,9,'Subject for Tell a Friend','2022-09-18 01:29:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (349,NULL,2,'Subject for Phone Call','2023-08-11 10:07:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (350,NULL,9,'Subject for Tell a Friend','2023-05-18 11:11:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (351,NULL,1,'Subject for Meeting','2022-12-01 16:33:17',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (352,NULL,9,'Subject for Tell a Friend','2023-09-07 02:33:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (353,NULL,22,'Subject for Print/Merge Document','2023-03-15 10:33:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (354,NULL,1,'Subject for Meeting','2022-10-19 21:47:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (355,NULL,1,'Subject for Meeting','2023-04-21 03:06:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (356,NULL,9,'Subject for Tell a Friend','2022-09-28 19:20:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (357,NULL,2,'Subject for Phone Call','2022-09-12 02:15:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (358,NULL,1,'Subject for Meeting','2023-07-29 13:53:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (359,NULL,55,'Subject for Interview','2023-08-07 13:37:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (360,NULL,22,'Subject for Print/Merge Document','2023-02-16 07:34:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (361,NULL,22,'Subject for Print/Merge Document','2023-01-01 20:04:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (362,NULL,55,'Subject for Interview','2022-12-06 09:14:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (363,NULL,2,'Subject for Phone Call','2022-11-08 19:01:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (364,NULL,22,'Subject for Print/Merge Document','2023-01-03 15:30:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (365,NULL,55,'Subject for Interview','2023-02-25 16:15:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (366,NULL,2,'Subject for Phone Call','2023-03-06 14:27:42',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (367,NULL,2,'Subject for Phone Call','2023-02-12 05:58:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (368,NULL,1,'Subject for Meeting','2023-08-30 10:52:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (369,NULL,2,'Subject for Phone Call','2022-09-30 03:49:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (370,NULL,1,'Subject for Meeting','2022-10-07 19:44:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (371,NULL,2,'Subject for Phone Call','2023-03-11 00:06:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (372,NULL,1,'Subject for Meeting','2023-07-25 11:08:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (373,NULL,9,'Subject for Tell a Friend','2023-03-11 15:47:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (374,NULL,9,'Subject for Tell a Friend','2022-10-07 13:57:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (375,NULL,1,'Subject for Meeting','2023-04-18 04:01:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (376,NULL,9,'Subject for Tell a Friend','2023-06-29 13:43:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (377,NULL,9,'Subject for Tell a Friend','2023-03-11 08:56:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (378,NULL,2,'Subject for Phone Call','2022-12-12 15:54:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (379,NULL,55,'Subject for Interview','2023-02-09 08:03:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (380,NULL,9,'Subject for Tell a Friend','2023-02-13 06:39:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (381,NULL,1,'Subject for Meeting','2023-01-24 04:41:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (382,NULL,9,'Subject for Tell a Friend','2022-11-22 02:42:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (383,NULL,2,'Subject for Phone Call','2023-06-21 01:20:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (384,NULL,2,'Subject for Phone Call','2023-02-01 09:07:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (385,NULL,1,'Subject for Meeting','2023-01-13 17:00:06',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (386,NULL,2,'Subject for Phone Call','2022-10-26 16:39:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (387,NULL,22,'Subject for Print/Merge Document','2023-08-16 18:56:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (388,NULL,1,'Subject for Meeting','2022-12-18 13:19:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (389,NULL,1,'Subject for Meeting','2023-03-07 14:13:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (390,NULL,9,'Subject for Tell a Friend','2023-06-07 18:31:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (391,NULL,9,'Subject for Tell a Friend','2023-02-11 15:09:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (392,NULL,9,'Subject for Tell a Friend','2022-11-14 11:53:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (393,NULL,9,'Subject for Tell a Friend','2023-04-06 14:17:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (394,NULL,55,'Subject for Interview','2023-06-08 07:05:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (395,NULL,9,'Subject for Tell a Friend','2023-04-05 04:19:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (396,NULL,22,'Subject for Print/Merge Document','2023-03-07 08:32:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (397,NULL,22,'Subject for Print/Merge Document','2023-04-29 20:30:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (398,NULL,1,'Subject for Meeting','2023-03-19 19:56:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (399,NULL,22,'Subject for Print/Merge Document','2023-08-01 17:49:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (400,NULL,9,'Subject for Tell a Friend','2023-09-06 10:28:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (401,NULL,2,'Subject for Phone Call','2023-01-29 12:10:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (402,NULL,1,'Subject for Meeting','2023-04-28 12:35:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (403,NULL,22,'Subject for Print/Merge Document','2022-12-30 13:06:48',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (404,NULL,22,'Subject for Print/Merge Document','2023-04-08 21:03:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (405,NULL,55,'Subject for Interview','2023-08-01 02:33:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (406,NULL,22,'Subject for Print/Merge Document','2023-05-08 12:57:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (407,NULL,9,'Subject for Tell a Friend','2023-03-21 01:26:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (408,NULL,1,'Subject for Meeting','2022-10-22 02:42:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (409,NULL,22,'Subject for Print/Merge Document','2022-11-11 18:22:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (410,NULL,55,'Subject for Interview','2022-10-01 22:00:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (411,NULL,22,'Subject for Print/Merge Document','2023-01-10 15:00:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (412,NULL,22,'Subject for Print/Merge Document','2023-08-09 01:38:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (413,NULL,9,'Subject for Tell a Friend','2023-02-24 19:39:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (414,NULL,2,'Subject for Phone Call','2023-07-10 08:57:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (415,NULL,2,'Subject for Phone Call','2023-05-13 15:26:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (416,NULL,1,'Subject for Meeting','2022-10-01 20:13:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (417,NULL,9,'Subject for Tell a Friend','2022-10-09 05:22:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (418,NULL,1,'Subject for Meeting','2023-04-19 16:49:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (419,NULL,22,'Subject for Print/Merge Document','2023-02-02 19:09:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (420,NULL,22,'Subject for Print/Merge Document','2023-01-20 15:41:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (421,NULL,9,'Subject for Tell a Friend','2022-10-05 02:08:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (422,NULL,22,'Subject for Print/Merge Document','2023-08-05 18:24:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (423,NULL,9,'Subject for Tell a Friend','2023-06-30 14:23:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (424,NULL,1,'Subject for Meeting','2023-06-22 14:12:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (425,NULL,55,'Subject for Interview','2022-12-24 19:26:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (426,NULL,1,'Subject for Meeting','2023-02-03 10:08:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (427,NULL,9,'Subject for Tell a Friend','2023-02-08 16:42:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (428,NULL,1,'Subject for Meeting','2023-06-26 09:04:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (429,NULL,1,'Subject for Meeting','2023-03-30 02:31:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (430,NULL,2,'Subject for Phone Call','2023-08-18 03:54:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (431,NULL,1,'Subject for Meeting','2023-06-10 07:13:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (432,NULL,1,'Subject for Meeting','2023-08-09 08:01:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (433,NULL,22,'Subject for Print/Merge Document','2023-04-17 01:31:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (434,NULL,9,'Subject for Tell a Friend','2022-10-29 10:52:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (435,NULL,1,'Subject for Meeting','2023-01-01 01:17:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (436,NULL,22,'Subject for Print/Merge Document','2023-05-25 11:51:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (437,NULL,2,'Subject for Phone Call','2023-03-15 15:58:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (438,NULL,1,'Subject for Meeting','2023-03-30 02:21:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (439,NULL,55,'Subject for Interview','2022-12-21 01:49:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (440,NULL,9,'Subject for Tell a Friend','2023-03-07 14:01:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (441,NULL,55,'Subject for Interview','2022-09-10 05:25:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (442,NULL,55,'Subject for Interview','2023-01-12 15:39:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (443,NULL,1,'Subject for Meeting','2023-03-10 01:19:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (444,NULL,1,'Subject for Meeting','2023-04-29 11:42:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (445,NULL,55,'Subject for Interview','2023-05-08 12:19:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (446,NULL,22,'Subject for Print/Merge Document','2022-10-27 16:21:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (447,NULL,2,'Subject for Phone Call','2023-07-23 15:57:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (448,NULL,2,'Subject for Phone Call','2023-05-18 09:23:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (449,NULL,55,'Subject for Interview','2022-09-29 08:03:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (450,NULL,9,'Subject for Tell a Friend','2022-11-20 07:54:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (451,1,6,'$ 125 April Mailer 1','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (452,2,6,'$ 50 Online: Save the Penguins','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (453,3,6,'£ 25 April Mailer 1','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (454,4,6,'$ 50 Online: Save the Penguins','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (455,5,6,'$ 50 Online: Save the Penguins','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (456,6,6,'$ 500 April Mailer 1','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (457,7,6,'$ 1750 Online: Save the Penguins','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (458,8,6,'$ 50 Online: Save the Penguins','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (459,9,6,'$ 10 Online: Help CiviCRM','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (460,10,6,'$ 250 Online: Help CiviCRM','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (461,11,6,'Â¥ 500 ','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (462,12,6,'$ 50 Online: Save the Penguins','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (463,13,6,'$ 50 ','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (464,14,6,'$ 50 ','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (465,15,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (466,16,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (467,17,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (468,18,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (469,19,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (470,20,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (471,21,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (472,22,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (473,23,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (474,24,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (475,25,6,'$ 25 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (476,26,6,'$ 10 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (477,27,6,'$ 10 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (478,28,6,'$ 10 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (479,29,6,'$ 10 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (480,30,6,'$ 10 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (481,31,6,'€ 5 Recurring contribution','2023-11-07 08:14:03',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (482,1,7,'General','2023-09-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-09-06 22:14:03','2023-09-06 22:14:03'), - (483,2,7,'Student','2023-09-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-09-06 22:14:03','2023-09-06 22:14:03'), - (484,3,7,'General','2023-09-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-09-06 22:14:03','2023-09-06 22:14:03'), - (485,4,7,'Student','2023-09-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-09-06 22:14:03','2023-09-06 22:14:03'), - (486,5,7,'Student','2022-09-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-09-06 22:14:03','2023-09-06 22:14:03'), - (487,6,7,'Student','2023-09-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-09-06 22:14:03','2023-09-06 22:14:03'), - (488,7,7,'General','2023-09-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-09-06 22:14:03','2023-09-06 22:14:03'), - (489,8,7,'Student','2023-08-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (490,9,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (491,10,7,'Student','2022-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (492,11,7,'Lifetime','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (493,12,7,'Student','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (494,13,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (495,14,7,'Student','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (496,15,7,'General','2021-05-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-09-06 22:14:03','2023-09-06 22:14:03'), - (497,16,7,'Student','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (498,17,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (499,18,7,'Student','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (500,19,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (501,20,7,'Student','2022-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (502,21,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (503,22,7,'Lifetime','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (504,23,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (505,24,7,'Student','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (506,25,7,'Student','2022-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (507,26,7,'Student','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (508,27,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (509,28,7,'Student','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (510,29,7,'General','2023-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (511,30,7,'Student','2022-08-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-09-06 22:14:03','2023-09-06 22:14:03'), - (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (516,36,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (521,41,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (541,61,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:14:03',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:03','2023-09-06 22:14:03'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (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-09-06 22:14:04','2023-09-06 22:14:04'), - (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'), - (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:14:04',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:14:04','2023-09-06 22:14:04'); + (1,NULL,2,'Subject for Phone Call','2022-10-07 17:04:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (2,NULL,1,'Subject for Meeting','2023-01-29 08:33:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (3,NULL,9,'Subject for Tell a Friend','2023-02-04 20:31:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (4,NULL,2,'Subject for Phone Call','2023-01-05 14:28:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (5,NULL,2,'Subject for Phone Call','2022-09-20 11:44:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (6,NULL,22,'Subject for Print/Merge Document','2022-12-25 05:37:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (7,NULL,9,'Subject for Tell a Friend','2023-06-12 00:41:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (8,NULL,56,'Subject for Interview','2022-10-12 05:55:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (9,NULL,56,'Subject for Interview','2022-10-12 19:41:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (10,NULL,2,'Subject for Phone Call','2022-09-20 03:45:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (11,NULL,1,'Subject for Meeting','2023-04-26 22:59:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (12,NULL,56,'Subject for Interview','2023-08-17 21:30:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (13,NULL,9,'Subject for Tell a Friend','2023-04-27 23:57:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (14,NULL,9,'Subject for Tell a Friend','2023-09-06 22:01:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (15,NULL,1,'Subject for Meeting','2022-11-02 02:14:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (16,NULL,9,'Subject for Tell a Friend','2022-09-21 20:54:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (17,NULL,56,'Subject for Interview','2023-06-05 09:36:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (18,NULL,1,'Subject for Meeting','2023-08-03 14:59:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (19,NULL,9,'Subject for Tell a Friend','2022-10-30 17:15:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (20,NULL,1,'Subject for Meeting','2023-01-26 23:46:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (21,NULL,22,'Subject for Print/Merge Document','2023-03-18 23:00:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (22,NULL,9,'Subject for Tell a Friend','2023-04-27 17:58:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (23,NULL,56,'Subject for Interview','2022-11-18 21:15:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (24,NULL,1,'Subject for Meeting','2023-01-19 17:44:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (25,NULL,9,'Subject for Tell a Friend','2022-09-26 06:04:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (26,NULL,1,'Subject for Meeting','2023-07-20 03:35:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (27,NULL,1,'Subject for Meeting','2022-10-14 20:23:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (28,NULL,1,'Subject for Meeting','2023-05-10 13:03:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (29,NULL,56,'Subject for Interview','2022-12-27 04:57:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (30,NULL,2,'Subject for Phone Call','2023-03-22 23:53:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (31,NULL,1,'Subject for Meeting','2023-04-04 08:59:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (32,NULL,9,'Subject for Tell a Friend','2022-12-19 08:32:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (33,NULL,9,'Subject for Tell a Friend','2023-08-14 01:53:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (34,NULL,2,'Subject for Phone Call','2023-06-02 15:10:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (35,NULL,2,'Subject for Phone Call','2023-02-14 07:52:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (36,NULL,2,'Subject for Phone Call','2022-12-11 22:55:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (37,NULL,56,'Subject for Interview','2023-05-22 15:07:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (38,NULL,1,'Subject for Meeting','2023-03-26 13:19:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (39,NULL,2,'Subject for Phone Call','2023-01-15 01:11:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (40,NULL,1,'Subject for Meeting','2023-07-03 14:43:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (41,NULL,2,'Subject for Phone Call','2022-12-22 20:55:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (42,NULL,56,'Subject for Interview','2023-08-25 16:45:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (43,NULL,2,'Subject for Phone Call','2023-07-07 15:38:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (44,NULL,2,'Subject for Phone Call','2023-01-29 11:22:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (45,NULL,22,'Subject for Print/Merge Document','2022-09-22 13:46:20',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (46,NULL,22,'Subject for Print/Merge Document','2023-04-10 15:58:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (47,NULL,22,'Subject for Print/Merge Document','2023-08-08 04:59:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (48,NULL,9,'Subject for Tell a Friend','2023-01-25 07:38:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (49,NULL,56,'Subject for Interview','2023-01-20 10:33:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (50,NULL,2,'Subject for Phone Call','2023-05-11 19:41:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (51,NULL,22,'Subject for Print/Merge Document','2022-12-21 03:19:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (52,NULL,1,'Subject for Meeting','2023-03-15 01:52:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (53,NULL,56,'Subject for Interview','2023-08-17 12:19:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (54,NULL,1,'Subject for Meeting','2022-12-04 08:40:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (55,NULL,1,'Subject for Meeting','2023-05-08 15:10:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (56,NULL,22,'Subject for Print/Merge Document','2023-05-24 04:15:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (57,NULL,1,'Subject for Meeting','2023-03-10 12:19:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (58,NULL,22,'Subject for Print/Merge Document','2023-08-04 18:16:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (59,NULL,9,'Subject for Tell a Friend','2023-02-13 06:25:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (60,NULL,1,'Subject for Meeting','2023-07-17 16:35:20',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (61,NULL,56,'Subject for Interview','2023-08-03 21:34:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (62,NULL,2,'Subject for Phone Call','2022-10-25 03:56:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (63,NULL,2,'Subject for Phone Call','2023-06-10 02:17:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (64,NULL,56,'Subject for Interview','2023-04-05 05:01:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (65,NULL,56,'Subject for Interview','2022-10-22 18:54:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (66,NULL,22,'Subject for Print/Merge Document','2022-09-22 17:32:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (67,NULL,22,'Subject for Print/Merge Document','2023-01-12 04:53:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (68,NULL,22,'Subject for Print/Merge Document','2022-11-21 09:14:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (69,NULL,1,'Subject for Meeting','2022-11-19 18:44:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (70,NULL,2,'Subject for Phone Call','2023-01-09 08:36:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (71,NULL,1,'Subject for Meeting','2022-12-28 14:56:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (72,NULL,56,'Subject for Interview','2023-03-06 01:10:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (73,NULL,9,'Subject for Tell a Friend','2023-02-07 14:14:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (74,NULL,56,'Subject for Interview','2023-04-25 00:27:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (75,NULL,22,'Subject for Print/Merge Document','2023-05-03 22:49:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (76,NULL,9,'Subject for Tell a Friend','2022-12-04 20:14:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (77,NULL,1,'Subject for Meeting','2023-06-11 20:40:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (78,NULL,22,'Subject for Print/Merge Document','2022-10-08 05:33:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (79,NULL,56,'Subject for Interview','2023-02-17 05:32:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (80,NULL,22,'Subject for Print/Merge Document','2023-01-21 13:35:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (81,NULL,9,'Subject for Tell a Friend','2023-02-23 11:28:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (82,NULL,9,'Subject for Tell a Friend','2023-06-16 22:53:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (83,NULL,1,'Subject for Meeting','2023-03-09 02:57:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (84,NULL,2,'Subject for Phone Call','2023-03-04 03:15:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (85,NULL,9,'Subject for Tell a Friend','2023-08-28 12:49:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (86,NULL,9,'Subject for Tell a Friend','2023-02-18 12:32:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (87,NULL,9,'Subject for Tell a Friend','2022-09-27 20:58:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (88,NULL,2,'Subject for Phone Call','2023-07-15 11:11:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (89,NULL,9,'Subject for Tell a Friend','2023-01-19 03:03:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (90,NULL,1,'Subject for Meeting','2022-10-22 10:10:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (91,NULL,56,'Subject for Interview','2023-05-06 15:26:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (92,NULL,56,'Subject for Interview','2022-11-16 07:12:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (93,NULL,9,'Subject for Tell a Friend','2023-06-12 01:37:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (94,NULL,22,'Subject for Print/Merge Document','2022-10-18 01:26:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (95,NULL,22,'Subject for Print/Merge Document','2023-03-31 21:52:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (96,NULL,56,'Subject for Interview','2023-01-06 02:37:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (97,NULL,1,'Subject for Meeting','2023-09-04 08:17:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (98,NULL,2,'Subject for Phone Call','2023-03-21 07:41:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (99,NULL,2,'Subject for Phone Call','2023-01-27 20:45:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (100,NULL,22,'Subject for Print/Merge Document','2022-11-19 16:39:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (101,NULL,1,'Subject for Meeting','2023-06-07 09:30:52',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (102,NULL,2,'Subject for Phone Call','2023-05-13 17:03:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (103,NULL,9,'Subject for Tell a Friend','2022-09-30 18:51:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (104,NULL,56,'Subject for Interview','2022-12-13 01:31:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (105,NULL,1,'Subject for Meeting','2023-07-25 02:01:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (106,NULL,1,'Subject for Meeting','2023-01-07 13:06:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (107,NULL,56,'Subject for Interview','2023-03-26 19:03:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (108,NULL,2,'Subject for Phone Call','2023-03-18 20:56:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (109,NULL,1,'Subject for Meeting','2022-12-14 16:03:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (110,NULL,9,'Subject for Tell a Friend','2023-08-15 03:30:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (111,NULL,9,'Subject for Tell a Friend','2023-01-20 04:14:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (112,NULL,1,'Subject for Meeting','2023-04-01 14:10:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (113,NULL,22,'Subject for Print/Merge Document','2023-05-03 10:18:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (114,NULL,9,'Subject for Tell a Friend','2023-08-18 07:08:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (115,NULL,2,'Subject for Phone Call','2023-05-19 20:57:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (116,NULL,56,'Subject for Interview','2022-09-22 00:30:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (117,NULL,1,'Subject for Meeting','2023-07-16 19:03:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (118,NULL,1,'Subject for Meeting','2022-12-22 12:57:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (119,NULL,2,'Subject for Phone Call','2023-03-10 22:54:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (120,NULL,56,'Subject for Interview','2023-02-04 19:32:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (121,NULL,1,'Subject for Meeting','2023-05-29 15:01:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (122,NULL,9,'Subject for Tell a Friend','2023-01-29 09:50:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (123,NULL,22,'Subject for Print/Merge Document','2023-03-31 13:19:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (124,NULL,22,'Subject for Print/Merge Document','2022-09-12 13:13:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (125,NULL,2,'Subject for Phone Call','2023-05-26 20:38:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (126,NULL,2,'Subject for Phone Call','2023-04-22 06:59:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (127,NULL,1,'Subject for Meeting','2022-09-29 04:55:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (128,NULL,9,'Subject for Tell a Friend','2023-07-29 08:37:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (129,NULL,2,'Subject for Phone Call','2023-08-20 00:10:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (130,NULL,1,'Subject for Meeting','2022-11-23 09:04:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (131,NULL,56,'Subject for Interview','2023-04-10 16:25:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (132,NULL,56,'Subject for Interview','2023-02-04 10:34:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (133,NULL,9,'Subject for Tell a Friend','2023-07-19 00:40:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (134,NULL,22,'Subject for Print/Merge Document','2022-12-07 00:52:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (135,NULL,9,'Subject for Tell a Friend','2023-06-04 21:04:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (136,NULL,2,'Subject for Phone Call','2022-10-05 20:23:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (137,NULL,2,'Subject for Phone Call','2023-03-20 23:12:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (138,NULL,1,'Subject for Meeting','2023-02-28 01:48:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (139,NULL,56,'Subject for Interview','2023-06-10 06:04:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (140,NULL,22,'Subject for Print/Merge Document','2023-03-09 13:54:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (141,NULL,1,'Subject for Meeting','2023-05-06 20:54:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (142,NULL,56,'Subject for Interview','2023-06-24 07:48:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (143,NULL,2,'Subject for Phone Call','2023-05-12 03:41:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (144,NULL,56,'Subject for Interview','2023-06-26 02:26:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (145,NULL,1,'Subject for Meeting','2023-06-29 04:16:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (146,NULL,1,'Subject for Meeting','2023-04-14 19:01:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (147,NULL,1,'Subject for Meeting','2022-12-12 14:15:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (148,NULL,56,'Subject for Interview','2022-12-02 05:00:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (149,NULL,9,'Subject for Tell a Friend','2023-07-26 00:44:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (150,NULL,2,'Subject for Phone Call','2023-05-29 03:13:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (151,NULL,56,'Subject for Interview','2023-02-14 11:48:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (152,NULL,1,'Subject for Meeting','2023-05-17 00:50:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (153,NULL,22,'Subject for Print/Merge Document','2023-09-03 21:42:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (154,NULL,2,'Subject for Phone Call','2023-03-02 02:37:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (155,NULL,56,'Subject for Interview','2023-08-04 22:20:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (156,NULL,1,'Subject for Meeting','2023-09-02 12:59:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (157,NULL,1,'Subject for Meeting','2023-02-03 00:32:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (158,NULL,56,'Subject for Interview','2022-10-08 14:12:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (159,NULL,9,'Subject for Tell a Friend','2023-07-29 20:59:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (160,NULL,56,'Subject for Interview','2023-08-30 01:47:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (161,NULL,9,'Subject for Tell a Friend','2022-10-21 13:20:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (162,NULL,1,'Subject for Meeting','2023-07-31 18:59:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (163,NULL,56,'Subject for Interview','2023-04-11 21:16:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (164,NULL,56,'Subject for Interview','2023-05-11 14:58:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (165,NULL,56,'Subject for Interview','2022-10-21 20:15:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (166,NULL,56,'Subject for Interview','2022-10-17 06:45:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (167,NULL,9,'Subject for Tell a Friend','2022-10-08 03:33:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (168,NULL,56,'Subject for Interview','2023-07-14 07:45:18',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (169,NULL,56,'Subject for Interview','2023-05-15 19:19:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (170,NULL,9,'Subject for Tell a Friend','2023-09-04 12:47:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (171,NULL,22,'Subject for Print/Merge Document','2023-07-05 07:43:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (172,NULL,56,'Subject for Interview','2023-07-12 17:55:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (173,NULL,56,'Subject for Interview','2023-01-26 01:32:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (174,NULL,22,'Subject for Print/Merge Document','2023-08-31 14:08:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (175,NULL,56,'Subject for Interview','2023-08-24 12:56:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (176,NULL,22,'Subject for Print/Merge Document','2022-11-30 06:34:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (177,NULL,1,'Subject for Meeting','2023-01-03 08:23:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (178,NULL,9,'Subject for Tell a Friend','2022-12-10 04:37:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (179,NULL,22,'Subject for Print/Merge Document','2022-11-18 19:27:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (180,NULL,22,'Subject for Print/Merge Document','2023-09-03 10:13:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (181,NULL,2,'Subject for Phone Call','2022-12-30 02:36:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (182,NULL,9,'Subject for Tell a Friend','2022-10-02 04:21:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (183,NULL,9,'Subject for Tell a Friend','2023-02-25 22:54:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (184,NULL,2,'Subject for Phone Call','2023-04-25 16:48:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (185,NULL,2,'Subject for Phone Call','2023-06-30 18:45:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (186,NULL,2,'Subject for Phone Call','2022-09-12 18:36:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (187,NULL,9,'Subject for Tell a Friend','2023-03-04 05:55:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (188,NULL,9,'Subject for Tell a Friend','2023-01-04 01:51:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (189,NULL,22,'Subject for Print/Merge Document','2023-01-08 18:19:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (190,NULL,56,'Subject for Interview','2022-12-15 18:58:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (191,NULL,1,'Subject for Meeting','2023-03-30 15:19:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (192,NULL,22,'Subject for Print/Merge Document','2023-07-02 15:02:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (193,NULL,56,'Subject for Interview','2023-03-23 17:12:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (194,NULL,56,'Subject for Interview','2023-04-30 18:33:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (195,NULL,9,'Subject for Tell a Friend','2022-10-26 01:24:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (196,NULL,22,'Subject for Print/Merge Document','2022-12-06 00:39:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (197,NULL,9,'Subject for Tell a Friend','2022-12-12 09:57:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (198,NULL,1,'Subject for Meeting','2023-05-16 07:55:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (199,NULL,9,'Subject for Tell a Friend','2022-11-23 10:09:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (200,NULL,22,'Subject for Print/Merge Document','2023-07-04 10:30:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (201,NULL,22,'Subject for Print/Merge Document','2022-10-05 11:28:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (202,NULL,9,'Subject for Tell a Friend','2023-08-07 22:29:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (203,NULL,56,'Subject for Interview','2022-12-19 05:55:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (204,NULL,9,'Subject for Tell a Friend','2023-05-11 02:58:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (205,NULL,1,'Subject for Meeting','2023-01-05 09:07:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (206,NULL,2,'Subject for Phone Call','2023-06-07 11:05:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (207,NULL,56,'Subject for Interview','2023-01-22 12:00:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (208,NULL,2,'Subject for Phone Call','2023-04-14 05:30:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (209,NULL,1,'Subject for Meeting','2023-08-15 23:59:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (210,NULL,9,'Subject for Tell a Friend','2022-12-20 17:41:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (211,NULL,2,'Subject for Phone Call','2022-11-20 11:52:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (212,NULL,1,'Subject for Meeting','2022-11-01 10:01:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (213,NULL,56,'Subject for Interview','2023-05-20 18:18:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (214,NULL,9,'Subject for Tell a Friend','2023-03-14 21:20:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (215,NULL,22,'Subject for Print/Merge Document','2023-01-07 04:29:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (216,NULL,22,'Subject for Print/Merge Document','2022-11-08 02:30:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (217,NULL,2,'Subject for Phone Call','2022-12-18 20:51:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (218,NULL,56,'Subject for Interview','2022-09-25 12:10:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (219,NULL,9,'Subject for Tell a Friend','2023-04-10 00:37:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (220,NULL,56,'Subject for Interview','2023-04-17 17:50:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (221,NULL,22,'Subject for Print/Merge Document','2023-02-23 18:49:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (222,NULL,1,'Subject for Meeting','2023-04-28 01:56:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (223,NULL,22,'Subject for Print/Merge Document','2022-12-19 05:40:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (224,NULL,56,'Subject for Interview','2023-08-08 16:23:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (225,NULL,1,'Subject for Meeting','2022-12-26 04:57:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (226,NULL,1,'Subject for Meeting','2023-05-30 13:20:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (227,NULL,22,'Subject for Print/Merge Document','2023-01-19 17:30:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (228,NULL,2,'Subject for Phone Call','2023-03-27 05:06:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (229,NULL,22,'Subject for Print/Merge Document','2023-09-01 21:28:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (230,NULL,1,'Subject for Meeting','2023-05-09 15:16:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (231,NULL,56,'Subject for Interview','2023-05-19 17:33:17',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (232,NULL,56,'Subject for Interview','2023-09-06 02:42:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (233,NULL,9,'Subject for Tell a Friend','2023-08-20 17:46:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (234,NULL,2,'Subject for Phone Call','2022-09-08 19:59:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (235,NULL,22,'Subject for Print/Merge Document','2023-06-30 23:11:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (236,NULL,9,'Subject for Tell a Friend','2023-08-06 21:01:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (237,NULL,2,'Subject for Phone Call','2022-11-03 22:09:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (238,NULL,1,'Subject for Meeting','2022-09-12 10:23:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (239,NULL,1,'Subject for Meeting','2023-09-03 07:54:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (240,NULL,9,'Subject for Tell a Friend','2023-05-21 16:17:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (241,NULL,9,'Subject for Tell a Friend','2022-09-10 23:09:58',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (242,NULL,2,'Subject for Phone Call','2023-01-23 02:16:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (243,NULL,22,'Subject for Print/Merge Document','2022-09-08 20:28:22',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (244,NULL,22,'Subject for Print/Merge Document','2023-03-25 16:37:39',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (245,NULL,56,'Subject for Interview','2022-10-08 01:16:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (246,NULL,56,'Subject for Interview','2023-02-28 16:51:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (247,NULL,2,'Subject for Phone Call','2023-04-27 21:28:07',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (248,NULL,1,'Subject for Meeting','2023-06-23 02:39:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (249,NULL,56,'Subject for Interview','2022-11-14 09:00:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (250,NULL,9,'Subject for Tell a Friend','2023-07-29 11:04:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (251,NULL,2,'Subject for Phone Call','2022-10-01 08:21:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (252,NULL,2,'Subject for Phone Call','2023-03-22 21:52:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (253,NULL,22,'Subject for Print/Merge Document','2022-12-22 12:07:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (254,NULL,56,'Subject for Interview','2023-06-08 02:51:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (255,NULL,2,'Subject for Phone Call','2023-05-24 01:56:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (256,NULL,9,'Subject for Tell a Friend','2023-02-27 07:47:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (257,NULL,9,'Subject for Tell a Friend','2023-06-14 07:26:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (258,NULL,22,'Subject for Print/Merge Document','2023-01-10 14:04:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (259,NULL,1,'Subject for Meeting','2023-02-01 12:36:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (260,NULL,1,'Subject for Meeting','2023-05-18 19:38:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (261,NULL,56,'Subject for Interview','2023-06-30 07:19:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (262,NULL,1,'Subject for Meeting','2022-11-14 21:29:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (263,NULL,22,'Subject for Print/Merge Document','2023-07-13 23:23:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (264,NULL,22,'Subject for Print/Merge Document','2023-03-18 13:59:45',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (265,NULL,22,'Subject for Print/Merge Document','2023-07-25 10:43:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (266,NULL,56,'Subject for Interview','2023-04-25 22:52:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (267,NULL,22,'Subject for Print/Merge Document','2023-08-19 10:42:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (268,NULL,9,'Subject for Tell a Friend','2023-04-13 03:20:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (269,NULL,1,'Subject for Meeting','2023-05-27 18:51:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (270,NULL,1,'Subject for Meeting','2023-03-22 21:52:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (271,NULL,1,'Subject for Meeting','2022-09-21 12:19:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (272,NULL,9,'Subject for Tell a Friend','2023-08-19 12:02:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (273,NULL,1,'Subject for Meeting','2023-05-08 21:33:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (274,NULL,22,'Subject for Print/Merge Document','2023-04-24 22:20:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (275,NULL,2,'Subject for Phone Call','2022-09-30 15:42:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (276,NULL,9,'Subject for Tell a Friend','2023-03-12 07:55:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (277,NULL,1,'Subject for Meeting','2023-07-22 00:06:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (278,NULL,22,'Subject for Print/Merge Document','2022-09-08 10:41:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (279,NULL,9,'Subject for Tell a Friend','2023-08-16 11:15:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (280,NULL,2,'Subject for Phone Call','2023-03-15 15:46:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (281,NULL,9,'Subject for Tell a Friend','2022-11-02 16:51:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (282,NULL,2,'Subject for Phone Call','2023-05-19 10:31:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (283,NULL,2,'Subject for Phone Call','2023-02-11 05:02:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (284,NULL,2,'Subject for Phone Call','2022-09-24 14:23:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (285,NULL,56,'Subject for Interview','2022-11-27 14:18:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (286,NULL,56,'Subject for Interview','2022-09-24 17:20:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (287,NULL,22,'Subject for Print/Merge Document','2023-08-20 18:27:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (288,NULL,2,'Subject for Phone Call','2023-08-12 19:30:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (289,NULL,22,'Subject for Print/Merge Document','2023-02-18 15:39:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (290,NULL,22,'Subject for Print/Merge Document','2023-04-15 19:50:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (291,NULL,9,'Subject for Tell a Friend','2023-04-15 17:33:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (292,NULL,2,'Subject for Phone Call','2023-06-18 10:23:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (293,NULL,56,'Subject for Interview','2023-01-27 03:45:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (294,NULL,1,'Subject for Meeting','2022-11-01 20:15:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (295,NULL,2,'Subject for Phone Call','2023-04-06 13:16:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (296,NULL,9,'Subject for Tell a Friend','2023-08-27 08:40:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (297,NULL,1,'Subject for Meeting','2023-05-19 18:21:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (298,NULL,56,'Subject for Interview','2022-09-26 17:45:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (299,NULL,9,'Subject for Tell a Friend','2023-07-29 02:53:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (300,NULL,1,'Subject for Meeting','2022-09-29 02:02:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (301,NULL,22,'Subject for Print/Merge Document','2023-05-05 17:25:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (302,NULL,2,'Subject for Phone Call','2023-05-08 09:50:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (303,NULL,1,'Subject for Meeting','2022-09-11 02:26:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (304,NULL,56,'Subject for Interview','2023-05-17 07:51:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (305,NULL,56,'Subject for Interview','2023-06-06 21:07:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (306,NULL,9,'Subject for Tell a Friend','2023-03-06 21:15:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (307,NULL,56,'Subject for Interview','2022-09-12 16:38:17',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (308,NULL,22,'Subject for Print/Merge Document','2023-02-10 18:15:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (309,NULL,9,'Subject for Tell a Friend','2022-09-08 13:16:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (310,NULL,22,'Subject for Print/Merge Document','2023-06-16 08:16:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (311,NULL,22,'Subject for Print/Merge Document','2023-04-08 01:16:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (312,NULL,56,'Subject for Interview','2022-10-06 17:53:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (313,NULL,56,'Subject for Interview','2023-02-03 19:45:11',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (314,NULL,56,'Subject for Interview','2023-07-06 01:44:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (315,NULL,9,'Subject for Tell a Friend','2023-02-11 04:43:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (316,NULL,22,'Subject for Print/Merge Document','2023-05-02 11:24:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (317,NULL,2,'Subject for Phone Call','2022-10-05 08:19:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (318,NULL,9,'Subject for Tell a Friend','2023-05-05 06:09:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (319,NULL,56,'Subject for Interview','2023-06-16 12:30:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (320,NULL,22,'Subject for Print/Merge Document','2022-12-07 12:58:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (321,NULL,56,'Subject for Interview','2023-08-01 18:28:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (322,NULL,2,'Subject for Phone Call','2023-05-08 23:28:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (323,NULL,2,'Subject for Phone Call','2022-10-23 06:15:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (324,NULL,1,'Subject for Meeting','2022-11-11 16:33:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (325,NULL,56,'Subject for Interview','2023-03-27 21:09:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (326,NULL,2,'Subject for Phone Call','2023-06-23 19:36:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (327,NULL,2,'Subject for Phone Call','2023-06-13 02:49:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (328,NULL,56,'Subject for Interview','2023-01-22 06:49:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (329,NULL,1,'Subject for Meeting','2022-11-02 00:51:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (330,NULL,9,'Subject for Tell a Friend','2022-10-11 09:00:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (331,NULL,22,'Subject for Print/Merge Document','2023-02-23 05:23:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (332,NULL,1,'Subject for Meeting','2023-07-04 04:04:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (333,NULL,2,'Subject for Phone Call','2023-01-07 03:18:04',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (334,NULL,1,'Subject for Meeting','2022-12-09 13:08:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (335,NULL,9,'Subject for Tell a Friend','2023-01-02 07:12:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (336,NULL,56,'Subject for Interview','2022-10-05 10:11:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (337,NULL,56,'Subject for Interview','2023-07-07 16:46:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (338,NULL,22,'Subject for Print/Merge Document','2023-09-03 01:20:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (339,NULL,1,'Subject for Meeting','2023-04-22 17:48:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (340,NULL,9,'Subject for Tell a Friend','2023-04-13 07:23:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (341,NULL,9,'Subject for Tell a Friend','2023-06-30 09:33:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (342,NULL,22,'Subject for Print/Merge Document','2022-11-02 02:02:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (343,NULL,2,'Subject for Phone Call','2023-03-07 08:50:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (344,NULL,22,'Subject for Print/Merge Document','2023-08-23 17:51:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (345,NULL,1,'Subject for Meeting','2022-12-18 04:00:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:19','2023-09-06 22:52:19'), + (346,NULL,1,'Subject for Meeting','2023-05-30 06:20:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (347,NULL,22,'Subject for Print/Merge Document','2022-10-28 22:47:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (348,NULL,9,'Subject for Tell a Friend','2022-12-06 08:44:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (349,NULL,22,'Subject for Print/Merge Document','2023-04-26 13:16:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (350,NULL,22,'Subject for Print/Merge Document','2022-11-09 10:39:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (351,NULL,22,'Subject for Print/Merge Document','2023-04-04 10:27:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (352,NULL,2,'Subject for Phone Call','2023-09-04 10:10:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (353,NULL,2,'Subject for Phone Call','2022-11-29 07:52:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (354,NULL,9,'Subject for Tell a Friend','2023-08-31 16:02:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (355,NULL,1,'Subject for Meeting','2023-01-27 01:06:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (356,NULL,1,'Subject for Meeting','2023-03-24 15:02:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (357,NULL,2,'Subject for Phone Call','2023-04-18 02:23:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (358,NULL,1,'Subject for Meeting','2022-12-28 10:53:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (359,NULL,56,'Subject for Interview','2022-09-08 02:45:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (360,NULL,2,'Subject for Phone Call','2022-12-22 17:04:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (361,NULL,22,'Subject for Print/Merge Document','2022-12-22 05:07:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (362,NULL,1,'Subject for Meeting','2022-12-28 14:32:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (363,NULL,22,'Subject for Print/Merge Document','2022-10-26 19:48:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (364,NULL,1,'Subject for Meeting','2022-11-23 06:55:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (365,NULL,9,'Subject for Tell a Friend','2023-04-18 17:13:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (366,NULL,56,'Subject for Interview','2023-02-21 08:31:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (367,NULL,56,'Subject for Interview','2022-12-24 09:16:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (368,NULL,2,'Subject for Phone Call','2022-09-18 03:06:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (369,NULL,1,'Subject for Meeting','2023-05-09 08:31:10',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (370,NULL,56,'Subject for Interview','2022-09-17 12:11:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (371,NULL,9,'Subject for Tell a Friend','2023-05-27 17:57:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (372,NULL,22,'Subject for Print/Merge Document','2023-07-10 14:38:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (373,NULL,2,'Subject for Phone Call','2023-02-11 00:37:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (374,NULL,56,'Subject for Interview','2023-05-23 09:26:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (375,NULL,22,'Subject for Print/Merge Document','2023-02-21 09:28:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (376,NULL,22,'Subject for Print/Merge Document','2022-11-09 00:38:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (377,NULL,22,'Subject for Print/Merge Document','2023-06-13 20:10:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (378,NULL,22,'Subject for Print/Merge Document','2023-09-06 10:54:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (379,NULL,22,'Subject for Print/Merge Document','2023-03-02 13:18:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (380,NULL,22,'Subject for Print/Merge Document','2023-05-10 23:17:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (381,NULL,56,'Subject for Interview','2023-05-02 01:00:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (382,NULL,2,'Subject for Phone Call','2023-05-19 14:48:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (383,NULL,2,'Subject for Phone Call','2023-07-17 14:31:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (384,NULL,2,'Subject for Phone Call','2023-08-11 02:20:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (385,NULL,1,'Subject for Meeting','2022-11-09 11:35:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (386,NULL,56,'Subject for Interview','2023-05-11 20:19:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (387,NULL,9,'Subject for Tell a Friend','2023-02-08 11:20:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (388,NULL,22,'Subject for Print/Merge Document','2022-10-08 19:26:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (389,NULL,1,'Subject for Meeting','2022-12-11 14:00:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (390,NULL,2,'Subject for Phone Call','2022-09-28 06:01:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (391,NULL,1,'Subject for Meeting','2023-07-25 16:42:28',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (392,NULL,1,'Subject for Meeting','2023-08-13 18:46:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (393,NULL,9,'Subject for Tell a Friend','2023-02-12 09:06:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (394,NULL,9,'Subject for Tell a Friend','2022-10-09 13:09:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (395,NULL,56,'Subject for Interview','2023-01-19 01:12:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (396,NULL,22,'Subject for Print/Merge Document','2022-09-11 23:10:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (397,NULL,56,'Subject for Interview','2023-07-03 13:51:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (398,NULL,22,'Subject for Print/Merge Document','2022-11-02 17:42:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (399,NULL,1,'Subject for Meeting','2023-08-22 07:25:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (400,NULL,22,'Subject for Print/Merge Document','2023-06-16 22:02:44',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (401,NULL,2,'Subject for Phone Call','2023-03-02 17:18:43',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (402,NULL,56,'Subject for Interview','2023-04-22 10:01:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (403,NULL,9,'Subject for Tell a Friend','2022-09-19 08:59:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (404,NULL,9,'Subject for Tell a Friend','2022-11-16 23:14:16',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (405,NULL,9,'Subject for Tell a Friend','2023-04-23 10:18:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (406,NULL,9,'Subject for Tell a Friend','2022-12-31 01:25:45',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (407,NULL,1,'Subject for Meeting','2023-05-05 00:29:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (408,NULL,56,'Subject for Interview','2023-06-22 17:13:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (409,NULL,22,'Subject for Print/Merge Document','2023-05-15 20:21:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (410,NULL,56,'Subject for Interview','2023-03-11 01:37:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (411,NULL,56,'Subject for Interview','2023-03-28 12:36:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (412,NULL,22,'Subject for Print/Merge Document','2022-12-14 17:59:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (413,NULL,9,'Subject for Tell a Friend','2023-04-03 17:14:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (414,NULL,2,'Subject for Phone Call','2023-07-05 02:57:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (415,NULL,2,'Subject for Phone Call','2023-06-21 03:45:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (416,NULL,2,'Subject for Phone Call','2022-10-22 10:30:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (417,NULL,1,'Subject for Meeting','2022-10-14 02:21:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (418,NULL,56,'Subject for Interview','2023-02-06 11:31:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (419,NULL,9,'Subject for Tell a Friend','2023-08-06 18:40:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (420,NULL,56,'Subject for Interview','2023-08-10 05:01:48',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (421,NULL,1,'Subject for Meeting','2023-02-03 11:13:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (422,NULL,1,'Subject for Meeting','2023-02-21 14:32:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (423,NULL,2,'Subject for Phone Call','2022-11-07 05:45:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (424,NULL,56,'Subject for Interview','2023-07-19 02:23:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (425,NULL,56,'Subject for Interview','2023-07-31 07:14:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (426,NULL,9,'Subject for Tell a Friend','2023-08-24 10:06:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (427,NULL,1,'Subject for Meeting','2022-12-11 23:54:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (428,NULL,1,'Subject for Meeting','2022-10-20 05:54:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (429,NULL,2,'Subject for Phone Call','2022-09-26 21:33:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (430,NULL,56,'Subject for Interview','2023-03-25 20:40:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (431,NULL,1,'Subject for Meeting','2023-04-05 12:39:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (432,NULL,9,'Subject for Tell a Friend','2023-08-27 18:51:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (433,NULL,56,'Subject for Interview','2023-02-10 01:47:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (434,NULL,2,'Subject for Phone Call','2023-09-03 05:37:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (435,NULL,2,'Subject for Phone Call','2023-06-28 21:59:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (436,NULL,2,'Subject for Phone Call','2023-06-04 19:13:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (437,NULL,22,'Subject for Print/Merge Document','2022-11-15 03:24:12',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (438,NULL,22,'Subject for Print/Merge Document','2023-04-14 01:34:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (439,NULL,22,'Subject for Print/Merge Document','2023-04-03 14:27:58',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (440,NULL,56,'Subject for Interview','2023-07-24 15:26:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (441,NULL,22,'Subject for Print/Merge Document','2023-08-31 03:39:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (442,NULL,56,'Subject for Interview','2023-04-02 03:47:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (443,NULL,9,'Subject for Tell a Friend','2023-07-03 20:52:49',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (444,NULL,2,'Subject for Phone Call','2023-02-05 00:10:32',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (445,NULL,22,'Subject for Print/Merge Document','2022-09-16 23:01:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (446,NULL,1,'Subject for Meeting','2023-08-16 05:59:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (447,NULL,22,'Subject for Print/Merge Document','2022-12-14 02:51:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (448,NULL,2,'Subject for Phone Call','2023-08-22 08:05:07',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (449,NULL,2,'Subject for Phone Call','2023-06-04 12:30:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (450,NULL,9,'Subject for Tell a Friend','2023-05-05 14:56:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (451,1,6,'$ 125 April Mailer 1','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (452,2,6,'$ 50 Online: Save the Penguins','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (453,3,6,'£ 25 April Mailer 1','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (454,4,6,'$ 50 Online: Save the Penguins','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (455,5,6,'$ 50 Online: Save the Penguins','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (456,6,6,'$ 500 April Mailer 1','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (457,7,6,'$ 1750 Online: Save the Penguins','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (458,8,6,'$ 50 Online: Save the Penguins','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (459,9,6,'$ 10 Online: Help CiviCRM','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (460,10,6,'$ 250 Online: Help CiviCRM','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (461,11,6,'Â¥ 500 ','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (462,12,6,'$ 50 Online: Save the Penguins','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (463,13,6,'$ 50 ','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (464,14,6,'$ 50 ','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (465,15,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (466,16,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (467,17,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (468,18,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (469,19,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (470,20,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (471,21,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (472,22,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (473,23,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (474,24,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (475,25,6,'$ 25 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (476,26,6,'$ 10 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (477,27,6,'$ 10 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (478,28,6,'$ 10 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (479,29,6,'$ 10 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (480,30,6,'$ 10 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (481,31,6,'€ 5 Recurring contribution','2023-11-07 08:52:20',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (482,1,7,'General','2023-09-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-09-06 22:52:20','2023-09-06 22:52:20'), + (483,2,7,'Student','2023-09-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-09-06 22:52:20','2023-09-06 22:52:20'), + (484,3,7,'General','2023-09-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-09-06 22:52:20','2023-09-06 22:52:20'), + (485,4,7,'Student','2023-09-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-09-06 22:52:20','2023-09-06 22:52:20'), + (486,5,7,'General','2021-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (487,6,7,'Student','2023-09-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-09-06 22:52:20','2023-09-06 22:52:20'), + (488,7,7,'General','2023-09-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-09-06 22:52:20','2023-09-06 22:52:20'), + (489,8,7,'Student','2023-08-31 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (490,9,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (491,10,7,'Student','2022-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (492,11,7,'Lifetime','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (493,12,7,'Student','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (494,13,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (495,14,7,'Student','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (496,15,7,'General','2021-05-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-09-06 22:52:20','2023-09-06 22:52:20'), + (497,16,7,'Student','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (498,17,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (499,18,7,'Student','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (500,19,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (501,20,7,'General','2021-04-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-09-06 22:52:20','2023-09-06 22:52:20'), + (502,21,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (503,22,7,'Lifetime','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (504,23,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (505,24,7,'Student','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (506,25,7,'Student','2022-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (507,26,7,'Student','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (508,27,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (509,28,7,'Student','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (510,29,7,'General','2023-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (511,30,7,'Student','2022-08-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-09-06 22:52:20','2023-09-06 22:52:20'), + (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (521,41,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (531,51,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (541,61,6,'$ 50.00 - Student Membership: Offline signup','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (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-09-06 22:52:20','2023-09-06 22:52:20'), + (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'), + (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-09-07 08:52:20',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-09-06 22:52:20','2023-09-06 22:52:20'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -733,967 +733,959 @@ 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 - (165,94,1,3), - (259,146,1,3), - (445,245,1,3), - (592,323,1,3), - (353,197,2,3), - (708,386,2,3), - (821,451,2,2), - (111,63,3,3), - (318,177,3,3), - (291,162,4,3), - (320,178,4,3), - (485,267,4,3), - (544,298,4,3), - (624,342,4,3), - (822,452,4,2), - (825,455,4,2), - (175,99,5,3), - (500,275,5,3), - (561,307,6,3), - (823,453,6,2), - (925,555,6,2), - (82,46,7,3), - (576,315,7,3), - (607,332,7,3), - (628,344,7,3), - (928,558,7,2), - (59,34,8,3), - (303,169,8,3), - (349,195,8,3), - (640,350,8,3), - (824,454,8,2), - (71,40,9,3), - (273,153,9,3), - (423,233,9,3), - (455,251,10,3), - (386,214,11,3), - (779,428,11,3), - (876,506,11,2), - (906,536,11,2), - (468,258,12,3), - (672,368,12,3), - (736,402,12,3), - (271,152,13,3), - (492,271,13,3), - (915,545,13,2), - (135,77,14,3), - (139,79,14,3), - (355,198,14,3), - (167,95,15,3), - (403,223,15,3), - (443,244,15,3), - (249,141,16,3), - (268,151,16,2), - (270,152,16,2), - (272,153,16,2), - (274,154,16,2), - (276,155,16,2), - (278,156,16,2), - (280,157,16,2), - (282,158,16,2), - (284,159,16,2), - (286,160,16,2), - (288,161,16,2), - (290,162,16,2), - (292,163,16,2), - (294,164,16,2), - (296,165,16,2), - (297,166,16,2), - (299,167,16,2), - (301,168,16,2), - (302,169,16,2), - (304,170,16,2), - (306,171,16,2), - (308,172,16,2), - (310,173,16,2), - (312,174,16,2), - (313,175,16,2), - (315,176,16,2), - (317,177,16,2), - (319,178,16,2), - (321,179,16,2), - (323,180,16,2), - (325,181,16,2), - (326,182,16,2), - (328,183,16,2), - (329,184,16,2), - (331,185,16,2), - (333,186,16,2), - (335,187,16,2), - (337,188,16,2), - (338,189,16,2), - (339,190,16,2), - (340,191,16,2), - (342,192,16,2), - (344,193,16,2), - (346,194,16,2), - (348,195,16,2), - (350,196,16,2), - (352,197,16,2), - (354,198,16,2), - (356,199,16,2), - (358,200,16,2), - (359,201,16,2), - (361,202,16,2), - (363,203,16,2), - (365,204,16,2), - (367,205,16,2), - (369,206,16,2), - (371,207,16,2), - (373,208,16,2), - (375,209,16,2), - (377,210,16,2), - (379,211,16,2), - (381,212,16,2), - (383,213,16,2), - (385,214,16,2), - (387,215,16,2), - (389,216,16,2), - (391,217,16,2), - (393,218,16,2), - (395,219,16,2), - (397,220,16,2), - (398,221,16,2), - (400,222,16,2), - (402,223,16,2), - (404,224,16,2), - (406,225,16,2), - (408,226,16,2), - (410,227,16,2), - (412,228,16,2), - (414,229,16,2), - (416,230,16,2), - (418,231,16,2), - (420,232,16,2), - (422,233,16,2), - (424,234,16,2), - (426,235,16,2), - (427,236,16,2), - (429,237,16,2), - (431,238,16,2), - (433,239,16,2), - (435,240,16,2), - (437,241,16,2), - (438,242,16,2), - (440,243,16,2), - (442,244,16,2), - (444,245,16,2), - (446,246,16,2), - (447,247,16,2), - (449,248,16,2), - (451,249,16,2), - (453,250,16,2), - (454,251,16,2), - (456,252,16,2), - (458,253,16,2), - (460,254,16,2), - (461,255,16,2), - (463,256,16,2), - (465,257,16,2), - (467,258,16,2), - (469,259,16,2), - (471,260,16,2), - (473,261,16,2), - (475,262,16,2), - (477,263,16,2), - (479,264,16,2), - (481,265,16,2), - (482,266,16,2), - (484,267,16,2), - (486,268,16,2), - (487,269,16,2), - (489,270,16,2), - (491,271,16,2), - (493,272,16,2), - (495,273,16,2), - (497,274,16,2), - (499,275,16,2), - (501,276,16,2), - (503,277,16,2), - (505,278,16,2), - (507,279,16,2), - (509,280,16,2), - (510,281,16,2), - (511,282,16,2), - (513,283,16,2), - (515,284,16,2), - (517,285,16,2), - (519,286,16,2), - (521,287,16,2), - (523,288,16,2), - (525,289,16,2), - (527,290,16,2), - (529,291,16,2), - (531,292,16,2), - (533,293,16,2), - (535,294,16,2), - (537,295,16,2), - (539,296,16,2), - (541,297,16,2), - (543,298,16,2), - (545,299,16,2), - (546,300,16,2), - (653,357,16,3), - (655,358,16,3), - (692,378,16,3), - (826,456,16,2), - (30,17,17,3), - (205,115,17,3), - (396,219,17,3), - (857,487,17,2), - (887,517,17,2), - (300,167,18,3), - (324,180,18,3), - (472,260,18,3), - (706,385,18,3), - (360,201,19,3), - (514,283,19,3), - (617,338,19,3), - (638,349,19,3), - (674,369,19,3), - (827,457,19,2), - (61,35,20,3), - (90,50,20,3), - (668,366,20,3), - (11,6,21,3), - (76,43,21,3), - (362,202,21,3), - (781,429,21,3), - (242,137,22,3), - (372,207,22,3), - (713,389,22,3), - (43,24,23,3), - (570,312,23,3), - (801,440,23,3), - (856,486,23,2), - (886,516,23,2), - (951,581,23,2), - (94,52,24,3), - (293,163,24,3), - (466,257,24,3), - (52,30,25,3), - (161,92,25,3), - (279,156,25,3), - (478,263,25,3), - (518,285,25,3), - (698,381,25,3), - (766,421,25,3), - (792,435,25,3), - (820,450,25,3), - (229,129,26,3), - (366,204,26,3), - (642,351,26,3), - (694,379,26,3), - (133,76,27,3), - (194,109,27,3), - (436,240,27,3), - (73,41,28,3), - (86,48,28,3), - (269,151,28,3), - (542,297,28,3), - (127,73,29,3), - (399,221,29,3), - (636,348,29,3), - (745,408,29,3), - (807,443,29,3), - (3,2,30,3), - (56,32,30,3), - (476,262,30,3), - (743,407,30,3), - (171,97,31,3), - (357,199,31,3), - (20,11,32,3), - (37,21,32,3), - (188,106,32,3), - (502,276,32,3), - (833,463,32,2), - (834,464,32,2), - (932,562,32,2), - (125,72,33,3), - (196,110,33,3), - (255,144,33,3), - (464,256,33,3), - (621,340,33,3), - (870,500,33,2), - (900,530,33,2), - (169,96,34,3), - (341,191,34,3), - (508,279,34,3), - (830,460,34,2), - (307,171,35,3), - (459,253,35,3), - (613,336,35,3), - (790,434,35,3), - (805,442,35,3), - (948,578,35,2), - (96,53,36,3), - (78,44,37,3), - (131,75,37,3), - (192,108,37,3), - (480,264,37,3), - (198,111,38,3), - (553,303,38,3), - (632,346,38,3), - (584,319,39,3), - (9,5,40,3), - (647,354,40,3), - (926,556,40,2), - (27,15,41,3), - (39,22,41,3), - (88,49,41,3), - (309,172,41,3), - (347,194,41,3), - (392,217,41,3), - (574,314,41,3), - (283,158,42,3), - (364,203,42,3), - (390,216,42,3), - (434,239,42,3), - (462,255,42,3), - (540,296,43,3), - (676,370,43,3), - (678,371,43,3), - (811,445,43,3), - (832,462,43,2), - (305,170,44,3), - (551,302,44,3), - (869,499,44,2), - (899,529,44,2), - (22,12,45,3), - (142,81,45,3), - (186,105,45,3), - (439,242,45,3), - (711,388,45,3), - (785,431,45,3), - (84,47,46,3), - (378,210,46,3), - (181,102,47,3), - (311,173,47,3), - (547,300,47,3), - (657,359,47,3), - (715,390,47,3), - (63,36,48,3), - (7,4,49,3), - (32,18,49,3), - (240,136,49,3), - (771,424,49,3), - (504,277,50,3), - (680,372,50,3), - (702,383,50,3), - (704,384,50,3), - (760,417,50,3), - (47,27,51,3), - (343,192,51,3), - (630,345,51,3), - (670,367,51,3), - (65,37,52,3), - (267,150,52,3), - (345,193,52,3), - (732,400,52,3), - (914,544,52,2), - (146,83,53,3), - (159,91,53,3), - (257,145,53,3), - (80,45,54,3), - (177,100,54,3), - (368,205,54,3), - (441,243,54,3), - (207,116,55,3), - (394,218,55,3), - (417,230,55,3), - (787,432,55,3), - (861,491,55,2), - (891,521,55,2), - (173,98,56,3), - (244,138,56,3), - (721,393,56,3), - (209,117,57,3), - (384,213,57,3), - (409,226,57,3), - (590,322,58,3), - (773,425,58,3), - (690,377,59,3), - (803,441,59,3), - (835,465,59,2), - (836,466,59,2), - (837,467,59,2), - (838,468,59,2), - (839,469,59,2), - (840,470,59,2), - (841,471,59,2), - (842,472,59,2), - (843,473,59,2), - (844,474,59,2), - (845,475,59,2), - (594,324,60,3), - (748,410,60,3), - (762,418,60,3), - (15,8,61,3), - (50,29,61,3), - (212,119,61,3), - (382,212,61,3), - (25,14,62,3), - (566,310,62,3), - (115,66,63,3), - (150,86,63,3), - (374,208,63,3), - (425,234,63,3), - (494,272,63,3), - (549,301,63,3), - (555,304,63,3), - (572,313,63,3), - (734,401,63,3), - (752,413,63,3), - (957,587,63,2), - (219,123,64,3), - (298,166,64,3), - (452,249,64,3), - (666,365,64,3), - (955,585,64,2), - (231,130,65,3), - (334,186,65,3), - (421,232,65,3), - (129,74,66,3), - (401,222,66,3), - (610,334,66,3), - (949,579,66,2), - (123,71,67,3), - (226,127,67,3), - (474,261,67,3), - (263,148,68,3), - (277,155,68,3), - (289,161,68,3), - (332,185,68,3), - (769,423,68,3), - (797,438,68,3), - (536,294,69,3), - (568,311,69,3), - (644,352,69,3), - (98,54,70,3), - (222,125,70,3), - (287,160,70,3), - (314,175,70,3), - (526,289,70,3), - (530,291,70,3), - (586,320,70,3), - (663,363,70,3), - (719,392,70,3), - (865,495,70,2), - (895,525,70,2), - (940,570,70,2), - (156,89,71,3), - (275,154,71,3), - (524,288,71,3), - (831,461,71,2), - (235,133,72,3), - (873,503,72,2), - (903,533,72,2), - (13,7,73,3), - (34,19,73,3), - (69,39,73,3), - (483,266,73,3), - (534,293,73,3), - (696,380,73,3), - (729,398,73,3), - (419,231,74,3), - (506,278,74,3), - (686,375,74,3), - (322,179,75,3), - (661,362,75,3), - (388,215,76,3), - (496,273,76,3), - (758,416,76,3), - (54,31,77,3), - (415,229,77,3), - (224,126,78,3), - (470,259,78,3), - (931,561,78,2), - (265,149,79,3), - (430,237,80,3), - (448,247,80,3), - (538,295,80,3), - (634,347,80,3), - (818,449,80,3), - (924,554,80,2), - (154,88,81,3), - (200,112,81,3), - (246,139,81,3), - (580,317,81,3), - (615,337,81,3), - (101,56,82,3), - (117,67,82,3), - (261,147,82,3), - (432,238,82,3), - (559,306,82,3), - (828,458,82,2), - (864,494,82,2), - (894,524,82,2), - (190,107,83,3), - (336,187,83,3), - (522,287,83,3), - (619,339,83,3), - (152,87,84,3), - (253,143,84,3), - (532,292,84,3), - (682,373,84,3), - (775,426,84,3), - (144,82,85,3), - (351,196,85,3), - (370,206,85,3), - (528,290,85,3), - (651,356,85,3), - (777,427,85,3), - (184,104,86,3), - (295,164,86,3), - (457,252,86,3), - (488,269,86,3), - (578,316,86,3), - (688,376,86,3), - (717,391,86,3), - (929,559,86,2), - (5,3,87,3), - (603,329,87,3), - (700,382,87,3), - (103,57,88,3), - (281,157,88,3), - (327,182,88,3), - (626,343,88,3), - (649,355,88,3), - (934,564,88,2), - (428,236,89,3), - (490,270,89,3), - (109,62,90,3), - (217,122,90,3), - (411,227,90,3), - (450,248,90,3), - (498,274,90,3), - (596,325,90,3), - (809,444,90,3), - (880,510,90,2), - (910,540,90,2), - (935,565,90,2), - (67,38,91,3), - (137,78,91,3), - (588,321,91,3), - (754,414,91,3), - (756,415,91,3), - (879,509,91,2), - (909,539,91,2), - (952,582,91,2), - (41,23,92,3), - (407,225,92,3), - (829,459,92,2), - (163,93,93,3), - (285,159,93,3), - (740,405,93,3), - (214,120,95,3), - (237,134,95,3), - (520,286,95,3), - (582,318,95,3), - (799,439,95,3), - (947,577,95,2), - (376,209,96,3), - (783,430,96,3), - (18,10,97,3), - (405,224,97,3), - (413,228,97,3), - (512,282,97,3), - (557,305,97,3), - (877,507,97,2), - (907,537,97,2), - (251,142,98,3), - (380,211,98,3), - (601,328,98,3), - (725,395,98,3), - (795,437,98,3), - (816,448,98,3), - (920,550,98,2), - (330,184,99,3), - (516,284,99,3), - (564,309,99,3), - (723,394,99,3), - (814,447,99,3), - (846,476,99,2), - (847,477,99,2), - (848,478,99,2), - (849,479,99,2), - (850,480,99,2), - (941,571,99,2), - (179,101,100,3), - (203,114,100,3), - (598,326,100,3), - (684,374,100,3), - (92,51,101,3), - (119,68,101,3), - (316,176,101,3), - (954,584,101,2), - (851,481,103,2), - (962,592,103,2), - (917,547,105,2), - (942,572,106,2), - (875,505,111,2), - (905,535,111,2), - (943,573,112,2), - (867,497,114,2), - (897,527,114,2), - (874,504,122,2), - (904,534,122,2), - (927,557,122,2), - (921,551,127,2), - (936,566,128,2), - (854,484,130,2), - (884,514,130,2), - (872,502,131,2), - (902,532,131,2), - (939,569,132,2), - (852,482,134,2), - (882,512,134,2), - (916,546,135,2), - (961,591,139,2), - (862,492,145,2), - (892,522,145,2), - (946,576,145,2), - (956,586,146,2), - (923,553,149,2), - (871,501,151,2), - (901,531,151,2), - (548,301,153,2), - (550,302,153,2), - (552,303,153,2), - (554,304,153,2), - (556,305,153,2), - (558,306,153,2), - (560,307,153,2), - (562,308,153,2), - (563,309,153,2), - (565,310,153,2), - (567,311,153,2), - (569,312,153,2), - (571,313,153,2), - (573,314,153,2), - (575,315,153,2), - (577,316,153,2), - (579,317,153,2), - (581,318,153,2), - (583,319,153,2), - (585,320,153,2), - (587,321,153,2), - (589,322,153,2), - (591,323,153,2), - (593,324,153,2), - (595,325,153,2), - (597,326,153,2), - (599,327,153,2), - (600,328,153,2), - (602,329,153,2), - (604,330,153,2), - (605,331,153,2), - (606,332,153,2), - (608,333,153,2), - (609,334,153,2), - (611,335,153,2), - (612,336,153,2), - (614,337,153,2), - (616,338,153,2), - (618,339,153,2), - (620,340,153,2), - (622,341,153,2), - (623,342,153,2), - (625,343,153,2), - (627,344,153,2), - (629,345,153,2), - (631,346,153,2), - (633,347,153,2), - (635,348,153,2), - (637,349,153,2), - (639,350,153,2), - (641,351,153,2), - (643,352,153,2), - (645,353,153,2), - (646,354,153,2), - (648,355,153,2), - (650,356,153,2), - (652,357,153,2), - (654,358,153,2), - (656,359,153,2), - (658,360,153,2), - (659,361,153,2), - (660,362,153,2), - (662,363,153,2), - (664,364,153,2), - (665,365,153,2), - (667,366,153,2), - (669,367,153,2), - (671,368,153,2), - (673,369,153,2), - (675,370,153,2), - (677,371,153,2), - (679,372,153,2), - (681,373,153,2), - (683,374,153,2), - (685,375,153,2), - (687,376,153,2), - (689,377,153,2), - (691,378,153,2), - (693,379,153,2), - (695,380,153,2), - (697,381,153,2), - (699,382,153,2), - (701,383,153,2), - (703,384,153,2), - (705,385,153,2), - (707,386,153,2), - (709,387,153,2), - (710,388,153,2), - (712,389,153,2), - (714,390,153,2), - (716,391,153,2), - (718,392,153,2), - (720,393,153,2), - (722,394,153,2), - (724,395,153,2), - (726,396,153,2), - (727,397,153,2), - (728,398,153,2), - (730,399,153,2), - (731,400,153,2), - (733,401,153,2), - (735,402,153,2), - (737,403,153,2), - (738,404,153,2), - (739,405,153,2), - (741,406,153,2), - (742,407,153,2), - (744,408,153,2), - (746,409,153,2), - (747,410,153,2), - (749,411,153,2), - (750,412,153,2), - (751,413,153,2), - (753,414,153,2), - (755,415,153,2), - (757,416,153,2), - (759,417,153,2), - (761,418,153,2), - (763,419,153,2), - (764,420,153,2), - (765,421,153,2), - (767,422,153,2), - (768,423,153,2), - (770,424,153,2), - (772,425,153,2), - (774,426,153,2), - (776,427,153,2), - (778,428,153,2), - (780,429,153,2), - (782,430,153,2), - (784,431,153,2), - (786,432,153,2), - (788,433,153,2), - (789,434,153,2), - (791,435,153,2), - (793,436,153,2), - (794,437,153,2), - (796,438,153,2), - (798,439,153,2), - (800,440,153,2), - (802,441,153,2), - (804,442,153,2), - (806,443,153,2), - (808,444,153,2), - (810,445,153,2), - (812,446,153,2), - (813,447,153,2), - (815,448,153,2), - (817,449,153,2), - (819,450,153,2), - (958,588,153,2), - (855,485,154,2), - (885,515,154,2), - (919,549,154,2), - (913,543,160,2), - (944,574,161,2), - (859,489,162,2), - (889,519,162,2), - (868,498,165,2), - (898,528,165,2), - (922,552,168,2), - (858,488,169,2), - (888,518,169,2), - (937,567,171,2), - (953,583,174,2), - (959,589,176,2), - (930,560,177,2), - (933,563,178,2), - (918,548,182,2), - (938,568,183,2), - (860,490,187,2), - (890,520,187,2), - (960,590,188,2), - (945,575,189,2), - (863,493,190,2), - (893,523,190,2), - (950,580,190,2), - (878,508,191,2), - (908,538,191,2), - (853,483,193,2), - (883,513,193,2), - (866,496,194,2), - (896,526,194,2), - (1,1,200,2), - (2,2,200,2), - (4,3,200,2), - (6,4,200,2), - (8,5,200,2), - (10,6,200,2), - (12,7,200,2), - (14,8,200,2), - (16,9,200,2), - (17,10,200,2), - (19,11,200,2), - (21,12,200,2), - (23,13,200,2), - (24,14,200,2), - (26,15,200,2), - (28,16,200,2), - (29,17,200,2), - (31,18,200,2), - (33,19,200,2), - (35,20,200,2), - (36,21,200,2), - (38,22,200,2), - (40,23,200,2), - (42,24,200,2), - (44,25,200,2), - (45,26,200,2), - (46,27,200,2), - (48,28,200,2), - (49,29,200,2), - (51,30,200,2), - (53,31,200,2), - (55,32,200,2), - (57,33,200,2), - (58,34,200,2), - (60,35,200,2), - (62,36,200,2), - (64,37,200,2), - (66,38,200,2), - (68,39,200,2), - (70,40,200,2), - (72,41,200,2), - (74,42,200,2), - (75,43,200,2), - (77,44,200,2), - (79,45,200,2), - (81,46,200,2), - (83,47,200,2), - (85,48,200,2), - (87,49,200,2), - (89,50,200,2), - (91,51,200,2), - (93,52,200,2), - (95,53,200,2), - (97,54,200,2), - (99,55,200,2), - (100,56,200,2), - (102,57,200,2), - (104,58,200,2), - (105,59,200,2), - (106,60,200,2), - (107,61,200,2), - (108,62,200,2), - (110,63,200,2), - (112,64,200,2), - (113,65,200,2), - (114,66,200,2), - (116,67,200,2), - (118,68,200,2), - (120,69,200,2), - (121,70,200,2), - (122,71,200,2), - (124,72,200,2), - (126,73,200,2), - (128,74,200,2), - (130,75,200,2), - (132,76,200,2), - (134,77,200,2), - (136,78,200,2), - (138,79,200,2), - (140,80,200,2), - (141,81,200,2), - (143,82,200,2), - (145,83,200,2), - (147,84,200,2), - (148,85,200,2), - (149,86,200,2), - (151,87,200,2), - (153,88,200,2), - (155,89,200,2), - (157,90,200,2), - (158,91,200,2), - (160,92,200,2), - (162,93,200,2), - (164,94,200,2), - (166,95,200,2), - (168,96,200,2), - (170,97,200,2), - (172,98,200,2), - (174,99,200,2), - (176,100,200,2), - (178,101,200,2), - (180,102,200,2), - (182,103,200,2), - (183,104,200,2), - (185,105,200,2), - (187,106,200,2), - (189,107,200,2), - (191,108,200,2), - (193,109,200,2), - (195,110,200,2), - (197,111,200,2), - (199,112,200,2), - (201,113,200,2), - (202,114,200,2), - (204,115,200,2), - (206,116,200,2), - (208,117,200,2), - (210,118,200,2), - (211,119,200,2), - (213,120,200,2), - (215,121,200,2), - (216,122,200,2), - (218,123,200,2), - (220,124,200,2), - (221,125,200,2), - (223,126,200,2), - (225,127,200,2), - (227,128,200,2), - (228,129,200,2), - (230,130,200,2), - (232,131,200,2), - (233,132,200,2), - (234,133,200,2), - (236,134,200,2), - (238,135,200,2), - (239,136,200,2), - (241,137,200,2), - (243,138,200,2), - (245,139,200,2), - (247,140,200,2), - (248,141,200,2), - (250,142,200,2), - (252,143,200,2), - (254,144,200,2), - (256,145,200,2), - (258,146,200,2), - (260,147,200,2), - (262,148,200,2), - (264,149,200,2), - (266,150,200,2), - (881,511,200,2), - (911,541,200,2); + (234,127,1,3), + (244,132,1,3), + (800,443,1,3), + (145,79,2,3), + (180,98,2,3), + (301,162,2,3), + (480,262,2,3), + (593,326,2,3), + (669,369,2,3), + (813,451,2,2), + (953,591,2,2), + (15,8,3,3), + (37,19,3,3), + (287,155,3,3), + (389,211,3,3), + (427,233,3,3), + (701,389,3,3), + (929,567,3,2), + (116,62,4,3), + (525,288,4,3), + (641,354,4,3), + (659,364,4,3), + (665,367,4,3), + (756,419,4,3), + (814,452,4,2), + (817,455,4,2), + (201,109,5,3), + (220,119,5,3), + (624,343,5,3), + (758,420,5,3), + (27,14,6,3), + (311,167,6,3), + (330,178,6,3), + (716,397,6,3), + (815,453,6,2), + (102,54,7,3), + (137,74,7,3), + (270,146,7,3), + (866,504,7,2), + (896,534,7,2), + (222,120,8,3), + (816,454,8,2), + (854,492,8,2), + (884,522,8,2), + (84,43,9,3), + (365,198,9,3), + (377,205,9,3), + (442,241,9,3), + (933,571,9,2), + (315,169,10,3), + (399,217,10,3), + (405,220,10,3), + (411,224,10,3), + (488,268,10,3), + (673,371,10,3), + (774,428,10,3), + (295,159,11,3), + (440,240,11,3), + (474,259,11,3), + (496,272,11,3), + (776,429,11,3), + (844,482,11,2), + (874,512,11,2), + (946,584,11,2), + (448,245,13,3), + (768,425,13,3), + (44,23,14,3), + (214,116,14,3), + (724,402,14,3), + (732,406,14,3), + (54,28,15,3), + (251,136,15,3), + (328,177,15,3), + (805,446,15,3), + (860,498,15,2), + (890,528,15,2), + (95,50,16,3), + (226,122,16,3), + (818,456,16,2), + (847,485,16,2), + (877,515,16,2), + (195,106,17,3), + (560,307,17,3), + (632,348,17,3), + (746,414,17,3), + (360,195,18,3), + (379,206,18,3), + (764,423,18,3), + (62,32,19,3), + (274,148,19,3), + (556,305,19,3), + (778,430,19,3), + (819,457,19,2), + (317,170,20,3), + (476,260,20,3), + (185,101,21,3), + (240,130,21,3), + (694,385,22,3), + (485,266,23,3), + (522,286,23,3), + (543,298,23,3), + (356,193,24,3), + (156,85,25,3), + (246,133,25,3), + (385,209,25,3), + (456,249,25,3), + (505,277,25,3), + (563,309,25,3), + (567,312,25,3), + (696,386,25,3), + (736,408,25,3), + (766,424,25,3), + (13,7,26,3), + (578,318,26,3), + (661,365,26,3), + (760,421,26,3), + (780,431,26,3), + (862,500,26,2), + (892,530,26,2), + (498,273,27,3), + (547,300,27,3), + (589,324,27,3), + (812,450,27,3), + (285,154,28,3), + (293,158,28,3), + (299,161,28,3), + (713,395,28,3), + (46,24,29,3), + (131,71,29,3), + (160,87,29,3), + (383,208,29,3), + (621,341,29,3), + (734,407,29,3), + (917,555,29,2), + (93,49,30,3), + (100,53,30,3), + (168,91,30,3), + (238,129,30,3), + (552,303,30,3), + (33,17,31,3), + (52,27,31,3), + (210,114,31,3), + (303,163,31,3), + (35,18,32,3), + (322,173,32,3), + (647,357,32,3), + (825,463,32,2), + (826,464,32,2), + (66,34,33,3), + (452,247,33,3), + (845,483,33,2), + (875,513,33,2), + (242,131,34,3), + (822,460,34,2), + (110,59,35,3), + (176,96,35,3), + (617,339,35,3), + (653,360,35,3), + (1,1,36,2), + (3,2,36,2), + (5,3,36,2), + (7,4,36,2), + (9,5,36,2), + (11,6,36,2), + (12,7,36,2), + (14,8,36,2), + (16,9,36,2), + (18,10,36,2), + (20,11,36,2), + (22,12,36,2), + (24,13,36,2), + (26,14,36,2), + (28,15,36,2), + (30,16,36,2), + (32,17,36,2), + (34,18,36,2), + (36,19,36,2), + (38,20,36,2), + (40,21,36,2), + (41,22,36,2), + (43,23,36,2), + (45,24,36,2), + (47,25,36,2), + (49,26,36,2), + (51,27,36,2), + (53,28,36,2), + (55,29,36,2), + (57,30,36,2), + (59,31,36,2), + (61,32,36,2), + (63,33,36,2), + (65,34,36,2), + (67,35,36,2), + (69,36,36,2), + (71,37,36,2), + (73,38,36,2), + (75,39,36,2), + (77,40,36,2), + (79,41,36,2), + (81,42,36,2), + (83,43,36,2), + (85,44,36,2), + (87,45,36,2), + (88,46,36,2), + (89,47,36,2), + (90,48,36,2), + (92,49,36,2), + (94,50,36,2), + (96,51,36,2), + (97,52,36,2), + (99,53,36,2), + (101,54,36,2), + (103,55,36,2), + (105,56,36,2), + (106,57,36,2), + (108,58,36,2), + (109,59,36,2), + (111,60,36,2), + (113,61,36,2), + (115,62,36,2), + (117,63,36,2), + (119,64,36,2), + (121,65,36,2), + (123,66,36,2), + (124,67,36,2), + (125,68,36,2), + (126,69,36,2), + (128,70,36,2), + (130,71,36,2), + (132,72,36,2), + (134,73,36,2), + (135,73,36,3), + (136,74,36,2), + (138,75,36,2), + (139,76,36,2), + (141,77,36,2), + (143,78,36,2), + (144,79,36,2), + (146,80,36,2), + (147,81,36,2), + (149,82,36,2), + (151,83,36,2), + (153,84,36,2), + (155,85,36,2), + (157,86,36,2), + (159,87,36,2), + (161,88,36,2), + (163,89,36,2), + (165,90,36,2), + (167,91,36,2), + (169,92,36,2), + (171,93,36,2), + (173,94,36,2), + (174,95,36,2), + (175,96,36,2), + (177,97,36,2), + (179,98,36,2), + (181,99,36,2), + (183,100,36,2), + (184,101,36,2), + (186,102,36,2), + (188,103,36,2), + (190,104,36,2), + (192,105,36,2), + (194,106,36,2), + (196,107,36,2), + (198,108,36,2), + (200,109,36,2), + (202,110,36,2), + (204,111,36,2), + (206,112,36,2), + (208,113,36,2), + (209,114,36,2), + (211,115,36,2), + (213,116,36,2), + (215,117,36,2), + (217,118,36,2), + (219,119,36,2), + (221,120,36,2), + (223,121,36,2), + (225,122,36,2), + (227,123,36,2), + (228,124,36,2), + (229,125,36,2), + (231,126,36,2), + (233,127,36,2), + (235,128,36,2), + (237,129,36,2), + (239,130,36,2), + (241,131,36,2), + (243,132,36,2), + (245,133,36,2), + (247,134,36,2), + (248,135,36,2), + (250,136,36,2), + (252,137,36,2), + (254,138,36,2), + (256,139,36,2), + (258,140,36,2), + (259,141,36,2), + (261,142,36,2), + (263,143,36,2), + (265,144,36,2), + (267,145,36,2), + (269,146,36,2), + (271,147,36,2), + (273,148,36,2), + (275,149,36,2), + (277,150,36,2), + (434,237,36,3), + (450,246,36,3), + (516,283,36,3), + (855,493,36,2), + (885,523,36,2), + (148,81,37,3), + (255,138,37,3), + (338,183,37,3), + (639,353,37,3), + (857,495,37,2), + (887,525,37,2), + (950,588,37,2), + (31,16,38,3), + (373,203,38,3), + (637,352,38,3), + (926,564,38,2), + (403,219,39,3), + (595,327,39,3), + (276,149,40,3), + (465,254,40,3), + (698,387,40,3), + (711,394,40,3), + (798,442,40,3), + (142,77,41,3), + (197,107,41,3), + (391,212,41,3), + (462,252,41,3), + (656,362,41,3), + (216,117,42,3), + (272,147,42,3), + (533,293,42,3), + (678,374,42,3), + (864,502,42,2), + (894,532,42,2), + (951,589,42,2), + (510,280,43,3), + (692,384,43,3), + (824,462,43,2), + (918,556,43,2), + (58,30,44,3), + (344,186,44,3), + (490,269,44,3), + (688,382,44,3), + (726,403,44,3), + (856,494,44,2), + (886,524,44,2), + (253,137,45,3), + (262,142,45,3), + (353,191,45,3), + (520,285,45,3), + (539,296,45,3), + (548,301,45,2), + (549,302,45,2), + (551,303,45,2), + (553,304,45,2), + (555,305,45,2), + (557,306,45,2), + (559,307,45,2), + (561,308,45,2), + (562,309,45,2), + (564,310,45,2), + (565,311,45,2), + (566,312,45,2), + (568,313,45,2), + (570,314,45,2), + (572,315,45,2), + (574,316,45,2), + (575,317,45,2), + (577,318,45,2), + (579,319,45,2), + (581,320,45,2), + (582,321,45,2), + (584,322,45,2), + (586,323,45,2), + (588,324,45,2), + (590,325,45,2), + (592,326,45,2), + (594,327,45,2), + (596,328,45,2), + (598,329,45,2), + (600,330,45,2), + (602,331,45,2), + (603,332,45,2), + (605,333,45,2), + (607,334,45,2), + (609,335,45,2), + (611,336,45,2), + (613,337,45,2), + (615,338,45,2), + (616,339,45,2), + (618,340,45,2), + (620,341,45,2), + (622,342,45,2), + (623,343,45,2), + (625,344,45,2), + (626,345,45,2), + (628,346,45,2), + (630,347,45,2), + (631,348,45,2), + (633,349,45,2), + (634,350,45,2), + (635,351,45,2), + (636,352,45,2), + (638,353,45,2), + (640,354,45,2), + (642,355,45,2), + (644,356,45,2), + (646,357,45,2), + (648,358,45,2), + (650,359,45,2), + (652,360,45,2), + (654,361,45,2), + (655,362,45,2), + (657,363,45,2), + (658,364,45,2), + (660,365,45,2), + (662,366,45,2), + (664,367,45,2), + (666,368,45,2), + (668,369,45,2), + (670,370,45,2), + (672,371,45,2), + (674,372,45,2), + (675,373,45,2), + (677,374,45,2), + (679,375,45,2), + (680,376,45,2), + (681,377,45,2), + (682,378,45,2), + (683,379,45,2), + (684,380,45,2), + (685,381,45,2), + (687,382,45,2), + (689,383,45,2), + (691,384,45,2), + (693,385,45,2), + (695,386,45,2), + (697,387,45,2), + (699,388,45,2), + (700,389,45,2), + (702,390,45,2), + (704,391,45,2), + (706,392,45,2), + (708,393,45,2), + (710,394,45,2), + (712,395,45,2), + (714,396,45,2), + (715,397,45,2), + (717,398,45,2), + (718,399,45,2), + (720,400,45,2), + (721,401,45,2), + (723,402,45,2), + (725,403,45,2), + (727,404,45,2), + (729,405,45,2), + (731,406,45,2), + (733,407,45,2), + (735,408,45,2), + (737,409,45,2), + (738,410,45,2), + (740,411,45,2), + (742,412,45,2), + (743,413,45,2), + (745,414,45,2), + (747,415,45,2), + (749,416,45,2), + (751,417,45,2), + (753,418,45,2), + (755,419,45,2), + (757,420,45,2), + (759,421,45,2), + (761,422,45,2), + (763,423,45,2), + (765,424,45,2), + (767,425,45,2), + (769,426,45,2), + (771,427,45,2), + (773,428,45,2), + (775,429,45,2), + (777,430,45,2), + (779,431,45,2), + (781,432,45,2), + (783,433,45,2), + (785,434,45,2), + (787,435,45,2), + (789,436,45,2), + (791,437,45,2), + (792,438,45,2), + (793,439,45,2), + (794,440,45,2), + (796,441,45,2), + (797,442,45,2), + (799,443,45,2), + (801,444,45,2), + (803,445,45,2), + (804,446,45,2), + (806,447,45,2), + (807,448,45,2), + (809,449,45,2), + (811,450,45,2), + (189,103,46,3), + (387,210,46,3), + (651,359,46,3), + (42,22,47,3), + (98,52,47,3), + (363,197,47,3), + (395,214,47,3), + (744,413,47,3), + (915,553,47,2), + (91,48,48,3), + (576,317,48,3), + (325,175,49,3), + (429,234,49,3), + (707,392,49,3), + (597,328,50,3), + (850,488,50,2), + (880,518,50,2), + (948,586,50,2), + (140,76,51,3), + (150,82,51,3), + (203,110,51,3), + (342,185,51,3), + (415,226,51,3), + (469,256,51,3), + (501,275,51,3), + (367,199,52,3), + (627,345,52,3), + (762,422,52,3), + (782,432,52,3), + (569,313,53,3), + (676,373,53,3), + (4,2,54,3), + (471,257,54,3), + (571,314,54,3), + (56,29,55,3), + (266,144,55,3), + (408,222,55,3), + (478,261,55,3), + (218,118,56,3), + (492,270,56,3), + (518,284,56,3), + (535,294,56,3), + (558,306,56,3), + (913,551,56,2), + (122,65,57,3), + (260,141,57,3), + (187,102,59,3), + (418,228,59,3), + (827,465,59,2), + (828,466,59,2), + (829,467,59,2), + (830,468,59,2), + (831,469,59,2), + (832,470,59,2), + (833,471,59,2), + (834,472,59,2), + (835,473,59,2), + (836,474,59,2), + (837,475,59,2), + (23,12,60,3), + (19,10,61,3), + (86,44,61,3), + (199,108,62,3), + (268,145,62,3), + (772,427,62,3), + (802,444,62,3), + (129,70,63,3), + (162,88,63,3), + (289,156,63,3), + (604,332,63,3), + (722,401,63,3), + (741,411,63,3), + (922,560,63,2), + (114,61,64,3), + (164,89,64,3), + (170,92,64,3), + (224,121,64,3), + (236,128,64,3), + (619,340,64,3), + (29,15,65,3), + (358,194,65,3), + (104,55,66,3), + (107,57,66,3), + (739,410,66,3), + (754,418,66,3), + (10,5,67,3), + (313,168,67,3), + (643,355,67,3), + (808,448,67,3), + (118,63,68,3), + (152,83,68,3), + (436,238,68,3), + (444,242,68,3), + (686,381,68,3), + (952,590,68,2), + (172,93,69,3), + (232,126,69,3), + (297,160,69,3), + (861,499,69,2), + (891,529,69,2), + (178,97,70,3), + (291,157,70,3), + (503,276,70,3), + (823,461,71,2), + (2,1,72,3), + (60,31,72,3), + (705,391,72,3), + (21,11,73,3), + (230,125,73,3), + (537,295,73,3), + (550,302,73,3), + (580,319,73,3), + (629,346,73,3), + (709,393,73,3), + (748,415,73,3), + (17,9,74,3), + (351,190,74,3), + (795,440,74,3), + (280,151,75,3), + (514,282,75,3), + (846,484,75,2), + (876,514,75,2), + (74,38,76,3), + (166,90,76,3), + (601,330,76,3), + (608,334,76,3), + (927,565,76,2), + (425,232,77,3), + (39,20,78,3), + (64,33,78,3), + (193,105,78,3), + (645,356,78,3), + (649,358,78,3), + (750,416,78,3), + (786,434,78,3), + (70,36,79,3), + (212,115,79,3), + (458,250,79,3), + (467,255,79,3), + (703,390,79,3), + (50,26,80,3), + (599,329,80,3), + (728,404,80,3), + (770,426,80,3), + (454,248,81,3), + (127,69,82,3), + (154,84,82,3), + (182,99,82,3), + (334,181,82,3), + (371,202,82,3), + (573,315,82,3), + (667,368,82,3), + (790,436,82,3), + (810,449,82,3), + (820,458,82,2), + (72,37,83,3), + (76,39,83,3), + (120,64,83,3), + (340,184,83,3), + (421,230,83,3), + (545,299,83,3), + (719,399,83,3), + (78,40,84,3), + (207,112,84,3), + (393,213,84,3), + (191,104,85,3), + (531,292,85,3), + (591,325,85,3), + (8,4,86,3), + (80,41,86,3), + (133,72,86,3), + (413,225,86,3), + (585,322,86,3), + (610,335,86,3), + (614,337,86,3), + (663,366,86,3), + (730,405,86,3), + (257,139,87,3), + (583,321,87,3), + (784,433,87,3), + (205,111,88,3), + (309,166,88,3), + (851,489,88,2), + (881,519,88,2), + (910,548,88,2), + (401,218,89,3), + (25,13,90,3), + (690,383,90,3), + (939,577,90,2), + (112,60,91,3), + (671,370,91,3), + (924,562,91,2), + (460,251,92,3), + (541,297,92,3), + (821,459,92,2), + (923,561,92,2), + (48,25,93,3), + (158,86,93,3), + (508,279,93,3), + (278,150,94,3), + (336,182,94,3), + (375,204,94,3), + (381,207,94,3), + (432,236,94,3), + (788,435,94,3), + (934,572,94,2), + (612,336,95,3), + (512,281,96,3), + (554,304,96,3), + (587,323,97,3), + (264,143,98,3), + (282,152,98,3), + (346,187,98,3), + (494,271,98,3), + (606,333,98,3), + (6,3,99,3), + (82,42,99,3), + (348,188,99,3), + (529,291,99,3), + (838,476,99,2), + (839,477,99,2), + (840,478,99,2), + (841,479,99,2), + (842,480,99,2), + (249,135,100,3), + (305,164,100,3), + (307,165,100,3), + (320,172,100,3), + (438,239,100,3), + (752,417,100,3), + (68,35,101,3), + (423,231,101,3), + (905,543,102,2), + (843,481,103,2), + (944,582,104,2), + (848,486,107,2), + (878,516,107,2), + (947,585,115,2), + (859,497,117,2), + (889,527,117,2), + (908,546,119,2), + (871,509,121,2), + (901,539,121,2), + (909,547,123,2), + (937,575,127,2), + (932,570,128,2), + (943,581,131,2), + (925,563,132,2), + (916,554,133,2), + (912,550,137,2), + (869,507,140,2), + (899,537,140,2), + (849,487,141,2), + (879,517,141,2), + (921,559,142,2), + (919,557,145,2), + (911,549,149,2), + (865,503,150,2), + (895,533,150,2), + (942,580,151,2), + (914,552,153,2), + (852,490,154,2), + (882,520,154,2), + (940,578,159,2), + (945,583,161,2), + (872,510,162,2), + (902,540,162,2), + (870,508,163,2), + (900,538,163,2), + (930,568,167,2), + (931,569,170,2), + (853,491,174,2), + (883,521,174,2), + (928,566,174,2), + (279,151,176,2), + (281,152,176,2), + (283,153,176,2), + (284,154,176,2), + (286,155,176,2), + (288,156,176,2), + (290,157,176,2), + (292,158,176,2), + (294,159,176,2), + (296,160,176,2), + (298,161,176,2), + (300,162,176,2), + (302,163,176,2), + (304,164,176,2), + (306,165,176,2), + (308,166,176,2), + (310,167,176,2), + (312,168,176,2), + (314,169,176,2), + (316,170,176,2), + (318,171,176,2), + (319,172,176,2), + (321,173,176,2), + (323,174,176,2), + (324,175,176,2), + (326,176,176,2), + (327,177,176,2), + (329,178,176,2), + (331,179,176,2), + (332,180,176,2), + (333,181,176,2), + (335,182,176,2), + (337,183,176,2), + (339,184,176,2), + (341,185,176,2), + (343,186,176,2), + (345,187,176,2), + (347,188,176,2), + (349,189,176,2), + (350,190,176,2), + (352,191,176,2), + (354,192,176,2), + (355,193,176,2), + (357,194,176,2), + (359,195,176,2), + (361,196,176,2), + (362,197,176,2), + (364,198,176,2), + (366,199,176,2), + (368,200,176,2), + (369,201,176,2), + (370,202,176,2), + (372,203,176,2), + (374,204,176,2), + (376,205,176,2), + (378,206,176,2), + (380,207,176,2), + (382,208,176,2), + (384,209,176,2), + (386,210,176,2), + (388,211,176,2), + (390,212,176,2), + (392,213,176,2), + (394,214,176,2), + (396,215,176,2), + (397,216,176,2), + (398,217,176,2), + (400,218,176,2), + (402,219,176,2), + (404,220,176,2), + (406,221,176,2), + (407,222,176,2), + (409,223,176,2), + (410,224,176,2), + (412,225,176,2), + (414,226,176,2), + (416,227,176,2), + (417,228,176,2), + (419,229,176,2), + (420,230,176,2), + (422,231,176,2), + (424,232,176,2), + (426,233,176,2), + (428,234,176,2), + (430,235,176,2), + (431,236,176,2), + (433,237,176,2), + (435,238,176,2), + (437,239,176,2), + (439,240,176,2), + (441,241,176,2), + (443,242,176,2), + (445,243,176,2), + (446,244,176,2), + (447,245,176,2), + (449,246,176,2), + (451,247,176,2), + (453,248,176,2), + (455,249,176,2), + (457,250,176,2), + (459,251,176,2), + (461,252,176,2), + (463,253,176,2), + (464,254,176,2), + (466,255,176,2), + (468,256,176,2), + (470,257,176,2), + (472,258,176,2), + (473,259,176,2), + (475,260,176,2), + (477,261,176,2), + (479,262,176,2), + (481,263,176,2), + (482,264,176,2), + (483,265,176,2), + (484,266,176,2), + (486,267,176,2), + (487,268,176,2), + (489,269,176,2), + (491,270,176,2), + (493,271,176,2), + (495,272,176,2), + (497,273,176,2), + (499,274,176,2), + (500,275,176,2), + (502,276,176,2), + (504,277,176,2), + (506,278,176,2), + (507,279,176,2), + (509,280,176,2), + (511,281,176,2), + (513,282,176,2), + (515,283,176,2), + (517,284,176,2), + (519,285,176,2), + (521,286,176,2), + (523,287,176,2), + (524,288,176,2), + (526,289,176,2), + (527,290,176,2), + (528,291,176,2), + (530,292,176,2), + (532,293,176,2), + (534,294,176,2), + (536,295,176,2), + (538,296,176,2), + (540,297,176,2), + (542,298,176,2), + (544,299,176,2), + (546,300,176,2), + (938,576,177,2), + (936,574,178,2), + (906,544,181,2), + (907,545,184,2), + (868,506,186,2), + (898,536,186,2), + (935,573,186,2), + (954,592,193,2), + (920,558,194,2), + (941,579,195,2), + (863,501,196,2), + (893,531,196,2), + (858,496,197,2), + (888,526,197,2), + (867,505,198,2), + (897,535,198,2), + (949,587,199,2), + (873,511,202,2), + (903,541,202,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -1704,184 +1696,188 @@ 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,134,1,1,0,'174E Second Blvd N',174,'E',NULL,'Second','Blvd','N',NULL,NULL,NULL,NULL,'Gallupville',1,1031,NULL,'12073',NULL,1228,42.592287,-74.438129,0,NULL,NULL,NULL), - (2,88,1,1,0,'99N Bay Dr N',99,'N',NULL,'Bay','Dr','N',NULL,NULL,NULL,NULL,'Lowell',1,1021,NULL,'49331',NULL,1228,42.944838,-85.34928,0,NULL,NULL,NULL), - (3,117,1,1,0,'877H Pine St SE',877,'H',NULL,'Pine','St','SE',NULL,NULL,NULL,NULL,'Plover',1,1048,NULL,'54467',NULL,1228,44.452277,-89.54399,0,NULL,NULL,NULL), - (4,82,1,1,0,'927B Pine Blvd SE',927,'B',NULL,'Pine','Blvd','SE',NULL,NULL,NULL,NULL,'Colorado Springs',1,1005,NULL,'80906',NULL,1228,38.791242,-104.82492,0,NULL,NULL,NULL), - (5,72,1,1,0,'607F Dowlen Dr SW',607,'F',NULL,'Dowlen','Dr','SW',NULL,NULL,NULL,NULL,'Stuarts Draft',1,1045,NULL,'24477',NULL,1228,38.01473,-79.02733,0,NULL,NULL,NULL), - (6,135,1,1,0,'754G Cadell Blvd S',754,'G',NULL,'Cadell','Blvd','S',NULL,NULL,NULL,NULL,'Sugar Grove',1,1047,NULL,'26815',NULL,1228,38.482224,-79.33161,0,NULL,NULL,NULL), - (7,143,1,1,0,'2Y Woodbridge Way W',2,'Y',NULL,'Woodbridge','Way','W',NULL,NULL,NULL,NULL,'East Orange',1,1029,NULL,'07018',NULL,1228,40.75555,-74.21897,0,NULL,NULL,NULL), - (8,93,1,1,0,'799Z Martin Luther King Ave E',799,'Z',NULL,'Martin Luther King','Ave','E',NULL,NULL,NULL,NULL,'Fairfax',1,1045,NULL,'22034',NULL,1228,38.831813,-77.288755,0,NULL,NULL,NULL), - (9,25,1,1,0,'99W Lincoln Pl N',99,'W',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Northfield',1,1006,NULL,'06778',NULL,1228,41.694945,-73.10942,0,NULL,NULL,NULL), - (10,128,1,1,0,'457P Lincoln Pl SW',457,'P',NULL,'Lincoln','Pl','SW',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68136',NULL,1228,41.177298,-96.18662,0,NULL,NULL,NULL), - (11,86,1,1,0,'311D Caulder Ave NE',311,'D',NULL,'Caulder','Ave','NE',NULL,NULL,NULL,NULL,'Fort Mill',1,1039,NULL,'29715',NULL,1228,35.008416,-80.91644,0,NULL,NULL,NULL), - (12,108,1,1,0,'831V Martin Luther King Rd NW',831,'V',NULL,'Martin Luther King','Rd','NW',NULL,NULL,NULL,NULL,'Sewanee',1,1041,NULL,'37375',NULL,1228,35.193891,-85.91048,0,NULL,NULL,NULL), - (13,95,1,1,0,'762W Woodbridge Rd SE',762,'W',NULL,'Woodbridge','Rd','SE',NULL,NULL,NULL,NULL,'Chicopee',1,1020,NULL,'01021',NULL,1228,42.170731,-72.604842,0,NULL,NULL,NULL), - (14,110,1,1,0,'982E Van Ness St NW',982,'E',NULL,'Van Ness','St','NW',NULL,NULL,NULL,NULL,'Deer Park',1,1004,NULL,'94576',NULL,1228,38.553087,-122.47725,0,NULL,NULL,NULL), - (15,54,1,1,0,'923I Caulder Pl E',923,'I',NULL,'Caulder','Pl','E',NULL,NULL,NULL,NULL,'Pine Grove',1,1017,NULL,'70453',NULL,1228,30.702471,-90.77604,0,NULL,NULL,NULL), - (16,12,1,1,0,'865U States Pl N',865,'U',NULL,'States','Pl','N',NULL,NULL,NULL,NULL,'Pierceville',1,1015,NULL,'67868',NULL,1228,37.881899,-100.67849,0,NULL,NULL,NULL), - (17,23,1,1,0,'885W Lincoln Path SE',885,'W',NULL,'Lincoln','Path','SE',NULL,NULL,NULL,NULL,'Waco',1,1042,NULL,'76707',NULL,1228,31.552266,-97.15957,0,NULL,NULL,NULL), - (18,96,1,1,0,'64S Pine Way SE',64,'S',NULL,'Pine','Way','SE',NULL,NULL,NULL,NULL,'Wright City',1,1035,NULL,'74766',NULL,1228,34.148691,-94.95546,0,NULL,NULL,NULL), - (19,176,1,1,0,'494E Caulder Path NE',494,'E',NULL,'Caulder','Path','NE',NULL,NULL,NULL,NULL,'Culver City',1,1004,NULL,'90231',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL), - (20,160,1,1,0,'562E Main Dr NW',562,'E',NULL,'Main','Dr','NW',NULL,NULL,NULL,NULL,'Duke Center',1,1037,NULL,'16729',NULL,1228,41.96192,-78.4841,0,NULL,NULL,NULL), - (21,190,1,1,0,'38W Beech Dr N',38,'W',NULL,'Beech','Dr','N',NULL,NULL,NULL,NULL,'Adelanto',1,1004,NULL,'92031',NULL,1228,34.587473,-117.406293,0,NULL,NULL,NULL), - (22,9,1,1,0,'396X Jackson Rd N',396,'X',NULL,'Jackson','Rd','N',NULL,NULL,NULL,NULL,'Madison Heights',1,1045,NULL,'24572',NULL,1228,37.461272,-79.09364,0,NULL,NULL,NULL), - (23,162,1,1,0,'238V Martin Luther King Rd N',238,'V',NULL,'Martin Luther King','Rd','N',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60668',NULL,1228,41.811929,-87.68732,0,NULL,NULL,NULL), - (24,105,1,1,0,'233H Jackson Path N',233,'H',NULL,'Jackson','Path','N',NULL,NULL,NULL,NULL,'Bellville',1,1034,NULL,'44813',NULL,1228,40.606221,-82.52073,0,NULL,NULL,NULL), - (25,31,1,1,0,'453T Bay Ave SW',453,'T',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Columbia',1,1039,NULL,'29206',NULL,1228,34.037557,-80.96024,0,NULL,NULL,NULL), - (26,126,1,1,0,'804J Second Rd SW',804,'J',NULL,'Second','Rd','SW',NULL,NULL,NULL,NULL,'Masonville',1,1005,NULL,'80541',NULL,1228,40.529278,-105.372014,0,NULL,NULL,NULL), - (27,138,1,1,0,'626E College Way NW',626,'E',NULL,'College','Way','NW',NULL,NULL,NULL,NULL,'Deep Run',1,1032,NULL,'28525',NULL,1228,35.119845,-77.69208,0,NULL,NULL,NULL), - (28,150,1,1,0,'443G Maple Blvd N',443,'G',NULL,'Maple','Blvd','N',NULL,NULL,NULL,NULL,'Shawnee Mission',1,1015,NULL,'66201',NULL,1228,39.007755,-94.679486,0,NULL,NULL,NULL), - (29,200,1,1,0,'613B Beech Rd N',613,'B',NULL,'Beech','Rd','N',NULL,NULL,NULL,NULL,'Maquoketa',1,1014,NULL,'52060',NULL,1228,42.087769,-90.67352,0,NULL,NULL,NULL), - (30,5,1,1,0,'481L Van Ness Ln N',481,'L',NULL,'Van Ness','Ln','N',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10163',NULL,1228,40.780751,-73.977182,0,NULL,NULL,NULL), - (31,185,1,1,0,'695S Cadell Way SW',695,'S',NULL,'Cadell','Way','SW',NULL,NULL,NULL,NULL,'Pierce',1,1011,NULL,'83546',NULL,1228,46.525642,-115.82276,0,NULL,NULL,NULL), - (32,169,1,1,0,'107X Cadell Ln SE',107,'X',NULL,'Cadell','Ln','SE',NULL,NULL,NULL,NULL,'Patton',1,1024,NULL,'63662',NULL,1228,37.513967,-90.02477,0,NULL,NULL,NULL), - (33,173,1,1,0,'425G Woodbridge Rd S',425,'G',NULL,'Woodbridge','Rd','S',NULL,NULL,NULL,NULL,'Saint George',1,1043,NULL,'84790',NULL,1228,37.075039,-113.55568,0,NULL,NULL,NULL), - (34,84,1,1,0,'732S Cadell Path S',732,'S',NULL,'Cadell','Path','S',NULL,NULL,NULL,NULL,'Garrison',1,1042,NULL,'75946',NULL,1228,31.834379,-94.52629,0,NULL,NULL,NULL), - (35,142,1,1,0,'107H Second Rd N',107,'H',NULL,'Second','Rd','N',NULL,NULL,NULL,NULL,'Stoneboro',1,1037,NULL,'16153',NULL,1228,41.335391,-80.08895,0,NULL,NULL,NULL), - (36,120,1,1,0,'579V Green Pl S',579,'V',NULL,'Green','Pl','S',NULL,NULL,NULL,NULL,'Thomasville',1,1037,NULL,'17364',NULL,1228,39.92813,-76.9018,0,NULL,NULL,NULL), - (37,153,1,1,0,'627M Caulder Path S',627,'M',NULL,'Caulder','Path','S',NULL,NULL,NULL,NULL,'Sacramento',1,1004,NULL,'94230',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL), - (38,109,1,1,0,'17E El Camino Ln E',17,'E',NULL,'El Camino','Ln','E',NULL,NULL,NULL,NULL,'West Dummerston',1,1044,NULL,'05357',NULL,1228,42.957233,-72.62408,0,NULL,NULL,NULL), - (39,30,1,1,0,'936O Bay Blvd E',936,'O',NULL,'Bay','Blvd','E',NULL,NULL,NULL,NULL,'Rocky Hill',1,1006,NULL,'06067',NULL,1228,41.660949,-72.66098,0,NULL,NULL,NULL), - (40,149,1,1,0,'857T Second Path SE',857,'T',NULL,'Second','Path','SE',NULL,NULL,NULL,NULL,'Belmont',1,1031,NULL,'14813',NULL,1228,42.238994,-78.01907,0,NULL,NULL,NULL), - (41,175,1,1,0,'482G Van Ness Rd W',482,'G',NULL,'Van Ness','Rd','W',NULL,NULL,NULL,NULL,'Elwell',1,1021,NULL,'48832',NULL,1228,43.411924,-84.77657,0,NULL,NULL,NULL), - (42,33,1,1,0,'153A Woodbridge Rd SW',153,'A',NULL,'Woodbridge','Rd','SW',NULL,NULL,NULL,NULL,'Comfort',1,1047,NULL,'25049',NULL,1228,38.131663,-81.56282,0,NULL,NULL,NULL), - (43,67,1,1,0,'411O Van Ness Rd W',411,'O',NULL,'Van Ness','Rd','W',NULL,NULL,NULL,NULL,'Norristown',1,1037,NULL,'19488',NULL,1228,39.983153,-75.748055,0,NULL,NULL,NULL), - (44,39,1,1,0,'210V Cadell Way W',210,'V',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Tarrytown',1,1031,NULL,'10592',NULL,1228,41.119008,-73.732996,0,NULL,NULL,NULL), - (45,158,1,1,0,'415D Dowlen Ln SW',415,'D',NULL,'Dowlen','Ln','SW',NULL,NULL,NULL,NULL,'Brawley',1,1004,NULL,'92227',NULL,1228,32.98975,-115.50475,0,NULL,NULL,NULL), - (46,167,1,1,0,'295B Woodbridge Way SW',295,'B',NULL,'Woodbridge','Way','SW',NULL,NULL,NULL,NULL,'Griffithville',1,1003,NULL,'72060',NULL,1228,35.091184,-91.58451,0,NULL,NULL,NULL), - (47,10,1,1,0,'246Q Maple Path E',246,'Q',NULL,'Maple','Path','E',NULL,NULL,NULL,NULL,'Honolulu',1,1010,NULL,'96827',NULL,1228,24.859832,-168.021815,0,NULL,NULL,NULL), - (48,177,1,1,0,'168T Green Blvd E',168,'T',NULL,'Green','Blvd','E',NULL,NULL,NULL,NULL,'Los Angeles',1,1004,NULL,'90087',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL), - (49,129,1,1,0,'524D Main Ave SW',524,'D',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92521',NULL,1228,33.752886,-116.055617,0,NULL,NULL,NULL), - (50,174,1,1,0,'88B Second Rd S',88,'B',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'South Heart',1,1033,NULL,'58655',NULL,1228,46.808668,-103.03364,0,NULL,NULL,NULL), - (51,65,1,1,0,'602H Jackson Pl W',602,'H',NULL,'Jackson','Pl','W',NULL,NULL,NULL,NULL,'Bellarthur',1,1032,NULL,'27811',NULL,1228,35.584685,-77.513357,0,NULL,NULL,NULL), - (52,179,1,1,0,'103N Pine Blvd NW',103,'N',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Tyler',1,1042,NULL,'75704',NULL,1228,32.388631,-95.41373,0,NULL,NULL,NULL), - (53,50,1,1,0,'94F Main Rd N',94,'F',NULL,'Main','Rd','N',NULL,NULL,NULL,NULL,'Ware',1,1020,NULL,'01082',NULL,1228,42.270611,-72.26067,0,NULL,NULL,NULL), - (54,103,1,1,0,'208X El Camino Rd SE',208,'X',NULL,'El Camino','Rd','SE',NULL,NULL,NULL,NULL,'Wolcott',1,1031,NULL,'14590',NULL,1228,43.234753,-76.8252,0,NULL,NULL,NULL), - (55,198,1,1,0,'815J Cadell Dr S',815,'J',NULL,'Cadell','Dr','S',NULL,NULL,NULL,NULL,'Aberdeen',1,1032,NULL,'28315',NULL,1228,35.12416,-79.4415,0,NULL,NULL,NULL), - (56,52,1,1,0,'894R Maple Path SW',894,'R',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Cypress',1,1042,NULL,'77410',NULL,1228,29.83399,-95.434241,0,NULL,NULL,NULL), - (57,188,1,1,0,'72N States Ln W',72,'N',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Mohnton',1,1037,NULL,'19540',NULL,1228,40.250592,-75.96683,0,NULL,NULL,NULL), - (58,144,1,1,0,'676V States Rd NW',676,'V',NULL,'States','Rd','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75245',NULL,1228,32.922499,-96.535191,0,NULL,NULL,NULL), - (59,182,1,1,0,'308K Lincoln Pl N',308,'K',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Lynchburg',1,1041,NULL,'37352',NULL,1228,35.276795,-86.35264,0,NULL,NULL,NULL), - (60,127,1,1,0,'115M Martin Luther King Rd SW',115,'M',NULL,'Martin Luther King','Rd','SW',NULL,NULL,NULL,NULL,'Stephenson',1,1021,NULL,'49887',NULL,1228,45.417184,-87.6281,0,NULL,NULL,NULL), - (61,197,1,1,0,'457P States Pl E',457,'P',NULL,'States','Pl','E',NULL,NULL,NULL,NULL,'Gramling',1,1039,NULL,'29348',NULL,1228,34.888237,-81.96902,0,NULL,NULL,NULL), - (62,19,1,1,0,'615X Jackson Dr N',615,'X',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Kings Mills',1,1034,NULL,'45034',NULL,1228,39.359268,-84.24898,0,NULL,NULL,NULL), - (63,38,1,1,0,'715F Main Ave E',715,'F',NULL,'Main','Ave','E',NULL,NULL,NULL,NULL,'Pacoima',1,1004,NULL,'91331',NULL,1228,34.254751,-118.42406,0,NULL,NULL,NULL), - (64,76,3,1,0,'510X Martin Luther King Dr SE',510,'X',NULL,'Martin Luther King','Dr','SE',NULL,'Receiving',NULL,NULL,'Lyons',1,1048,NULL,'53148',NULL,1228,42.649557,-88.35965,0,NULL,NULL,NULL), - (65,141,2,1,0,'510X Martin Luther King Dr SE',510,'X',NULL,'Martin Luther King','Dr','SE',NULL,'Receiving',NULL,NULL,'Lyons',1,1048,NULL,'53148',NULL,1228,42.649557,-88.35965,0,NULL,NULL,64), - (66,49,3,1,0,'787G Second Path S',787,'G',NULL,'Second','Path','S',NULL,'Cuffe Parade',NULL,NULL,'Mottville',1,1031,NULL,'13119',NULL,1228,42.97446,-76.440833,0,NULL,NULL,NULL), - (67,145,2,1,0,'787G Second Path S',787,'G',NULL,'Second','Path','S',NULL,'Cuffe Parade',NULL,NULL,'Mottville',1,1031,NULL,'13119',NULL,1228,42.97446,-76.440833,0,NULL,NULL,66), - (68,98,3,1,0,'658J Jackson St E',658,'J',NULL,'Jackson','St','E',NULL,'Community Relations',NULL,NULL,'San Angelo',1,1042,NULL,'76902',NULL,1228,31.39577,-100.68959,0,NULL,NULL,NULL), - (69,40,2,1,0,'658J Jackson St E',658,'J',NULL,'Jackson','St','E',NULL,'Community Relations',NULL,NULL,'San Angelo',1,1042,NULL,'76902',NULL,1228,31.39577,-100.68959,0,NULL,NULL,68), - (70,37,3,1,0,'101I States Way S',101,'I',NULL,'States','Way','S',NULL,'Urgent',NULL,NULL,'Spring Park',1,1022,NULL,'55384',NULL,1228,44.936423,-93.62868,0,NULL,NULL,NULL), - (71,110,2,0,0,'101I States Way S',101,'I',NULL,'States','Way','S',NULL,'Urgent',NULL,NULL,'Spring Park',1,1022,NULL,'55384',NULL,1228,44.936423,-93.62868,0,NULL,NULL,70), - (72,115,3,1,0,'555H Dowlen Blvd SE',555,'H',NULL,'Dowlen','Blvd','SE',NULL,'Attn: Development',NULL,NULL,'Bristol',1,1041,NULL,'37625',NULL,1228,36.504158,-82.26446,0,NULL,NULL,NULL), - (73,94,3,1,0,'675U Jackson Path NW',675,'U',NULL,'Jackson','Path','NW',NULL,'Payables Dept.',NULL,NULL,'Elkton',1,1022,NULL,'55933',NULL,1228,43.65099,-92.70596,0,NULL,NULL,NULL), - (74,140,3,1,0,'909N Caulder Path N',909,'N',NULL,'Caulder','Path','N',NULL,'Disbursements',NULL,NULL,'Orla',1,1042,NULL,'79770',NULL,1228,31.383297,-103.556598,0,NULL,NULL,NULL), - (75,96,2,0,0,'909N Caulder Path N',909,'N',NULL,'Caulder','Path','N',NULL,'Disbursements',NULL,NULL,'Orla',1,1042,NULL,'79770',NULL,1228,31.383297,-103.556598,0,NULL,NULL,74), - (76,124,3,1,0,'602K Maple Way SE',602,'K',NULL,'Maple','Way','SE',NULL,'Payables Dept.',NULL,NULL,'Cuttingsville',1,1044,NULL,'05738',NULL,1228,43.507854,-72.8642,0,NULL,NULL,NULL), - (77,185,2,0,0,'602K Maple Way SE',602,'K',NULL,'Maple','Way','SE',NULL,'Payables Dept.',NULL,NULL,'Cuttingsville',1,1044,NULL,'05738',NULL,1228,43.507854,-72.8642,0,NULL,NULL,76), - (78,66,3,1,0,'319R College Way SE',319,'R',NULL,'College','Way','SE',NULL,'Attn: Accounting',NULL,NULL,'Lyon Station',1,1037,NULL,'19536',NULL,1228,40.480194,-75.75698,0,NULL,NULL,NULL), - (79,83,2,1,0,'319R College Way SE',319,'R',NULL,'College','Way','SE',NULL,'Attn: Accounting',NULL,NULL,'Lyon Station',1,1037,NULL,'19536',NULL,1228,40.480194,-75.75698,0,NULL,NULL,78), - (80,119,3,1,0,'188C Second Pl SE',188,'C',NULL,'Second','Pl','SE',NULL,'c/o PO Plus',NULL,NULL,'Pompano Beach',1,1008,NULL,'33068',NULL,1228,26.21606,-80.21776,0,NULL,NULL,NULL), - (81,181,2,1,0,'188C Second Pl SE',188,'C',NULL,'Second','Pl','SE',NULL,'c/o PO Plus',NULL,NULL,'Pompano Beach',1,1008,NULL,'33068',NULL,1228,26.21606,-80.21776,0,NULL,NULL,80), - (82,101,3,1,0,'464F Dowlen Dr SE',464,'F',NULL,'Dowlen','Dr','SE',NULL,'Disbursements',NULL,NULL,'Harrisburg',1,1037,NULL,'17113',NULL,1228,40.23299,-76.82579,0,NULL,NULL,NULL), - (83,36,3,1,0,'86E Northpoint Ln N',86,'E',NULL,'Northpoint','Ln','N',NULL,'Urgent',NULL,NULL,'Providence',1,1038,NULL,'02907',NULL,1228,41.79855,-71.42449,0,NULL,NULL,NULL), - (84,175,2,0,0,'86E Northpoint Ln N',86,'E',NULL,'Northpoint','Ln','N',NULL,'Urgent',NULL,NULL,'Providence',1,1038,NULL,'02907',NULL,1228,41.79855,-71.42449,0,NULL,NULL,83), - (85,53,3,1,0,'412D Martin Luther King St SW',412,'D',NULL,'Martin Luther King','St','SW',NULL,'Payables Dept.',NULL,NULL,'Irvine',1,1004,NULL,'92709',NULL,1228,33.640302,-117.769442,0,NULL,NULL,NULL), - (86,6,3,1,0,'131E Van Ness Path SE',131,'E',NULL,'Van Ness','Path','SE',NULL,'Subscriptions Dept',NULL,NULL,'Paradise',1,1015,NULL,'67658',NULL,1228,39.118835,-98.91517,0,NULL,NULL,NULL), - (87,8,3,1,0,'660Q Caulder Ave NW',660,'Q',NULL,'Caulder','Ave','NW',NULL,'Donor Relations',NULL,NULL,'Hardinsburg',1,1016,NULL,'40143',NULL,1228,37.777083,-86.48345,0,NULL,NULL,NULL), - (88,4,3,1,0,'42L College St NE',42,'L',NULL,'College','St','NE',NULL,'Community Relations',NULL,NULL,'Austin',1,1042,NULL,'78760',NULL,1228,30.326374,-97.771258,0,NULL,NULL,NULL), - (89,168,2,1,0,'42L College St NE',42,'L',NULL,'College','St','NE',NULL,'Community Relations',NULL,NULL,'Austin',1,1042,NULL,'78760',NULL,1228,30.326374,-97.771258,0,NULL,NULL,88), - (90,121,3,1,0,'946A College St N',946,'A',NULL,'College','St','N',NULL,'Payables Dept.',NULL,NULL,'Mcalester',1,1035,NULL,'74501',NULL,1228,34.944399,-95.75709,0,NULL,NULL,NULL), - (91,186,3,1,0,'924T Caulder Ave S',924,'T',NULL,'Caulder','Ave','S',NULL,'Urgent',NULL,NULL,'Westfield',1,1032,NULL,'27053',NULL,1228,36.473951,-80.34752,0,NULL,NULL,NULL), - (92,104,2,1,0,'924T Caulder Ave S',924,'T',NULL,'Caulder','Ave','S',NULL,'Urgent',NULL,NULL,'Westfield',1,1032,NULL,'27053',NULL,1228,36.473951,-80.34752,0,NULL,NULL,91), - (93,2,3,1,0,'394A Second Blvd NE',394,'A',NULL,'Second','Blvd','NE',NULL,'Churchgate',NULL,NULL,'Concord',1,1032,NULL,'28026',NULL,1228,35.346285,-80.541088,0,NULL,NULL,NULL), - (94,183,2,1,0,'394A Second Blvd NE',394,'A',NULL,'Second','Blvd','NE',NULL,'Churchgate',NULL,NULL,'Concord',1,1032,NULL,'28026',NULL,1228,35.346285,-80.541088,0,NULL,NULL,93), - (95,7,3,1,0,'93V Second St E',93,'V',NULL,'Second','St','E',NULL,'Donor Relations',NULL,NULL,'Port Royal',1,1037,NULL,'17082',NULL,1228,40.508563,-77.42137,0,NULL,NULL,NULL), - (96,79,1,1,0,'210V Cadell Way W',210,'V',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Tarrytown',1,1031,NULL,'10592',NULL,1228,41.119008,-73.732996,0,NULL,NULL,44), - (97,112,1,1,0,'210V Cadell Way W',210,'V',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Tarrytown',1,1031,NULL,'10592',NULL,1228,41.119008,-73.732996,0,NULL,NULL,44), - (98,154,1,1,0,'210V Cadell Way W',210,'V',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Tarrytown',1,1031,NULL,'10592',NULL,1228,41.119008,-73.732996,0,NULL,NULL,44), - (99,67,1,0,0,'210V Cadell Way W',210,'V',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Tarrytown',1,1031,NULL,'10592',NULL,1228,41.119008,-73.732996,0,NULL,NULL,44), - (100,41,1,1,0,'415D Dowlen Ln SW',415,'D',NULL,'Dowlen','Ln','SW',NULL,NULL,NULL,NULL,'Brawley',1,1004,NULL,'92227',NULL,1228,32.98975,-115.50475,0,NULL,NULL,45), - (101,43,1,1,0,'415D Dowlen Ln SW',415,'D',NULL,'Dowlen','Ln','SW',NULL,NULL,NULL,NULL,'Brawley',1,1004,NULL,'92227',NULL,1228,32.98975,-115.50475,0,NULL,NULL,45), - (102,201,1,1,0,'415D Dowlen Ln SW',415,'D',NULL,'Dowlen','Ln','SW',NULL,NULL,NULL,NULL,'Brawley',1,1004,NULL,'92227',NULL,1228,32.98975,-115.50475,0,NULL,NULL,45), - (103,194,1,1,0,'512S Green Ave E',512,'S',NULL,'Green','Ave','E',NULL,NULL,NULL,NULL,'Powersite',1,1024,NULL,'65731',NULL,1228,36.655356,-93.12274,0,NULL,NULL,NULL), - (104,178,1,1,0,'295B Woodbridge Way SW',295,'B',NULL,'Woodbridge','Way','SW',NULL,NULL,NULL,NULL,'Griffithville',1,1003,NULL,'72060',NULL,1228,35.091184,-91.58451,0,NULL,NULL,46), - (105,80,1,1,0,'295B Woodbridge Way SW',295,'B',NULL,'Woodbridge','Way','SW',NULL,NULL,NULL,NULL,'Griffithville',1,1003,NULL,'72060',NULL,1228,35.091184,-91.58451,0,NULL,NULL,46), - (106,172,1,1,0,'295B Woodbridge Way SW',295,'B',NULL,'Woodbridge','Way','SW',NULL,NULL,NULL,NULL,'Griffithville',1,1003,NULL,'72060',NULL,1228,35.091184,-91.58451,0,NULL,NULL,46), - (107,171,1,1,0,'295B Woodbridge Way SW',295,'B',NULL,'Woodbridge','Way','SW',NULL,NULL,NULL,NULL,'Griffithville',1,1003,NULL,'72060',NULL,1228,35.091184,-91.58451,0,NULL,NULL,46), - (108,116,1,1,0,'246Q Maple Path E',246,'Q',NULL,'Maple','Path','E',NULL,NULL,NULL,NULL,'Honolulu',1,1010,NULL,'96827',NULL,1228,24.859832,-168.021815,0,NULL,NULL,47), - (109,165,1,1,0,'246Q Maple Path E',246,'Q',NULL,'Maple','Path','E',NULL,NULL,NULL,NULL,'Honolulu',1,1010,NULL,'96827',NULL,1228,24.859832,-168.021815,0,NULL,NULL,47), - (110,14,1,1,0,'246Q Maple Path E',246,'Q',NULL,'Maple','Path','E',NULL,NULL,NULL,NULL,'Honolulu',1,1010,NULL,'96827',NULL,1228,24.859832,-168.021815,0,NULL,NULL,47), - (111,152,1,1,0,'246Q Maple Path E',246,'Q',NULL,'Maple','Path','E',NULL,NULL,NULL,NULL,'Honolulu',1,1010,NULL,'96827',NULL,1228,24.859832,-168.021815,0,NULL,NULL,47), - (112,58,1,1,0,'168T Green Blvd E',168,'T',NULL,'Green','Blvd','E',NULL,NULL,NULL,NULL,'Los Angeles',1,1004,NULL,'90087',NULL,1228,33.786594,-118.298662,0,NULL,NULL,48), - (113,21,1,1,0,'168T Green Blvd E',168,'T',NULL,'Green','Blvd','E',NULL,NULL,NULL,NULL,'Los Angeles',1,1004,NULL,'90087',NULL,1228,33.786594,-118.298662,0,NULL,NULL,48), - (114,195,1,1,0,'168T Green Blvd E',168,'T',NULL,'Green','Blvd','E',NULL,NULL,NULL,NULL,'Los Angeles',1,1004,NULL,'90087',NULL,1228,33.786594,-118.298662,0,NULL,NULL,48), - (115,133,1,1,0,'649R Woodbridge Ln S',649,'R',NULL,'Woodbridge','Ln','S',NULL,NULL,NULL,NULL,'Harristown',1,1012,NULL,'62537',NULL,1228,39.867151,-89.11324,0,NULL,NULL,NULL), - (116,192,1,1,0,'524D Main Ave SW',524,'D',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92521',NULL,1228,33.752886,-116.055617,0,NULL,NULL,49), - (117,90,1,1,0,'524D Main Ave SW',524,'D',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92521',NULL,1228,33.752886,-116.055617,0,NULL,NULL,49), - (118,113,1,1,0,'524D Main Ave SW',524,'D',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92521',NULL,1228,33.752886,-116.055617,0,NULL,NULL,49), - (119,187,1,1,0,'524D Main Ave SW',524,'D',NULL,'Main','Ave','SW',NULL,NULL,NULL,NULL,'Riverside',1,1004,NULL,'92521',NULL,1228,33.752886,-116.055617,0,NULL,NULL,49), - (120,118,1,1,0,'88B Second Rd S',88,'B',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'South Heart',1,1033,NULL,'58655',NULL,1228,46.808668,-103.03364,0,NULL,NULL,50), - (121,114,1,1,0,'88B Second Rd S',88,'B',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'South Heart',1,1033,NULL,'58655',NULL,1228,46.808668,-103.03364,0,NULL,NULL,50), - (122,155,1,1,0,'88B Second Rd S',88,'B',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'South Heart',1,1033,NULL,'58655',NULL,1228,46.808668,-103.03364,0,NULL,NULL,50), - (123,147,1,1,0,'88B Second Rd S',88,'B',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'South Heart',1,1033,NULL,'58655',NULL,1228,46.808668,-103.03364,0,NULL,NULL,50), - (124,125,1,1,0,'602H Jackson Pl W',602,'H',NULL,'Jackson','Pl','W',NULL,NULL,NULL,NULL,'Bellarthur',1,1032,NULL,'27811',NULL,1228,35.584685,-77.513357,0,NULL,NULL,51), - (125,68,1,1,0,'602H Jackson Pl W',602,'H',NULL,'Jackson','Pl','W',NULL,NULL,NULL,NULL,'Bellarthur',1,1032,NULL,'27811',NULL,1228,35.584685,-77.513357,0,NULL,NULL,51), - (126,45,1,1,0,'602H Jackson Pl W',602,'H',NULL,'Jackson','Pl','W',NULL,NULL,NULL,NULL,'Bellarthur',1,1032,NULL,'27811',NULL,1228,35.584685,-77.513357,0,NULL,NULL,51), - (127,161,1,1,0,'602H Jackson Pl W',602,'H',NULL,'Jackson','Pl','W',NULL,NULL,NULL,NULL,'Bellarthur',1,1032,NULL,'27811',NULL,1228,35.584685,-77.513357,0,NULL,NULL,51), - (128,159,1,1,0,'103N Pine Blvd NW',103,'N',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Tyler',1,1042,NULL,'75704',NULL,1228,32.388631,-95.41373,0,NULL,NULL,52), - (129,64,1,1,0,'103N Pine Blvd NW',103,'N',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Tyler',1,1042,NULL,'75704',NULL,1228,32.388631,-95.41373,0,NULL,NULL,52), - (130,199,1,1,0,'103N Pine Blvd NW',103,'N',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Tyler',1,1042,NULL,'75704',NULL,1228,32.388631,-95.41373,0,NULL,NULL,52), - (131,69,1,1,0,'103N Pine Blvd NW',103,'N',NULL,'Pine','Blvd','NW',NULL,NULL,NULL,NULL,'Tyler',1,1042,NULL,'75704',NULL,1228,32.388631,-95.41373,0,NULL,NULL,52), - (132,181,1,0,0,'94F Main Rd N',94,'F',NULL,'Main','Rd','N',NULL,NULL,NULL,NULL,'Ware',1,1020,NULL,'01082',NULL,1228,42.270611,-72.26067,0,NULL,NULL,53), - (133,77,1,1,0,'94F Main Rd N',94,'F',NULL,'Main','Rd','N',NULL,NULL,NULL,NULL,'Ware',1,1020,NULL,'01082',NULL,1228,42.270611,-72.26067,0,NULL,NULL,53), - (134,191,1,1,0,'94F Main Rd N',94,'F',NULL,'Main','Rd','N',NULL,NULL,NULL,NULL,'Ware',1,1020,NULL,'01082',NULL,1228,42.270611,-72.26067,0,NULL,NULL,53), - (135,20,1,1,0,'517A Main Pl E',517,'A',NULL,'Main','Pl','E',NULL,NULL,NULL,NULL,'Kamas',1,1043,NULL,'84036',NULL,1228,40.625883,-111.20141,0,NULL,NULL,NULL), - (136,26,1,1,0,'208X El Camino Rd SE',208,'X',NULL,'El Camino','Rd','SE',NULL,NULL,NULL,NULL,'Wolcott',1,1031,NULL,'14590',NULL,1228,43.234753,-76.8252,0,NULL,NULL,54), - (137,180,1,1,0,'208X El Camino Rd SE',208,'X',NULL,'El Camino','Rd','SE',NULL,NULL,NULL,NULL,'Wolcott',1,1031,NULL,'14590',NULL,1228,43.234753,-76.8252,0,NULL,NULL,54), - (138,11,1,1,0,'208X El Camino Rd SE',208,'X',NULL,'El Camino','Rd','SE',NULL,NULL,NULL,NULL,'Wolcott',1,1031,NULL,'14590',NULL,1228,43.234753,-76.8252,0,NULL,NULL,54), - (139,156,1,1,0,'793C Maple Path N',793,'C',NULL,'Maple','Path','N',NULL,NULL,NULL,NULL,'Alpharetta',1,1009,NULL,'30022',NULL,1228,34.026238,-84.24506,0,NULL,NULL,NULL), - (140,91,1,1,0,'815J Cadell Dr S',815,'J',NULL,'Cadell','Dr','S',NULL,NULL,NULL,NULL,'Aberdeen',1,1032,NULL,'28315',NULL,1228,35.12416,-79.4415,0,NULL,NULL,55), - (141,3,1,1,0,'815J Cadell Dr S',815,'J',NULL,'Cadell','Dr','S',NULL,NULL,NULL,NULL,'Aberdeen',1,1032,NULL,'28315',NULL,1228,35.12416,-79.4415,0,NULL,NULL,55), - (142,73,1,1,0,'815J Cadell Dr S',815,'J',NULL,'Cadell','Dr','S',NULL,NULL,NULL,NULL,'Aberdeen',1,1032,NULL,'28315',NULL,1228,35.12416,-79.4415,0,NULL,NULL,55), - (143,99,1,1,0,'919I Martin Luther King St SE',919,'I',NULL,'Martin Luther King','St','SE',NULL,NULL,NULL,NULL,'North Highlands',1,1004,NULL,'95660',NULL,1228,38.676103,-121.37656,0,NULL,NULL,NULL), - (144,139,1,1,0,'894R Maple Path SW',894,'R',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Cypress',1,1042,NULL,'77410',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56), - (145,189,1,1,0,'894R Maple Path SW',894,'R',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Cypress',1,1042,NULL,'77410',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56), - (146,62,1,1,0,'894R Maple Path SW',894,'R',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Cypress',1,1042,NULL,'77410',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56), - (147,71,1,1,0,'894R Maple Path SW',894,'R',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Cypress',1,1042,NULL,'77410',NULL,1228,29.83399,-95.434241,0,NULL,NULL,56), - (148,40,1,0,0,'72N States Ln W',72,'N',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Mohnton',1,1037,NULL,'19540',NULL,1228,40.250592,-75.96683,0,NULL,NULL,57), - (149,92,1,1,0,'72N States Ln W',72,'N',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Mohnton',1,1037,NULL,'19540',NULL,1228,40.250592,-75.96683,0,NULL,NULL,57), - (150,70,1,1,0,'72N States Ln W',72,'N',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Mohnton',1,1037,NULL,'19540',NULL,1228,40.250592,-75.96683,0,NULL,NULL,57), - (151,87,1,1,0,'72N States Ln W',72,'N',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'Mohnton',1,1037,NULL,'19540',NULL,1228,40.250592,-75.96683,0,NULL,NULL,57), - (152,57,1,1,0,'676V States Rd NW',676,'V',NULL,'States','Rd','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75245',NULL,1228,32.922499,-96.535191,0,NULL,NULL,58), - (153,157,1,1,0,'676V States Rd NW',676,'V',NULL,'States','Rd','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75245',NULL,1228,32.922499,-96.535191,0,NULL,NULL,58), - (154,75,1,1,0,'676V States Rd NW',676,'V',NULL,'States','Rd','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75245',NULL,1228,32.922499,-96.535191,0,NULL,NULL,58), - (155,32,1,1,0,'676V States Rd NW',676,'V',NULL,'States','Rd','NW',NULL,NULL,NULL,NULL,'Dallas',1,1042,NULL,'75245',NULL,1228,32.922499,-96.535191,0,NULL,NULL,58), - (156,51,1,1,0,'308K Lincoln Pl N',308,'K',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Lynchburg',1,1041,NULL,'37352',NULL,1228,35.276795,-86.35264,0,NULL,NULL,59), - (157,122,1,1,0,'308K Lincoln Pl N',308,'K',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Lynchburg',1,1041,NULL,'37352',NULL,1228,35.276795,-86.35264,0,NULL,NULL,59), - (158,196,1,1,0,'308K Lincoln Pl N',308,'K',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Lynchburg',1,1041,NULL,'37352',NULL,1228,35.276795,-86.35264,0,NULL,NULL,59), - (159,104,1,0,0,'308K Lincoln Pl N',308,'K',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Lynchburg',1,1041,NULL,'37352',NULL,1228,35.276795,-86.35264,0,NULL,NULL,59), - (160,44,1,1,0,'115M Martin Luther King Rd SW',115,'M',NULL,'Martin Luther King','Rd','SW',NULL,NULL,NULL,NULL,'Stephenson',1,1021,NULL,'49887',NULL,1228,45.417184,-87.6281,0,NULL,NULL,60), - (161,166,1,1,0,'115M Martin Luther King Rd SW',115,'M',NULL,'Martin Luther King','Rd','SW',NULL,NULL,NULL,NULL,'Stephenson',1,1021,NULL,'49887',NULL,1228,45.417184,-87.6281,0,NULL,NULL,60), - (162,89,1,1,0,'115M Martin Luther King Rd SW',115,'M',NULL,'Martin Luther King','Rd','SW',NULL,NULL,NULL,NULL,'Stephenson',1,1021,NULL,'49887',NULL,1228,45.417184,-87.6281,0,NULL,NULL,60), - (163,163,1,1,0,'193B El Camino Pl S',193,'B',NULL,'El Camino','Pl','S',NULL,NULL,NULL,NULL,'Greenfield',1,1012,NULL,'62044',NULL,1228,39.362285,-90.22147,0,NULL,NULL,NULL), - (164,107,1,1,0,'457P States Pl E',457,'P',NULL,'States','Pl','E',NULL,NULL,NULL,NULL,'Gramling',1,1039,NULL,'29348',NULL,1228,34.888237,-81.96902,0,NULL,NULL,61), - (165,130,1,1,0,'457P States Pl E',457,'P',NULL,'States','Pl','E',NULL,NULL,NULL,NULL,'Gramling',1,1039,NULL,'29348',NULL,1228,34.888237,-81.96902,0,NULL,NULL,61), - (166,183,1,0,0,'457P States Pl E',457,'P',NULL,'States','Pl','E',NULL,NULL,NULL,NULL,'Gramling',1,1039,NULL,'29348',NULL,1228,34.888237,-81.96902,0,NULL,NULL,61), - (167,97,1,1,0,'457P States Pl E',457,'P',NULL,'States','Pl','E',NULL,NULL,NULL,NULL,'Gramling',1,1039,NULL,'29348',NULL,1228,34.888237,-81.96902,0,NULL,NULL,61), - (168,18,1,1,0,'615X Jackson Dr N',615,'X',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Kings Mills',1,1034,NULL,'45034',NULL,1228,39.359268,-84.24898,0,NULL,NULL,62), - (169,85,1,1,0,'615X Jackson Dr N',615,'X',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Kings Mills',1,1034,NULL,'45034',NULL,1228,39.359268,-84.24898,0,NULL,NULL,62), - (170,56,1,1,0,'615X Jackson Dr N',615,'X',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Kings Mills',1,1034,NULL,'45034',NULL,1228,39.359268,-84.24898,0,NULL,NULL,62), - (171,55,1,1,0,'615X Jackson Dr N',615,'X',NULL,'Jackson','Dr','N',NULL,NULL,NULL,NULL,'Kings Mills',1,1034,NULL,'45034',NULL,1228,39.359268,-84.24898,0,NULL,NULL,62), - (172,22,1,1,0,'715F Main Ave E',715,'F',NULL,'Main','Ave','E',NULL,NULL,NULL,NULL,'Pacoima',1,1004,NULL,'91331',NULL,1228,34.254751,-118.42406,0,NULL,NULL,63), - (173,193,1,1,0,'715F Main Ave E',715,'F',NULL,'Main','Ave','E',NULL,NULL,NULL,NULL,'Pacoima',1,1004,NULL,'91331',NULL,1228,34.254751,-118.42406,0,NULL,NULL,63), - (174,168,1,0,0,'715F Main Ave E',715,'F',NULL,'Main','Ave','E',NULL,NULL,NULL,NULL,'Pacoima',1,1004,NULL,'91331',NULL,1228,34.254751,-118.42406,0,NULL,NULL,63), - (175,28,1,1,0,'715F Main Ave E',715,'F',NULL,'Main','Ave','E',NULL,NULL,NULL,NULL,'Pacoima',1,1004,NULL,'91331',NULL,1228,34.254751,-118.42406,0,NULL,NULL,63), - (176,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), - (177,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), - (178,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,41,1,1,0,'118B Pine Pl SE',118,'B',NULL,'Pine','Pl','SE',NULL,NULL,NULL,NULL,'Dahlonega',1,1009,NULL,'30597',NULL,1228,34.527671,-83.980879,0,NULL,NULL,NULL), + (2,171,1,1,0,'848R Main Pl W',848,'R',NULL,'Main','Pl','W',NULL,NULL,NULL,NULL,'Brushton',1,1031,NULL,'12916',NULL,1228,44.830736,-74.51434,0,NULL,NULL,NULL), + (3,64,1,1,0,'399Y Woodbridge Ave W',399,'Y',NULL,'Woodbridge','Ave','W',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77253',NULL,1228,29.83399,-95.434241,0,NULL,NULL,NULL), + (4,178,1,1,0,'441M Jackson St SE',441,'M',NULL,'Jackson','St','SE',NULL,NULL,NULL,NULL,'Palm Bay',1,1008,NULL,'32908',NULL,1228,27.958982,-80.68591,0,NULL,NULL,NULL), + (5,24,1,1,0,'327M States Pl NE',327,'M',NULL,'States','Pl','NE',NULL,NULL,NULL,NULL,'Grand Mound',1,1014,NULL,'52751',NULL,1228,41.836317,-90.67008,0,NULL,NULL,NULL), + (6,146,1,1,0,'192S Jackson Pl SE',192,'S',NULL,'Jackson','Pl','SE',NULL,NULL,NULL,NULL,'Waccabuc',1,1031,NULL,'10597',NULL,1228,41.289162,-73.58834,0,NULL,NULL,NULL), + (7,4,1,1,0,'299U Lincoln Pl N',299,'U',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Tulsa',1,1035,NULL,'74182',NULL,1228,36.139826,-96.029725,0,NULL,NULL,NULL), + (8,37,1,1,0,'725K Second St NE',725,'K',NULL,'Second','St','NE',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10116',NULL,1228,40.780751,-73.977182,0,NULL,NULL,NULL), + (9,160,1,1,0,'249O Dowlen Way S',249,'O',NULL,'Dowlen','Way','S',NULL,NULL,NULL,NULL,'Munfordville',1,1016,NULL,'42765',NULL,1228,37.291869,-85.90786,0,NULL,NULL,NULL), + (10,82,1,1,0,'728X Dowlen Ave SE',728,'X',NULL,'Dowlen','Ave','SE',NULL,NULL,NULL,NULL,'Duluth',1,1009,NULL,'30099',NULL,1228,33.959535,-84.105011,0,NULL,NULL,NULL), + (11,102,1,1,0,'784J Maple Blvd S',784,'J',NULL,'Maple','Blvd','S',NULL,NULL,NULL,NULL,'Bloomington',1,1013,NULL,'47404',NULL,1228,39.188246,-86.56779,0,NULL,NULL,NULL), + (12,124,1,1,0,'307U Green Ave NW',307,'U',NULL,'Green','Ave','NW',NULL,NULL,NULL,NULL,'Lowden',1,1014,NULL,'52255',NULL,1228,41.86521,-90.94316,0,NULL,NULL,NULL), + (13,28,1,1,0,'609L Martin Luther King St E',609,'L',NULL,'Martin Luther King','St','E',NULL,NULL,NULL,NULL,'Wrigley',1,1016,NULL,'41477',NULL,1228,37.914002,-83.233761,0,NULL,NULL,NULL), + (14,40,1,1,0,'148R Martin Luther King Ln N',148,'R',NULL,'Martin Luther King','Ln','N',NULL,NULL,NULL,NULL,'Albuquerque',1,1030,NULL,'87201',NULL,1228,35.044339,-106.672872,0,NULL,NULL,NULL), + (15,32,1,1,0,'576E Beech Blvd W',576,'E',NULL,'Beech','Blvd','W',NULL,NULL,NULL,NULL,'Steep Falls',1,1018,NULL,'04085',NULL,1228,43.770432,-70.63812,0,NULL,NULL,NULL), + (16,199,1,1,0,'979E Dowlen Ave SE',979,'E',NULL,'Dowlen','Ave','SE',NULL,NULL,NULL,NULL,'Clothier',1,1047,NULL,'25047',NULL,1228,37.950033,-81.78924,0,NULL,NULL,NULL), + (17,180,1,1,0,'717Z Second Pl N',717,'Z',NULL,'Second','Pl','N',NULL,NULL,NULL,NULL,'Huntsville',1,1000,NULL,'35824',NULL,1228,34.654126,-86.73987,0,NULL,NULL,NULL), + (18,192,1,1,0,'449G States Ln W',449,'G',NULL,'States','Ln','W',NULL,NULL,NULL,NULL,'West Bloomfield',1,1031,NULL,'14585',NULL,1228,42.901162,-77.54848,0,NULL,NULL,NULL), + (19,141,1,1,0,'774H Maple Way NW',774,'H',NULL,'Maple','Way','NW',NULL,NULL,NULL,NULL,'Fort Morgan',1,1005,NULL,'80701',NULL,1228,40.226357,-103.80625,0,NULL,NULL,NULL), + (20,59,1,1,0,'836A Dowlen Ave W',836,'A',NULL,'Dowlen','Ave','W',NULL,NULL,NULL,NULL,'Wakpala',1,1040,NULL,'57658',NULL,1228,45.68838,-100.51908,0,NULL,NULL,NULL), + (21,100,1,1,0,'49T Cadell St SW',49,'T',NULL,'Cadell','St','SW',NULL,NULL,NULL,NULL,'Ross',1,1042,NULL,'76684',NULL,1228,31.717293,-97.118754,0,NULL,NULL,NULL), + (22,11,1,1,0,'388F Northpoint Blvd SW',388,'F',NULL,'Northpoint','Blvd','SW',NULL,NULL,NULL,NULL,'New Bedford',1,1020,NULL,'02741',NULL,1228,41.756214,-71.067062,0,NULL,NULL,NULL), + (23,144,1,1,0,'860L Lincoln Way NE',860,'L',NULL,'Lincoln','Way','NE',NULL,NULL,NULL,NULL,'Oakland',1,1004,NULL,'94606',NULL,1228,37.793177,-122.24352,0,NULL,NULL,NULL), + (24,75,1,1,0,'692H Dowlen Pl E',692,'H',NULL,'Dowlen','Pl','E',NULL,NULL,NULL,NULL,'Oakdale',1,1037,NULL,'15071',NULL,1228,40.420319,-80.18692,0,NULL,NULL,NULL), + (25,112,1,1,0,'987Z Jackson Rd NE',987,'Z',NULL,'Jackson','Rd','NE',NULL,NULL,NULL,NULL,'Gray Mountain',1,1002,NULL,'86016',NULL,1228,35.675689,-111.49474,0,NULL,NULL,NULL), + (26,182,1,1,0,'826E Bay Ave NW',826,'E',NULL,'Bay','Ave','NW',NULL,NULL,NULL,NULL,'Golf',1,1012,NULL,'60029',NULL,1228,42.056529,-87.79286,0,NULL,NULL,NULL), + (27,165,1,1,0,'329F Main Path SW',329,'F',NULL,'Main','Path','SW',NULL,NULL,NULL,NULL,'Nada',1,1042,NULL,'77460',NULL,1228,29.60466,-96.524899,0,NULL,NULL,NULL), + (28,132,1,1,0,'981C Beech Path NE',981,'C',NULL,'Beech','Path','NE',NULL,NULL,NULL,NULL,'Big Island',1,1045,NULL,'24526',NULL,1228,37.528701,-79.39812,0,NULL,NULL,NULL), + (29,172,1,1,0,'858Y Second Rd NE',858,'Y',NULL,'Second','Rd','NE',NULL,NULL,NULL,NULL,'El Paso',1,1042,NULL,'79960',NULL,1228,31.694842,-106.299987,0,NULL,NULL,NULL), + (30,186,1,1,0,'797F Beech Path N',797,'F',NULL,'Beech','Path','N',NULL,NULL,NULL,NULL,'Bivins',1,1042,NULL,'75555',NULL,1228,32.930895,-94.13542,0,NULL,NULL,NULL), + (31,90,1,1,0,'841M Cadell Blvd SE',841,'M',NULL,'Cadell','Blvd','SE',NULL,NULL,NULL,NULL,'Pasadena',1,1004,NULL,'91114',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL), + (32,155,1,1,0,'320H Van Ness Ln S',320,'H',NULL,'Van Ness','Ln','S',NULL,NULL,NULL,NULL,'Montgomery',1,1037,NULL,'17752',NULL,1228,41.173254,-76.88449,0,NULL,NULL,NULL), + (33,96,1,1,0,'455X Martin Luther King Ln S',455,'X',NULL,'Martin Luther King','Ln','S',NULL,NULL,NULL,NULL,'New Windsor',1,1019,NULL,'21776',NULL,1228,39.529834,-77.09715,0,NULL,NULL,NULL), + (34,108,1,1,0,'915O Dowlen Way SW',915,'O',NULL,'Dowlen','Way','SW',NULL,NULL,NULL,NULL,'Jerome',1,1002,NULL,'86631',NULL,1228,34.748879,-112.115853,0,NULL,NULL,NULL), + (35,78,1,1,0,'214V Maple Dr S',214,'V',NULL,'Maple','Dr','S',NULL,NULL,NULL,NULL,'Reading',1,1037,NULL,'19605',NULL,1228,40.390943,-75.9375,0,NULL,NULL,NULL), + (36,103,1,1,0,'238J Second Pl SE',238,'J',NULL,'Second','Pl','SE',NULL,NULL,NULL,NULL,'Organ',1,1030,NULL,'88052',NULL,1228,32.437435,-106.60256,0,NULL,NULL,NULL), + (37,107,1,1,0,'155S Bay Way NW',155,'S',NULL,'Bay','Way','NW',NULL,NULL,NULL,NULL,'Camargo',1,1012,NULL,'61919',NULL,1228,39.783794,-88.13861,0,NULL,NULL,NULL), + (38,44,1,1,0,'443H El Camino Dr SE',443,'H',NULL,'El Camino','Dr','SE',NULL,NULL,NULL,NULL,'Kailua Kona',1,1010,NULL,'96740',NULL,1228,19.675386,-155.97588,0,NULL,NULL,NULL), + (39,115,1,1,0,'999X States Path SE',999,'X',NULL,'States','Path','SE',NULL,NULL,NULL,NULL,'Clearwater',1,1015,NULL,'67026',NULL,1228,37.518342,-97.49452,0,NULL,NULL,NULL), + (40,56,1,1,0,'423U Caulder Pl SW',423,'U',NULL,'Caulder','Pl','SW',NULL,NULL,NULL,NULL,'Dighton',1,1015,NULL,'67839',NULL,1228,38.514924,-100.43776,0,NULL,NULL,NULL), + (41,183,1,1,0,'22J College Ave S',22,'J',NULL,'College','Ave','S',NULL,NULL,NULL,NULL,'Auburn',1,1026,NULL,'68305',NULL,1228,40.376356,-95.84422,0,NULL,NULL,NULL), + (42,62,1,1,0,'334N Second Way SW',334,'N',NULL,'Second','Way','SW',NULL,NULL,NULL,NULL,'Sorrento',1,1008,NULL,'32776',NULL,1228,28.804039,-81.53689,0,NULL,NULL,NULL), + (43,121,1,1,0,'494X Second Rd NW',494,'X',NULL,'Second','Rd','NW',NULL,NULL,NULL,NULL,'Bowring',1,1035,NULL,'74009',NULL,1228,36.665794,-96.398424,0,NULL,NULL,NULL), + (44,143,1,1,0,'880H Lincoln Way S',880,'H',NULL,'Lincoln','Way','S',NULL,NULL,NULL,NULL,'Waccabuc',1,1031,NULL,'10597',NULL,1228,41.289162,-73.58834,0,NULL,NULL,NULL), + (45,39,1,1,0,'258B Dowlen Dr S',258,'B',NULL,'Dowlen','Dr','S',NULL,NULL,NULL,NULL,'Tarzan',1,1042,NULL,'79783',NULL,1228,32.369835,-102.03317,0,NULL,NULL,NULL), + (46,190,1,1,0,'817L Caulder Way SE',817,'L',NULL,'Caulder','Way','SE',NULL,NULL,NULL,NULL,'Bullhead City',1,1002,NULL,'86429',NULL,1228,35.172854,-114.54696,0,NULL,NULL,NULL), + (47,10,1,1,0,'106Z Beech Dr NE',106,'Z',NULL,'Beech','Dr','NE',NULL,NULL,NULL,NULL,'Weston',1,1047,NULL,'26452',NULL,1228,39.04101,-80.47731,0,NULL,NULL,NULL), + (48,156,1,1,0,'624S Martin Luther King Pl SW',624,'S',NULL,'Martin Luther King','Pl','SW',NULL,NULL,NULL,NULL,'Shawnee Mission',1,1015,NULL,'66208',NULL,1228,38.999505,-94.63102,0,NULL,NULL,NULL), + (49,131,1,1,0,'435P Jackson St E',435,'P',NULL,'Jackson','St','E',NULL,NULL,NULL,NULL,'Sunnyside',1,1031,NULL,'11104',NULL,1228,40.743796,-73.91949,0,NULL,NULL,NULL), + (50,118,1,1,0,'971J Main Way NW',971,'J',NULL,'Main','Way','NW',NULL,NULL,NULL,NULL,'Irmo',1,1039,NULL,'29063',NULL,1228,34.120487,-81.19686,0,NULL,NULL,NULL), + (51,5,1,1,0,'374F College St W',374,'F',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Miami',1,1008,NULL,'33174',NULL,1228,25.763044,-80.35919,0,NULL,NULL,NULL), + (52,113,1,1,0,'304E Lincoln Ln E',304,'E',NULL,'Lincoln','Ln','E',NULL,NULL,NULL,NULL,'San Jose',1,1004,NULL,'95113',NULL,1228,37.333941,-121.89154,0,NULL,NULL,NULL), + (53,149,1,1,0,'282O Bay Dr SE',282,'O',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Bowie',1,1042,NULL,'76230',NULL,1228,33.54007,-97.88575,0,NULL,NULL,NULL), + (54,134,1,1,0,'724H Lincoln Ave SE',724,'H',NULL,'Lincoln','Ave','SE',NULL,NULL,NULL,NULL,'Las Vegas',1,1027,NULL,'89199',NULL,1228,35.927901,-114.972061,0,NULL,NULL,NULL), + (55,92,1,1,0,'849L Jackson Way SE',849,'L',NULL,'Jackson','Way','SE',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10149',NULL,1228,40.780751,-73.977182,0,NULL,NULL,NULL), + (56,14,1,1,0,'625L Martin Luther King Blvd SW',625,'L',NULL,'Martin Luther King','Blvd','SW',NULL,NULL,NULL,NULL,'Burlington',1,1044,NULL,'05401',NULL,1228,44.484038,-73.22126,0,NULL,NULL,NULL), + (57,201,1,1,0,'628X Lincoln Dr NW',628,'X',NULL,'Lincoln','Dr','NW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49507',NULL,1228,42.933077,-85.65435,0,NULL,NULL,NULL), + (58,161,1,1,0,'776O Van Ness St S',776,'O',NULL,'Van Ness','St','S',NULL,NULL,NULL,NULL,'Renfrew',1,1037,NULL,'16053',NULL,1228,40.808934,-79.97811,0,NULL,NULL,NULL), + (59,68,1,1,0,'508N Pine Blvd NE',508,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Chatsworth',1,1004,NULL,'91312',NULL,1228,33.786594,-118.298662,0,NULL,NULL,NULL), + (60,52,1,1,0,'346I States Pl W',346,'I',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Spencer',1,1041,NULL,'38585',NULL,1228,35.69653,-85.41146,0,NULL,NULL,NULL), + (61,6,1,1,0,'851W Woodbridge Pl N',851,'W',NULL,'Woodbridge','Pl','N',NULL,NULL,NULL,NULL,'Harrison',1,1031,NULL,'10528',NULL,1228,40.972667,-73.71886,0,NULL,NULL,NULL), + (62,111,1,1,0,'327Y Maple Path W',327,'Y',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Glencoe',1,1030,NULL,'88324',NULL,1228,33.429637,-105.48489,0,NULL,NULL,NULL), + (63,138,1,1,0,'763F Main St SW',763,'F',NULL,'Main','St','SW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49555',NULL,1228,43.031413,-85.550267,0,NULL,NULL,NULL), + (64,168,1,1,0,'99G Cadell Way W',99,'G',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Gardner',1,1012,NULL,'60424',NULL,1228,41.174117,-88.30954,0,NULL,NULL,NULL), + (65,142,1,1,0,'273D Caulder Blvd NE',273,'D',NULL,'Caulder','Blvd','NE',NULL,NULL,NULL,NULL,'Sioux Falls',1,1040,NULL,'57108',NULL,1228,43.488472,-96.72258,0,NULL,NULL,NULL), + (66,12,1,1,0,'876H Martin Luther King Ave NE',876,'H',NULL,'Martin Luther King','Ave','NE',NULL,NULL,NULL,NULL,'Detroit',1,1021,NULL,'48243',NULL,1228,42.239933,-83.150823,0,NULL,NULL,NULL), + (67,48,3,1,0,'792M Beech St S',792,'M',NULL,'Beech','St','S',NULL,'Subscriptions Dept',NULL,NULL,'Prattsville',1,1031,NULL,'12468',NULL,1228,42.297725,-74.40063,0,NULL,NULL,NULL), + (68,27,2,1,0,'792M Beech St S',792,'M',NULL,'Beech','St','S',NULL,'Subscriptions Dept',NULL,NULL,'Prattsville',1,1031,NULL,'12468',NULL,1228,42.297725,-74.40063,0,NULL,NULL,67), + (69,105,3,1,0,'402W Second Blvd N',402,'W',NULL,'Second','Blvd','N',NULL,'Editorial Dept',NULL,NULL,'Earling',1,1014,NULL,'51530',NULL,1228,41.77364,-95.42761,0,NULL,NULL,NULL), + (70,53,2,1,0,'402W Second Blvd N',402,'W',NULL,'Second','Blvd','N',NULL,'Editorial Dept',NULL,NULL,'Earling',1,1014,NULL,'51530',NULL,1228,41.77364,-95.42761,0,NULL,NULL,69), + (71,43,3,1,0,'752F States Ln SW',752,'F',NULL,'States','Ln','SW',NULL,'Editorial Dept',NULL,NULL,'Star',1,1032,NULL,'27356',NULL,1228,35.414095,-79.78487,0,NULL,NULL,NULL), + (72,145,2,1,0,'752F States Ln SW',752,'F',NULL,'States','Ln','SW',NULL,'Editorial Dept',NULL,NULL,'Star',1,1032,NULL,'27356',NULL,1228,35.414095,-79.78487,0,NULL,NULL,71), + (73,128,3,1,0,'660O Green Path SW',660,'O',NULL,'Green','Path','SW',NULL,'Subscriptions Dept',NULL,NULL,'Crystal Lake',1,1012,NULL,'60039',NULL,1228,42.324761,-88.452481,0,NULL,NULL,NULL), + (74,3,2,1,0,'660O Green Path SW',660,'O',NULL,'Green','Path','SW',NULL,'Subscriptions Dept',NULL,NULL,'Crystal Lake',1,1012,NULL,'60039',NULL,1228,42.324761,-88.452481,0,NULL,NULL,73), + (75,169,3,1,0,'524Q Northpoint Blvd W',524,'Q',NULL,'Northpoint','Blvd','W',NULL,'Cuffe Parade',NULL,NULL,'Riegelsville',1,1037,NULL,'18077',NULL,1228,40.576989,-75.22121,0,NULL,NULL,NULL), + (76,177,3,1,0,'823R Northpoint Blvd W',823,'R',NULL,'Northpoint','Blvd','W',NULL,'Attn: Accounting',NULL,NULL,'Draper',1,1043,NULL,'84020',NULL,1228,40.514843,-111.87294,0,NULL,NULL,NULL), + (77,50,2,1,0,'823R Northpoint Blvd W',823,'R',NULL,'Northpoint','Blvd','W',NULL,'Attn: Accounting',NULL,NULL,'Draper',1,1043,NULL,'84020',NULL,1228,40.514843,-111.87294,0,NULL,NULL,76), + (78,101,3,1,0,'597H El Camino Rd SE',597,'H',NULL,'El Camino','Rd','SE',NULL,'Disbursements',NULL,NULL,'Laurel',1,1023,NULL,'39442',NULL,1228,31.682254,-89.040622,0,NULL,NULL,NULL), + (79,39,2,0,0,'597H El Camino Rd SE',597,'H',NULL,'El Camino','Rd','SE',NULL,'Disbursements',NULL,NULL,'Laurel',1,1023,NULL,'39442',NULL,1228,31.682254,-89.040622,0,NULL,NULL,78), + (80,153,3,1,0,'933A Woodbridge St S',933,'A',NULL,'Woodbridge','St','S',NULL,'c/o OPDC',NULL,NULL,'Hurricane Mills',1,1041,NULL,'37078',NULL,1228,35.924976,-87.77219,0,NULL,NULL,NULL), + (81,82,2,0,0,'933A Woodbridge St S',933,'A',NULL,'Woodbridge','St','S',NULL,'c/o OPDC',NULL,NULL,'Hurricane Mills',1,1041,NULL,'37078',NULL,1228,35.924976,-87.77219,0,NULL,NULL,80), + (82,91,3,1,0,'877V Beech St S',877,'V',NULL,'Beech','St','S',NULL,'Community Relations',NULL,NULL,'Reydell',1,1003,NULL,'72133',NULL,1228,34.165734,-91.57169,0,NULL,NULL,NULL), + (83,154,2,1,0,'877V Beech St S',877,'V',NULL,'Beech','St','S',NULL,'Community Relations',NULL,NULL,'Reydell',1,1003,NULL,'72133',NULL,1228,34.165734,-91.57169,0,NULL,NULL,82), + (84,67,3,1,0,'996K Woodbridge Ln W',996,'K',NULL,'Woodbridge','Ln','W',NULL,'Churchgate',NULL,NULL,'Industry',1,1037,NULL,'15052',NULL,1228,40.665001,-80.42534,0,NULL,NULL,NULL), + (85,49,3,1,0,'776A Second Ln NE',776,'A',NULL,'Second','Ln','NE',NULL,'Attn: Accounting',NULL,NULL,'Alexandria',1,1037,NULL,'16611',NULL,1228,40.561651,-78.10583,0,NULL,NULL,NULL), + (86,157,3,1,0,'711P Bay Pl W',711,'P',NULL,'Bay','Pl','W',NULL,'Urgent',NULL,NULL,'Burgess',1,1045,NULL,'22432',NULL,1228,37.860549,-76.35637,0,NULL,NULL,NULL), + (87,172,2,0,0,'711P Bay Pl W',711,'P',NULL,'Bay','Pl','W',NULL,'Urgent',NULL,NULL,'Burgess',1,1045,NULL,'22432',NULL,1228,37.860549,-76.35637,0,NULL,NULL,86), + (88,129,3,1,0,'953K Maple Way SE',953,'K',NULL,'Maple','Way','SE',NULL,'c/o OPDC',NULL,NULL,'Greenville',1,1004,NULL,'95947',NULL,1228,40.144573,-120.88311,0,NULL,NULL,NULL), + (89,96,2,0,0,'953K Maple Way SE',953,'K',NULL,'Maple','Way','SE',NULL,'c/o OPDC',NULL,NULL,'Greenville',1,1004,NULL,'95947',NULL,1228,40.144573,-120.88311,0,NULL,NULL,88), + (90,188,3,1,0,'597T Dowlen Ln S',597,'T',NULL,'Dowlen','Ln','S',NULL,'Receiving',NULL,NULL,'San Francisco',1,1004,NULL,'94132',NULL,1228,37.724231,-122.47958,0,NULL,NULL,NULL), + (91,193,3,1,0,'429Z Beech Path N',429,'Z',NULL,'Beech','Path','N',NULL,'Payables Dept.',NULL,NULL,'Modesto',1,1004,NULL,'95356',NULL,1228,37.704138,-121.02187,0,NULL,NULL,NULL), + (92,73,3,1,0,'884K Bay Ln E',884,'K',NULL,'Bay','Ln','E',NULL,'Receiving',NULL,NULL,'Surveyor',1,1047,NULL,'25932',NULL,1228,37.764498,-81.3169,0,NULL,NULL,NULL), + (93,166,2,1,0,'884K Bay Ln E',884,'K',NULL,'Bay','Ln','E',NULL,'Receiving',NULL,NULL,'Surveyor',1,1047,NULL,'25932',NULL,1228,37.764498,-81.3169,0,NULL,NULL,92), + (94,61,3,1,0,'654T Northpoint Pl SW',654,'T',NULL,'Northpoint','Pl','SW',NULL,'Payables Dept.',NULL,NULL,'Port Wing',1,1048,NULL,'54865',NULL,1228,46.757192,-91.39611,0,NULL,NULL,NULL), + (95,152,3,1,0,'408K Woodbridge Path NW',408,'K',NULL,'Woodbridge','Path','NW',NULL,'c/o PO Plus',NULL,NULL,'Terre Haute',1,1013,NULL,'47805',NULL,1228,39.535285,-87.35222,0,NULL,NULL,NULL), + (96,26,2,1,0,'408K Woodbridge Path NW',408,'K',NULL,'Woodbridge','Path','NW',NULL,'c/o PO Plus',NULL,NULL,'Terre Haute',1,1013,NULL,'47805',NULL,1228,39.535285,-87.35222,0,NULL,NULL,95), + (97,51,3,1,0,'87L Dowlen Dr SW',87,'L',NULL,'Dowlen','Dr','SW',NULL,'Urgent',NULL,NULL,'Lewisville',1,1042,NULL,'75077',NULL,1228,33.075138,-97.0529,0,NULL,NULL,NULL), + (98,76,2,1,0,'87L Dowlen Dr SW',87,'L',NULL,'Dowlen','Dr','SW',NULL,'Urgent',NULL,NULL,'Lewisville',1,1042,NULL,'75077',NULL,1228,33.075138,-97.0529,0,NULL,NULL,97), + (99,135,3,1,0,'845T Second Dr W',845,'T',NULL,'Second','Dr','W',NULL,'Urgent',NULL,NULL,'Deland',1,1008,NULL,'32724',NULL,1228,29.039757,-81.27927,0,NULL,NULL,NULL), + (100,85,1,1,0,'106Z Beech Dr NE',106,'Z',NULL,'Beech','Dr','NE',NULL,NULL,NULL,NULL,'Weston',1,1047,NULL,'26452',NULL,1228,39.04101,-80.47731,0,NULL,NULL,47), + (101,13,1,1,0,'106Z Beech Dr NE',106,'Z',NULL,'Beech','Dr','NE',NULL,NULL,NULL,NULL,'Weston',1,1047,NULL,'26452',NULL,1228,39.04101,-80.47731,0,NULL,NULL,47), + (102,53,1,0,0,'106Z Beech Dr NE',106,'Z',NULL,'Beech','Dr','NE',NULL,NULL,NULL,NULL,'Weston',1,1047,NULL,'26452',NULL,1228,39.04101,-80.47731,0,NULL,NULL,47), + (103,190,1,0,0,'512C Northpoint Ave NE',512,'C',NULL,'Northpoint','Ave','NE',NULL,NULL,NULL,NULL,'Allentown',1,1037,NULL,'18109',NULL,1228,40.693376,-75.471156,0,NULL,NULL,NULL), + (104,106,1,1,0,'624S Martin Luther King Pl SW',624,'S',NULL,'Martin Luther King','Pl','SW',NULL,NULL,NULL,NULL,'Shawnee Mission',1,1015,NULL,'66208',NULL,1228,38.999505,-94.63102,0,NULL,NULL,48), + (105,154,1,0,0,'624S Martin Luther King Pl SW',624,'S',NULL,'Martin Luther King','Pl','SW',NULL,NULL,NULL,NULL,'Shawnee Mission',1,1015,NULL,'66208',NULL,1228,38.999505,-94.63102,0,NULL,NULL,48), + (106,23,1,1,0,'624S Martin Luther King Pl SW',624,'S',NULL,'Martin Luther King','Pl','SW',NULL,NULL,NULL,NULL,'Shawnee Mission',1,1015,NULL,'66208',NULL,1228,38.999505,-94.63102,0,NULL,NULL,48), + (107,58,1,1,0,'624S Martin Luther King Pl SW',624,'S',NULL,'Martin Luther King','Pl','SW',NULL,NULL,NULL,NULL,'Shawnee Mission',1,1015,NULL,'66208',NULL,1228,38.999505,-94.63102,0,NULL,NULL,48), + (108,20,1,1,0,'435P Jackson St E',435,'P',NULL,'Jackson','St','E',NULL,NULL,NULL,NULL,'Sunnyside',1,1031,NULL,'11104',NULL,1228,40.743796,-73.91949,0,NULL,NULL,49), + (109,30,1,1,0,'435P Jackson St E',435,'P',NULL,'Jackson','St','E',NULL,NULL,NULL,NULL,'Sunnyside',1,1031,NULL,'11104',NULL,1228,40.743796,-73.91949,0,NULL,NULL,49), + (110,15,1,1,0,'435P Jackson St E',435,'P',NULL,'Jackson','St','E',NULL,NULL,NULL,NULL,'Sunnyside',1,1031,NULL,'11104',NULL,1228,40.743796,-73.91949,0,NULL,NULL,49), + (111,151,1,1,0,'783Q Green Pl S',783,'Q',NULL,'Green','Pl','S',NULL,NULL,NULL,NULL,'Clarksburg',1,1024,NULL,'65025',NULL,1228,38.662989,-92.67253,0,NULL,NULL,NULL), + (112,194,1,1,0,'971J Main Way NW',971,'J',NULL,'Main','Way','NW',NULL,NULL,NULL,NULL,'Irmo',1,1039,NULL,'29063',NULL,1228,34.120487,-81.19686,0,NULL,NULL,50), + (113,140,1,1,0,'971J Main Way NW',971,'J',NULL,'Main','Way','NW',NULL,NULL,NULL,NULL,'Irmo',1,1039,NULL,'29063',NULL,1228,34.120487,-81.19686,0,NULL,NULL,50), + (114,87,1,1,0,'971J Main Way NW',971,'J',NULL,'Main','Way','NW',NULL,NULL,NULL,NULL,'Irmo',1,1039,NULL,'29063',NULL,1228,34.120487,-81.19686,0,NULL,NULL,50), + (115,50,1,0,0,'955H College Rd W',955,'H',NULL,'College','Rd','W',NULL,NULL,NULL,NULL,'Norwood',1,1022,NULL,'55554',NULL,1228,44.805487,-93.766524,0,NULL,NULL,NULL), + (116,63,1,1,0,'374F College St W',374,'F',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Miami',1,1008,NULL,'33174',NULL,1228,25.763044,-80.35919,0,NULL,NULL,51), + (117,8,1,1,0,'374F College St W',374,'F',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Miami',1,1008,NULL,'33174',NULL,1228,25.763044,-80.35919,0,NULL,NULL,51), + (118,189,1,1,0,'374F College St W',374,'F',NULL,'College','St','W',NULL,NULL,NULL,NULL,'Miami',1,1008,NULL,'33174',NULL,1228,25.763044,-80.35919,0,NULL,NULL,51), + (119,18,1,1,0,'587I Cadell Pl N',587,'I',NULL,'Cadell','Pl','N',NULL,NULL,NULL,NULL,'San Antonio',1,1042,NULL,'78212',NULL,1228,29.460381,-98.49649,0,NULL,NULL,NULL), + (120,104,1,1,0,'304E Lincoln Ln E',304,'E',NULL,'Lincoln','Ln','E',NULL,NULL,NULL,NULL,'San Jose',1,1004,NULL,'95113',NULL,1228,37.333941,-121.89154,0,NULL,NULL,52), + (121,137,1,1,0,'304E Lincoln Ln E',304,'E',NULL,'Lincoln','Ln','E',NULL,NULL,NULL,NULL,'San Jose',1,1004,NULL,'95113',NULL,1228,37.333941,-121.89154,0,NULL,NULL,52), + (122,126,1,1,0,'304E Lincoln Ln E',304,'E',NULL,'Lincoln','Ln','E',NULL,NULL,NULL,NULL,'San Jose',1,1004,NULL,'95113',NULL,1228,37.333941,-121.89154,0,NULL,NULL,52), + (123,80,1,1,0,'98A Pine Rd SE',98,'A',NULL,'Pine','Rd','SE',NULL,NULL,NULL,NULL,'Bloomingburg',1,1031,NULL,'12721',NULL,1228,41.564426,-74.4265,0,NULL,NULL,NULL), + (124,27,1,0,0,'282O Bay Dr SE',282,'O',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Bowie',1,1042,NULL,'76230',NULL,1228,33.54007,-97.88575,0,NULL,NULL,53), + (125,35,1,1,0,'282O Bay Dr SE',282,'O',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Bowie',1,1042,NULL,'76230',NULL,1228,33.54007,-97.88575,0,NULL,NULL,53), + (126,3,1,0,0,'282O Bay Dr SE',282,'O',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Bowie',1,1042,NULL,'76230',NULL,1228,33.54007,-97.88575,0,NULL,NULL,53), + (127,163,1,1,0,'622T Pine Ln N',622,'T',NULL,'Pine','Ln','N',NULL,NULL,NULL,NULL,'Eagle Creek',1,1036,NULL,'97022',NULL,1228,45.349244,-122.33554,0,NULL,NULL,NULL), + (128,164,1,1,0,'724H Lincoln Ave SE',724,'H',NULL,'Lincoln','Ave','SE',NULL,NULL,NULL,NULL,'Las Vegas',1,1027,NULL,'89199',NULL,1228,35.927901,-114.972061,0,NULL,NULL,54), + (129,191,1,1,0,'724H Lincoln Ave SE',724,'H',NULL,'Lincoln','Ave','SE',NULL,NULL,NULL,NULL,'Las Vegas',1,1027,NULL,'89199',NULL,1228,35.927901,-114.972061,0,NULL,NULL,54), + (130,122,1,1,0,'724H Lincoln Ave SE',724,'H',NULL,'Lincoln','Ave','SE',NULL,NULL,NULL,NULL,'Las Vegas',1,1027,NULL,'89199',NULL,1228,35.927901,-114.972061,0,NULL,NULL,54), + (131,147,1,1,0,'724H Lincoln Ave SE',724,'H',NULL,'Lincoln','Ave','SE',NULL,NULL,NULL,NULL,'Las Vegas',1,1027,NULL,'89199',NULL,1228,35.927901,-114.972061,0,NULL,NULL,54), + (132,81,1,1,0,'849L Jackson Way SE',849,'L',NULL,'Jackson','Way','SE',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10149',NULL,1228,40.780751,-73.977182,0,NULL,NULL,55), + (133,150,1,1,0,'849L Jackson Way SE',849,'L',NULL,'Jackson','Way','SE',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10149',NULL,1228,40.780751,-73.977182,0,NULL,NULL,55), + (134,127,1,1,0,'849L Jackson Way SE',849,'L',NULL,'Jackson','Way','SE',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10149',NULL,1228,40.780751,-73.977182,0,NULL,NULL,55), + (135,16,1,1,0,'849L Jackson Way SE',849,'L',NULL,'Jackson','Way','SE',NULL,NULL,NULL,NULL,'New York',1,1031,NULL,'10149',NULL,1228,40.780751,-73.977182,0,NULL,NULL,55), + (136,72,1,1,0,'625L Martin Luther King Blvd SW',625,'L',NULL,'Martin Luther King','Blvd','SW',NULL,NULL,NULL,NULL,'Burlington',1,1044,NULL,'05401',NULL,1228,44.484038,-73.22126,0,NULL,NULL,56), + (137,125,1,1,0,'625L Martin Luther King Blvd SW',625,'L',NULL,'Martin Luther King','Blvd','SW',NULL,NULL,NULL,NULL,'Burlington',1,1044,NULL,'05401',NULL,1228,44.484038,-73.22126,0,NULL,NULL,56), + (138,17,1,1,0,'625L Martin Luther King Blvd SW',625,'L',NULL,'Martin Luther King','Blvd','SW',NULL,NULL,NULL,NULL,'Burlington',1,1044,NULL,'05401',NULL,1228,44.484038,-73.22126,0,NULL,NULL,56), + (139,95,1,1,0,'148Z Green Way NE',148,'Z',NULL,'Green','Way','NE',NULL,NULL,NULL,NULL,'Laurinburg',1,1032,NULL,'28352',NULL,1228,34.779227,-79.45745,0,NULL,NULL,NULL), + (140,139,1,1,0,'628X Lincoln Dr NW',628,'X',NULL,'Lincoln','Dr','NW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49507',NULL,1228,42.933077,-85.65435,0,NULL,NULL,57), + (141,88,1,1,0,'628X Lincoln Dr NW',628,'X',NULL,'Lincoln','Dr','NW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49507',NULL,1228,42.933077,-85.65435,0,NULL,NULL,57), + (142,77,1,1,0,'628X Lincoln Dr NW',628,'X',NULL,'Lincoln','Dr','NW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49507',NULL,1228,42.933077,-85.65435,0,NULL,NULL,57), + (143,173,1,1,0,'628X Lincoln Dr NW',628,'X',NULL,'Lincoln','Dr','NW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49507',NULL,1228,42.933077,-85.65435,0,NULL,NULL,57), + (144,99,1,1,0,'776O Van Ness St S',776,'O',NULL,'Van Ness','St','S',NULL,NULL,NULL,NULL,'Renfrew',1,1037,NULL,'16053',NULL,1228,40.808934,-79.97811,0,NULL,NULL,58), + (145,116,1,1,0,'776O Van Ness St S',776,'O',NULL,'Van Ness','St','S',NULL,NULL,NULL,NULL,'Renfrew',1,1037,NULL,'16053',NULL,1228,40.808934,-79.97811,0,NULL,NULL,58), + (146,29,1,1,0,'776O Van Ness St S',776,'O',NULL,'Van Ness','St','S',NULL,NULL,NULL,NULL,'Renfrew',1,1037,NULL,'16053',NULL,1228,40.808934,-79.97811,0,NULL,NULL,58), + (147,31,1,1,0,'690V States St NE',690,'V',NULL,'States','St','NE',NULL,NULL,NULL,NULL,'Welda',1,1015,NULL,'66091',NULL,1228,38.185196,-95.33705,0,NULL,NULL,NULL), + (148,60,1,1,0,'508N Pine Blvd NE',508,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Chatsworth',1,1004,NULL,'91312',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59), + (149,170,1,1,0,'508N Pine Blvd NE',508,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Chatsworth',1,1004,NULL,'91312',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59), + (150,38,1,1,0,'508N Pine Blvd NE',508,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Chatsworth',1,1004,NULL,'91312',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59), + (151,86,1,1,0,'508N Pine Blvd NE',508,'N',NULL,'Pine','Blvd','NE',NULL,NULL,NULL,NULL,'Chatsworth',1,1004,NULL,'91312',NULL,1228,33.786594,-118.298662,0,NULL,NULL,59), + (152,65,1,1,0,'346I States Pl W',346,'I',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Spencer',1,1041,NULL,'38585',NULL,1228,35.69653,-85.41146,0,NULL,NULL,60), + (153,94,1,1,0,'346I States Pl W',346,'I',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Spencer',1,1041,NULL,'38585',NULL,1228,35.69653,-85.41146,0,NULL,NULL,60), + (154,195,1,1,0,'346I States Pl W',346,'I',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Spencer',1,1041,NULL,'38585',NULL,1228,35.69653,-85.41146,0,NULL,NULL,60), + (155,7,1,1,0,'958R Martin Luther King Ln N',958,'R',NULL,'Martin Luther King','Ln','N',NULL,NULL,NULL,NULL,'West Forks',1,1018,NULL,'04985',NULL,1228,45.380034,-69.90892,0,NULL,NULL,NULL), + (156,42,1,1,0,'851W Woodbridge Pl N',851,'W',NULL,'Woodbridge','Pl','N',NULL,NULL,NULL,NULL,'Harrison',1,1031,NULL,'10528',NULL,1228,40.972667,-73.71886,0,NULL,NULL,61), + (157,176,1,1,0,'851W Woodbridge Pl N',851,'W',NULL,'Woodbridge','Pl','N',NULL,NULL,NULL,NULL,'Harrison',1,1031,NULL,'10528',NULL,1228,40.972667,-73.71886,0,NULL,NULL,61), + (158,36,1,1,0,'851W Woodbridge Pl N',851,'W',NULL,'Woodbridge','Pl','N',NULL,NULL,NULL,NULL,'Harrison',1,1031,NULL,'10528',NULL,1228,40.972667,-73.71886,0,NULL,NULL,61), + (159,45,1,1,0,'851W Woodbridge Pl N',851,'W',NULL,'Woodbridge','Pl','N',NULL,NULL,NULL,NULL,'Harrison',1,1031,NULL,'10528',NULL,1228,40.972667,-73.71886,0,NULL,NULL,61), + (160,25,1,1,0,'327Y Maple Path W',327,'Y',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Glencoe',1,1030,NULL,'88324',NULL,1228,33.429637,-105.48489,0,NULL,NULL,62), + (161,19,1,1,0,'327Y Maple Path W',327,'Y',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Glencoe',1,1030,NULL,'88324',NULL,1228,33.429637,-105.48489,0,NULL,NULL,62), + (162,97,1,1,0,'327Y Maple Path W',327,'Y',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Glencoe',1,1030,NULL,'88324',NULL,1228,33.429637,-105.48489,0,NULL,NULL,62), + (163,133,1,1,0,'327Y Maple Path W',327,'Y',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Glencoe',1,1030,NULL,'88324',NULL,1228,33.429637,-105.48489,0,NULL,NULL,62), + (164,93,1,1,0,'763F Main St SW',763,'F',NULL,'Main','St','SW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49555',NULL,1228,43.031413,-85.550267,0,NULL,NULL,63), + (165,76,1,0,0,'763F Main St SW',763,'F',NULL,'Main','St','SW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49555',NULL,1228,43.031413,-85.550267,0,NULL,NULL,63), + (166,187,1,1,0,'763F Main St SW',763,'F',NULL,'Main','St','SW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49555',NULL,1228,43.031413,-85.550267,0,NULL,NULL,63), + (167,46,1,1,0,'763F Main St SW',763,'F',NULL,'Main','St','SW',NULL,NULL,NULL,NULL,'Grand Rapids',1,1021,NULL,'49555',NULL,1228,43.031413,-85.550267,0,NULL,NULL,63), + (168,179,1,1,0,'99G Cadell Way W',99,'G',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Gardner',1,1012,NULL,'60424',NULL,1228,41.174117,-88.30954,0,NULL,NULL,64), + (169,185,1,1,0,'99G Cadell Way W',99,'G',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Gardner',1,1012,NULL,'60424',NULL,1228,41.174117,-88.30954,0,NULL,NULL,64), + (170,197,1,1,0,'99G Cadell Way W',99,'G',NULL,'Cadell','Way','W',NULL,NULL,NULL,NULL,'Gardner',1,1012,NULL,'60424',NULL,1228,41.174117,-88.30954,0,NULL,NULL,64), + (171,74,1,1,0,'329E Green Path W',329,'E',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Santa Ana',1,1004,NULL,'92712',NULL,1228,33.640302,-117.769442,0,NULL,NULL,NULL), + (172,119,1,1,0,'273D Caulder Blvd NE',273,'D',NULL,'Caulder','Blvd','NE',NULL,NULL,NULL,NULL,'Sioux Falls',1,1040,NULL,'57108',NULL,1228,43.488472,-96.72258,0,NULL,NULL,65), + (173,2,1,1,0,'273D Caulder Blvd NE',273,'D',NULL,'Caulder','Blvd','NE',NULL,NULL,NULL,NULL,'Sioux Falls',1,1040,NULL,'57108',NULL,1228,43.488472,-96.72258,0,NULL,NULL,65), + (174,57,1,1,0,'273D Caulder Blvd NE',273,'D',NULL,'Caulder','Blvd','NE',NULL,NULL,NULL,NULL,'Sioux Falls',1,1040,NULL,'57108',NULL,1228,43.488472,-96.72258,0,NULL,NULL,65), + (175,184,1,1,0,'273D Caulder Blvd NE',273,'D',NULL,'Caulder','Blvd','NE',NULL,NULL,NULL,NULL,'Sioux Falls',1,1040,NULL,'57108',NULL,1228,43.488472,-96.72258,0,NULL,NULL,65), + (176,9,1,1,0,'876H Martin Luther King Ave NE',876,'H',NULL,'Martin Luther King','Ave','NE',NULL,NULL,NULL,NULL,'Detroit',1,1021,NULL,'48243',NULL,1228,42.239933,-83.150823,0,NULL,NULL,66), + (177,89,1,1,0,'876H Martin Luther King Ave NE',876,'H',NULL,'Martin Luther King','Ave','NE',NULL,NULL,NULL,NULL,'Detroit',1,1021,NULL,'48243',NULL,1228,42.239933,-83.150823,0,NULL,NULL,66), + (178,54,1,1,0,'876H Martin Luther King Ave NE',876,'H',NULL,'Martin Luther King','Ave','NE',NULL,NULL,NULL,NULL,'Detroit',1,1021,NULL,'48243',NULL,1228,42.239933,-83.150823,0,NULL,NULL,66), + (179,110,1,1,0,'15D Maple Blvd SW',15,'D',NULL,'Maple','Blvd','SW',NULL,NULL,NULL,NULL,'Arcola',1,1024,NULL,'65603',NULL,1228,37.557203,-93.86589,0,NULL,NULL,NULL), + (180,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), + (181,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), + (182,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; @@ -1991,208 +1987,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-09-06 22:13:42','Both'), - (2,'Organization',NULL,'Local Advocacy Services','Local Advocacy Services',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Local Advocacy Services',NULL,NULL,NULL,NULL,NULL,'182397216',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Advocacy Services',NULL,NULL,NULL,0,NULL,NULL,183,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (3,'Individual',NULL,'Roland Terry-Smith',NULL,NULL,'Roland','V','Terry-Smith',0,0,0,0,0,0,NULL,'Terry-Smith, Roland',NULL,NULL,NULL,NULL,NULL,'266084877',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Terry-Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (4,'Organization',NULL,'United Health Association','United Health Association',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'United Health Association',NULL,NULL,NULL,'3',NULL,'2031431698',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Health Association',NULL,NULL,NULL,0,NULL,NULL,168,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (5,'Individual',NULL,'Ashlie Wagner',NULL,NULL,'Ashlie','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Ashlie',NULL,NULL,NULL,'3',NULL,'3661734493',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Wagner',NULL,NULL,'1969-01-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (6,'Organization',NULL,'Sierra Wellness Trust','Sierra Wellness Trust',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Sierra Wellness Trust',NULL,NULL,NULL,'5',NULL,'1849237991',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Wellness Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (7,'Organization',NULL,'Progressive Wellness Services','Progressive Wellness Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Progressive Wellness Services',NULL,NULL,NULL,'3',NULL,'900079396',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Wellness Services',NULL,NULL,NULL,0,NULL,NULL,48,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (8,'Organization',NULL,'Creative Empowerment Association','Creative Empowerment Association',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Creative Empowerment Association',NULL,NULL,NULL,NULL,NULL,'2288188557',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Empowerment Association',NULL,NULL,NULL,0,NULL,NULL,137,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (9,'Individual',NULL,'Lou Yadav Sr.',NULL,NULL,'Lou','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Lou',NULL,NULL,NULL,'4',NULL,'1442954395',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Yadav Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (10,'Household',NULL,'Ivanov-Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ivanov-Jameson family',NULL,NULL,NULL,'4',NULL,'473363544',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Ivanov-Jameson family',5,NULL,'Dear Ivanov-Jameson family',2,NULL,'Ivanov-Jameson family',NULL,NULL,NULL,0,NULL,'Ivanov-Jameson family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (11,'Individual',NULL,'Ms. Juliann Jacobs',NULL,NULL,'Juliann','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Juliann',NULL,NULL,NULL,'2',NULL,'3009811288',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Ms. Juliann Jacobs',NULL,1,'1982-10-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (12,'Individual',NULL,'Esta Blackwell',NULL,NULL,'Esta','Z','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Esta',NULL,NULL,NULL,NULL,NULL,'534629196',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Blackwell',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (13,'Individual',NULL,'Sonny Ivanov III',NULL,NULL,'Sonny','T','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Sonny',NULL,NULL,NULL,NULL,NULL,'3391307655',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Ivanov III',NULL,2,'1993-03-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (14,'Individual',NULL,'Ms. Justina Ivanov-Jameson',NULL,NULL,'Justina','','Ivanov-Jameson',0,1,0,0,0,0,NULL,'Ivanov-Jameson, Justina',NULL,NULL,NULL,NULL,NULL,'3229777594',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Ms. Justina Ivanov-Jameson',NULL,NULL,'1987-04-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (15,'Individual',NULL,'sr.barkley@testmail.com',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'sr.barkley@testmail.com',NULL,NULL,NULL,NULL,NULL,'3196194876',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear sr.barkley@testmail.com',1,NULL,'Dear sr.barkley@testmail.com',1,NULL,'sr.barkley@testmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (16,'Individual',NULL,'Ms. Felisha Adams',NULL,NULL,'Felisha','N','Adams',0,0,0,0,0,0,NULL,'Adams, Felisha',NULL,NULL,NULL,'4',NULL,'3474297773',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Ms. Felisha Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (17,'Individual',NULL,'Mr. Daren Reynolds',NULL,NULL,'Daren','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Daren',NULL,NULL,NULL,'1',NULL,'3938117907',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Mr. Daren Reynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (18,'Individual',NULL,'Dr. Kiara Nielsen-Samuels',NULL,NULL,'Kiara','','Nielsen-Samuels',0,0,0,0,0,0,NULL,'Nielsen-Samuels, Kiara',NULL,NULL,NULL,NULL,NULL,'543578806',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Nielsen-Samuels',NULL,NULL,'1960-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (19,'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-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (20,'Individual',NULL,'Mr. Teddy Dimitrov Sr.',NULL,NULL,'Teddy','Q','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Teddy',NULL,NULL,NULL,NULL,NULL,'3038060476',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Dimitrov Sr.',NULL,2,'1969-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (21,'Individual',NULL,'wagner.norris79@airmail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wagner.norris79@airmail.org',NULL,NULL,NULL,NULL,NULL,'329100903',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wagner.norris79@airmail.org',1,NULL,'Dear wagner.norris79@airmail.org',1,NULL,'wagner.norris79@airmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (22,'Individual',NULL,'Ms. Merrie Jameson-Barkley-Robertson',NULL,NULL,'Merrie','','Jameson-Barkley-Robertson',0,0,0,0,0,0,NULL,'Jameson-Barkley-Robertson, Merrie',NULL,NULL,NULL,NULL,NULL,'3069678742',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Ms. Merrie Jameson-Barkley-Robertson',NULL,1,'1984-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (23,'Individual',NULL,'Mrs. Princess Roberts',NULL,NULL,'Princess','','Roberts',1,0,0,0,0,0,NULL,'Roberts, Princess',NULL,NULL,NULL,'5',NULL,'3265575644',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Mrs. Princess Roberts',NULL,1,'1977-03-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (24,'Individual',NULL,'Lou Barkley III',NULL,NULL,'Lou','','Barkley',0,0,0,0,0,0,NULL,'Barkley, Lou',NULL,NULL,NULL,NULL,NULL,'1999867359',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Barkley III',NULL,2,'2009-06-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:58','Both'), - (25,'Individual',NULL,'Ms. Brittney Deforest',NULL,NULL,'Brittney','W','Deforest',1,0,0,0,0,0,NULL,'Deforest, Brittney',NULL,NULL,NULL,NULL,NULL,'1540368141',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Ms. Brittney Deforest',NULL,1,'1992-12-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (26,'Individual',NULL,'roberts-jacobs.juliann@notmail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'roberts-jacobs.juliann@notmail.info',NULL,NULL,NULL,NULL,NULL,'4218190229',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear roberts-jacobs.juliann@notmail.info',1,NULL,'Dear roberts-jacobs.juliann@notmail.info',1,NULL,'roberts-jacobs.juliann@notmail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (27,'Individual',NULL,'Ivey Reynolds',NULL,NULL,'Ivey','W','Reynolds',0,1,0,0,1,0,NULL,'Reynolds, Ivey',NULL,NULL,NULL,'4',NULL,'2588274493',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Reynolds',NULL,NULL,'1946-11-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (28,'Individual',NULL,'Mr. Craig Robertson',NULL,NULL,'Craig','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Craig',NULL,NULL,NULL,'5',NULL,'3925632970',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Robertson',NULL,2,'1952-08-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (29,'Individual',NULL,'Dr. Juliann Parker',NULL,NULL,'Juliann','','Parker',0,0,0,0,1,0,NULL,'Parker, Juliann',NULL,NULL,NULL,NULL,NULL,'1013304220',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann Parker',NULL,NULL,'1945-08-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (30,'Individual',NULL,'Ms. Brigette DÃaz',NULL,NULL,'Brigette','F','DÃaz',1,0,0,0,0,0,NULL,'DÃaz, Brigette',NULL,NULL,NULL,NULL,NULL,'939555461',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette DÃaz',NULL,1,'1961-07-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (31,'Individual',NULL,'Dr. Sharyn Wilson',NULL,NULL,'Sharyn','O','Wilson',1,1,0,0,1,0,NULL,'Wilson, Sharyn',NULL,NULL,NULL,'1',NULL,'652898932',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Dr. Sharyn Wilson',NULL,1,'1961-11-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (32,'Individual',NULL,'Barry Smith II',NULL,NULL,'Barry','','Smith',0,0,0,0,0,0,NULL,'Smith, Barry',NULL,NULL,NULL,'1',NULL,'3850252418',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Smith II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (33,'Individual',NULL,'Kacey Jensen',NULL,NULL,'Kacey','A','Jensen',0,1,0,0,0,0,NULL,'Jensen, Kacey',NULL,NULL,NULL,'3',NULL,'752145203',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Jensen',NULL,NULL,'1972-09-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (34,'Individual',NULL,'Ms. Ashley Cooper',NULL,NULL,'Ashley','','Cooper',0,1,0,0,0,0,NULL,'Cooper, Ashley',NULL,NULL,NULL,NULL,NULL,'495032298',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ms. Ashley Cooper',NULL,1,'1965-01-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (35,'Individual',NULL,'Allen Wattson',NULL,NULL,'Allen','P','Wattson',0,0,0,0,0,0,NULL,'Wattson, Allen',NULL,NULL,NULL,NULL,NULL,'2599799993',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Wattson',NULL,NULL,'1948-02-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (36,'Organization',NULL,'Providence Empowerment Fund','Providence Empowerment Fund',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Providence Empowerment Fund',NULL,NULL,NULL,NULL,NULL,'465255906',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Providence Empowerment Fund',NULL,NULL,NULL,0,NULL,NULL,175,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (37,'Organization',NULL,'States Arts Partnership','States Arts Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'States Arts Partnership',NULL,NULL,NULL,'5',NULL,'1005571823',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'States Arts Partnership',NULL,NULL,NULL,0,NULL,NULL,110,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (38,'Household',NULL,'Barkley-Robertson family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Barkley-Robertson family',NULL,NULL,NULL,'2',NULL,'3179092235',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley-Robertson family',5,NULL,'Dear Barkley-Robertson family',2,NULL,'Barkley-Robertson family',NULL,NULL,NULL,0,NULL,'Barkley-Robertson family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (39,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,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-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (40,'Individual',NULL,'Laree Jones','Sierra Arts Alliance',NULL,'Laree','N','Jones',0,0,0,0,0,0,NULL,'Jones, Laree',NULL,NULL,NULL,NULL,NULL,'4205271200',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Jones',NULL,NULL,'1973-03-15',0,NULL,NULL,NULL,NULL,NULL,98,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (41,'Individual',NULL,'rodrigoz70@airmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'rodrigoz70@airmail.biz',NULL,NULL,NULL,NULL,NULL,'873262734',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear rodrigoz70@airmail.biz',1,NULL,'Dear rodrigoz70@airmail.biz',1,NULL,'rodrigoz70@airmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (42,'Individual',NULL,'Ms. Kiara Barkley',NULL,NULL,'Kiara','','Barkley',0,0,0,0,1,0,NULL,'Barkley, Kiara',NULL,NULL,NULL,'1',NULL,'2141749595',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Ms. Kiara Barkley',NULL,1,'2000-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (43,'Individual',NULL,'Mr. Rodrigo McReynolds',NULL,NULL,'Rodrigo','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Rodrigo',NULL,NULL,NULL,'3',NULL,'1946017872',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Mr. Rodrigo McReynolds',NULL,2,'1982-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (44,'Individual',NULL,'Esta Smith',NULL,NULL,'Esta','J','Smith',1,0,0,0,1,0,NULL,'Smith, Esta',NULL,NULL,NULL,'4',NULL,'4101330541',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Smith',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (45,'Individual',NULL,'elbertj59@mymail.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'elbertj59@mymail.co.nz',NULL,NULL,NULL,NULL,NULL,'846047959',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear elbertj59@mymail.co.nz',1,NULL,'Dear elbertj59@mymail.co.nz',1,NULL,'elbertj59@mymail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (46,'Individual',NULL,'Dr. Rosario Terry',NULL,NULL,'Rosario','L','Terry',0,1,0,0,1,0,NULL,'Terry, Rosario',NULL,NULL,NULL,'2',NULL,'1264009879',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Dr. Rosario Terry',NULL,2,'1969-06-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (47,'Individual',NULL,'Omar Olsen',NULL,NULL,'Omar','','Olsen',1,0,0,0,0,0,NULL,'Olsen, Omar',NULL,NULL,NULL,NULL,NULL,'2675601131',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Olsen',NULL,2,'1951-01-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (48,'Individual',NULL,'Mrs. Ivey Jacobs','Progressive Wellness Services',NULL,'Ivey','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Ivey',NULL,NULL,NULL,'3',NULL,'4026790678',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Mrs. Ivey Jacobs',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,7,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (49,'Organization',NULL,'Mottville Action School','Mottville Action School',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Mottville Action School',NULL,NULL,NULL,NULL,NULL,'1830652197',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Mottville Action School',NULL,NULL,NULL,0,NULL,NULL,145,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (50,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Dimitrov family',NULL,NULL,NULL,'2',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-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (51,'Individual',NULL,'Dr. Elizabeth Wilson',NULL,NULL,'Elizabeth','','Wilson',1,0,0,0,0,0,NULL,'Wilson, Elizabeth',NULL,NULL,NULL,'1',NULL,'690212617',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Dr. Elizabeth Wilson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (52,'Household',NULL,'Smith-Nielsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Smith-Nielsen family',NULL,NULL,NULL,'2',NULL,'3808504977',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Smith-Nielsen family',5,NULL,'Dear Smith-Nielsen family',2,NULL,'Smith-Nielsen family',NULL,NULL,NULL,0,NULL,'Smith-Nielsen family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (53,'Organization',NULL,'California Education Systems','California Education Systems',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'California Education Systems',NULL,NULL,NULL,'3',NULL,'1396102351',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'California Education Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (54,'Individual',NULL,'Ms. Princess Wagner',NULL,NULL,'Princess','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Princess',NULL,NULL,NULL,'2',NULL,'1934457200',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Ms. Princess Wagner',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (55,'Individual',NULL,'BrzÄ™czysÅ‚aw Samuels II',NULL,NULL,'BrzÄ™czysÅ‚aw','C','Samuels',0,0,0,0,1,0,NULL,'Samuels, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,'3',NULL,'1240846534',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Samuels II',NULL,NULL,'1969-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (56,'Individual',NULL,'Dr. BrzÄ™czysÅ‚aw Samuels',NULL,NULL,'BrzÄ™czysÅ‚aw','K','Samuels',1,1,0,0,0,0,NULL,'Samuels, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,'4',NULL,'1240846534',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dr. BrzÄ™czysÅ‚aw Samuels',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (57,'Individual',NULL,'Dr. Megan Barkley-Smith',NULL,NULL,'Megan','','Barkley-Smith',1,0,0,0,0,0,NULL,'Barkley-Smith, Megan',NULL,NULL,NULL,'2',NULL,'1923578528',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Dr. Megan Barkley-Smith',NULL,NULL,'2001-03-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (58,'Individual',NULL,'Ms. Kiara Wagner',NULL,NULL,'Kiara','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Kiara',NULL,NULL,NULL,NULL,NULL,'2385501712',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Ms. Kiara Wagner',NULL,1,'1972-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (59,'Individual',NULL,'Dr. Alexia Smith',NULL,NULL,'Alexia','','Smith',1,0,0,0,0,0,NULL,'Smith, Alexia',NULL,NULL,NULL,'2',NULL,'528182465',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Dr. Alexia Smith',NULL,1,'1996-10-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (60,'Individual',NULL,'Betty Reynolds',NULL,NULL,'Betty','L','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Betty',NULL,NULL,NULL,NULL,NULL,'1042239873',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Betty Reynolds',NULL,1,'1966-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (61,'Individual',NULL,'Mrs. Jina Barkley',NULL,NULL,'Jina','O','Barkley',0,1,0,0,0,0,NULL,'Barkley, Jina',NULL,NULL,NULL,'3',NULL,'1987881599',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Mrs. Jina Barkley',NULL,1,'1997-08-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (62,'Individual',NULL,'Kandace Smith-Nielsen',NULL,NULL,'Kandace','','Smith-Nielsen',0,0,0,0,0,0,NULL,'Smith-Nielsen, Kandace',NULL,NULL,NULL,NULL,NULL,'406524693',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Smith-Nielsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (63,'Individual',NULL,'Mr. Andrew Yadav II',NULL,NULL,'Andrew','Z','Yadav',0,1,0,0,0,0,NULL,'Yadav, Andrew',NULL,NULL,NULL,'1',NULL,'3652555424',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Mr. Andrew Yadav II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (64,'Individual',NULL,'valener@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'valener@fishmail.co.uk',NULL,NULL,NULL,'4',NULL,'489343695',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear valener@fishmail.co.uk',1,NULL,'Dear valener@fishmail.co.uk',1,NULL,'valener@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (65,'Household',NULL,'Jacobs-Roberts family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Jacobs-Roberts family',NULL,NULL,NULL,NULL,NULL,'1859885034',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jacobs-Roberts family',5,NULL,'Dear Jacobs-Roberts family',2,NULL,'Jacobs-Roberts family',NULL,NULL,NULL,0,NULL,'Jacobs-Roberts family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (66,'Organization',NULL,'Local Music Association','Local Music Association',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Local Music Association',NULL,NULL,NULL,'5',NULL,'157843381',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Music Association',NULL,NULL,NULL,0,NULL,NULL,83,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (67,'Individual',NULL,'Ashlie Bachman',NULL,NULL,'Ashlie','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Ashlie',NULL,NULL,NULL,'1',NULL,'628441271',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Bachman',NULL,NULL,'1965-02-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (68,'Individual',NULL,'Princess Jacobs-Roberts',NULL,NULL,'Princess','','Jacobs-Roberts',0,0,0,0,0,0,NULL,'Jacobs-Roberts, Princess',NULL,NULL,NULL,'2',NULL,'3709229487',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Jacobs-Roberts',NULL,1,'1982-12-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (69,'Individual',NULL,'Mr. Teddy Reynolds Jr.',NULL,NULL,'Teddy','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Teddy',NULL,NULL,NULL,NULL,NULL,'2270921346',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Reynolds Jr.',NULL,2,'1991-09-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (70,'Individual',NULL,'Mrs. Kathlyn Jones',NULL,NULL,'Kathlyn','','Jones',0,0,0,0,0,0,NULL,'Jones, Kathlyn',NULL,NULL,NULL,'3',NULL,'1774529515',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Mrs. Kathlyn Jones',NULL,1,'1990-01-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (71,'Individual',NULL,'Mr. Daren Smith',NULL,NULL,'Daren','','Smith',0,0,0,0,0,0,NULL,'Smith, Daren',NULL,NULL,NULL,'4',NULL,'3966682227',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Mr. Daren Smith',NULL,2,'1960-11-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (72,'Individual',NULL,'jameson.bernadette@fakemail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jameson.bernadette@fakemail.org',NULL,NULL,NULL,'5',NULL,'9927664',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jameson.bernadette@fakemail.org',1,NULL,'Dear jameson.bernadette@fakemail.org',1,NULL,'jameson.bernadette@fakemail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (73,'Individual',NULL,'Kacey Terry-Smith',NULL,NULL,'Kacey','S','Terry-Smith',1,0,0,0,0,0,NULL,'Terry-Smith, Kacey',NULL,NULL,NULL,NULL,NULL,'2994588725',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Terry-Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (74,'Individual',NULL,'Lawerence Müller II',NULL,NULL,'Lawerence','','Müller',0,0,0,0,0,0,NULL,'Müller, Lawerence',NULL,NULL,NULL,'5',NULL,'3263544089',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Müller II',NULL,2,'1955-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (75,'Individual',NULL,'ma.smith94@spamalot.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'ma.smith94@spamalot.co.uk',NULL,NULL,NULL,'2',NULL,'2510646797',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear ma.smith94@spamalot.co.uk',1,NULL,'Dear ma.smith94@spamalot.co.uk',1,NULL,'ma.smith94@spamalot.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (76,'Organization',NULL,'Martin Luther King Legal Services','Martin Luther King Legal Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Martin Luther King Legal Services',NULL,NULL,NULL,'5',NULL,'2690626934',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Legal Services',NULL,NULL,NULL,0,NULL,NULL,141,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (77,'Individual',NULL,'Rodrigo Dimitrov Sr.',NULL,NULL,'Rodrigo','T','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Rodrigo',NULL,NULL,NULL,'4',NULL,'3624892269',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Dimitrov Sr.',NULL,NULL,'1981-09-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (78,'Individual',NULL,'elinadimitrov77@testing.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'elinadimitrov77@testing.co.in',NULL,NULL,NULL,NULL,NULL,'1987389095',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear elinadimitrov77@testing.co.in',1,NULL,'Dear elinadimitrov77@testing.co.in',1,NULL,'elinadimitrov77@testing.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (79,'Individual',NULL,'Dr. Justina Prentice',NULL,NULL,'Justina','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Justina',NULL,NULL,NULL,'2',NULL,'642394673',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina Prentice',NULL,NULL,'1985-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (80,'Individual',NULL,'Carlos Nielsen-Barkley',NULL,NULL,'Carlos','S','Nielsen-Barkley',0,0,0,0,1,0,NULL,'Nielsen-Barkley, Carlos',NULL,NULL,NULL,NULL,NULL,'3056188346',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Nielsen-Barkley',NULL,2,'2013-06-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (81,'Individual',NULL,'shermanw@testmail.co.pl',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'shermanw@testmail.co.pl',NULL,NULL,NULL,NULL,NULL,'1410146747',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear shermanw@testmail.co.pl',1,NULL,'Dear shermanw@testmail.co.pl',1,NULL,'shermanw@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (82,'Individual',NULL,'Jed Terrell III',NULL,NULL,'Jed','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Jed',NULL,NULL,NULL,NULL,NULL,'1773288305',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Terrell III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:58','Both'), - (83,'Individual',NULL,'Dr. Delana McReynolds','Local Music Association',NULL,'Delana','','McReynolds',0,0,0,0,1,0,NULL,'McReynolds, Delana',NULL,NULL,NULL,NULL,NULL,'3428146397',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Dr. Delana McReynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,66,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (84,'Individual',NULL,'Dr. Carylon Lee',NULL,NULL,'Carylon','','Lee',0,0,0,0,0,0,NULL,'Lee, Carylon',NULL,NULL,NULL,'2',NULL,'4019076192',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Dr. Carylon Lee',NULL,1,'1955-08-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (85,'Individual',NULL,'Ms. Elina Samuels',NULL,NULL,'Elina','','Samuels',0,0,0,0,0,0,NULL,'Samuels, Elina',NULL,NULL,NULL,NULL,NULL,'2816803566',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Ms. Elina Samuels',NULL,1,'1980-09-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (86,'Individual',NULL,'nielsen.megan27@testmail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'nielsen.megan27@testmail.co.in',NULL,NULL,NULL,'3',NULL,'2466411464',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear nielsen.megan27@testmail.co.in',1,NULL,'Dear nielsen.megan27@testmail.co.in',1,NULL,'nielsen.megan27@testmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (87,'Individual',NULL,'Landon Jones',NULL,NULL,'Landon','I','Jones',0,0,0,0,0,0,NULL,'Jones, Landon',NULL,NULL,NULL,NULL,NULL,'1338428920',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Jones',NULL,2,'1969-03-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (88,'Individual',NULL,'herminiag@example.com',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'herminiag@example.com',NULL,NULL,NULL,NULL,NULL,'2883265573',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear herminiag@example.com',1,NULL,'Dear herminiag@example.com',1,NULL,'herminiag@example.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:58','Both'), - (89,'Individual',NULL,'Kacey Smith',NULL,NULL,'Kacey','','Smith',0,0,0,0,0,0,NULL,'Smith, Kacey',NULL,NULL,NULL,'3',NULL,'4027129634',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (90,'Individual',NULL,'Roland Parker Sr.',NULL,NULL,'Roland','','Parker',0,0,0,0,0,0,NULL,'Parker, Roland',NULL,NULL,NULL,'3',NULL,'3318650576',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Parker Sr.',NULL,2,'1981-11-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (91,'Individual',NULL,'Mrs. Princess Smith',NULL,NULL,'Princess','','Smith',0,0,0,0,1,0,NULL,'Smith, Princess',NULL,NULL,NULL,'5',NULL,'1829040268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Mrs. Princess Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (92,'Individual',NULL,'Dr. Junko Jones',NULL,NULL,'Junko','','Jones',0,0,0,0,0,0,NULL,'Jones, Junko',NULL,NULL,NULL,NULL,NULL,'3254186828',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Dr. Junko Jones',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (93,'Individual',NULL,'Craig Olsen',NULL,NULL,'Craig','L','Olsen',1,0,0,0,0,0,NULL,'Olsen, Craig',NULL,NULL,NULL,NULL,NULL,'1378827194',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Olsen',NULL,2,'1967-02-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (94,'Organization',NULL,'Minnesota Advocacy Trust','Minnesota Advocacy Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Minnesota Advocacy Trust',NULL,NULL,NULL,'5',NULL,'2584972181',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Minnesota Advocacy Trust',NULL,NULL,NULL,0,NULL,NULL,100,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (95,'Individual',NULL,'Rosario Cruz',NULL,NULL,'Rosario','W','Cruz',0,0,0,0,0,0,NULL,'Cruz, Rosario',NULL,NULL,NULL,'5',NULL,'2057831420',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Cruz',NULL,2,'1977-12-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (96,'Individual',NULL,'Teddy Parker','United Agriculture Association',NULL,'Teddy','A','Parker',0,1,0,0,1,0,NULL,'Parker, Teddy',NULL,NULL,NULL,'2',NULL,'1804413700',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Parker',NULL,2,'1971-05-27',0,NULL,NULL,NULL,NULL,NULL,140,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (97,'Individual',NULL,'Norris Dimitrov II',NULL,NULL,'Norris','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Norris',NULL,NULL,NULL,NULL,NULL,'378198335',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Dimitrov II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (98,'Organization',NULL,'Sierra Arts Alliance','Sierra Arts Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Sierra Arts Alliance',NULL,NULL,NULL,NULL,NULL,'2493739571',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Sierra Arts Alliance',NULL,NULL,NULL,0,NULL,NULL,40,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (99,'Individual',NULL,'Andrew Terry III',NULL,NULL,'Andrew','M','Terry',0,0,0,0,0,0,NULL,'Terry, Andrew',NULL,NULL,NULL,'4',NULL,'3371971091',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Andrew Terry III',NULL,NULL,'1986-01-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (100,'Individual',NULL,'Daren Yadav','Minnesota Advocacy Trust',NULL,'Daren','','Yadav',0,0,0,0,1,0,NULL,'Yadav, Daren',NULL,NULL,NULL,NULL,NULL,'1994068290',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Yadav',NULL,NULL,'1992-04-27',0,NULL,NULL,NULL,NULL,NULL,94,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (101,'Organization',NULL,'Harrisburg Software Association','Harrisburg Software Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Harrisburg Software Association',NULL,NULL,NULL,NULL,NULL,'1022393806',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Harrisburg Software Association',NULL,NULL,NULL,0,NULL,NULL,138,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (102,'Individual',NULL,'Ms. Megan Smith',NULL,NULL,'Megan','','Smith',1,0,0,0,0,0,NULL,'Smith, Megan',NULL,NULL,NULL,NULL,NULL,'278762954',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Ms. Megan Smith',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (103,'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-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (104,'Individual',NULL,'Sonny Wilson','Caulder Peace Trust',NULL,'Sonny','I','Wilson',0,0,0,0,0,0,NULL,'Wilson, Sonny',NULL,NULL,NULL,'1',NULL,'1288997537',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sonny',1,NULL,'Dear Sonny',1,NULL,'Sonny Wilson',NULL,2,'1997-09-05',0,NULL,NULL,NULL,NULL,NULL,186,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (105,'Individual',NULL,'Ashley Blackwell',NULL,NULL,'Ashley','','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Ashley',NULL,NULL,NULL,NULL,NULL,'2843113739',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Blackwell',NULL,2,'1950-02-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (106,'Individual',NULL,'Mr. Jackson Jensen',NULL,NULL,'Jackson','P','Jensen',1,0,0,0,0,0,NULL,'Jensen, Jackson',NULL,NULL,NULL,'2',NULL,'2839026195',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Jensen',NULL,2,'1949-04-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (107,'Individual',NULL,'Dr. Herminia Dimitrov',NULL,NULL,'Herminia','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Herminia',NULL,NULL,NULL,NULL,NULL,'4241728416',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Dr. Herminia Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (108,'Individual',NULL,'Dr. Kenny Zope III',NULL,NULL,'Kenny','','Zope',0,0,0,0,0,0,NULL,'Zope, Kenny',NULL,NULL,NULL,'5',NULL,'89544599',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Zope III',NULL,2,'1998-05-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (109,'Individual',NULL,'prenticee46@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'prenticee46@fishmail.co.nz',NULL,NULL,NULL,NULL,NULL,'2619859908',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear prenticee46@fishmail.co.nz',1,NULL,'Dear prenticee46@fishmail.co.nz',1,NULL,'prenticee46@fishmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (110,'Individual',NULL,'yadave78@airmail.org','States Arts Partnership',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'yadave78@airmail.org',NULL,NULL,NULL,'2',NULL,'2029777414',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear yadave78@airmail.org',1,NULL,'Dear yadave78@airmail.org',1,NULL,'yadave78@airmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,37,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (111,'Individual',NULL,'Dr. Laree Jacobs',NULL,NULL,'Laree','','Jacobs',0,1,0,0,0,0,NULL,'Jacobs, Laree',NULL,NULL,NULL,NULL,NULL,'3788424198',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Dr. Laree Jacobs',NULL,1,'1936-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (112,'Individual',NULL,'Mr. Lawerence Prentice Jr.',NULL,NULL,'Lawerence','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Lawerence',NULL,NULL,NULL,NULL,NULL,'1400144571',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Prentice Jr.',NULL,2,'1983-09-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (113,'Individual',NULL,'Norris Parker Sr.',NULL,NULL,'Norris','','Parker',0,0,0,0,0,0,NULL,'Parker, Norris',NULL,NULL,NULL,NULL,NULL,'3555621557',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Parker Sr.',NULL,2,'1979-01-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (114,'Individual',NULL,'Ivey Jones',NULL,NULL,'Ivey','','Jones',0,0,0,0,0,0,NULL,'Jones, Ivey',NULL,NULL,NULL,'4',NULL,'2553949763',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (115,'Organization',NULL,'Urban Advocacy Academy','Urban Advocacy Academy',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Urban Advocacy Academy',NULL,NULL,NULL,NULL,NULL,'740763449',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Advocacy Academy',NULL,NULL,NULL,0,NULL,NULL,154,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (116,'Individual',NULL,'Sharyn Jameson',NULL,NULL,'Sharyn','Z','Jameson',0,1,0,0,0,0,NULL,'Jameson, Sharyn',NULL,NULL,NULL,NULL,NULL,'2205307194',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Jameson',NULL,1,'1966-09-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (117,'Individual',NULL,'Kathleen Cooper',NULL,NULL,'Kathleen','P','Cooper',1,0,0,0,0,0,NULL,'Cooper, Kathleen',NULL,NULL,NULL,NULL,NULL,'2978095571',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:58','Both'), - (118,'Individual',NULL,'Ms. Juliann Jones',NULL,NULL,'Juliann','V','Jones',0,0,0,0,0,0,NULL,'Jones, Juliann',NULL,NULL,NULL,'1',NULL,'2994916401',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Ms. Juliann Jones',NULL,1,'1992-06-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (119,'Organization',NULL,'Second Legal Initiative','Second Legal Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Second Legal Initiative',NULL,NULL,NULL,NULL,NULL,'1538190431',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Second Legal Initiative',NULL,NULL,NULL,0,NULL,NULL,181,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (120,'Individual',NULL,'Elbert ÅÄ…chowski III',NULL,NULL,'Elbert','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Elbert',NULL,NULL,NULL,'3',NULL,'473197543',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert ÅÄ…chowski III',NULL,NULL,'2001-02-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (121,'Organization',NULL,'College Peace Solutions','College Peace Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'College Peace Solutions',NULL,NULL,NULL,'3',NULL,'4273729758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'College Peace Solutions',NULL,NULL,NULL,0,NULL,NULL,126,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (122,'Individual',NULL,'Ms. Arlyne Wilson',NULL,NULL,'Arlyne','U','Wilson',1,1,0,0,0,0,NULL,'Wilson, Arlyne',NULL,NULL,NULL,NULL,NULL,'785003749',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Ms. Arlyne Wilson',NULL,NULL,'1987-12-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (123,'Individual',NULL,'Mrs. Margaret Wattson',NULL,NULL,'Margaret','L','Wattson',1,1,0,0,0,0,NULL,'Wattson, Margaret',NULL,NULL,NULL,'4',NULL,'2865119341',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Wattson',NULL,1,'1941-03-06',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (124,'Organization',NULL,'Maple Agriculture Trust','Maple Agriculture Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Maple Agriculture Trust',NULL,NULL,NULL,NULL,NULL,'3666418584',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Agriculture Trust',NULL,NULL,NULL,0,NULL,NULL,185,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (125,'Individual',NULL,'Mr. Lawerence Roberts',NULL,NULL,'Lawerence','Y','Roberts',0,0,0,0,0,0,NULL,'Roberts, Lawerence',NULL,NULL,NULL,NULL,NULL,'2250722466',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Roberts',NULL,2,'1981-07-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (126,'Individual',NULL,'Allen Wilson III','College Peace Solutions',NULL,'Allen','','Wilson',1,0,0,0,0,0,NULL,'Wilson, Allen',NULL,NULL,NULL,NULL,NULL,'669149647',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Wilson III',NULL,NULL,'1978-10-15',0,NULL,NULL,NULL,NULL,NULL,121,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (127,'Household',NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,'4082772645',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Smith family',5,NULL,'Dear Smith family',2,NULL,'Smith family',NULL,NULL,NULL,0,NULL,'Smith family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (128,'Individual',NULL,'Sharyn Smith',NULL,NULL,'Sharyn','A','Smith',1,0,0,0,0,0,NULL,'Smith, Sharyn',NULL,NULL,NULL,NULL,NULL,'4235031760',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn Smith',NULL,1,'1944-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (129,'Household',NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Parker family',NULL,NULL,NULL,NULL,NULL,'425242179',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Parker family',5,NULL,'Dear Parker family',2,NULL,'Parker family',NULL,NULL,NULL,0,NULL,'Parker family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (130,'Individual',NULL,'Elina Dimitrov',NULL,NULL,'Elina','','Dimitrov',1,0,0,0,1,0,NULL,'Dimitrov, Elina',NULL,NULL,NULL,NULL,NULL,'1959136651',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (131,'Individual',NULL,'robertson.rosario@fishmail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'robertson.rosario@fishmail.net',NULL,NULL,NULL,NULL,NULL,'3840046335',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear robertson.rosario@fishmail.net',1,NULL,'Dear robertson.rosario@fishmail.net',1,NULL,'robertson.rosario@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (132,'Individual',NULL,'Dr. Lou Samuels II',NULL,NULL,'Lou','','Samuels',1,0,0,0,0,0,NULL,'Samuels, Lou',NULL,NULL,NULL,NULL,NULL,'2036666964',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou Samuels II',NULL,2,'1939-12-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (133,'Individual',NULL,'Ms. Santina Wagner',NULL,NULL,'Santina','P','Wagner',0,0,0,0,0,0,NULL,'Wagner, Santina',NULL,NULL,NULL,NULL,NULL,'3136401348',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Ms. Santina Wagner',NULL,NULL,'1971-09-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (134,'Individual',NULL,'Nicole Samson',NULL,NULL,'Nicole','','Samson',0,0,0,0,0,0,NULL,'Samson, Nicole',NULL,NULL,NULL,'4',NULL,'1649974700',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Samson',NULL,NULL,'1944-11-16',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:58','Both'), - (135,'Individual',NULL,'Nicole Reynolds',NULL,NULL,'Nicole','T','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Nicole',NULL,NULL,NULL,NULL,NULL,'761347684',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (136,'Individual',NULL,'dazd54@sample.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'dazd54@sample.co.in',NULL,NULL,NULL,NULL,NULL,'4280503550',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear dazd54@sample.co.in',1,NULL,'Dear dazd54@sample.co.in',1,NULL,'dazd54@sample.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (137,'Individual',NULL,'Roland Adams Sr.','Creative Empowerment Association',NULL,'Roland','','Adams',0,0,0,0,0,0,NULL,'Adams, Roland',NULL,NULL,NULL,'2',NULL,'2320657874',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Adams Sr.',NULL,2,'1984-01-24',0,NULL,NULL,NULL,NULL,NULL,8,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (138,'Individual',NULL,'Alida ÅÄ…chowski','Harrisburg Software Association',NULL,'Alida','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Alida',NULL,NULL,NULL,NULL,NULL,'856739005',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida ÅÄ…chowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,101,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (139,'Individual',NULL,'Dr. Jay Nielsen',NULL,NULL,'Jay','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Jay',NULL,NULL,NULL,'1',NULL,'1092213488',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Nielsen',NULL,2,'1970-02-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (140,'Organization',NULL,'United Agriculture Association','United Agriculture Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Agriculture Association',NULL,NULL,NULL,'3',NULL,'1260809011',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Agriculture Association',NULL,NULL,NULL,0,NULL,NULL,96,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (141,'Individual',NULL,'Erik Zope II','Martin Luther King Legal Services',NULL,'Erik','N','Zope',0,0,0,0,0,0,NULL,'Zope, Erik',NULL,NULL,NULL,'3',NULL,'2683786262',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Zope II',NULL,2,'2000-01-22',0,NULL,NULL,NULL,NULL,NULL,76,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (142,'Individual',NULL,'Mr. Andrew Wattson III',NULL,NULL,'Andrew','P','Wattson',0,0,0,0,0,0,NULL,'Wattson, Andrew',NULL,NULL,NULL,'5',NULL,'3954041415',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Mr. Andrew Wattson III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (143,'Individual',NULL,'Megan Robertson',NULL,NULL,'Megan','W','Robertson',0,0,0,0,0,0,NULL,'Robertson, Megan',NULL,NULL,NULL,NULL,NULL,'780859539',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Robertson',NULL,1,'1939-03-01',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (144,'Household',NULL,'Smith family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Smith family',NULL,NULL,NULL,'3',NULL,'4082772645',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Smith family',5,NULL,'Dear Smith family',2,NULL,'Smith family',NULL,NULL,NULL,0,NULL,'Smith family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (145,'Individual',NULL,'Mr. Troy Barkley Sr.','Mottville Action School',NULL,'Troy','R','Barkley',1,0,0,0,0,0,NULL,'Barkley, Troy',NULL,NULL,NULL,'1',NULL,'3703467861',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Mr. Troy Barkley Sr.',NULL,2,'1978-10-10',0,NULL,NULL,NULL,NULL,NULL,49,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (146,'Individual',NULL,'Dr. Kathleen Samuels',NULL,NULL,'Kathleen','L','Samuels',0,0,0,0,0,0,NULL,'Samuels, Kathleen',NULL,NULL,NULL,'3',NULL,'4106798550',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Dr. Kathleen Samuels',NULL,NULL,'1969-06-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (147,'Individual',NULL,'Ashley Jones III',NULL,NULL,'Ashley','H','Jones',1,1,0,0,0,0,NULL,'Jones, Ashley',NULL,NULL,NULL,NULL,NULL,'3141302765',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Jones III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (148,'Individual',NULL,'Scott Patel II',NULL,NULL,'Scott','','Patel',1,1,0,0,0,0,NULL,'Patel, Scott',NULL,NULL,NULL,'2',NULL,'3200761732',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Patel II',NULL,2,'1944-02-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (149,'Individual',NULL,'Dr. Alexia Bachman',NULL,NULL,'Alexia','','Bachman',0,0,0,0,1,0,NULL,'Bachman, Alexia',NULL,NULL,NULL,'1',NULL,'703420300',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Dr. Alexia Bachman',NULL,1,'1953-05-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (150,'Individual',NULL,'Lincoln Terrell',NULL,NULL,'Lincoln','','Terrell',0,1,0,0,0,0,NULL,'Terrell, Lincoln',NULL,NULL,NULL,'5',NULL,'1872516790',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (151,'Individual',NULL,'Brent ÅÄ…chowski',NULL,NULL,'Brent','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Brent',NULL,NULL,NULL,'4',NULL,'1516135364',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent ÅÄ…chowski',NULL,2,NULL,1,'2023-05-13',NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (152,'Individual',NULL,'Lincoln Ivanov',NULL,NULL,'Lincoln','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Lincoln',NULL,NULL,NULL,NULL,NULL,'1295096764',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Ivanov',NULL,2,'1989-07-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (153,'Individual',NULL,'Mei Adams',NULL,NULL,'Mei','','Adams',1,0,0,0,1,0,NULL,'Adams, Mei',NULL,NULL,NULL,NULL,NULL,'407770009',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Adams',NULL,1,'1995-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (154,'Individual',NULL,'Scott Prentice','Urban Advocacy Academy',NULL,'Scott','H','Prentice',0,0,0,0,0,0,NULL,'Prentice, Scott',NULL,NULL,NULL,'3',NULL,'406414833',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Prentice',NULL,2,'2006-12-02',0,NULL,NULL,NULL,NULL,NULL,115,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (155,'Individual',NULL,'Dr. Princess Jones',NULL,NULL,'Princess','','Jones',0,0,0,0,0,0,NULL,'Jones, Princess',NULL,NULL,NULL,'4',NULL,'3647166533',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Dr. Princess Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (156,'Individual',NULL,'Landon Jacobs',NULL,NULL,'Landon','K','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Landon',NULL,NULL,NULL,'3',NULL,'1885905593',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Jacobs',NULL,2,'1965-05-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (157,'Individual',NULL,'Elbert Smith Sr.',NULL,NULL,'Elbert','','Smith',0,0,0,0,0,0,NULL,'Smith, Elbert',NULL,NULL,NULL,NULL,NULL,'3374844220',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Smith Sr.',NULL,NULL,'1987-04-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (158,'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-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (159,'Individual',NULL,'Mrs. Josefa Reynolds',NULL,NULL,'Josefa','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Josefa',NULL,NULL,NULL,NULL,NULL,'2579265288',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Mrs. Josefa Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (160,'Individual',NULL,'Alida ÅÄ…chowski',NULL,NULL,'Alida','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Alida',NULL,NULL,NULL,NULL,NULL,'856739005',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida ÅÄ…chowski',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (161,'Individual',NULL,'Dr. Lawerence Jacobs Jr.',NULL,NULL,'Lawerence','','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Lawerence',NULL,NULL,NULL,NULL,NULL,'2914828015',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Dr. Lawerence Jacobs Jr.',NULL,NULL,'1995-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (162,'Individual',NULL,'Dr. Errol Jameson',NULL,NULL,'Errol','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Errol',NULL,NULL,NULL,NULL,NULL,'4067151192',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Jameson',NULL,NULL,'1997-05-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (163,'Individual',NULL,'Dr. Elbert Smith',NULL,NULL,'Elbert','L','Smith',0,1,0,0,1,0,NULL,'Smith, Elbert',NULL,NULL,NULL,'3',NULL,'3374844220',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Dr. Elbert Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (164,'Individual',NULL,'Esta ÅÄ…chowski',NULL,NULL,'Esta','O','ÅÄ…chowski',0,0,0,0,1,0,NULL,'ÅÄ…chowski, Esta',NULL,NULL,NULL,'3',NULL,'195412899',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta ÅÄ…chowski',NULL,1,'1937-01-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (165,'Individual',NULL,'Alexia Ivanov-Jameson',NULL,NULL,'Alexia','','Ivanov-Jameson',0,0,0,0,0,0,NULL,'Ivanov-Jameson, Alexia',NULL,NULL,NULL,'4',NULL,'3700985534',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Ivanov-Jameson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (166,'Individual',NULL,'smith.claudio@testmail.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'smith.claudio@testmail.co.nz',NULL,NULL,NULL,'5',NULL,'3983845230',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear smith.claudio@testmail.co.nz',1,NULL,'Dear smith.claudio@testmail.co.nz',1,NULL,'smith.claudio@testmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (167,'Household',NULL,'Nielsen-Barkley family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Nielsen-Barkley family',NULL,NULL,NULL,'1',NULL,'1261260403',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen-Barkley family',5,NULL,'Dear Nielsen-Barkley family',2,NULL,'Nielsen-Barkley family',NULL,NULL,NULL,0,NULL,'Nielsen-Barkley family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (168,'Individual',NULL,'Allen Barkley-Robertson','United Health Association',NULL,'Allen','U','Barkley-Robertson',0,0,0,0,0,0,NULL,'Barkley-Robertson, Allen',NULL,NULL,NULL,'2',NULL,'2390437386',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Allen Barkley-Robertson',NULL,NULL,'2010-10-03',0,NULL,NULL,NULL,NULL,NULL,4,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (169,'Individual',NULL,'Justina Samuels',NULL,NULL,'Justina','','Samuels',0,0,0,0,1,0,NULL,'Samuels, Justina',NULL,NULL,NULL,'5',NULL,'1737971561',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Samuels',NULL,NULL,'1938-06-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (170,'Individual',NULL,'Dr. Margaret Yadav',NULL,NULL,'Margaret','','Yadav',0,0,0,0,1,0,NULL,'Yadav, Margaret',NULL,NULL,NULL,'2',NULL,'3959187042',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Dr. Margaret Yadav',NULL,1,'1985-01-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (171,'Individual',NULL,'Mr. Jed Nielsen',NULL,NULL,'Jed','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Jed',NULL,NULL,NULL,'1',NULL,'1181971245',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Mr. Jed Nielsen',NULL,2,'1980-01-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (172,'Individual',NULL,'Barry Nielsen-Barkley',NULL,NULL,'Barry','C','Nielsen-Barkley',0,0,0,0,0,0,NULL,'Nielsen-Barkley, Barry',NULL,NULL,NULL,NULL,NULL,'1560892500',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Nielsen-Barkley',NULL,NULL,'2011-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (173,'Individual',NULL,'Dr. Valene DÃaz',NULL,NULL,'Valene','T','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Valene',NULL,NULL,NULL,'3',NULL,'3532656393',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Dr. Valene DÃaz',NULL,NULL,'1953-03-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (174,'Household',NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,'1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (175,'Individual',NULL,'Iris Wagner','Providence Empowerment Fund',NULL,'Iris','F','Wagner',0,0,0,0,0,0,NULL,'Wagner, Iris',NULL,NULL,NULL,NULL,NULL,'2617223006',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Wagner',NULL,NULL,'1937-10-07',0,NULL,NULL,NULL,NULL,NULL,36,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (176,'Individual',NULL,'barkley.rosario26@infomail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'barkley.rosario26@infomail.co.in',NULL,NULL,NULL,NULL,NULL,'1083757600',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear barkley.rosario26@infomail.co.in',1,NULL,'Dear barkley.rosario26@infomail.co.in',1,NULL,'barkley.rosario26@infomail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (177,'Household',NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,NULL,'1570966486',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wagner family',5,NULL,'Dear Wagner family',2,NULL,'Wagner family',NULL,NULL,NULL,0,NULL,'Wagner family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (178,'Individual',NULL,'Dr. Ashlie Barkley',NULL,NULL,'Ashlie','T','Barkley',0,0,0,0,0,0,NULL,'Barkley, Ashlie',NULL,NULL,NULL,NULL,NULL,'1002355994',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Dr. Ashlie Barkley',NULL,1,'1958-09-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (179,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Reynolds family',NULL,NULL,NULL,NULL,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-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (180,'Individual',NULL,'Nicole Jacobs',NULL,NULL,'Nicole','K','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Nicole',NULL,NULL,NULL,'1',NULL,'1326511364',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Jacobs',NULL,NULL,'2010-03-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (181,'Individual',NULL,'Ms. Margaret Zope-Dimitrov','Second Legal Initiative',NULL,'Margaret','','Zope-Dimitrov',0,1,0,0,0,0,NULL,'Zope-Dimitrov, Margaret',NULL,NULL,NULL,NULL,NULL,'1151842680',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Ms. Margaret Zope-Dimitrov',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,119,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (182,'Household',NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Wilson family',NULL,NULL,NULL,'2',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-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (183,'Individual',NULL,'Alexia Dimitrov','Local Advocacy Services',NULL,'Alexia','A','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Alexia',NULL,NULL,NULL,NULL,NULL,'2476509826',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Dimitrov',NULL,1,'1983-08-28',0,NULL,NULL,NULL,NULL,NULL,2,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (184,'Individual',NULL,'Ms. Delana Robertson',NULL,NULL,'Delana','A','Robertson',1,1,0,0,0,0,NULL,'Robertson, Delana',NULL,NULL,NULL,NULL,NULL,'1905336460',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Ms. Delana Robertson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (185,'Individual',NULL,'Sanford Zope','Maple Agriculture Trust',NULL,'Sanford','L','Zope',0,1,0,0,0,0,NULL,'Zope, Sanford',NULL,NULL,NULL,NULL,NULL,'3485406852',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Zope',NULL,2,'1951-04-24',0,NULL,NULL,NULL,NULL,NULL,124,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (186,'Organization',NULL,'Caulder Peace Trust','Caulder Peace Trust',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Caulder Peace Trust',NULL,NULL,NULL,NULL,NULL,'3117940848',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Caulder Peace Trust',NULL,NULL,NULL,0,NULL,NULL,104,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (187,'Individual',NULL,'Dr. Allen Parker',NULL,NULL,'Allen','','Parker',0,1,0,0,0,0,NULL,'Parker, Allen',NULL,NULL,NULL,'4',NULL,'710842690',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Parker',NULL,2,'1962-04-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (188,'Household',NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jones family',NULL,NULL,NULL,NULL,NULL,'1110516799',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Jones family',5,NULL,'Dear Jones family',2,NULL,'Jones family',NULL,NULL,NULL,0,NULL,'Jones family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (189,'Individual',NULL,'Winford Smith-Nielsen II',NULL,NULL,'Winford','','Smith-Nielsen',0,1,0,0,0,0,NULL,'Smith-Nielsen, Winford',NULL,NULL,NULL,'1',NULL,'3495924165',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Smith-Nielsen II',NULL,2,'2012-11-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (190,'Individual',NULL,'Dr. Jay Samson',NULL,NULL,'Jay','Z','Samson',0,0,0,0,0,0,NULL,'Samson, Jay',NULL,NULL,NULL,'4',NULL,'4164694386',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Dr. Jay Samson',NULL,NULL,'1936-06-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (191,'Individual',NULL,'Shauna Dimitrov',NULL,NULL,'Shauna','L','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Shauna',NULL,NULL,NULL,NULL,NULL,'3774422289',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Dimitrov',NULL,1,'2004-12-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (192,'Individual',NULL,'Megan Parker',NULL,NULL,'Megan','','Parker',0,0,0,0,0,0,NULL,'Parker, Megan',NULL,NULL,NULL,NULL,NULL,'4204728620',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Parker',NULL,1,'1963-05-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (193,'Individual',NULL,'Ms. Teresa Barkley-Robertson',NULL,NULL,'Teresa','V','Barkley-Robertson',0,0,0,0,1,0,NULL,'Barkley-Robertson, Teresa',NULL,NULL,NULL,'1',NULL,'424513946',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Ms. Teresa Barkley-Robertson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (194,'Individual',NULL,'Dr. Bob McReynolds Sr.',NULL,NULL,'Bob','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Bob',NULL,NULL,NULL,'4',NULL,'3806973538',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Dr. Bob McReynolds Sr.',NULL,NULL,'1978-09-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (195,'Individual',NULL,'Kandace Wagner',NULL,NULL,'Kandace','F','Wagner',0,0,0,0,1,0,NULL,'Wagner, Kandace',NULL,NULL,NULL,'5',NULL,'34193694',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Wagner',NULL,1,'2010-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (196,'Individual',NULL,'Erik Wilson',NULL,NULL,'Erik','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Erik',NULL,NULL,NULL,NULL,NULL,'3965179222',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Wilson',NULL,2,'1995-01-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (197,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,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-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (198,'Household',NULL,'Terry-Smith family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Terry-Smith family',NULL,NULL,NULL,NULL,NULL,'2972645810',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry-Smith family',5,NULL,'Dear Terry-Smith family',2,NULL,'Terry-Smith family',NULL,NULL,NULL,0,NULL,'Terry-Smith family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (199,'Individual',NULL,'Dr. Allen Reynolds',NULL,NULL,'Allen','N','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Allen',NULL,NULL,NULL,'1',NULL,'3330814148',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Reynolds',NULL,2,'1988-06-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','Both'), - (200,'Individual',NULL,'Ms. Arlyne Adams',NULL,NULL,'Arlyne','','Adams',0,1,0,0,0,0,NULL,'Adams, Arlyne',NULL,NULL,NULL,'5',NULL,'4065496202',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Ms. Arlyne Adams',NULL,NULL,'1954-12-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:13:59','Both'), - (201,'Individual',NULL,'Shauna McReynolds',NULL,NULL,'Shauna','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Shauna',NULL,NULL,NULL,NULL,NULL,'3277027646',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna McReynolds',NULL,1,'1991-04-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:13:58','2023-09-06 22:14:00','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','f2cb586af6c125f5cae77bb95fb4c1eb',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-09-06 22:14:01','2023-09-06 22:14:01','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-09-06 22:52:06','Both'), + (2,'Individual',NULL,'Winford Samuels-Robertson II',NULL,NULL,'Winford','','Samuels-Robertson',1,0,0,0,0,0,NULL,'Samuels-Robertson, Winford',NULL,NULL,NULL,'5',NULL,'1931755287',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Samuels-Robertson II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (3,'Individual',NULL,'Omar Wattson II','Crystal Lake Sports Services',NULL,'Omar','K','Wattson',0,0,0,0,0,0,NULL,'Wattson, Omar',NULL,NULL,NULL,'3',NULL,'2457180487',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar Wattson II',NULL,2,'2006-11-22',0,NULL,NULL,NULL,NULL,NULL,128,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (4,'Individual',NULL,'BrzÄ™czysÅ‚aw Jones',NULL,NULL,'BrzÄ™czysÅ‚aw','Y','Jones',0,0,0,0,1,0,NULL,'Jones, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,NULL,NULL,'1102443663',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Jones',NULL,2,'1979-12-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (5,'Household',NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Wilson family',NULL,NULL,NULL,'3',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-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (6,'Household',NULL,'Adams-DÃaz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Adams-DÃaz family',NULL,NULL,NULL,NULL,NULL,'2213874085',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Adams-DÃaz family',5,NULL,'Dear Adams-DÃaz family',2,NULL,'Adams-DÃaz family',NULL,NULL,NULL,0,NULL,'Adams-DÃaz family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (7,'Individual',NULL,'Dr. Winford Zope',NULL,NULL,'Winford','F','Zope',1,1,0,0,1,0,NULL,'Zope, Winford',NULL,NULL,NULL,NULL,NULL,'3617829114',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Zope',NULL,2,'1974-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (8,'Individual',NULL,'Dr. Toby Wilson',NULL,NULL,'Toby','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Toby',NULL,NULL,NULL,'2',NULL,'4291852',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Wilson',NULL,2,'1996-05-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (9,'Individual',NULL,'Dr. Shad Blackwell',NULL,NULL,'Shad','U','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Shad',NULL,NULL,NULL,'4',NULL,'1023646981',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Blackwell',NULL,2,'1955-04-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:18','Both'), + (10,'Household',NULL,'Prentice family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Prentice family',NULL,NULL,NULL,'3',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-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (11,'Individual',NULL,'Mr. Jackson Parker',NULL,NULL,'Jackson','C','Parker',1,1,0,0,0,0,NULL,'Parker, Jackson',NULL,NULL,NULL,'3',NULL,'2328007188',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Mr. Jackson Parker',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (12,'Household',NULL,'Dimitrov-Blackwell family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Dimitrov-Blackwell family',NULL,NULL,NULL,'5',NULL,'3980350456',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov-Blackwell family',5,NULL,'Dear Dimitrov-Blackwell family',2,NULL,'Dimitrov-Blackwell family',NULL,NULL,NULL,0,NULL,'Dimitrov-Blackwell family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (13,'Individual',NULL,'Dr. Sherman Prentice',NULL,NULL,'Sherman','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Sherman',NULL,NULL,NULL,NULL,NULL,'2980148757',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Dr. Sherman Prentice',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (14,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,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-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (15,'Individual',NULL,'Arlyne Müller',NULL,NULL,'Arlyne','Y','Müller',1,0,0,0,1,0,NULL,'Müller, Arlyne',NULL,NULL,NULL,NULL,NULL,'908962805',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Müller',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (16,'Individual',NULL,'Mr. Rosario Dimitrov Jr.',NULL,NULL,'Rosario','','Dimitrov',1,0,0,0,0,0,NULL,'Dimitrov, Rosario',NULL,NULL,NULL,NULL,NULL,'3331564945',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario Dimitrov Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (17,'Individual',NULL,'terry.f.teddy@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'terry.f.teddy@fishmail.co.uk',NULL,NULL,NULL,NULL,NULL,'3990920317',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear terry.f.teddy@fishmail.co.uk',1,NULL,'Dear terry.f.teddy@fishmail.co.uk',1,NULL,'terry.f.teddy@fishmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (18,'Individual',NULL,'wilson.sonny@mymail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wilson.sonny@mymail.net',NULL,NULL,NULL,NULL,NULL,'2137801864',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear wilson.sonny@mymail.net',1,NULL,'Dear wilson.sonny@mymail.net',1,NULL,'wilson.sonny@mymail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (19,'Individual',NULL,'Carylon Terry',NULL,NULL,'Carylon','E','Terry',0,0,0,0,0,0,NULL,'Terry, Carylon',NULL,NULL,NULL,NULL,NULL,'803011383',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Terry',NULL,1,'1980-06-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (20,'Individual',NULL,'Valene Müller',NULL,NULL,'Valene','G','Müller',1,0,0,0,0,0,NULL,'Müller, Valene',NULL,NULL,NULL,'2',NULL,'444739216',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Müller',NULL,1,'1967-11-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (21,'Individual',NULL,'Sanford Nielsen III',NULL,NULL,'Sanford','','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Sanford',NULL,NULL,NULL,'5',NULL,'2540808507',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Nielsen III',NULL,NULL,'1996-12-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (22,'Individual',NULL,'Truman Cooper Jr.',NULL,NULL,'Truman','S','Cooper',0,1,0,0,0,0,NULL,'Cooper, Truman',NULL,NULL,NULL,'3',NULL,'938772676',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Cooper Jr.',NULL,NULL,'1965-05-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (23,'Individual',NULL,'Bob Terrell',NULL,NULL,'Bob','P','Terrell',0,1,0,0,1,0,NULL,'Terrell, Bob',NULL,NULL,NULL,NULL,NULL,'1949116278',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Terrell',NULL,2,'2003-06-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (24,'Individual',NULL,'jeromewilson@lol.net',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'jeromewilson@lol.net',NULL,NULL,NULL,'5',NULL,'1863810386',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear jeromewilson@lol.net',1,NULL,'Dear jeromewilson@lol.net',1,NULL,'jeromewilson@lol.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (25,'Individual',NULL,'Valene Yadav-Terry',NULL,NULL,'Valene','Q','Yadav-Terry',1,0,0,0,1,0,NULL,'Yadav-Terry, Valene',NULL,NULL,NULL,'3',NULL,'218067921',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Yadav-Terry',NULL,NULL,'1969-06-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (26,'Individual',NULL,'daz.e.justina43@fakemail.co.nz','Terre Haute Action Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'daz.e.justina43@fakemail.co.nz',NULL,NULL,NULL,NULL,NULL,'578424690',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear daz.e.justina43@fakemail.co.nz',1,NULL,'Dear daz.e.justina43@fakemail.co.nz',1,NULL,'daz.e.justina43@fakemail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,152,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (27,'Individual',NULL,'Dr. Arlyne Wattson','Urban Sustainability Partners',NULL,'Arlyne','','Wattson',0,0,0,0,1,0,NULL,'Wattson, Arlyne',NULL,NULL,NULL,'4',NULL,'2534537033',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Dr. Arlyne Wattson',NULL,NULL,'1986-02-06',0,NULL,NULL,NULL,NULL,NULL,48,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (28,'Individual',NULL,'Mrs. Heidi Terry','Beech Action Systems',NULL,'Heidi','D','Terry',1,0,0,0,1,0,NULL,'Terry, Heidi',NULL,NULL,NULL,'2',NULL,'3824053436',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Mrs. Heidi Terry',NULL,1,'1933-11-10',1,NULL,NULL,NULL,NULL,NULL,193,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (29,'Individual',NULL,'Kiara Dimitrov',NULL,NULL,'Kiara','','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Kiara',NULL,NULL,NULL,NULL,NULL,'340545341',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Dimitrov',NULL,1,'1982-08-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (30,'Individual',NULL,'Eleonor Müller',NULL,NULL,'Eleonor','Y','Müller',1,1,0,0,0,0,NULL,'Müller, Eleonor',NULL,NULL,NULL,'4',NULL,'4009103845',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Müller',NULL,NULL,'1983-09-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (31,'Individual',NULL,'Norris Dimitrov',NULL,NULL,'Norris','C','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Norris',NULL,NULL,NULL,NULL,NULL,'378198335',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Dimitrov',NULL,2,'1989-09-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (32,'Individual',NULL,'Margaret Wilson',NULL,NULL,'Margaret','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Margaret',NULL,NULL,NULL,'4',NULL,'2853804377',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (33,'Individual',NULL,'Dr. Troy Robertson II',NULL,NULL,'Troy','G','Robertson',0,0,0,0,0,0,NULL,'Robertson, Troy',NULL,NULL,NULL,NULL,NULL,'3729972619',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Dr. Troy Robertson II',NULL,2,'1991-12-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (34,'Individual',NULL,'Brittney Jensen',NULL,NULL,'Brittney','B','Jensen',0,1,0,0,0,0,NULL,'Jensen, Brittney',NULL,NULL,NULL,NULL,NULL,'3335875143',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Brittney Jensen',NULL,NULL,'1974-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (35,'Individual',NULL,'Angelika Wattson',NULL,NULL,'Angelika','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Angelika',NULL,NULL,NULL,NULL,NULL,'868071594',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Wattson',NULL,NULL,'2020-09-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (36,'Individual',NULL,'adams-dazm89@infomail.net',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'adams-dazm89@infomail.net',NULL,NULL,NULL,NULL,NULL,'3264570238',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear adams-dazm89@infomail.net',1,NULL,'Dear adams-dazm89@infomail.net',1,NULL,'adams-dazm89@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (37,'Individual',NULL,'Dr. Iris Zope',NULL,NULL,'Iris','S','Zope',0,0,0,0,0,0,NULL,'Zope, Iris',NULL,NULL,NULL,'5',NULL,'3326964728',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Dr. Iris Zope',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (38,'Individual',NULL,'Jina Roberts',NULL,NULL,'Jina','','Roberts',0,0,0,0,1,0,NULL,'Roberts, Jina',NULL,NULL,NULL,NULL,NULL,'3944144091',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (39,'Individual',NULL,'Shad Terrell Jr.','Mississippi Food Partners',NULL,'Shad','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Shad',NULL,NULL,NULL,'3',NULL,'3876111966',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Terrell Jr.',NULL,2,'1963-05-02',0,NULL,NULL,NULL,NULL,NULL,101,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (40,'Individual',NULL,'Ashlie Samuels',NULL,NULL,'Ashlie','B','Samuels',0,0,0,0,0,0,NULL,'Samuels, Ashlie',NULL,NULL,NULL,'3',NULL,'2718903137',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Samuels',NULL,NULL,'1996-12-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (41,'Individual',NULL,'Valene Jameson',NULL,NULL,'Valene','J','Jameson',0,0,0,0,1,0,NULL,'Jameson, Valene',NULL,NULL,NULL,'5',NULL,'2818413262',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Valene Jameson',NULL,NULL,'1967-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (42,'Individual',NULL,'Beula DÃaz',NULL,NULL,'Beula','Y','DÃaz',0,0,0,0,1,0,NULL,'DÃaz, Beula',NULL,NULL,NULL,'1',NULL,'3664256087',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Beula',1,NULL,'Dear Beula',1,NULL,'Beula DÃaz',NULL,1,'1979-12-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (43,'Organization',NULL,'Star Environmental Association','Star Environmental Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Star Environmental Association',NULL,NULL,NULL,NULL,NULL,'2791975676',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Star Environmental Association',NULL,NULL,NULL,0,NULL,NULL,145,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (44,'Individual',NULL,'terry.craig83@lol.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'terry.craig83@lol.org',NULL,NULL,NULL,'1',NULL,'2873019635',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear terry.craig83@lol.org',1,NULL,'Dear terry.craig83@lol.org',1,NULL,'terry.craig83@lol.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (45,'Individual',NULL,'Dr. Tanya Adams',NULL,NULL,'Tanya','','Adams',1,0,0,0,1,0,NULL,'Adams, Tanya',NULL,NULL,NULL,'5',NULL,'1181850988',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Dr. Tanya Adams',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (46,'Individual',NULL,'Toby Roberts Jr.',NULL,NULL,'Toby','V','Roberts',0,0,0,0,1,0,NULL,'Roberts, Toby',NULL,NULL,NULL,NULL,NULL,'3766769567',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Roberts Jr.',NULL,2,'1970-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (47,'Individual',NULL,'Esta Dimitrov',NULL,NULL,'Esta','Z','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Esta',NULL,NULL,NULL,NULL,NULL,'1897476',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Dimitrov',NULL,NULL,'1972-04-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (48,'Organization',NULL,'Urban Sustainability Partners','Urban Sustainability Partners',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Urban Sustainability Partners',NULL,NULL,NULL,NULL,NULL,'199075669',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Sustainability Partners',NULL,NULL,NULL,0,NULL,NULL,27,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (49,'Organization',NULL,'Global Peace Trust','Global Peace Trust',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Peace Trust',NULL,NULL,NULL,NULL,NULL,'2469867703',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Peace Trust',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (50,'Individual',NULL,'Lincoln Jameson III','Local Poetry Association',NULL,'Lincoln','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Lincoln',NULL,NULL,NULL,NULL,NULL,'2753899992',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Jameson III',NULL,2,'1969-04-16',0,NULL,NULL,NULL,NULL,NULL,177,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (51,'Organization',NULL,'Dowlen Arts Partnership','Dowlen Arts Partnership',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Dowlen Arts Partnership',NULL,NULL,NULL,'4',NULL,'2015684674',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Arts Partnership',NULL,NULL,NULL,0,NULL,NULL,76,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (52,'Household',NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Zope family',NULL,NULL,NULL,'2',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-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (53,'Individual',NULL,'Tanya Prentice','Iowa Legal School',NULL,'Tanya','W','Prentice',1,0,0,0,0,0,NULL,'Prentice, Tanya',NULL,NULL,NULL,NULL,NULL,'3651240443',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Prentice',NULL,NULL,'1986-01-21',0,NULL,NULL,NULL,NULL,NULL,105,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (54,'Individual',NULL,'rosariod@testing.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'rosariod@testing.info',NULL,NULL,NULL,'3',NULL,'1148276092',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear rosariod@testing.info',1,NULL,'Dear rosariod@testing.info',1,NULL,'rosariod@testing.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:18','Both'), + (55,'Individual',NULL,'Errol Dimitrov Jr.',NULL,NULL,'Errol','','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Errol',NULL,NULL,NULL,NULL,NULL,'3017354314',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Dimitrov Jr.',NULL,NULL,'2007-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (56,'Individual',NULL,'Scarlet Barkley',NULL,NULL,'Scarlet','U','Barkley',0,0,0,0,0,0,NULL,'Barkley, Scarlet',NULL,NULL,NULL,'2',NULL,'817435173',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Barkley',NULL,NULL,'1959-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (57,'Individual',NULL,'Mrs. Scarlet Samuels-Robertson',NULL,NULL,'Scarlet','','Samuels-Robertson',1,0,0,0,0,0,NULL,'Samuels-Robertson, Scarlet',NULL,NULL,NULL,'2',NULL,'1638483408',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Mrs. Scarlet Samuels-Robertson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (58,'Individual',NULL,'Mr. BrzÄ™czysÅ‚aw Terrell',NULL,NULL,'BrzÄ™czysÅ‚aw','','Terrell',0,1,0,0,0,0,NULL,'Terrell, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,'2',NULL,'2155865046',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Mr. BrzÄ™czysÅ‚aw Terrell',NULL,2,'1956-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (59,'Individual',NULL,'Alexia Bachman',NULL,NULL,'Alexia','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Alexia',NULL,NULL,NULL,NULL,NULL,'703420300',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Bachman',NULL,1,'1945-05-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (60,'Individual',NULL,'Mrs. Elina Roberts','Deland Action Systems',NULL,'Elina','','Roberts',0,0,0,0,0,0,NULL,'Roberts, Elina',NULL,NULL,NULL,'3',NULL,'3456421482',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Mrs. Elina Roberts',NULL,1,'1997-10-20',0,NULL,NULL,NULL,NULL,NULL,135,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (61,'Organization',NULL,'Global Advocacy Initiative','Global Advocacy Initiative',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Global Advocacy Initiative',NULL,NULL,NULL,'3',NULL,'611717485',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Global Advocacy Initiative',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (62,'Individual',NULL,'Dr. Teresa Patel',NULL,NULL,'Teresa','H','Patel',0,0,0,0,0,0,NULL,'Patel, Teresa',NULL,NULL,NULL,NULL,NULL,'1615801119',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Dr. Teresa Patel',NULL,1,'1997-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (63,'Individual',NULL,'Ms. Herminia Wilson',NULL,NULL,'Herminia','C','Wilson',0,1,0,0,0,0,NULL,'Wilson, Herminia',NULL,NULL,NULL,'4',NULL,'1306948243',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Ms. Herminia Wilson',NULL,1,'1968-07-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (64,'Individual',NULL,'Dr. Lou ÅÄ…chowski Sr.',NULL,NULL,'Lou','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Lou',NULL,NULL,NULL,NULL,NULL,'4023887052',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Dr. Lou ÅÄ…chowski Sr.',NULL,2,'1996-02-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (65,'Individual',NULL,'josefabachman-zope@fakemail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'josefabachman-zope@fakemail.biz',NULL,NULL,NULL,NULL,NULL,'395997919',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear josefabachman-zope@fakemail.biz',1,NULL,'Dear josefabachman-zope@fakemail.biz',1,NULL,'josefabachman-zope@fakemail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (66,'Individual',NULL,'Mr. Rolando Nielsen Sr.',NULL,NULL,'Rolando','E','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Rolando',NULL,NULL,NULL,NULL,NULL,'1720954446',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Mr. Rolando Nielsen Sr.',NULL,2,'1996-10-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (67,'Organization',NULL,'Woodbridge Literacy Association','Woodbridge Literacy Association',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Woodbridge Literacy Association',NULL,NULL,NULL,NULL,NULL,'3999176872',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Woodbridge Literacy Association',NULL,NULL,NULL,0,NULL,NULL,165,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (68,'Household',NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,'2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (69,'Individual',NULL,'Jay Deforest',NULL,NULL,'Jay','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Jay',NULL,NULL,NULL,'3',NULL,'3714093983',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Deforest',NULL,2,'1951-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (70,'Individual',NULL,'Dr. Ray Jones Sr.',NULL,NULL,'Ray','','Jones',0,0,0,0,0,0,NULL,'Jones, Ray',NULL,NULL,NULL,NULL,NULL,'3868531541',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Dr. Ray Jones Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (71,'Individual',NULL,'Elina DÃaz',NULL,NULL,'Elina','E','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Elina',NULL,NULL,NULL,'3',NULL,'843757403',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina DÃaz',NULL,NULL,'1953-04-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (72,'Individual',NULL,'Dr. Betty Terry',NULL,NULL,'Betty','','Terry',0,0,0,0,0,0,NULL,'Terry, Betty',NULL,NULL,NULL,'5',NULL,'3939845643',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Dr. Betty Terry',NULL,1,'1968-01-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (73,'Organization',NULL,'Surveyor Development Services','Surveyor Development Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Surveyor Development Services',NULL,NULL,NULL,NULL,NULL,'3185551255',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Surveyor Development Services',NULL,NULL,NULL,0,NULL,NULL,166,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (74,'Individual',NULL,'Mr. Lawerence Müller Sr.',NULL,NULL,'Lawerence','','Müller',1,0,0,0,0,0,NULL,'Müller, Lawerence',NULL,NULL,NULL,'3',NULL,'3263544089',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Müller Sr.',NULL,2,'1975-04-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (75,'Individual',NULL,'Carlos Patel II',NULL,NULL,'Carlos','','Patel',1,1,0,0,0,0,NULL,'Patel, Carlos',NULL,NULL,NULL,NULL,NULL,'2432936038',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Patel II',NULL,2,'1973-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (76,'Individual',NULL,'Dr. Bryon Roberts II','Dowlen Arts Partnership',NULL,'Bryon','L','Roberts',0,1,0,0,0,0,NULL,'Roberts, Bryon',NULL,NULL,NULL,'3',NULL,'1499512182',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Dr. Bryon Roberts II',NULL,2,'1985-09-13',0,NULL,NULL,NULL,NULL,NULL,51,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (77,'Individual',NULL,'Kandace Jensen',NULL,NULL,'Kandace','Q','Jensen',0,0,0,0,1,0,NULL,'Jensen, Kandace',NULL,NULL,NULL,'4',NULL,'2339972314',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Jensen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (78,'Individual',NULL,'Laree Yadav',NULL,NULL,'Laree','Z','Yadav',0,0,0,0,0,0,NULL,'Yadav, Laree',NULL,NULL,NULL,'1',NULL,'3514401547',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Laree',1,NULL,'Dear Laree',1,NULL,'Laree Yadav',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (79,'Individual',NULL,'terry.u.herminia10@notmail.co.pl',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'terry.u.herminia10@notmail.co.pl',NULL,NULL,NULL,NULL,NULL,'536505869',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear terry.u.herminia10@notmail.co.pl',1,NULL,'Dear terry.u.herminia10@notmail.co.pl',1,NULL,'terry.u.herminia10@notmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (80,'Individual',NULL,'jensent17@mymail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jensent17@mymail.co.nz',NULL,NULL,NULL,'4',NULL,'1690688771',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear jensent17@mymail.co.nz',1,NULL,'Dear jensent17@mymail.co.nz',1,NULL,'jensent17@mymail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (81,'Individual',NULL,'Scarlet ÅÄ…chowski',NULL,NULL,'Scarlet','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Scarlet',NULL,NULL,NULL,'5',NULL,'2169485989',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet ÅÄ…chowski',NULL,1,'1966-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (82,'Individual',NULL,'Mr. Lincoln Cruz III','Friends Health Services',NULL,'Lincoln','G','Cruz',0,0,0,0,0,0,NULL,'Cruz, Lincoln',NULL,NULL,NULL,NULL,NULL,'3085396026',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln Cruz III',NULL,NULL,'1965-05-25',0,NULL,NULL,NULL,NULL,NULL,153,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (83,'Individual',NULL,'Dr. Felisha Parker',NULL,NULL,'Felisha','','Parker',0,0,0,0,0,0,NULL,'Parker, Felisha',NULL,NULL,NULL,NULL,NULL,'559181434',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Dr. Felisha Parker',NULL,1,'1974-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (84,'Individual',NULL,'Miguel Terrell',NULL,NULL,'Miguel','R','Terrell',0,1,0,0,0,0,NULL,'Terrell, Miguel',NULL,NULL,NULL,'5',NULL,'2002488569',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Miguel',1,NULL,'Dear Miguel',1,NULL,'Miguel Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (85,'Individual',NULL,'Damaris Prentice',NULL,NULL,'Damaris','','Prentice',1,0,0,0,0,0,NULL,'Prentice, Damaris',NULL,NULL,NULL,NULL,NULL,'4205720753',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (86,'Individual',NULL,'Dr. BrzÄ™czysÅ‚aw Roberts Jr.',NULL,NULL,'BrzÄ™czysÅ‚aw','S','Roberts',0,1,0,0,0,0,NULL,'Roberts, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,'5',NULL,'3691213570',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dr. BrzÄ™czysÅ‚aw Roberts Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (87,'Individual',NULL,'Kiara Jameson',NULL,NULL,'Kiara','L','Jameson',0,0,0,0,0,0,NULL,'Jameson, Kiara',NULL,NULL,NULL,NULL,NULL,'1442754095',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Jameson',NULL,NULL,'1995-10-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (88,'Individual',NULL,'Mrs. Angelika Jensen',NULL,NULL,'Angelika','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Angelika',NULL,NULL,NULL,NULL,NULL,'2460194929',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Mrs. Angelika Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (89,'Individual',NULL,'Delana Dimitrov-Blackwell',NULL,NULL,'Delana','F','Dimitrov-Blackwell',0,0,0,0,0,0,NULL,'Dimitrov-Blackwell, Delana',NULL,NULL,NULL,NULL,NULL,'1994167937',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana Dimitrov-Blackwell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:18','Both'), + (90,'Individual',NULL,'rolandowagner@fishmail.biz',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'rolandowagner@fishmail.biz',NULL,NULL,NULL,'5',NULL,'1565157219',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear rolandowagner@fishmail.biz',1,NULL,'Dear rolandowagner@fishmail.biz',1,NULL,'rolandowagner@fishmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (91,'Organization',NULL,'Arkansas Literacy Partnership','Arkansas Literacy Partnership',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Arkansas Literacy Partnership',NULL,NULL,NULL,NULL,NULL,'4284050225',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Arkansas Literacy Partnership',NULL,NULL,NULL,0,NULL,NULL,154,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (92,'Household',NULL,'Dimitrov-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Dimitrov-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,'2362970834',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Dimitrov-ÅÄ…chowski family',5,NULL,'Dear Dimitrov-ÅÄ…chowski family',2,NULL,'Dimitrov-ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'Dimitrov-ÅÄ…chowski family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (93,'Individual',NULL,'Mr. Maxwell Roberts Sr.',NULL,NULL,'Maxwell','I','Roberts',0,0,0,0,0,0,NULL,'Roberts, Maxwell',NULL,NULL,NULL,'2',NULL,'3618827003',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Roberts Sr.',NULL,NULL,'1973-08-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (94,'Individual',NULL,'Ms. Brigette Zope',NULL,NULL,'Brigette','F','Zope',1,0,0,0,0,0,NULL,'Zope, Brigette',NULL,NULL,NULL,NULL,NULL,'3799032348',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Zope',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (95,'Individual',NULL,'Sherman Terry Jr.',NULL,NULL,'Sherman','','Terry',0,0,0,0,0,0,NULL,'Terry, Sherman',NULL,NULL,NULL,'2',NULL,'4119706907',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Sherman Terry Jr.',NULL,NULL,'1987-11-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (96,'Individual',NULL,'Shauna Jones','California Poetry Collective',NULL,'Shauna','Z','Jones',0,0,0,0,0,0,NULL,'Jones, Shauna',NULL,NULL,NULL,'3',NULL,'2088102406',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Shauna Jones',NULL,1,'1971-05-10',0,NULL,NULL,NULL,NULL,NULL,129,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (97,'Individual',NULL,'Maria Terry II',NULL,NULL,'Maria','','Terry',0,0,0,0,0,0,NULL,'Terry, Maria',NULL,NULL,NULL,'2',NULL,'258657909',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Maria Terry II',NULL,2,'1996-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (98,'Individual',NULL,'Roland ÅÄ…chowski',NULL,NULL,'Roland','','ÅÄ…chowski',0,1,0,0,0,0,NULL,'ÅÄ…chowski, Roland',NULL,NULL,NULL,'2',NULL,'1498526146',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland ÅÄ…chowski',NULL,2,'1941-02-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (99,'Individual',NULL,'Mrs. Juliann Dimitrov',NULL,NULL,'Juliann','','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Juliann',NULL,NULL,NULL,'4',NULL,'835568897',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Mrs. Juliann Dimitrov',NULL,1,'1973-10-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (100,'Individual',NULL,'Kathleen Nielsen',NULL,NULL,'Kathleen','Q','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Kathleen',NULL,NULL,NULL,'5',NULL,'1768989959',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (101,'Organization',NULL,'Mississippi Food Partners','Mississippi Food Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Mississippi Food Partners',NULL,NULL,NULL,NULL,NULL,'2602253458',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Mississippi Food Partners',NULL,NULL,NULL,0,NULL,NULL,39,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (102,'Individual',NULL,'Elizabeth Roberts',NULL,NULL,'Elizabeth','','Roberts',1,0,0,0,0,0,NULL,'Roberts, Elizabeth',NULL,NULL,NULL,NULL,NULL,'3104864980',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Roberts',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (103,'Individual',NULL,'patel.miguel@infomail.co.uk',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'patel.miguel@infomail.co.uk',NULL,NULL,NULL,'4',NULL,'3982946382',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear patel.miguel@infomail.co.uk',1,NULL,'Dear patel.miguel@infomail.co.uk',1,NULL,'patel.miguel@infomail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (104,'Individual',NULL,'Ashlie Jensen',NULL,NULL,'Ashlie','S','Jensen',0,0,0,0,0,0,NULL,'Jensen, Ashlie',NULL,NULL,NULL,'2',NULL,'2039449284',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (105,'Organization',NULL,'Iowa Legal School','Iowa Legal School',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Iowa Legal School',NULL,NULL,NULL,NULL,NULL,'377860758',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Iowa Legal School',NULL,NULL,NULL,0,NULL,NULL,53,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (106,'Individual',NULL,'Mrs. Junko Terrell',NULL,NULL,'Junko','V','Terrell',1,1,0,0,1,0,NULL,'Terrell, Junko',NULL,NULL,NULL,NULL,NULL,'3229402674',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Mrs. Junko Terrell',NULL,1,'1952-10-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (107,'Individual',NULL,'Dr. Margaret Cooper',NULL,NULL,'Margaret','I','Cooper',0,0,0,0,0,0,NULL,'Cooper, Margaret',NULL,NULL,NULL,NULL,NULL,'897960138',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Dr. Margaret Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (108,'Individual',NULL,'Dr. Allan Terry II',NULL,NULL,'Allan','T','Terry',1,0,0,0,0,0,NULL,'Terry, Allan',NULL,NULL,NULL,NULL,NULL,'1982784074',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Dr. Allan Terry II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (109,'Individual',NULL,'Damaris Parker',NULL,NULL,'Damaris','','Parker',0,0,0,0,0,0,NULL,'Parker, Damaris',NULL,NULL,NULL,'4',NULL,'1055790628',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Parker',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (110,'Individual',NULL,'dimitrovs@infomail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'dimitrovs@infomail.net',NULL,NULL,NULL,'5',NULL,'959352248',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear dimitrovs@infomail.net',1,NULL,'Dear dimitrovs@infomail.net',1,NULL,'dimitrovs@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:18','Both'), + (111,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,1,1,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-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (112,'Individual',NULL,'Bryon Lee',NULL,NULL,'Bryon','','Lee',0,0,0,0,1,0,NULL,'Lee, Bryon',NULL,NULL,NULL,NULL,NULL,'369670244',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Lee',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (113,'Household',NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jensen family',NULL,NULL,NULL,NULL,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-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (114,'Individual',NULL,'Mr. Ray Robertson Sr.',NULL,NULL,'Ray','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Ray',NULL,NULL,NULL,NULL,NULL,'2006955715',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray Robertson Sr.',NULL,2,'1962-02-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (115,'Individual',NULL,'Brent Grant III',NULL,NULL,'Brent','','Grant',1,0,0,0,0,0,NULL,'Grant, Brent',NULL,NULL,NULL,'5',NULL,'356521495',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Grant III',NULL,NULL,'1991-06-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (116,'Individual',NULL,'Eleonor Dimitrov',NULL,NULL,'Eleonor','','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Eleonor',NULL,NULL,NULL,'1',NULL,'3445748005',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Dimitrov',NULL,NULL,'2013-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (117,'Individual',NULL,'Herminia DÃaz',NULL,NULL,'Herminia','N','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Herminia',NULL,NULL,NULL,NULL,NULL,'2340298735',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia DÃaz',NULL,NULL,'2001-01-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:15','2023-09-06 22:52:16','Both'), + (118,'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-09-06 22:52:15','2023-09-06 22:52:17','Both'), + (119,'Individual',NULL,'Eleonor Robertson',NULL,NULL,'Eleonor','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Eleonor',NULL,NULL,NULL,NULL,NULL,'2051195654',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Robertson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (120,'Individual',NULL,'Dr. Elina Terry',NULL,NULL,'Elina','','Terry',0,0,0,0,0,0,NULL,'Terry, Elina',NULL,NULL,NULL,'4',NULL,'2453833535',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Terry',NULL,1,'1944-03-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (121,'Individual',NULL,'Mrs. Mei Zope','Dowlen Education Collective',NULL,'Mei','P','Zope',1,0,0,0,0,0,NULL,'Zope, Mei',NULL,NULL,NULL,'4',NULL,'1279923749',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mrs. Mei Zope',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,188,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (122,'Individual',NULL,'Mr. Landon Bachman III',NULL,NULL,'Landon','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Landon',NULL,NULL,NULL,NULL,NULL,'1765533665',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Mr. Landon Bachman III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (123,'Individual',NULL,'Russell Reynolds Jr.',NULL,NULL,'Russell','L','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Russell',NULL,NULL,NULL,NULL,NULL,'2896350648',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Reynolds Jr.',NULL,NULL,'1973-01-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (124,'Individual',NULL,'Ms. Teresa Yadav',NULL,NULL,'Teresa','','Yadav',0,0,0,0,1,0,NULL,'Yadav, Teresa',NULL,NULL,NULL,'3',NULL,'2032766377',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Ms. Teresa Yadav',NULL,NULL,'1946-03-25',1,'2023-04-25',NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (125,'Individual',NULL,'Russell Terry',NULL,NULL,'Russell','F','Terry',0,1,0,0,1,0,NULL,'Terry, Russell',NULL,NULL,NULL,'1',NULL,'3994938484',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Terry',NULL,2,'2018-03-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (126,'Individual',NULL,'Rosario Jensen Jr.',NULL,NULL,'Rosario','','Jensen',0,1,0,0,0,0,NULL,'Jensen, Rosario',NULL,NULL,NULL,'3',NULL,'3904971531',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Jensen Jr.',NULL,NULL,'2009-10-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (127,'Individual',NULL,'Rosario Dimitrov-ÅÄ…chowski II',NULL,NULL,'Rosario','L','Dimitrov-ÅÄ…chowski',0,0,0,0,0,0,NULL,'Dimitrov-ÅÄ…chowski, Rosario',NULL,NULL,NULL,NULL,NULL,'1639348848',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Dimitrov-ÅÄ…chowski II',NULL,NULL,'1984-01-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (128,'Organization',NULL,'Crystal Lake Sports Services','Crystal Lake Sports Services',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Crystal Lake Sports Services',NULL,NULL,NULL,'1',NULL,'1594113915',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Crystal Lake Sports Services',NULL,NULL,NULL,0,NULL,NULL,3,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (129,'Organization',NULL,'California Poetry Collective','California Poetry Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'California Poetry Collective',NULL,NULL,NULL,'4',NULL,'3043444793',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'California Poetry Collective',NULL,NULL,NULL,0,NULL,NULL,96,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (130,'Individual',NULL,'Dr. Margaret Olsen',NULL,NULL,'Margaret','','Olsen',1,0,0,0,0,0,NULL,'Olsen, Margaret',NULL,NULL,NULL,NULL,NULL,'3839484919',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Dr. Margaret Olsen',NULL,NULL,'1949-01-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (131,'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-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (132,'Individual',NULL,'Brent Deforest',NULL,NULL,'Brent','T','Deforest',1,0,0,0,0,0,NULL,'Deforest, Brent',NULL,NULL,NULL,'1',NULL,'368083228',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Deforest',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (133,'Individual',NULL,'sonnyterry@example.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'sonnyterry@example.co.uk',NULL,NULL,NULL,'2',NULL,'2015273871',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear sonnyterry@example.co.uk',1,NULL,'Dear sonnyterry@example.co.uk',1,NULL,'sonnyterry@example.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (134,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,'3',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-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (135,'Organization',NULL,'Deland Action Systems','Deland Action Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Deland Action Systems',NULL,NULL,NULL,'2',NULL,'1780999107',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Deland Action Systems',NULL,NULL,NULL,0,NULL,NULL,60,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (136,'Individual',NULL,'Ms. Santina Parker',NULL,NULL,'Santina','','Parker',0,0,0,0,0,0,NULL,'Parker, Santina',NULL,NULL,NULL,NULL,NULL,'276546055',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Ms. Santina Parker',NULL,NULL,'1966-08-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (137,'Individual',NULL,'Brent Jensen',NULL,NULL,'Brent','U','Jensen',0,1,0,0,0,0,NULL,'Jensen, Brent',NULL,NULL,NULL,'4',NULL,'4204826871',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Jensen',NULL,2,'2016-07-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (138,'Household',NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,NULL,'2097305882',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Roberts family',5,NULL,'Dear Roberts family',2,NULL,'Roberts family',NULL,NULL,NULL,0,NULL,'Roberts family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (139,'Individual',NULL,'Felisha Jensen',NULL,NULL,'Felisha','J','Jensen',0,0,0,0,1,0,NULL,'Jensen, Felisha',NULL,NULL,NULL,'2',NULL,'45016701',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Jensen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (140,'Individual',NULL,'Jacob Jameson',NULL,NULL,'Jacob','T','Jameson',0,0,0,0,0,0,NULL,'Jameson, Jacob',NULL,NULL,NULL,'3',NULL,'3368765112',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Jameson',NULL,NULL,'2004-08-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (141,'Individual',NULL,'Ms. Kathleen Bachman',NULL,NULL,'Kathleen','U','Bachman',0,0,0,0,1,0,NULL,'Bachman, Kathleen',NULL,NULL,NULL,'1',NULL,'4190804197',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Ms. Kathleen Bachman',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (142,'Household',NULL,'Samuels-Robertson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samuels-Robertson family',NULL,NULL,NULL,NULL,NULL,'2584738538',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samuels-Robertson family',5,NULL,'Dear Samuels-Robertson family',2,NULL,'Samuels-Robertson family',NULL,NULL,NULL,0,NULL,'Samuels-Robertson family',NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (143,'Individual',NULL,'Dr. Kenny Smith',NULL,NULL,'Kenny','','Smith',0,0,0,0,0,0,NULL,'Smith, Kenny',NULL,NULL,NULL,'4',NULL,'2487730925',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (144,'Individual',NULL,'Mrs. Shauna McReynolds',NULL,NULL,'Shauna','','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Shauna',NULL,NULL,NULL,NULL,NULL,'3277027646',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Shauna',1,NULL,'Dear Shauna',1,NULL,'Mrs. Shauna McReynolds',NULL,NULL,'1968-09-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (145,'Individual',NULL,'Lou Ivanov III','Star Environmental Association',NULL,'Lou','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Lou',NULL,NULL,NULL,'1',NULL,'211844515',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Ivanov III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,43,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (146,'Individual',NULL,'Mr. Rosario González III',NULL,NULL,'Rosario','','González',0,0,0,0,0,0,NULL,'González, Rosario',NULL,NULL,NULL,'2',NULL,'3206727065',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Mr. Rosario González III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (147,'Individual',NULL,'Ms. Eleonor Bachman',NULL,NULL,'Eleonor','','Bachman',1,0,0,0,0,0,NULL,'Bachman, Eleonor',NULL,NULL,NULL,'4',NULL,'711175679',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Ms. Eleonor Bachman',NULL,1,'1975-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (148,'Individual',NULL,'Sanford Grant',NULL,NULL,'Sanford','','Grant',0,0,0,0,0,0,NULL,'Grant, Sanford',NULL,NULL,NULL,NULL,NULL,'27540077',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Grant',NULL,2,'1974-02-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (149,'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-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (150,'Individual',NULL,'Jed Dimitrov-ÅÄ…chowski Jr.',NULL,NULL,'Jed','Q','Dimitrov-ÅÄ…chowski',0,0,0,0,1,0,NULL,'Dimitrov-ÅÄ…chowski, Jed',NULL,NULL,NULL,'5',NULL,'702730648',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Dimitrov-ÅÄ…chowski Jr.',NULL,2,'2012-05-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (151,'Individual',NULL,'Errol Müller Jr.',NULL,NULL,'Errol','','Müller',0,0,0,0,0,0,NULL,'Müller, Errol',NULL,NULL,NULL,'4',NULL,'807767976',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Müller Jr.',NULL,2,'1968-06-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (152,'Organization',NULL,'Terre Haute Action Collective','Terre Haute Action Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terre Haute Action Collective',NULL,NULL,NULL,'5',NULL,'416209860',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Terre Haute Action Collective',NULL,NULL,NULL,0,NULL,NULL,26,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (153,'Organization',NULL,'Friends Health Services','Friends Health Services',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Friends Health Services',NULL,NULL,NULL,NULL,NULL,'2746682770',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Health Services',NULL,NULL,NULL,0,NULL,NULL,82,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (154,'Individual',NULL,'Brent Terrell','Arkansas Literacy Partnership',NULL,'Brent','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Brent',NULL,NULL,NULL,NULL,NULL,'2526832386',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Terrell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,91,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (155,'Individual',NULL,'sk.prentice64@fakemail.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'sk.prentice64@fakemail.co.uk',NULL,NULL,NULL,'2',NULL,'772869971',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear sk.prentice64@fakemail.co.uk',1,NULL,'Dear sk.prentice64@fakemail.co.uk',1,NULL,'sk.prentice64@fakemail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (156,'Household',NULL,'Terrell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terrell family',NULL,NULL,NULL,'4',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-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (157,'Organization',NULL,'Creative Health School','Creative Health School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Creative Health School',NULL,NULL,NULL,NULL,NULL,'3971821012',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Creative Health School',NULL,NULL,NULL,0,NULL,NULL,172,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (158,'Individual',NULL,'Santina Jameson',NULL,NULL,'Santina','G','Jameson',0,0,0,0,1,0,NULL,'Jameson, Santina',NULL,NULL,NULL,NULL,NULL,'2989109013',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Jameson',NULL,1,'1995-01-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (159,'Individual',NULL,'Bernadette Terry',NULL,NULL,'Bernadette','','Terry',1,0,0,0,0,0,NULL,'Terry, Bernadette',NULL,NULL,NULL,NULL,NULL,'2401458356',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Terry',NULL,1,'1968-09-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (160,'Individual',NULL,'Dr. Carlos Patel',NULL,NULL,'Carlos','','Patel',0,0,0,0,0,0,NULL,'Patel, Carlos',NULL,NULL,NULL,NULL,NULL,'2432936038',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Patel',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (161,'Household',NULL,'Dimitrov family',NULL,NULL,NULL,NULL,NULL,0,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-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (162,'Individual',NULL,'Josefa Dimitrov',NULL,NULL,'Josefa','X','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Josefa',NULL,NULL,NULL,NULL,NULL,'1492067390',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (163,'Individual',NULL,'Jackson Wattson Sr.',NULL,NULL,'Jackson','T','Wattson',1,1,0,0,0,0,NULL,'Wattson, Jackson',NULL,NULL,NULL,'5',NULL,'1720434610',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Wattson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (164,'Individual',NULL,'Lawerence Bachman',NULL,NULL,'Lawerence','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Lawerence',NULL,NULL,NULL,NULL,NULL,'2961144560',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Bachman',NULL,NULL,'1992-09-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (165,'Individual',NULL,'Bernadette Samson','Woodbridge Literacy Association',NULL,'Bernadette','','Samson',1,0,0,0,0,0,NULL,'Samson, Bernadette',NULL,NULL,NULL,'5',NULL,'1089960007',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Bernadette Samson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,67,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (166,'Individual',NULL,'Dr. Landon Parker Sr.','Surveyor Development Services',NULL,'Landon','Y','Parker',1,0,0,0,0,0,NULL,'Parker, Landon',NULL,NULL,NULL,NULL,NULL,'372152677',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Parker Sr.',NULL,NULL,'1990-10-15',0,NULL,NULL,NULL,NULL,NULL,73,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (167,'Individual',NULL,'Juliann Parker',NULL,NULL,'Juliann','V','Parker',0,1,0,0,0,0,NULL,'Parker, Juliann',NULL,NULL,NULL,NULL,NULL,'1013304220',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Parker',NULL,NULL,'1985-11-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (168,'Household',NULL,'Müller family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Müller family',NULL,NULL,NULL,'2',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-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (169,'Organization',NULL,'Community Education Center','Community Education Center',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Community Education Center',NULL,NULL,NULL,NULL,NULL,'2848846788',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Education Center',NULL,NULL,NULL,0,NULL,NULL,183,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (170,'Individual',NULL,'Dr. Jackson Roberts',NULL,NULL,'Jackson','','Roberts',0,0,0,0,0,0,NULL,'Roberts, Jackson',NULL,NULL,NULL,NULL,NULL,'3261233132',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Dr. Jackson Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (171,'Individual',NULL,'Daren Jensen Jr.',NULL,NULL,'Daren','','Jensen',0,0,0,0,1,0,NULL,'Jensen, Daren',NULL,NULL,NULL,'1',NULL,'817039458',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Jensen Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (172,'Individual',NULL,'Mr. Errol González','Creative Health School',NULL,'Errol','','González',0,0,0,0,0,0,NULL,'González, Errol',NULL,NULL,NULL,'4',NULL,'3063008863',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Mr. Errol González',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,157,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (173,'Individual',NULL,'Kenny Jensen III',NULL,NULL,'Kenny','E','Jensen',1,0,0,0,0,0,NULL,'Jensen, Kenny',NULL,NULL,NULL,NULL,NULL,'1218055932',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Jensen III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (174,'Individual',NULL,'Jacob Parker II',NULL,NULL,'Jacob','','Parker',0,0,0,0,0,0,NULL,'Parker, Jacob',NULL,NULL,NULL,NULL,NULL,'1474401042',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Parker II',NULL,2,'1935-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (175,'Individual',NULL,'lareej@fakemail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'lareej@fakemail.co.in',NULL,NULL,NULL,'3',NULL,'1330731483',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear lareej@fakemail.co.in',1,NULL,'Dear lareej@fakemail.co.in',1,NULL,'lareej@fakemail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (176,'Individual',NULL,'Carlos Adams-DÃaz',NULL,NULL,'Carlos','','Adams-DÃaz',0,1,0,0,0,0,NULL,'Adams-DÃaz, Carlos',NULL,NULL,NULL,NULL,NULL,'3645969436',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Adams-DÃaz',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (177,'Organization',NULL,'Local Poetry Association','Local Poetry Association',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Local Poetry Association',NULL,NULL,NULL,NULL,NULL,'3261821491',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Poetry Association',NULL,NULL,NULL,0,NULL,NULL,50,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (178,'Individual',NULL,'Mr. Ray Roberts',NULL,NULL,'Ray','C','Roberts',0,1,0,0,0,0,NULL,'Roberts, Ray',NULL,NULL,NULL,'4',NULL,'1321167237',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray Roberts',NULL,NULL,'1960-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (179,'Individual',NULL,'kaceymller@mymail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'kaceymller@mymail.co.pl',NULL,NULL,NULL,'4',NULL,'1097671879',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear kaceymller@mymail.co.pl',1,NULL,'Dear kaceymller@mymail.co.pl',1,NULL,'kaceymller@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (180,'Individual',NULL,'Jerome Jensen',NULL,NULL,'Jerome','S','Jensen',0,0,0,0,0,0,NULL,'Jensen, Jerome',NULL,NULL,NULL,'3',NULL,'2774980739',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Jerome Jensen',NULL,2,'1944-11-04',1,'2022-10-19',NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (181,'Individual',NULL,'Dr. Ashlie ÅÄ…chowski',NULL,NULL,'Ashlie','A','ÅÄ…chowski',0,1,0,0,0,0,NULL,'ÅÄ…chowski, Ashlie',NULL,NULL,NULL,'4',NULL,'3338606881',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Dr. Ashlie ÅÄ…chowski',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (182,'Individual',NULL,'Mrs. Sharyn DÃaz',NULL,NULL,'Sharyn','M','DÃaz',0,0,0,0,1,0,NULL,'DÃaz, Sharyn',NULL,NULL,NULL,NULL,NULL,'4129279229',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Mrs. Sharyn DÃaz',NULL,1,'1973-01-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (183,'Individual',NULL,'iz.cooper@fakemail.co.pl','Community Education Center',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'iz.cooper@fakemail.co.pl',NULL,NULL,NULL,'2',NULL,'3574521128',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear iz.cooper@fakemail.co.pl',1,NULL,'Dear iz.cooper@fakemail.co.pl',1,NULL,'iz.cooper@fakemail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,169,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (184,'Individual',NULL,'Kenny Samuels II',NULL,NULL,'Kenny','U','Samuels',1,0,0,0,0,0,NULL,'Samuels, Kenny',NULL,NULL,NULL,'1',NULL,'1946058198',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Samuels II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (185,'Individual',NULL,'Princess Müller',NULL,NULL,'Princess','J','Müller',0,1,0,0,0,0,NULL,'Müller, Princess',NULL,NULL,NULL,'1',NULL,'1686008496',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Müller',NULL,1,'1990-04-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (186,'Individual',NULL,'Elina Grant',NULL,NULL,'Elina','Y','Grant',0,0,0,0,0,0,NULL,'Grant, Elina',NULL,NULL,NULL,'5',NULL,'1935800100',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Grant',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (187,'Individual',NULL,'brentr@testing.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'brentr@testing.net',NULL,NULL,NULL,NULL,NULL,'307506130',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear brentr@testing.net',1,NULL,'Dear brentr@testing.net',1,NULL,'brentr@testing.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (188,'Organization',NULL,'Dowlen Education Collective','Dowlen Education Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Dowlen Education Collective',NULL,NULL,NULL,NULL,NULL,'4183720313',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Dowlen Education Collective',NULL,NULL,NULL,0,NULL,NULL,121,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (189,'Individual',NULL,'wilsonc98@spamalot.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'wilsonc98@spamalot.com',NULL,NULL,NULL,NULL,NULL,'873744776',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wilsonc98@spamalot.com',1,NULL,'Dear wilsonc98@spamalot.com',1,NULL,'wilsonc98@spamalot.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (190,'Individual',NULL,'Ms. Ashlie Barkley',NULL,NULL,'Ashlie','H','Barkley',0,0,0,0,1,0,NULL,'Barkley, Ashlie',NULL,NULL,NULL,'4',NULL,'1002355994',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ms. Ashlie Barkley',NULL,1,'1936-08-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (191,'Individual',NULL,'Teddy Bachman',NULL,NULL,'Teddy','I','Bachman',1,0,0,0,1,0,NULL,'Bachman, Teddy',NULL,NULL,NULL,'3',NULL,'352195656',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Teddy Bachman',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (192,'Individual',NULL,'Rodrigo Nielsen',NULL,NULL,'Rodrigo','G','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Rodrigo',NULL,NULL,NULL,NULL,NULL,'976050360',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Nielsen',NULL,2,'1943-12-02',1,'2023-07-07',NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (193,'Organization',NULL,'Beech Action Systems','Beech Action Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Beech Action Systems',NULL,NULL,NULL,'2',NULL,'1495349270',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Beech Action Systems',NULL,NULL,NULL,0,NULL,NULL,28,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (194,'Individual',NULL,'Megan Jones-Jameson',NULL,NULL,'Megan','','Jones-Jameson',0,1,0,0,1,0,NULL,'Jones-Jameson, Megan',NULL,NULL,NULL,'5',NULL,'183304244',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Megan Jones-Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (195,'Individual',NULL,'Dr. Maxwell Zope Jr.',NULL,NULL,'Maxwell','G','Zope',0,1,0,0,0,0,NULL,'Zope, Maxwell',NULL,NULL,NULL,NULL,NULL,'676762100',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Zope Jr.',NULL,2,'1978-07-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (196,'Individual',NULL,'Dr. Margaret Terrell',NULL,NULL,'Margaret','Y','Terrell',1,1,0,0,0,0,NULL,'Terrell, Margaret',NULL,NULL,NULL,NULL,NULL,'3427129884',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Dr. Margaret Terrell',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (197,'Individual',NULL,'Jacob Müller Sr.',NULL,NULL,'Jacob','','Müller',1,1,0,0,0,0,NULL,'Müller, Jacob',NULL,NULL,NULL,'2',NULL,'176489544',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Müller Sr.',NULL,NULL,'2012-08-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:17','Both'), + (198,'Individual',NULL,'BrzÄ™czysÅ‚aw Barkley',NULL,NULL,'BrzÄ™czysÅ‚aw','K','Barkley',1,1,0,0,0,0,NULL,'Barkley, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,'2',NULL,'2169122499',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'BrzÄ™czysÅ‚aw Barkley',NULL,2,'1937-10-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (199,'Individual',NULL,'Rodrigo Jensen',NULL,NULL,'Rodrigo','','Jensen',0,1,0,0,0,0,NULL,'Jensen, Rodrigo',NULL,NULL,NULL,'4',NULL,'4133351927',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Rodrigo Jensen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (200,'Individual',NULL,'Rebekah Samuels',NULL,NULL,'Rebekah','A','Samuels',1,0,0,0,1,0,NULL,'Samuels, Rebekah',NULL,NULL,NULL,NULL,NULL,'2023061910',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Samuels',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-09-06 22:52:16','2023-09-06 22:52:16','Both'), + (201,'Household',NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Jensen family',NULL,NULL,NULL,'1',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-09-06 22:52:16','2023-09-06 22:52:17','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','3dfdac7ea62842e59902c0e6d697c926',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-09-06 22:52:18','2023-09-06 22:52:18','Both'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -2221,117 +2217,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-09-07 08:14:03',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,NULL,NULL,0), - (2,4,1,NULL,1,'2021-06-07 08:14:03',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,NULL,NULL,0), - (3,6,1,NULL,4,'2017-08-12 19:14:03',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,NULL,NULL,0), - (4,8,1,NULL,4,'2021-06-07 08:14:03',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,NULL,NULL,0), - (5,4,1,NULL,1,'2021-06-07 08:14:03',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,NULL,NULL,0), - (6,16,1,NULL,4,'2023-06-14 07:32:03',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,NULL,NULL,0), - (7,19,1,NULL,1,'2023-09-05 08:14:03',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,NULL,NULL,0), - (8,82,1,NULL,1,'2023-01-13 16:25:03',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,NULL,NULL,0), - (9,92,1,NULL,1,'2022-10-07 08:14:03',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,NULL,NULL,0), - (10,34,1,NULL,1,'2019-04-14 10:14:03',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,NULL,NULL,0), - (11,71,1,NULL,1,'2023-09-06 04:14:03',0.00,500.00,NULL,NULL,'PL71',NULL,NULL,'JPY',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (12,43,1,NULL,1,'2022-06-06 21:40:43',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,NULL,NULL,0), - (13,32,1,NULL,1,'2023-06-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,NULL,NULL,0), - (14,32,1,NULL,1,'2023-07-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,NULL,NULL,0), - (15,59,1,NULL,1,'2022-06-07 08:14:03',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,NULL,NULL,0), - (16,59,1,NULL,1,'2022-07-07 08:14:03',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,NULL,NULL,0), - (17,59,1,NULL,1,'2022-08-07 08:14:03',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,NULL,NULL,0), - (18,59,1,NULL,1,'2022-09-07 08:14:03',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,NULL,NULL,0), - (19,59,1,NULL,1,'2022-10-07 08:14:03',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,NULL,NULL,0), - (20,59,1,NULL,1,'2022-11-07 08:14:03',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,NULL,NULL,0), - (21,59,1,NULL,1,'2022-12-07 08:14:03',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,NULL,NULL,0), - (22,59,1,NULL,1,'2023-01-07 08:14:03',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,NULL,NULL,0), - (23,59,1,NULL,1,'2023-02-07 08:14:03',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,NULL,NULL,0), - (24,59,1,NULL,1,'2023-03-07 08:14:03',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,NULL,NULL,0), - (25,59,1,NULL,1,'2023-04-07 08:14:03',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,NULL,NULL,0), - (26,99,1,NULL,1,'2023-01-07 08:14:03',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,NULL,NULL,0), - (27,99,1,NULL,1,'2023-02-07 08:14:03',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,NULL,NULL,0), - (28,99,1,NULL,1,'2023-03-07 08:14:03',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,NULL,NULL,0), - (29,99,1,NULL,1,'2023-04-07 08:14:03',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,NULL,NULL,0), - (30,99,1,NULL,1,'2023-05-07 08:14:03',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,NULL,NULL,0), - (31,103,1,NULL,1,'2023-08-07 08:14:03',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,NULL,NULL,0), - (32,134,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'64513c6b182dd113',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (33,193,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'c5a3302fcb3e2b0d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (34,130,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'09ee74f9ecb823ec',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (35,154,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'d3f9b7e3a0f32567',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (36,23,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'0b8a02400a70bc02',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (37,17,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'7b5542f56c10cf47',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (38,169,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'4ce9aedf1f234da0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (39,162,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'43e8695c96d705be',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (40,187,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'512b3d1dc8a5f445',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (41,55,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'74f30aa71ec48b62',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (42,145,2,NULL,1,'2023-09-07 08:14:03',0.00,1200.00,NULL,NULL,'59eae501e7d56e51',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (43,190,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'7e3b938ada287d13',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (44,82,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'eb95fb812af107b4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (45,70,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'010bb9d39ae6a543',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (46,194,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'0f5727c4f2fba19d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (47,114,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'df652d2ee2efed9a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (48,165,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'627c915408145f96',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (49,44,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'723ef4f1b30eec0d',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (50,33,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'e42e6b0e9e4db574',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (51,151,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'6152710332f36ae2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (52,131,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'f664fee8723012b3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (53,72,2,NULL,1,'2023-09-07 08:14:03',0.00,1200.00,NULL,NULL,'7df84e94209fc3c8',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (54,122,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'486111c13c141599',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (55,111,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'cf32704c35ebc613',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (56,11,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'8219ebeba14e643a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (57,97,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'60817723ca94ab56',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (58,191,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'9327cb33c0c0dea3',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (59,91,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'93b36441cf4b0a54',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (60,90,2,NULL,1,'2023-09-07 08:14:03',0.00,100.00,NULL,NULL,'b6fe67eaec8fe919',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (61,200,2,NULL,1,'2023-09-07 08:14:03',0.00,50.00,NULL,NULL,'ec602fce6cc9def0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (63,160,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'0282223cd697c327',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (64,52,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'de1c401ec81388ef',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (65,13,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'325d6dc39b8f23aa',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (66,135,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'a793a37b727b4d6b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (67,105,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'81a32d48faca3c52',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (68,182,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'3fa31226078ab28d',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (69,154,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'bf30d04b0d0e4579',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (70,98,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'fb3d8c3560407846',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (71,127,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'5bf0c054a3c6738b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (72,168,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'01ecfdb055ee1f7f',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (73,149,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'ee05e52900771408',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (74,80,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'f3b2b4e17cec608b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (75,6,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'34f755c2672bbf29',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (76,40,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'f98e8385f4424e2b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (77,122,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'d07e620ed65884f5',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (78,7,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'a15ce82b4e4ff9fb',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (79,86,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'831fe88311326c59',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (80,177,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'a550b48b852dbd89',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (81,78,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'364dde884027a52b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (82,32,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'0337f0d5f0d0a860',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (83,178,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'f67aba800bcacc50',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (84,88,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'d50d7d7b6708bc3f',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (85,90,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'135f5d79c9f28d4f',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (86,128,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'dd62e9f8e6d401e2',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (87,171,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'5ef0258b063c9ad9',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (88,183,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'8a32de8f5c050637',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (89,132,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'2cc0ccfa0d26ea3d',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (90,70,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'b3c10539a416b64a',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (91,99,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'b81deee06e40e758',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (92,106,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'5fe1503cda9e48f0',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (93,112,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'4ae4ebe7d483f5b6',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (94,161,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'47a7606f17fa5b53',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (95,189,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'71ac264db2075be3',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (96,145,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'bc8675814a2d0d62',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (97,95,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'e09221a89baaa665',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (98,35,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'b9aeec333cbd58be',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (99,66,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'8f88be0e4578e656',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (100,190,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'9563cfbdebfd9ffd',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (101,23,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'d8ed5eb7553d6771',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (102,91,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'1d03defa293ebc5b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (103,174,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'4e6045f8f6292323',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (104,101,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'092ce1dc2fde4d80',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (105,64,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'14b57c53021522cb',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (106,146,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'b1775049dab40826',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (107,63,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'ad5f81f6741c976b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (108,153,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'72935daddbe81c24',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (109,176,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'2f861f1eab4a68d0',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (110,188,4,NULL,1,'2023-09-07 08:14:04',0.00,50.00,NULL,NULL,'88fd57e0394cf9fe',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (111,139,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'a719351eb2134647',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (112,103,4,NULL,1,'2023-09-07 08:14:04',0.00,800.00,NULL,NULL,'7f6bdc42de380f23',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:14:04',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0); + (1,2,1,NULL,4,'2013-09-07 08:52:20',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-06-07 08:52:20',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-08-12 19:52:20',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-06-07 08:52:20',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-06-07 08:52:20',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-06-14 08:10:20',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-09-05 08:52:20',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-01-13 17:03:20',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-10-07 08:52:20',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-04-14 10:52:20',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-09-06 04:52:20',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-06-06 22:19:00',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-06-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-07-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-06-07 08:52:20',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-07-07 08:52:20',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-08-07 08:52:20',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-09-07 08:52:20',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-10-07 08:52:20',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-11-07 08:52:20',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,'2022-12-07 08:52:20',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-01-07 08:52:20',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-02-07 08:52:20',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-03-07 08:52:20',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-04-07 08:52:20',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-01-07 08:52:20',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-02-07 08:52:20',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-03-07 08:52:20',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-04-07 08:52:20',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-05-07 08:52:20',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-08-07 08:52:20',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,11,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'f35f748912345b9a',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,33,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'738f047c3933ff17',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,75,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'dd391b553f4f7037',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,16,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'b4662a764f39f413',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,107,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'2da4195398db1ae0',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,141,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'147d7e7900ea9163',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,50,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'8cf4116bdebff877',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,88,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'62009b8346478628',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,154,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'20ab7ccf151901d9',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,174,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'e13a915046d57644',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (42,8,2,NULL,1,'2023-09-07 08:52:20',0.00,1200.00,NULL,NULL,'0892a3502e515853',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,36,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'94888675227342d8',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,44,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'298a429ada534815',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,37,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'c3a01540d471682a',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,197,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'192bd422f162a438',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,117,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'2bcacb63fbdd6c7e',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,15,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'4a15317962a69a81',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,69,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'352e858c7b02b0db',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,26,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'c549161b722ae0e2',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,196,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'b0b1c5a7c9f648ea',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,42,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'7702196e43a3e0bd',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,150,2,NULL,1,'2023-09-07 08:52:20',0.00,1200.00,NULL,NULL,'67949dd99a2da188',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,7,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'f694cbe423ce5eb1',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,198,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'78e6fd67eb8c1988',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,186,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'1d0c36f4ec1a8c97',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,140,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'d0736a30cccfd4d2',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,163,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'d5148071d9a8be10',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,121,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'074c387c1b91896d',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,162,2,NULL,1,'2023-09-07 08:52:20',0.00,100.00,NULL,NULL,'6ca3e34d81c40b8c',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,202,2,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'1aa0e1ab9c39369e',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,102,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'79c783e5ae59fa0f',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (64,181,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'4965afacf35fbeb7',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (65,184,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'ae656e5ff51eebca',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (66,119,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'f5b612106db16c15',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (67,123,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'e1b3816831d52eba',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (68,88,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'7815807a33652156',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (69,149,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'b701d89308b0dc75',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (70,137,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'3932cb472bbe4923',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (71,56,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'fc388eeb07a269da',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (72,153,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'d38d992b9d596f66',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (73,47,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'39ca5190991329ec',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (74,133,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'f1f08848f07f7972',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (75,29,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'8c55cda559f74822',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (76,43,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'fff2347b446d8133',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (77,145,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'e15f7530fcfe0c49',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (78,194,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'c1ab79895d394891',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (79,142,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'84321fe483b3a002',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (80,63,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'f2d8d1ef5ab09c03',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (81,92,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'0b70d01281d94174',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (82,91,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'287d120bec064cfc',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (83,132,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'0798a94b9b3fcea8',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (84,38,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'e41605930d1c3179',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (85,76,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'1d5c72a7ba1ab008',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (86,174,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'c6dded079f482f42',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (87,3,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'8ab94d8353ac55f7',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (88,167,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'859374cc5860dd44',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (89,170,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'b4da6cbb44ed18e2',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (90,128,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'7937bcc6b55ee936',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (91,9,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'05e1df46874a0aa9',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (92,94,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'96809d2b209570b6',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (93,186,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'95b6f8aaf69ff40b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (94,178,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'d0c30ff7377ab5de',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (95,127,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'74bac1d50ecee85d',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (96,177,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'4dd65030b75bc608',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (97,90,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'a8bc4bbb21ddadbd',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (98,159,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'3c7cd46f0bf3348b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (99,195,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'03ed936885020f0d',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (100,151,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'1a8ffab23ccff9f5',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (101,131,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'87c4eb44a576dbbf',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (102,104,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'5d9f0f0c6e602361',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (103,161,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'9fd3e5c674b24e6d',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (104,11,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'114039dd0b31e601',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (105,115,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'f6faa89eb9fc1e2e',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (106,50,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'e1856457692f0c1e',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (107,199,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'5ec3c525c53e3d83',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (108,37,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'868dc65a6102069e',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (109,42,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'fe3e6113a8559c6c',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (110,68,4,NULL,1,'2023-09-07 08:52:20',0.00,50.00,NULL,NULL,'7f5ef93011b78e2b',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (111,2,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'5589f478beddc83c',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0), + (112,193,4,NULL,1,'2023-09-07 08:52:20',0.00,800.00,NULL,NULL,'f9de548fc713fb79',NULL,NULL,'USD',NULL,NULL,'2023-09-07 08:52:20',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,0.00,NULL,0); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -2364,9 +2360,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-06-07 08:14:03','2023-09-07 08:14:03','2023-09-06 22:14:03',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-01-07 08:14:03','2023-09-07 08:14:03','2023-09-06 22:14:03','2023-08-07 08:14:03','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-08-07 08:14:03','2023-09-07 08:14:03','2023-09-06 22:14:03',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-11-07 08:14:03',0,NULL,0,1,NULL,NULL,NULL,1); + (1,59,25.00,'USD','month',1,12,'2022-06-07 08:52:20','2023-09-07 08:52:20','2023-09-06 22:52:20',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-01-07 08:52:20','2023-09-07 08:52:20','2023-09-06 22:52:20','2023-08-07 08:52:20','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-08-07 08:52:20','2023-09-07 08:52:20','2023-09-06 22:52:20',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-11-07 08:52:20',0,NULL,0,1,NULL,NULL,NULL,1); /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */; UNLOCK TABLES; @@ -2377,8 +2373,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,117,10.00,'USD',1,1,'Jones Family','Helping Hands',10), - (2,10,117,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); + (1,9,171,10.00,'USD',1,1,'Jones Family','Helping Hands',10), + (2,10,171,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -2976,7 +2972,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.65.2',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); + (1,'Default Domain Name',NULL,'5.66.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -2988,215 +2984,198 @@ 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,24,1,'loubarkley@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (3,24,1,'loub@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (4,134,1,'nicoles@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (5,88,1,'herminiag@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (6,117,1,'kp.cooper@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (7,117,1,'kathleencooper@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (8,72,1,'bm.jameson95@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (9,72,1,'jameson.bernadette@fakemail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (10,151,1,'bchowski@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (11,151,1,'brentchowski81@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (12,143,1,'robertson.megan@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (13,13,1,'ivanov.t.sonny@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), - (14,13,1,'ivanovs46@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (15,141,1,'zope.n.erik25@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (16,141,1,'en.zope@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (17,78,1,'elinad91@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (18,78,1,'elinadimitrov77@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (19,128,1,'smith.sharyn75@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (20,128,1,'smith.a.sharyn85@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (21,63,1,'yadav.andrew@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (22,63,1,'yadav.z.andrew59@testing.org',0,0,0,0,NULL,NULL,NULL,NULL), - (23,170,1,'margarety29@sample.net',1,0,0,0,NULL,NULL,NULL,NULL), - (24,86,1,'nielsen.megan27@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (25,15,1,'sr.barkley@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (26,108,1,'kennyz@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), - (27,95,1,'rw.cruz22@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (28,131,1,'robertson.rosario@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (29,131,1,'robertson.rosario@fishmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (30,46,1,'rl.terry@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (31,110,1,'yadave@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), - (32,110,1,'yadave78@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (33,54,1,'wagner.princess22@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (34,54,1,'wagner.princess51@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (35,23,1,'roberts.princess@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (36,23,1,'proberts@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (37,96,1,'parker.teddy@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (38,96,1,'teddyp@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (39,176,1,'barkley.rosario26@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (40,123,1,'wattson.margaret14@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (41,123,1,'wattsonm72@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (42,160,1,'achowski80@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (43,190,1,'jays@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (44,190,1,'jz.samson@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (45,100,1,'yadavd68@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (46,162,1,'ejameson@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (47,162,1,'jamesone@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (48,184,1,'robertson.delana@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (49,102,1,'megansmith@example.org',1,0,0,0,NULL,NULL,NULL,NULL), - (50,102,1,'smith.megan@fakemail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (51,29,1,'juliannp86@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (52,126,1,'wilson.allen15@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), - (53,126,1,'wilson.allen@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (54,150,1,'terrell.lincoln38@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (55,150,1,'terrelll49@testing.info',0,0,0,0,NULL,NULL,NULL,NULL), - (56,137,1,'rolandadams22@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (57,137,1,'adams.roland@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (58,136,1,'dg.daz@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), - (59,136,1,'dazd54@sample.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (60,5,1,'awagner@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (61,5,1,'awagner@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (62,17,1,'reynoldsd98@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (63,61,1,'barkleyj@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (64,61,1,'jo.barkley@notmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (65,145,1,'barkley.r.troy@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (66,34,1,'coopera@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (67,34,1,'acooper@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (68,173,1,'vt.daz91@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (69,173,1,'vt.daz@spamalot.info',0,0,0,0,NULL,NULL,NULL,NULL), - (70,84,1,'leec@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (71,84,1,'carylonl@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (72,59,1,'smitha80@lol.com',1,0,0,0,NULL,NULL,NULL,NULL), - (73,59,1,'smith.alexia17@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (74,142,1,'ap.wattson40@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (75,142,1,'andreww@example.com',0,0,0,0,NULL,NULL,NULL,NULL), - (76,120,1,'chowski.elbert35@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (77,81,1,'wattson.sherman@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (78,81,1,'shermanw@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (79,153,1,'adamsm89@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (80,153,1,'madams43@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (81,109,1,'prenticee46@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (82,30,1,'dazb94@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (83,149,1,'alexiabachman@example.net',1,0,0,0,NULL,NULL,NULL,NULL), - (84,106,1,'jacksonj@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), - (85,106,1,'jensen.p.jackson8@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (86,175,1,'wagneri@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), - (87,27,1,'iveyreynolds@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (88,27,1,'reynolds.w.ivey@testing.net',0,0,0,0,NULL,NULL,NULL,NULL), - (89,35,1,'wattson.allen97@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), - (90,35,1,'allenw@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (91,16,1,'fn.adams18@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (92,16,1,'adamsf@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (93,47,1,'oolsen19@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), - (94,47,1,'olseno95@example.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (95,67,1,'bachmana80@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (96,112,1,'lawerenceprentice@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (97,112,1,'prentice.lawerence@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (98,194,1,'mcreynoldsb40@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (99,41,1,'rodrigoz81@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (100,41,1,'rodrigoz70@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (101,43,1,'rodrigom@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (102,178,1,'barkleya92@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (103,80,1,'nielsen-barkleyc@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (104,80,1,'carlosn68@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (105,172,1,'nielsen-barkley.c.barry52@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (106,172,1,'nielsen-barkley.barry60@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (107,14,1,'ivanov-jamesonj80@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (108,14,1,'jivanov-jameson@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (109,133,1,'wagner.p.santina@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (110,133,1,'wagner.p.santina@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (111,58,1,'kiarawagner59@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (112,58,1,'kiarawagner14@example.net',0,0,0,0,NULL,NULL,NULL,NULL), - (113,21,1,'norriswagner@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (114,21,1,'wagner.norris79@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (115,195,1,'kandacewagner@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (116,195,1,'wagnerk@example.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (117,187,1,'allenparker@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (118,187,1,'allenp@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (119,192,1,'meganparker@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (120,90,1,'parker.roland@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (121,113,1,'norrisp@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (122,147,1,'jonesa@fakemail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (123,147,1,'jonesa@lol.org',0,0,0,0,NULL,NULL,NULL,NULL), - (124,118,1,'jonesj89@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (125,118,1,'jones.v.juliann@mymail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (126,155,1,'princessjones@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (127,161,1,'jacobs.lawerence@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (128,161,1,'jacobs.lawerence93@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (129,125,1,'lawerencer@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), - (130,45,1,'elbertj59@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (131,69,1,'reynoldst54@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (132,64,1,'valener@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (133,20,1,'dimitrovt65@testing.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (134,20,1,'dimitrov.teddy80@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (135,181,1,'margaretzope-dimitrov89@sample.net',1,0,0,0,NULL,NULL,NULL,NULL), - (136,181,1,'zope-dimitrovm@notmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (137,77,1,'dimitrov.t.rodrigo@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (138,77,1,'rodrigodimitrov@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (139,191,1,'shaunad@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (140,191,1,'dimitrovs92@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (141,156,1,'jacobs.k.landon@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (142,26,1,'roberts-jacobs.juliann@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (143,180,1,'jacobsn25@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (144,91,1,'smith.princess68@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (145,91,1,'princesssmith@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (146,3,1,'terry-smith.v.roland@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (147,73,1,'terry-smith.s.kacey51@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (148,71,1,'dsmith@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (149,71,1,'smith.daren@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (150,139,1,'nielsenj@fakemail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (151,139,1,'jnielsen@lol.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (152,62,1,'kandaces@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (153,70,1,'jones.kathlyn@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (154,70,1,'jones.kathlyn41@testmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (155,32,1,'bsmith@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (156,75,1,'smithm@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), - (157,75,1,'ma.smith94@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (158,51,1,'wilson.elizabeth@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (159,51,1,'wilsone66@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (160,122,1,'wilsona@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (161,196,1,'erikw@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), - (162,163,1,'el.smith@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), - (163,44,1,'smith.j.esta43@notmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (164,44,1,'estas4@testing.com',0,0,0,0,NULL,NULL,NULL,NULL), - (165,166,1,'smithc@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (166,166,1,'smith.claudio@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (167,107,1,'hdimitrov64@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (168,107,1,'herminiad24@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (169,130,1,'edimitrov@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (170,130,1,'edimitrov6@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (171,55,1,'samuels.c.brzczysaw74@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (172,55,1,'brzczysaws@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (173,28,1,'crobertson@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), - (174,22,1,'jameson-barkley-robertsonm@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (175,193,1,'tv.barkley-robertson@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (176,193,1,'tv.barkley-robertson@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (177,76,3,'sales@mlkinglegal.org',1,0,0,0,NULL,NULL,NULL,NULL), - (178,141,2,'zopee52@mlkinglegal.org',0,0,0,0,NULL,NULL,NULL,NULL), - (179,98,3,'sales@sierraartsalliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (180,40,2,'ln.jones45@sierraartsalliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (181,37,3,'info@statesartspartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), - (182,110,2,'adams.valene@statesartspartnership.org',0,0,0,0,NULL,NULL,NULL,NULL), - (183,115,3,'sales@urbanadvocacyacademy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (184,154,2,'prentices70@urbanadvocacyacademy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (185,94,3,'sales@minnesotaadvocacy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (186,100,2,'yadav.daren@minnesotaadvocacy.org',0,0,0,0,NULL,NULL,NULL,NULL), - (187,140,3,'service@unitedagriculture.org',1,0,0,0,NULL,NULL,NULL,NULL), - (188,96,2,'parkert@unitedagriculture.org',0,0,0,0,NULL,NULL,NULL,NULL), - (189,124,3,'feedback@mapleagriculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL), - (190,185,2,'zope.sanford@mapleagriculturetrust.org',1,0,0,0,NULL,NULL,NULL,NULL), - (191,119,3,'info@secondinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL), - (192,181,2,'margaretz@secondinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL), - (193,36,3,'info@providenceempowermentfund.org',1,0,0,0,NULL,NULL,NULL,NULL), - (194,175,2,'wagner.f.iris@providenceempowermentfund.org',0,0,0,0,NULL,NULL,NULL,NULL), - (195,53,3,'contact@californiaeducationsystems.org',1,0,0,0,NULL,NULL,NULL,NULL), - (196,6,3,'info@sierratrust.org',1,0,0,0,NULL,NULL,NULL,NULL), - (197,4,3,'feedback@unitedhealthassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), - (198,168,2,'allenb80@unitedhealthassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), - (199,121,3,'contact@collegepeacesolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), - (200,126,2,'allenw@collegepeacesolutions.org',0,0,0,0,NULL,NULL,NULL,NULL), - (201,186,3,'feedback@caulderpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (202,104,2,'sonnywilson@caulderpeace.org',1,0,0,0,NULL,NULL,NULL,NULL), - (203,2,3,'sales@localadvocacy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (204,183,2,'dimitrov.alexia45@localadvocacy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (205,7,3,'contact@progressivewellness.org',1,0,0,0,NULL,NULL,NULL,NULL), - (206,48,2,'jacobs.ivey@progressivewellness.org',1,0,0,0,NULL,NULL,NULL,NULL), - (207,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (208,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (209,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (210,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); + (2,41,1,'jameson.j.valene80@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), + (3,41,1,'jameson.valene@spamalot.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (4,171,1,'darenj@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (5,171,1,'darenj72@testing.com',0,0,0,0,NULL,NULL,NULL,NULL), + (6,123,1,'reynoldsr@sample.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (7,178,1,'rc.roberts96@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (8,24,1,'jeromewilson@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), + (9,146,1,'rgonzlez86@notmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (10,146,1,'gonzlez.rosario@fakemail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (11,4,1,'by.jones@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (12,98,1,'chowski.roland@example.info',1,0,0,0,NULL,NULL,NULL,NULL), + (13,98,1,'roland@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (14,79,1,'terry.u.herminia10@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (15,158,1,'jameson.g.santina@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (16,158,1,'jameson.g.santina90@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (17,145,1,'ivanovl70@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (18,82,1,'cruzl@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (19,175,1,'lt.jacobs@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (20,175,1,'lareej@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (21,117,1,'dazh@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (22,117,1,'daz.n.herminia@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (23,124,1,'teresay20@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (24,124,1,'teresay@lol.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (25,28,1,'terryh@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (26,40,1,'ab.samuels@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL), + (27,66,1,'nielsenr@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (28,66,1,'re.nielsen@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (29,32,1,'wilson.margaret84@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (30,32,1,'margaretw@testmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (31,162,1,'josefadimitrov@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (32,26,1,'daz.e.justina43@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (33,180,1,'jeromej@spamalot.net',1,0,0,0,NULL,NULL,NULL,NULL), + (34,180,1,'jeromej93@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (35,192,1,'nielsen.g.rodrigo30@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (36,100,1,'kathleenn37@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (37,11,1,'jacksonparker@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (38,11,1,'jacksonp@example.info',0,0,0,0,NULL,NULL,NULL,NULL), + (39,200,1,'samuels.rebekah@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), + (40,182,1,'sharyndaz@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (41,182,1,'daz.m.sharyn@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (42,136,1,'santinaparker85@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (43,172,1,'gonzleze@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (44,90,1,'wagnerr@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (45,90,1,'rolandowagner@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (46,83,1,'felishap@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (47,83,1,'fparker@fakemail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (48,120,1,'terry.elina63@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (49,174,1,'parker.jacob@testing.com',1,0,0,0,NULL,NULL,NULL,NULL), + (50,174,1,'jparker@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (51,109,1,'parker.damaris65@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (52,155,1,'sk.prentice64@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (53,167,1,'parkerj@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (54,159,1,'bernadettet@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (55,78,1,'lareeyadav14@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (56,70,1,'jones.ray95@example.org',1,0,0,0,NULL,NULL,NULL,NULL), + (57,103,1,'miguelpatel22@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), + (58,103,1,'patel.miguel@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (59,44,1,'terry.craig83@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), + (60,21,1,'nielsens34@example.info',1,0,0,0,NULL,NULL,NULL,NULL), + (61,21,1,'nielsens36@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (62,71,1,'daze96@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), + (63,71,1,'elinadaz@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (64,56,1,'barkley.u.scarlet31@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (65,56,1,'barkley.scarlet@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (66,183,1,'iz.cooper@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (67,62,1,'patel.h.teresa63@example.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (68,62,1,'patel.h.teresa@airmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (69,166,1,'parker.landon59@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (70,166,1,'parkerl18@lol.info',0,0,0,0,NULL,NULL,NULL,NULL), + (71,198,1,'barkley.brzczysaw@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (72,198,1,'brzczysawb81@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (73,39,1,'shadterrell56@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (74,39,1,'sterrell@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (75,130,1,'molsen@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (76,190,1,'ashliebarkley43@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (77,190,1,'barkleya@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (78,85,1,'damarisp@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (79,53,1,'prentice.w.tanya@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (80,58,1,'brzczysawt@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (81,58,1,'brzczysawterrell3@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (82,154,1,'terrellb@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (83,154,1,'brentterrell@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), + (84,23,1,'terrell.bob@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (85,23,1,'terrellb22@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (86,18,1,'wilsons@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (87,18,1,'wilson.sonny@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (88,8,1,'tobywilson@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (89,189,1,'wilson.carylon26@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (90,189,1,'wilsonc98@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (91,80,1,'jensent17@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (92,104,1,'ashliej31@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (93,104,1,'jensena@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (94,137,1,'brentj@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (95,126,1,'jensenr@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (96,126,1,'rosariojensen@fakemail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (97,27,1,'arlynewattson60@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (98,27,1,'awattson@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (99,35,1,'angelikawattson@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (100,35,1,'angelikawattson@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (101,147,1,'eleonorbachman@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (102,147,1,'ebachman@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (103,164,1,'lawerencebachman71@testing.org',1,0,0,0,NULL,NULL,NULL,NULL), + (104,164,1,'bachmanl@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (105,191,1,'teddyb@example.info',1,0,0,0,NULL,NULL,NULL,NULL), + (106,191,1,'bachmant@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (107,81,1,'scarletchowski36@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (108,81,1,'scarletchowski86@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (109,150,1,'jedd31@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (110,150,1,'dimitrov-chowskij@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL), + (111,127,1,'rosariodimitrov-chowski@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), + (112,127,1,'rosariod@example.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (113,72,1,'terry.betty@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (114,72,1,'bettyterry3@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (115,125,1,'rf.terry41@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (116,125,1,'terryr29@mymail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (117,17,1,'terry.f.teddy@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (118,139,1,'jensen.felisha@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (119,139,1,'felishajensen41@testing.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (120,116,1,'edimitrov31@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL), + (121,116,1,'eleonordimitrov@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (122,86,1,'robertsb@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (123,170,1,'jacksonr@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (124,170,1,'roberts.jackson@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (125,38,1,'roberts.jina@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (126,65,1,'bachman-zope.josefa@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (127,65,1,'josefabachman-zope@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (128,94,1,'bf.zope@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (129,94,1,'bf.zope@fishmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (130,195,1,'mg.zope@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (131,45,1,'adams.tanya52@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (132,45,1,'adams.tanya49@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (133,176,1,'adams-dazc55@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (134,36,1,'adams-dazm89@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (135,133,1,'sonnyterry@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (136,19,1,'carylonterry@testmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (137,19,1,'carylonterry@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (138,97,1,'mariat@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (139,97,1,'mariat@fishmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (140,46,1,'roberts.toby@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (141,46,1,'tobyroberts63@mymail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (142,93,1,'roberts.i.maxwell25@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (143,93,1,'maxwellr10@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (144,76,1,'roberts.bryon36@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (145,187,1,'broberts88@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (146,187,1,'brentr@testing.net',0,0,0,0,NULL,NULL,NULL,NULL), + (147,74,1,'lmller@notmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (148,179,1,'kaceymller99@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (149,179,1,'kaceymller@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (150,185,1,'princessmller@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (151,185,1,'mllerp@fakemail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (152,197,1,'jmller73@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (153,197,1,'mllerj1@sample.net',0,0,0,0,NULL,NULL,NULL,NULL), + (154,184,1,'samuelsk59@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), + (155,2,1,'samuels-robertson.winford93@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (156,110,1,'dimitrovs@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (157,9,1,'blackwell.shad25@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (158,54,1,'rosariod@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), + (159,48,3,'info@urbansustainability.org',1,0,0,0,NULL,NULL,NULL,NULL), + (160,27,2,'awattson@urbansustainability.org',0,0,0,0,NULL,NULL,NULL,NULL), + (161,43,3,'service@starenvironmental.org',1,0,0,0,NULL,NULL,NULL,NULL), + (162,145,2,'livanov@starenvironmental.org',0,0,0,0,NULL,NULL,NULL,NULL), + (163,169,3,'info@communityeducation.org',1,0,0,0,NULL,NULL,NULL,NULL), + (164,183,2,'yadav.allen69@communityeducation.org',0,0,0,0,NULL,NULL,NULL,NULL), + (165,177,3,'sales@localpoetryassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), + (166,50,2,'jamesonl@localpoetryassociation.org',1,0,0,0,NULL,NULL,NULL,NULL), + (167,101,3,'contact@mississippifood.org',1,0,0,0,NULL,NULL,NULL,NULL), + (168,39,2,'terrell.shad39@mississippifood.org',0,0,0,0,NULL,NULL,NULL,NULL), + (169,153,3,'contact@friendshealth.org',1,0,0,0,NULL,NULL,NULL,NULL), + (170,82,2,'lincolnc@friendshealth.org',0,0,0,0,NULL,NULL,NULL,NULL), + (171,91,3,'sales@arkansasliteracy.org',1,0,0,0,NULL,NULL,NULL,NULL), + (172,154,2,'brentt@arkansasliteracy.org',0,0,0,0,NULL,NULL,NULL,NULL), + (173,157,3,'sales@creativeschool.org',1,0,0,0,NULL,NULL,NULL,NULL), + (174,172,2,'gonzleze@creativeschool.org',0,0,0,0,NULL,NULL,NULL,NULL), + (175,129,3,'feedback@californiacollective.org',1,0,0,0,NULL,NULL,NULL,NULL), + (176,96,2,'jones.shauna@californiacollective.org',1,0,0,0,NULL,NULL,NULL,NULL), + (177,188,3,'info@dowleneducationcollective.org',1,0,0,0,NULL,NULL,NULL,NULL), + (178,121,2,'meizope@dowleneducationcollective.org',1,0,0,0,NULL,NULL,NULL,NULL), + (179,193,3,'feedback@beechactionsystems.org',1,0,0,0,NULL,NULL,NULL,NULL), + (180,28,2,'terry.heidi31@beechactionsystems.org',0,0,0,0,NULL,NULL,NULL,NULL), + (181,73,3,'info@surveyordevelopmentservices.org',1,0,0,0,NULL,NULL,NULL,NULL), + (182,166,2,'parkerl@surveyordevelopmentservices.org',0,0,0,0,NULL,NULL,NULL,NULL), + (183,61,3,'service@globaladvocacyinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL), + (184,152,3,'feedback@thactioncollective.org',1,0,0,0,NULL,NULL,NULL,NULL), + (185,26,2,'craigt@thactioncollective.org',0,0,0,0,NULL,NULL,NULL,NULL), + (186,51,3,'service@dowlenpartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (187,76,2,'roberts.bryon@dowlenpartnership.org',0,0,0,0,NULL,NULL,NULL,NULL), + (188,135,3,'contact@delandactionsystems.org',1,0,0,0,NULL,NULL,NULL,NULL), + (189,60,2,'roberts.elina@delandactionsystems.org',1,0,0,0,NULL,NULL,NULL,NULL), + (190,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (191,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (192,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (193,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -3243,11 +3222,11 @@ INSERT INTO `civicrm_entity_financial_account` (`id`, `entity_table`, `entity_id (16,'civicrm_financial_type',4,1,4), (17,'civicrm_financial_type',4,12,13), (18,'civicrm_financial_type',4,7,9), - (19,'civicrm_option_value',91,6,6), - (20,'civicrm_option_value',92,6,6), - (21,'civicrm_option_value',93,6,6), - (22,'civicrm_option_value',89,6,12), - (23,'civicrm_option_value',90,6,12); + (19,'civicrm_option_value',92,6,6), + (20,'civicrm_option_value',93,6,6), + (21,'civicrm_option_value',94,6,6), + (22,'civicrm_option_value',90,6,12), + (23,'civicrm_option_value',91,6,12); /*!40000 ALTER TABLE `civicrm_entity_financial_account` ENABLE KEYS */; UNLOCK TABLES; @@ -3324,47 +3303,47 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, (64,'civicrm_financial_item',32,32,100.00), (65,'civicrm_contribution',34,33,100.00), (66,'civicrm_financial_item',33,33,100.00), - (67,'civicrm_contribution',38,34,100.00), + (67,'civicrm_contribution',36,34,100.00), (68,'civicrm_financial_item',34,34,100.00), - (69,'civicrm_contribution',40,35,100.00), + (69,'civicrm_contribution',38,35,100.00), (70,'civicrm_financial_item',35,35,100.00), - (71,'civicrm_contribution',44,36,100.00), + (71,'civicrm_contribution',40,36,100.00), (72,'civicrm_financial_item',36,36,100.00), - (73,'civicrm_contribution',46,37,100.00), + (73,'civicrm_contribution',44,37,100.00), (74,'civicrm_financial_item',37,37,100.00), - (75,'civicrm_contribution',48,38,100.00), + (75,'civicrm_contribution',46,38,100.00), (76,'civicrm_financial_item',38,38,100.00), - (77,'civicrm_contribution',50,39,100.00), + (77,'civicrm_contribution',48,39,100.00), (78,'civicrm_financial_item',39,39,100.00), - (79,'civicrm_contribution',52,40,100.00), + (79,'civicrm_contribution',50,40,100.00), (80,'civicrm_financial_item',40,40,100.00), - (81,'civicrm_contribution',54,41,100.00), + (81,'civicrm_contribution',51,41,100.00), (82,'civicrm_financial_item',41,41,100.00), - (83,'civicrm_contribution',58,42,100.00), + (83,'civicrm_contribution',52,42,100.00), (84,'civicrm_financial_item',42,42,100.00), - (85,'civicrm_contribution',60,43,100.00), + (85,'civicrm_contribution',54,43,100.00), (86,'civicrm_financial_item',43,43,100.00), - (87,'civicrm_contribution',33,44,50.00), - (88,'civicrm_financial_item',44,44,50.00), - (89,'civicrm_contribution',35,45,50.00), - (90,'civicrm_financial_item',45,45,50.00), - (91,'civicrm_contribution',36,46,50.00), + (87,'civicrm_contribution',58,44,100.00), + (88,'civicrm_financial_item',44,44,100.00), + (89,'civicrm_contribution',60,45,100.00), + (90,'civicrm_financial_item',45,45,100.00), + (91,'civicrm_contribution',33,46,50.00), (92,'civicrm_financial_item',46,46,50.00), - (93,'civicrm_contribution',37,47,50.00), + (93,'civicrm_contribution',35,47,50.00), (94,'civicrm_financial_item',47,47,50.00), - (95,'civicrm_contribution',39,48,50.00), + (95,'civicrm_contribution',37,48,50.00), (96,'civicrm_financial_item',48,48,50.00), - (97,'civicrm_contribution',41,49,50.00), + (97,'civicrm_contribution',39,49,50.00), (98,'civicrm_financial_item',49,49,50.00), - (99,'civicrm_contribution',43,50,50.00), + (99,'civicrm_contribution',41,50,50.00), (100,'civicrm_financial_item',50,50,50.00), - (101,'civicrm_contribution',45,51,50.00), + (101,'civicrm_contribution',43,51,50.00), (102,'civicrm_financial_item',51,51,50.00), - (103,'civicrm_contribution',47,52,50.00), + (103,'civicrm_contribution',45,52,50.00), (104,'civicrm_financial_item',52,52,50.00), - (105,'civicrm_contribution',49,53,50.00), + (105,'civicrm_contribution',47,53,50.00), (106,'civicrm_financial_item',53,53,50.00), - (107,'civicrm_contribution',51,54,50.00), + (107,'civicrm_contribution',49,54,50.00), (108,'civicrm_financial_item',54,54,50.00), (109,'civicrm_contribution',55,55,50.00), (110,'civicrm_financial_item',55,55,50.00), @@ -3490,126 +3469,115 @@ 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 - (10,'civicrm_contact',2,1), - (101,'civicrm_contact',3,4), - (102,'civicrm_contact',3,5), - (8,'civicrm_contact',8,3), - (32,'civicrm_contact',12,4), - (33,'civicrm_contact',12,5), - (67,'civicrm_contact',16,5), - (53,'civicrm_contact',17,4), - (93,'civicrm_contact',20,4), - (79,'civicrm_contact',21,4), - (80,'civicrm_contact',21,5), - (11,'civicrm_contact',24,4), - (12,'civicrm_contact',24,5), - (119,'civicrm_contact',28,4), - (46,'civicrm_contact',29,4), - (109,'civicrm_contact',32,5), - (65,'civicrm_contact',33,4), - (66,'civicrm_contact',33,5), - (55,'civicrm_contact',34,4), - (71,'civicrm_contact',43,4), - (49,'civicrm_contact',48,4), - (50,'civicrm_contact',48,5), - (7,'civicrm_contact',53,2), - (117,'civicrm_contact',55,5), - (57,'civicrm_contact',59,5), - (26,'civicrm_contact',60,4), - (27,'civicrm_contact',60,5), - (23,'civicrm_contact',63,4), - (24,'civicrm_contact',63,5), - (92,'civicrm_contact',64,5), - (5,'civicrm_contact',66,2), - (68,'civicrm_contact',67,5), - (89,'civicrm_contact',68,5), - (90,'civicrm_contact',69,4), - (91,'civicrm_contact',69,5), - (103,'civicrm_contact',71,4), - (61,'civicrm_contact',74,4), - (1,'civicrm_contact',76,1), - (94,'civicrm_contact',77,4), - (20,'civicrm_contact',78,4), - (21,'civicrm_contact',78,5), - (74,'civicrm_contact',80,4), - (14,'civicrm_contact',82,5), - (60,'civicrm_contact',83,5), - (118,'civicrm_contact',85,5), - (25,'civicrm_contact',86,5), - (106,'civicrm_contact',87,4), - (107,'civicrm_contact',87,5), - (13,'civicrm_contact',88,5), - (82,'civicrm_contact',90,4), - (83,'civicrm_contact',90,5), - (108,'civicrm_contact',92,4), - (18,'civicrm_contact',93,4), - (19,'civicrm_contact',93,5), - (34,'civicrm_contact',96,4), - (35,'civicrm_contact',96,5), - (115,'civicrm_contact',97,4), - (2,'civicrm_contact',98,1), - (99,'civicrm_contact',99,4), - (100,'civicrm_contact',99,5), - (6,'civicrm_contact',101,2), - (111,'civicrm_contact',104,5), - (43,'civicrm_contact',105,4), - (44,'civicrm_contact',105,5), - (28,'civicrm_contact',108,4), - (29,'civicrm_contact',108,5), - (62,'civicrm_contact',109,4), - (31,'civicrm_contact',110,5), - (39,'civicrm_contact',111,4), - (40,'civicrm_contact',111,5), - (69,'civicrm_contact',112,5), - (86,'civicrm_contact',114,4), - (87,'civicrm_contact',114,5), - (3,'civicrm_contact',115,1), - (58,'civicrm_contact',120,4), - (59,'civicrm_contact',120,5), - (9,'civicrm_contact',121,2), - (112,'civicrm_contact',122,5), - (36,'civicrm_contact',123,4), - (37,'civicrm_contact',123,5), - (22,'civicrm_contact',128,5), - (116,'civicrm_contact',130,4), - (30,'civicrm_contact',131,5), - (78,'civicrm_contact',133,4), - (15,'civicrm_contact',135,4), - (16,'civicrm_contact',135,5), - (52,'civicrm_contact',136,4), - (47,'civicrm_contact',138,4), - (48,'civicrm_contact',138,5), - (4,'civicrm_contact',140,1), - (17,'civicrm_contact',143,5), - (54,'civicrm_contact',145,4), - (84,'civicrm_contact',147,4), - (85,'civicrm_contact',147,5), - (63,'civicrm_contact',149,5), - (75,'civicrm_contact',152,5), - (95,'civicrm_contact',156,4), - (96,'civicrm_contact',156,5), - (110,'civicrm_contact',157,4), - (88,'civicrm_contact',161,4), - (41,'civicrm_contact',162,4), - (42,'civicrm_contact',162,5), - (113,'civicrm_contact',163,5), - (76,'civicrm_contact',165,4), - (77,'civicrm_contact',165,5), - (114,'civicrm_contact',166,4), - (72,'civicrm_contact',171,4), - (73,'civicrm_contact',171,5), - (56,'civicrm_contact',173,4), - (64,'civicrm_contact',175,4), - (97,'civicrm_contact',180,4), - (98,'civicrm_contact',180,5), - (45,'civicrm_contact',184,4), - (81,'civicrm_contact',187,4), - (104,'civicrm_contact',189,4), - (105,'civicrm_contact',189,5), - (38,'civicrm_contact',190,5), - (120,'civicrm_contact',193,4), - (70,'civicrm_contact',194,4), - (51,'civicrm_contact',200,4); + (107,'civicrm_contact',2,4), + (95,'civicrm_contact',7,5), + (76,'civicrm_contact',8,4), + (34,'civicrm_contact',11,5), + (66,'civicrm_contact',13,4), + (84,'civicrm_contact',16,4), + (74,'civicrm_contact',18,4), + (75,'civicrm_contact',18,5), + (101,'civicrm_contact',19,5), + (36,'civicrm_contact',22,5), + (30,'civicrm_contact',26,4), + (25,'civicrm_contact',28,4), + (70,'civicrm_contact',30,4), + (71,'civicrm_contact',30,5), + (91,'civicrm_contact',31,5), + (12,'civicrm_contact',34,4), + (80,'civicrm_contact',35,5), + (17,'civicrm_contact',37,4), + (63,'civicrm_contact',39,4), + (64,'civicrm_contact',39,5), + (2,'civicrm_contact',43,1), + (54,'civicrm_contact',44,4), + (97,'civicrm_contact',45,4), + (98,'civicrm_contact',45,5), + (102,'civicrm_contact',46,5), + (1,'civicrm_contact',48,2), + (6,'civicrm_contact',49,3), + (72,'civicrm_contact',50,5), + (10,'civicrm_contact',51,3), + (11,'civicrm_contact',55,5), + (67,'civicrm_contact',58,5), + (33,'civicrm_contact',59,4), + (9,'civicrm_contact',61,2), + (59,'civicrm_contact',62,5), + (26,'civicrm_contact',66,4), + (27,'civicrm_contact',66,5), + (46,'civicrm_contact',69,4), + (47,'civicrm_contact',69,5), + (104,'civicrm_contact',74,4), + (103,'civicrm_contact',76,4), + (51,'civicrm_contact',78,4), + (52,'civicrm_contact',78,5), + (20,'civicrm_contact',79,4), + (77,'civicrm_contact',80,5), + (43,'civicrm_contact',83,4), + (55,'civicrm_contact',84,4), + (56,'civicrm_contact',84,5), + (93,'civicrm_contact',86,4), + (90,'civicrm_contact',88,5), + (109,'civicrm_contact',89,4), + (5,'civicrm_contact',91,3), + (96,'civicrm_contact',94,5), + (87,'civicrm_contact',95,5), + (18,'civicrm_contact',98,4), + (4,'civicrm_contact',101,1), + (53,'civicrm_contact',103,5), + (108,'civicrm_contact',110,4), + (37,'civicrm_contact',112,5), + (61,'civicrm_contact',114,4), + (62,'civicrm_contact',114,5), + (57,'civicrm_contact',115,4), + (92,'civicrm_contact',116,5), + (23,'civicrm_contact',117,4), + (24,'civicrm_contact',117,5), + (13,'civicrm_contact',123,4), + (14,'civicrm_contact',123,5), + (88,'civicrm_contact',125,4), + (7,'civicrm_contact',129,2), + (100,'civicrm_contact',133,4), + (40,'civicrm_contact',136,5), + (78,'civicrm_contact',137,4), + (73,'civicrm_contact',140,5), + (21,'civicrm_contact',145,4), + (16,'civicrm_contact',146,4), + (81,'civicrm_contact',147,4), + (82,'civicrm_contact',147,5), + (85,'civicrm_contact',150,4), + (86,'civicrm_contact',150,5), + (69,'civicrm_contact',151,5), + (68,'civicrm_contact',154,4), + (49,'civicrm_contact',159,4), + (50,'civicrm_contact',159,5), + (19,'civicrm_contact',160,4), + (28,'civicrm_contact',162,4), + (29,'civicrm_contact',162,5), + (79,'civicrm_contact',163,4), + (38,'civicrm_contact',165,4), + (39,'civicrm_contact',165,5), + (60,'civicrm_contact',166,4), + (48,'civicrm_contact',167,4), + (3,'civicrm_contact',169,1), + (94,'civicrm_contact',170,4), + (89,'civicrm_contact',173,4), + (44,'civicrm_contact',174,4), + (45,'civicrm_contact',174,5), + (22,'civicrm_contact',175,5), + (99,'civicrm_contact',176,4), + (15,'civicrm_contact',178,4), + (106,'civicrm_contact',184,4), + (105,'civicrm_contact',185,5), + (41,'civicrm_contact',186,4), + (42,'civicrm_contact',186,5), + (65,'civicrm_contact',190,4), + (83,'civicrm_contact',191,4), + (31,'civicrm_contact',192,4), + (32,'civicrm_contact',192,5), + (8,'civicrm_contact',193,3), + (58,'civicrm_contact',196,4), + (35,'civicrm_contact',200,5); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -3711,117 +3679,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-09-06 22:14:04','2013-09-07 08:14:03',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), - (2,'2023-09-06 22:14:04','2021-06-07 08:14:03',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), - (3,'2023-09-06 22:14:04','2017-08-12 19:14:03',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), - (4,'2023-09-06 22:14:04','2021-06-07 08:14:03',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), - (5,'2023-09-06 22:14:04','2021-06-07 08:14:03',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), - (6,'2023-09-06 22:14:04','2023-06-14 07:32:03',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), - (7,'2023-09-06 22:14:04','2023-09-05 08:14:03',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), - (8,'2023-09-06 22:14:04','2023-01-13 16:25:03',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), - (9,'2023-09-06 22:14:04','2022-10-07 08:14:03',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), - (10,'2023-09-06 22:14:04','2019-04-14 10:14:03',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), - (11,'2023-09-06 22:14:04','2023-09-06 04:14:03',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), - (12,'2023-09-06 22:14:04','2022-06-06 21:40:43',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), - (13,'2023-09-06 22:14:04','2023-06-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), - (14,'2023-09-06 22:14:04','2023-07-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), - (15,'2023-09-06 22:14:04','2022-06-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), - (16,'2023-09-06 22:14:04','2022-07-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), - (17,'2023-09-06 22:14:04','2022-08-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), - (18,'2023-09-06 22:14:04','2022-09-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), - (19,'2023-09-06 22:14:04','2022-10-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), - (20,'2023-09-06 22:14:04','2022-11-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), - (21,'2023-09-06 22:14:04','2022-12-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), - (22,'2023-09-06 22:14:04','2023-01-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), - (23,'2023-09-06 22:14:04','2023-02-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), - (24,'2023-09-06 22:14:04','2023-03-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), - (25,'2023-09-06 22:14:04','2023-04-07 08:14:03',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), - (26,'2023-09-06 22:14:04','2023-01-07 08:14:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), - (27,'2023-09-06 22:14:04','2023-02-07 08:14:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), - (28,'2023-09-06 22:14:04','2023-03-07 08:14:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), - (29,'2023-09-06 22:14:04','2023-04-07 08:14:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), - (30,'2023-09-06 22:14:04','2023-05-07 08:14:03',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), - (31,'2023-09-06 22:14:04','2023-08-07 08:14:03',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), - (32,'2023-09-06 22:14:04','2023-09-07 08:14:03',134,'General',100.00,'USD',2,1,'civicrm_line_item',32), - (33,'2023-09-06 22:14:04','2023-09-07 08:14:03',130,'General',100.00,'USD',2,1,'civicrm_line_item',33), - (34,'2023-09-06 22:14:04','2023-09-07 08:14:03',169,'General',100.00,'USD',2,1,'civicrm_line_item',34), - (35,'2023-09-06 22:14:04','2023-09-07 08:14:03',187,'General',100.00,'USD',2,1,'civicrm_line_item',35), - (36,'2023-09-06 22:14:04','2023-09-07 08:14:03',82,'General',100.00,'USD',2,1,'civicrm_line_item',36), - (37,'2023-09-06 22:14:04','2023-09-07 08:14:03',194,'General',100.00,'USD',2,1,'civicrm_line_item',37), - (38,'2023-09-06 22:14:04','2023-09-07 08:14:03',165,'General',100.00,'USD',2,1,'civicrm_line_item',38), - (39,'2023-09-06 22:14:04','2023-09-07 08:14:03',33,'General',100.00,'USD',2,1,'civicrm_line_item',39), - (40,'2023-09-06 22:14:04','2023-09-07 08:14:03',131,'General',100.00,'USD',2,1,'civicrm_line_item',40), - (41,'2023-09-06 22:14:04','2023-09-07 08:14:03',122,'General',100.00,'USD',2,1,'civicrm_line_item',41), - (42,'2023-09-06 22:14:04','2023-09-07 08:14:03',191,'General',100.00,'USD',2,1,'civicrm_line_item',42), - (43,'2023-09-06 22:14:04','2023-09-07 08:14:03',90,'General',100.00,'USD',2,1,'civicrm_line_item',43), - (44,'2023-09-06 22:14:04','2023-09-07 08:14:03',193,'Student',50.00,'USD',2,1,'civicrm_line_item',44), - (45,'2023-09-06 22:14:04','2023-09-07 08:14:03',154,'Student',50.00,'USD',2,1,'civicrm_line_item',45), - (46,'2023-09-06 22:14:04','2023-09-07 08:14:03',23,'Student',50.00,'USD',2,1,'civicrm_line_item',46), - (47,'2023-09-06 22:14:04','2023-09-07 08:14:03',17,'Student',50.00,'USD',2,1,'civicrm_line_item',47), - (48,'2023-09-06 22:14:04','2023-09-07 08:14:03',162,'Student',50.00,'USD',2,1,'civicrm_line_item',48), - (49,'2023-09-06 22:14:04','2023-09-07 08:14:03',55,'Student',50.00,'USD',2,1,'civicrm_line_item',49), - (50,'2023-09-06 22:14:04','2023-09-07 08:14:03',190,'Student',50.00,'USD',2,1,'civicrm_line_item',50), - (51,'2023-09-06 22:14:04','2023-09-07 08:14:03',70,'Student',50.00,'USD',2,1,'civicrm_line_item',51), - (52,'2023-09-06 22:14:04','2023-09-07 08:14:03',114,'Student',50.00,'USD',2,1,'civicrm_line_item',52), - (53,'2023-09-06 22:14:04','2023-09-07 08:14:03',44,'Student',50.00,'USD',2,1,'civicrm_line_item',53), - (54,'2023-09-06 22:14:04','2023-09-07 08:14:03',151,'Student',50.00,'USD',2,1,'civicrm_line_item',54), - (55,'2023-09-06 22:14:04','2023-09-07 08:14:03',111,'Student',50.00,'USD',2,1,'civicrm_line_item',55), - (56,'2023-09-06 22:14:04','2023-09-07 08:14:03',11,'Student',50.00,'USD',2,1,'civicrm_line_item',56), - (57,'2023-09-06 22:14:04','2023-09-07 08:14:03',97,'Student',50.00,'USD',2,1,'civicrm_line_item',57), - (58,'2023-09-06 22:14:04','2023-09-07 08:14:03',91,'Student',50.00,'USD',2,1,'civicrm_line_item',58), - (59,'2023-09-06 22:14:04','2023-09-07 08:14:03',200,'Student',50.00,'USD',2,1,'civicrm_line_item',59), - (60,'2023-09-06 22:14:04','2023-09-07 08:14:03',145,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), - (61,'2023-09-06 22:14:04','2023-09-07 08:14:03',72,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), - (62,'2023-09-06 22:14:04','2023-09-07 08:14:04',52,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), - (63,'2023-09-06 22:14:04','2023-09-07 08:14:04',105,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), - (64,'2023-09-06 22:14:04','2023-09-07 08:14:04',98,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), - (65,'2023-09-06 22:14:04','2023-09-07 08:14:04',149,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), - (66,'2023-09-06 22:14:04','2023-09-07 08:14:04',40,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), - (67,'2023-09-06 22:14:04','2023-09-07 08:14:04',86,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), - (68,'2023-09-06 22:14:04','2023-09-07 08:14:04',32,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), - (69,'2023-09-06 22:14:04','2023-09-07 08:14:04',90,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), - (70,'2023-09-06 22:14:04','2023-09-07 08:14:04',132,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), - (71,'2023-09-06 22:14:04','2023-09-07 08:14:04',106,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), - (72,'2023-09-06 22:14:04','2023-09-07 08:14:04',189,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), - (73,'2023-09-06 22:14:04','2023-09-07 08:14:04',35,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), - (74,'2023-09-06 22:14:04','2023-09-07 08:14:04',23,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), - (75,'2023-09-06 22:14:04','2023-09-07 08:14:04',101,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), - (76,'2023-09-06 22:14:04','2023-09-07 08:14:04',63,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), - (77,'2023-09-06 22:14:04','2023-09-07 08:14:04',188,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), - (78,'2023-09-06 22:14:04','2023-09-07 08:14:04',13,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), - (79,'2023-09-06 22:14:04','2023-09-07 08:14:04',182,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), - (80,'2023-09-06 22:14:04','2023-09-07 08:14:04',127,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), - (81,'2023-09-06 22:14:04','2023-09-07 08:14:04',80,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), - (82,'2023-09-06 22:14:04','2023-09-07 08:14:04',122,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), - (83,'2023-09-06 22:14:04','2023-09-07 08:14:04',177,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), - (84,'2023-09-06 22:14:04','2023-09-07 08:14:04',178,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), - (85,'2023-09-06 22:14:04','2023-09-07 08:14:04',128,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), - (86,'2023-09-06 22:14:04','2023-09-07 08:14:04',171,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), - (87,'2023-09-06 22:14:04','2023-09-07 08:14:04',70,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), - (88,'2023-09-06 22:14:04','2023-09-07 08:14:04',112,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), - (89,'2023-09-06 22:14:04','2023-09-07 08:14:04',145,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), - (90,'2023-09-06 22:14:04','2023-09-07 08:14:04',66,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), - (91,'2023-09-06 22:14:04','2023-09-07 08:14:04',91,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), - (92,'2023-09-06 22:14:04','2023-09-07 08:14:04',64,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), - (93,'2023-09-06 22:14:04','2023-09-07 08:14:04',153,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), - (94,'2023-09-06 22:14:04','2023-09-07 08:14:04',139,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), - (95,'2023-09-06 22:14:04','2023-09-07 08:14:04',103,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), - (96,'2023-09-06 22:14:04','2023-09-07 08:14:04',160,'Single',50.00,'USD',4,1,'civicrm_line_item',81), - (97,'2023-09-06 22:14:04','2023-09-07 08:14:04',135,'Single',50.00,'USD',4,1,'civicrm_line_item',82), - (98,'2023-09-06 22:14:04','2023-09-07 08:14:04',154,'Single',50.00,'USD',4,1,'civicrm_line_item',83), - (99,'2023-09-06 22:14:04','2023-09-07 08:14:04',168,'Single',50.00,'USD',4,1,'civicrm_line_item',84), - (100,'2023-09-06 22:14:04','2023-09-07 08:14:04',6,'Single',50.00,'USD',4,1,'civicrm_line_item',85), - (101,'2023-09-06 22:14:04','2023-09-07 08:14:04',7,'Single',50.00,'USD',4,1,'civicrm_line_item',86), - (102,'2023-09-06 22:14:04','2023-09-07 08:14:04',78,'Single',50.00,'USD',4,1,'civicrm_line_item',87), - (103,'2023-09-06 22:14:04','2023-09-07 08:14:04',88,'Single',50.00,'USD',4,1,'civicrm_line_item',88), - (104,'2023-09-06 22:14:04','2023-09-07 08:14:04',183,'Single',50.00,'USD',4,1,'civicrm_line_item',89), - (105,'2023-09-06 22:14:04','2023-09-07 08:14:04',99,'Single',50.00,'USD',4,1,'civicrm_line_item',90), - (106,'2023-09-06 22:14:04','2023-09-07 08:14:04',161,'Single',50.00,'USD',4,1,'civicrm_line_item',91), - (107,'2023-09-06 22:14:04','2023-09-07 08:14:04',95,'Single',50.00,'USD',4,1,'civicrm_line_item',92), - (108,'2023-09-06 22:14:04','2023-09-07 08:14:04',190,'Single',50.00,'USD',4,1,'civicrm_line_item',93), - (109,'2023-09-06 22:14:04','2023-09-07 08:14:04',174,'Single',50.00,'USD',4,1,'civicrm_line_item',94), - (110,'2023-09-06 22:14:04','2023-09-07 08:14:04',146,'Single',50.00,'USD',4,1,'civicrm_line_item',95), - (111,'2023-09-06 22:14:04','2023-09-07 08:14:04',176,'Single',50.00,'USD',4,1,'civicrm_line_item',96); + (1,'2023-09-06 22:52:20','2013-09-07 08:52:20',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), + (2,'2023-09-06 22:52:20','2021-06-07 08:52:20',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), + (3,'2023-09-06 22:52:20','2017-08-12 19:52:20',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), + (4,'2023-09-06 22:52:20','2021-06-07 08:52:20',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), + (5,'2023-09-06 22:52:20','2021-06-07 08:52:20',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), + (6,'2023-09-06 22:52:20','2023-06-14 08:10:20',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), + (7,'2023-09-06 22:52:20','2023-09-05 08:52:20',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), + (8,'2023-09-06 22:52:20','2023-01-13 17:03:20',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), + (9,'2023-09-06 22:52:20','2022-10-07 08:52:20',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), + (10,'2023-09-06 22:52:20','2019-04-14 10:52:20',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), + (11,'2023-09-06 22:52:20','2023-09-06 04:52:20',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), + (12,'2023-09-06 22:52:20','2022-06-06 22:19:00',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), + (13,'2023-09-06 22:52:20','2023-06-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), + (14,'2023-09-06 22:52:20','2023-07-07 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), + (15,'2023-09-06 22:52:20','2022-06-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), + (16,'2023-09-06 22:52:20','2022-07-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), + (17,'2023-09-06 22:52:20','2022-08-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), + (18,'2023-09-06 22:52:20','2022-09-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), + (19,'2023-09-06 22:52:20','2022-10-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), + (20,'2023-09-06 22:52:20','2022-11-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), + (21,'2023-09-06 22:52:20','2022-12-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), + (22,'2023-09-06 22:52:20','2023-01-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), + (23,'2023-09-06 22:52:20','2023-02-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), + (24,'2023-09-06 22:52:20','2023-03-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), + (25,'2023-09-06 22:52:20','2023-04-07 08:52:20',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), + (26,'2023-09-06 22:52:20','2023-01-07 08:52:20',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), + (27,'2023-09-06 22:52:20','2023-02-07 08:52:20',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), + (28,'2023-09-06 22:52:20','2023-03-07 08:52:20',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), + (29,'2023-09-06 22:52:20','2023-04-07 08:52:20',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), + (30,'2023-09-06 22:52:20','2023-05-07 08:52:20',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), + (31,'2023-09-06 22:52:20','2023-08-07 08:52:20',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), + (32,'2023-09-06 22:52:20','2023-09-07 08:52:20',11,'General',100.00,'USD',2,1,'civicrm_line_item',32), + (33,'2023-09-06 22:52:20','2023-09-07 08:52:20',75,'General',100.00,'USD',2,1,'civicrm_line_item',33), + (34,'2023-09-06 22:52:20','2023-09-07 08:52:20',107,'General',100.00,'USD',2,1,'civicrm_line_item',34), + (35,'2023-09-06 22:52:20','2023-09-07 08:52:20',50,'General',100.00,'USD',2,1,'civicrm_line_item',35), + (36,'2023-09-06 22:52:20','2023-09-07 08:52:20',154,'General',100.00,'USD',2,1,'civicrm_line_item',36), + (37,'2023-09-06 22:52:20','2023-09-07 08:52:20',44,'General',100.00,'USD',2,1,'civicrm_line_item',37), + (38,'2023-09-06 22:52:20','2023-09-07 08:52:20',197,'General',100.00,'USD',2,1,'civicrm_line_item',38), + (39,'2023-09-06 22:52:20','2023-09-07 08:52:20',15,'General',100.00,'USD',2,1,'civicrm_line_item',39), + (40,'2023-09-06 22:52:20','2023-09-07 08:52:20',26,'General',100.00,'USD',2,1,'civicrm_line_item',40), + (41,'2023-09-06 22:52:20','2023-09-07 08:52:20',196,'General',100.00,'USD',2,1,'civicrm_line_item',41), + (42,'2023-09-06 22:52:20','2023-09-07 08:52:20',42,'General',100.00,'USD',2,1,'civicrm_line_item',42), + (43,'2023-09-06 22:52:20','2023-09-07 08:52:20',7,'General',100.00,'USD',2,1,'civicrm_line_item',43), + (44,'2023-09-06 22:52:20','2023-09-07 08:52:20',163,'General',100.00,'USD',2,1,'civicrm_line_item',44), + (45,'2023-09-06 22:52:20','2023-09-07 08:52:20',162,'General',100.00,'USD',2,1,'civicrm_line_item',45), + (46,'2023-09-06 22:52:20','2023-09-07 08:52:20',33,'Student',50.00,'USD',2,1,'civicrm_line_item',46), + (47,'2023-09-06 22:52:20','2023-09-07 08:52:20',16,'Student',50.00,'USD',2,1,'civicrm_line_item',47), + (48,'2023-09-06 22:52:20','2023-09-07 08:52:20',141,'Student',50.00,'USD',2,1,'civicrm_line_item',48), + (49,'2023-09-06 22:52:20','2023-09-07 08:52:20',88,'Student',50.00,'USD',2,1,'civicrm_line_item',49), + (50,'2023-09-06 22:52:20','2023-09-07 08:52:20',174,'Student',50.00,'USD',2,1,'civicrm_line_item',50), + (51,'2023-09-06 22:52:20','2023-09-07 08:52:20',36,'Student',50.00,'USD',2,1,'civicrm_line_item',51), + (52,'2023-09-06 22:52:20','2023-09-07 08:52:20',37,'Student',50.00,'USD',2,1,'civicrm_line_item',52), + (53,'2023-09-06 22:52:20','2023-09-07 08:52:20',117,'Student',50.00,'USD',2,1,'civicrm_line_item',53), + (54,'2023-09-06 22:52:20','2023-09-07 08:52:20',69,'Student',50.00,'USD',2,1,'civicrm_line_item',54), + (55,'2023-09-06 22:52:20','2023-09-07 08:52:20',198,'Student',50.00,'USD',2,1,'civicrm_line_item',55), + (56,'2023-09-06 22:52:20','2023-09-07 08:52:20',186,'Student',50.00,'USD',2,1,'civicrm_line_item',56), + (57,'2023-09-06 22:52:20','2023-09-07 08:52:20',140,'Student',50.00,'USD',2,1,'civicrm_line_item',57), + (58,'2023-09-06 22:52:20','2023-09-07 08:52:20',121,'Student',50.00,'USD',2,1,'civicrm_line_item',58), + (59,'2023-09-06 22:52:20','2023-09-07 08:52:20',202,'Student',50.00,'USD',2,1,'civicrm_line_item',59), + (60,'2023-09-06 22:52:20','2023-09-07 08:52:20',8,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), + (61,'2023-09-06 22:52:20','2023-09-07 08:52:20',150,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), + (62,'2023-09-06 22:52:20','2023-09-07 08:52:20',181,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), + (63,'2023-09-06 22:52:20','2023-09-07 08:52:20',123,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), + (64,'2023-09-06 22:52:20','2023-09-07 08:52:20',137,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), + (65,'2023-09-06 22:52:20','2023-09-07 08:52:20',47,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), + (66,'2023-09-06 22:52:20','2023-09-07 08:52:20',43,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), + (67,'2023-09-06 22:52:20','2023-09-07 08:52:20',142,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), + (68,'2023-09-06 22:52:21','2023-09-07 08:52:20',91,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), + (69,'2023-09-06 22:52:21','2023-09-07 08:52:20',76,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), + (70,'2023-09-06 22:52:21','2023-09-07 08:52:20',170,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), + (71,'2023-09-06 22:52:21','2023-09-07 08:52:20',94,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), + (72,'2023-09-06 22:52:21','2023-09-07 08:52:20',127,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), + (73,'2023-09-06 22:52:21','2023-09-07 08:52:20',159,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), + (74,'2023-09-06 22:52:21','2023-09-07 08:52:20',131,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), + (75,'2023-09-06 22:52:21','2023-09-07 08:52:20',11,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), + (76,'2023-09-06 22:52:21','2023-09-07 08:52:20',199,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), + (77,'2023-09-06 22:52:21','2023-09-07 08:52:20',68,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), + (78,'2023-09-06 22:52:21','2023-09-07 08:52:20',184,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), + (79,'2023-09-06 22:52:21','2023-09-07 08:52:20',88,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), + (80,'2023-09-06 22:52:21','2023-09-07 08:52:20',56,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), + (81,'2023-09-06 22:52:21','2023-09-07 08:52:20',133,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), + (82,'2023-09-06 22:52:21','2023-09-07 08:52:20',145,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), + (83,'2023-09-06 22:52:21','2023-09-07 08:52:20',63,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), + (84,'2023-09-06 22:52:21','2023-09-07 08:52:20',132,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), + (85,'2023-09-06 22:52:21','2023-09-07 08:52:20',174,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), + (86,'2023-09-06 22:52:21','2023-09-07 08:52:20',3,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), + (87,'2023-09-06 22:52:21','2023-09-07 08:52:20',128,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), + (88,'2023-09-06 22:52:21','2023-09-07 08:52:20',186,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), + (89,'2023-09-06 22:52:21','2023-09-07 08:52:20',177,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), + (90,'2023-09-06 22:52:21','2023-09-07 08:52:20',195,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), + (91,'2023-09-06 22:52:21','2023-09-07 08:52:20',104,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), + (92,'2023-09-06 22:52:21','2023-09-07 08:52:20',115,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), + (93,'2023-09-06 22:52:21','2023-09-07 08:52:20',37,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), + (94,'2023-09-06 22:52:21','2023-09-07 08:52:20',2,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), + (95,'2023-09-06 22:52:21','2023-09-07 08:52:20',193,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), + (96,'2023-09-06 22:52:21','2023-09-07 08:52:20',102,'Single',50.00,'USD',4,1,'civicrm_line_item',81), + (97,'2023-09-06 22:52:21','2023-09-07 08:52:20',119,'Single',50.00,'USD',4,1,'civicrm_line_item',82), + (98,'2023-09-06 22:52:21','2023-09-07 08:52:20',149,'Single',50.00,'USD',4,1,'civicrm_line_item',83), + (99,'2023-09-06 22:52:21','2023-09-07 08:52:20',153,'Single',50.00,'USD',4,1,'civicrm_line_item',84), + (100,'2023-09-06 22:52:21','2023-09-07 08:52:20',29,'Single',50.00,'USD',4,1,'civicrm_line_item',85), + (101,'2023-09-06 22:52:21','2023-09-07 08:52:20',194,'Single',50.00,'USD',4,1,'civicrm_line_item',86), + (102,'2023-09-06 22:52:21','2023-09-07 08:52:20',92,'Single',50.00,'USD',4,1,'civicrm_line_item',87), + (103,'2023-09-06 22:52:21','2023-09-07 08:52:20',38,'Single',50.00,'USD',4,1,'civicrm_line_item',88), + (104,'2023-09-06 22:52:21','2023-09-07 08:52:20',167,'Single',50.00,'USD',4,1,'civicrm_line_item',89), + (105,'2023-09-06 22:52:21','2023-09-07 08:52:20',9,'Single',50.00,'USD',4,1,'civicrm_line_item',90), + (106,'2023-09-06 22:52:21','2023-09-07 08:52:20',178,'Single',50.00,'USD',4,1,'civicrm_line_item',91), + (107,'2023-09-06 22:52:21','2023-09-07 08:52:20',90,'Single',50.00,'USD',4,1,'civicrm_line_item',92), + (108,'2023-09-06 22:52:21','2023-09-07 08:52:20',151,'Single',50.00,'USD',4,1,'civicrm_line_item',93), + (109,'2023-09-06 22:52:21','2023-09-07 08:52:20',161,'Single',50.00,'USD',4,1,'civicrm_line_item',94), + (110,'2023-09-06 22:52:21','2023-09-07 08:52:20',50,'Single',50.00,'USD',4,1,'civicrm_line_item',95), + (111,'2023-09-06 22:52:21','2023-09-07 08:52:20',42,'Single',50.00,'USD',4,1,'civicrm_line_item',96); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -3832,117 +3800,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-09-07 08:14:03',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), - (2,NULL,6,'2021-06-07 08:14:03',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (3,NULL,6,'2017-08-12 19:14:03',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), - (4,NULL,6,'2021-06-07 08:14:03',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), - (5,NULL,6,'2021-06-07 08:14:03',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (6,NULL,6,'2023-06-14 07:32:03',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), - (7,NULL,6,'2023-09-05 08:14:03',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), - (8,NULL,6,'2023-01-13 16:25:03',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (9,NULL,6,'2022-10-07 08:14:03',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (10,NULL,6,'2019-04-14 10:14:03',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (11,NULL,6,'2023-09-06 04:14:03',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (12,NULL,6,'2022-06-06 21:40:43',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (1,NULL,6,'2013-09-07 08:52:20',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), + (2,NULL,6,'2021-06-07 08:52:20',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (3,NULL,6,'2017-08-12 19:52:20',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), + (4,NULL,6,'2021-06-07 08:52:20',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), + (5,NULL,6,'2021-06-07 08:52:20',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (6,NULL,6,'2023-06-14 08:10:20',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), + (7,NULL,6,'2023-09-05 08:52:20',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), + (8,NULL,6,'2023-01-13 17:03:20',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (9,NULL,6,'2022-10-07 08:52:20',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (10,NULL,6,'2019-04-14 10:52:20',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (11,NULL,6,'2023-09-06 04:52:20',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (12,NULL,6,'2022-06-06 22:19:00',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), (13,NULL,6,'2023-06-07 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), (14,NULL,6,'2023-07-07 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (15,NULL,6,'2022-06-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (16,NULL,6,'2022-07-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (17,NULL,6,'2022-08-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (18,NULL,6,'2022-09-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (19,NULL,6,'2022-10-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (20,NULL,6,'2022-11-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (21,NULL,6,'2022-12-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (22,NULL,6,'2023-01-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (23,NULL,6,'2023-02-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (24,NULL,6,'2023-03-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (25,NULL,6,'2023-04-07 08:14:03',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (26,NULL,6,'2023-01-07 08:14:03',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (27,NULL,6,'2023-02-07 08:14:03',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (28,NULL,6,'2023-03-07 08:14:03',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (29,NULL,6,'2023-04-07 08:14:03',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (30,NULL,6,'2023-05-07 08:14:03',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (31,NULL,6,'2023-08-07 08:14:03',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (32,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'64513c6b182dd113',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (33,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'09ee74f9ecb823ec',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (34,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'4ce9aedf1f234da0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (35,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'512b3d1dc8a5f445',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (36,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'eb95fb812af107b4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (37,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'0f5727c4f2fba19d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (38,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'627c915408145f96',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (39,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'e42e6b0e9e4db574',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (40,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'f664fee8723012b3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (41,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'486111c13c141599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (42,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'9327cb33c0c0dea3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (43,NULL,6,'2023-09-07 08:14:03',100.00,NULL,NULL,'USD',1,'b6fe67eaec8fe919',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (44,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'c5a3302fcb3e2b0d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (45,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'d3f9b7e3a0f32567',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (46,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'0b8a02400a70bc02',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (47,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'7b5542f56c10cf47',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (48,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'43e8695c96d705be',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (49,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'74f30aa71ec48b62',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (50,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'7e3b938ada287d13',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (51,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'010bb9d39ae6a543',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (52,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'df652d2ee2efed9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (53,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'723ef4f1b30eec0d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (54,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'6152710332f36ae2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (55,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'cf32704c35ebc613',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (56,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'8219ebeba14e643a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (57,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'60817723ca94ab56',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (58,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'93b36441cf4b0a54',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (59,NULL,6,'2023-09-07 08:14:03',50.00,NULL,NULL,'USD',1,'ec602fce6cc9def0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (60,NULL,6,'2023-09-07 08:14:03',1200.00,NULL,NULL,'USD',1,'59eae501e7d56e51',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (61,NULL,6,'2023-09-07 08:14:03',1200.00,NULL,NULL,'USD',1,'7df84e94209fc3c8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (62,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'de1c401ec81388ef',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (63,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'81a32d48faca3c52',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (64,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'fb3d8c3560407846',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (65,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'ee05e52900771408',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (66,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'f98e8385f4424e2b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (67,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'831fe88311326c59',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (68,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'0337f0d5f0d0a860',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (69,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'135f5d79c9f28d4f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (70,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'2cc0ccfa0d26ea3d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (71,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'5fe1503cda9e48f0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (72,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'71ac264db2075be3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (73,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'b9aeec333cbd58be',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (74,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'d8ed5eb7553d6771',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (75,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'092ce1dc2fde4d80',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (76,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'ad5f81f6741c976b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (77,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'88fd57e0394cf9fe',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (78,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'325d6dc39b8f23aa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (79,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'3fa31226078ab28d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (80,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'5bf0c054a3c6738b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (81,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'f3b2b4e17cec608b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (82,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'d07e620ed65884f5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (83,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'a550b48b852dbd89',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (84,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'f67aba800bcacc50',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (85,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'dd62e9f8e6d401e2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (86,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'5ef0258b063c9ad9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (87,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'b3c10539a416b64a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (88,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'4ae4ebe7d483f5b6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (89,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'bc8675814a2d0d62',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (90,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'8f88be0e4578e656',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (91,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'1d03defa293ebc5b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (92,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'14b57c53021522cb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (93,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'72935daddbe81c24',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (94,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'a719351eb2134647',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (95,NULL,6,'2023-09-07 08:14:04',800.00,NULL,NULL,'USD',1,'7f6bdc42de380f23',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (96,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'0282223cd697c327',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (97,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'a793a37b727b4d6b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (98,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'bf30d04b0d0e4579',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (99,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'01ecfdb055ee1f7f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (100,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'34f755c2672bbf29',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (101,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'a15ce82b4e4ff9fb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (102,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'364dde884027a52b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (103,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'d50d7d7b6708bc3f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (104,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'8a32de8f5c050637',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (105,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'b81deee06e40e758',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (106,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'47a7606f17fa5b53',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (107,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'e09221a89baaa665',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (108,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'9563cfbdebfd9ffd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (109,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'4e6045f8f6292323',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (110,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'b1775049dab40826',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (111,NULL,6,'2023-09-07 08:14:04',50.00,NULL,NULL,'USD',1,'2f861f1eab4a68d0',NULL,1,NULL,1,NULL,NULL,NULL,NULL); + (15,NULL,6,'2022-06-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (16,NULL,6,'2022-07-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (17,NULL,6,'2022-08-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (18,NULL,6,'2022-09-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (19,NULL,6,'2022-10-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (20,NULL,6,'2022-11-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (21,NULL,6,'2022-12-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (22,NULL,6,'2023-01-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (23,NULL,6,'2023-02-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (24,NULL,6,'2023-03-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (25,NULL,6,'2023-04-07 08:52:20',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (26,NULL,6,'2023-01-07 08:52:20',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (27,NULL,6,'2023-02-07 08:52:20',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (28,NULL,6,'2023-03-07 08:52:20',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (29,NULL,6,'2023-04-07 08:52:20',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (30,NULL,6,'2023-05-07 08:52:20',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (31,NULL,6,'2023-08-07 08:52:20',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (32,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'f35f748912345b9a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (33,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'dd391b553f4f7037',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (34,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'2da4195398db1ae0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (35,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'8cf4116bdebff877',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (36,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'20ab7ccf151901d9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (37,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'298a429ada534815',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (38,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'192bd422f162a438',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (39,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'4a15317962a69a81',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (40,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'c549161b722ae0e2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (41,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'b0b1c5a7c9f648ea',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (42,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'7702196e43a3e0bd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (43,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'f694cbe423ce5eb1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (44,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'d5148071d9a8be10',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (45,NULL,6,'2023-09-07 08:52:20',100.00,NULL,NULL,'USD',1,'6ca3e34d81c40b8c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (46,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'738f047c3933ff17',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (47,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'b4662a764f39f413',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (48,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'147d7e7900ea9163',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (49,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'62009b8346478628',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (50,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'e13a915046d57644',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (51,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'94888675227342d8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (52,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'c3a01540d471682a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (53,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'2bcacb63fbdd6c7e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (54,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'352e858c7b02b0db',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (55,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'78e6fd67eb8c1988',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (56,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'1d0c36f4ec1a8c97',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (57,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'d0736a30cccfd4d2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (58,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'074c387c1b91896d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (59,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'1aa0e1ab9c39369e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (60,NULL,6,'2023-09-07 08:52:20',1200.00,NULL,NULL,'USD',1,'0892a3502e515853',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (61,NULL,6,'2023-09-07 08:52:20',1200.00,NULL,NULL,'USD',1,'67949dd99a2da188',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (62,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'4965afacf35fbeb7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (63,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'e1b3816831d52eba',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (64,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'3932cb472bbe4923',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (65,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'39ca5190991329ec',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (66,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'fff2347b446d8133',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (67,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'84321fe483b3a002',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (68,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'287d120bec064cfc',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (69,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'1d5c72a7ba1ab008',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (70,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'b4da6cbb44ed18e2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (71,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'96809d2b209570b6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (72,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'74bac1d50ecee85d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (73,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'3c7cd46f0bf3348b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (74,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'87c4eb44a576dbbf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (75,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'114039dd0b31e601',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (76,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'5ec3c525c53e3d83',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (77,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'7f5ef93011b78e2b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (78,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'ae656e5ff51eebca',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (79,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'7815807a33652156',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (80,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'fc388eeb07a269da',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (81,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'f1f08848f07f7972',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (82,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'e15f7530fcfe0c49',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (83,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'f2d8d1ef5ab09c03',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (84,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'0798a94b9b3fcea8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (85,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'c6dded079f482f42',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (86,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'8ab94d8353ac55f7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (87,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'7937bcc6b55ee936',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (88,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'95b6f8aaf69ff40b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (89,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'4dd65030b75bc608',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (90,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'03ed936885020f0d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (91,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'5d9f0f0c6e602361',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (92,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'f6faa89eb9fc1e2e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (93,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'868dc65a6102069e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (94,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'5589f478beddc83c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (95,NULL,6,'2023-09-07 08:52:20',800.00,NULL,NULL,'USD',1,'f9de548fc713fb79',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (96,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'79c783e5ae59fa0f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (97,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'f5b612106db16c15',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (98,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'b701d89308b0dc75',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (99,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'d38d992b9d596f66',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (100,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'8c55cda559f74822',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (101,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'c1ab79895d394891',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (102,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'0b70d01281d94174',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (103,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'e41605930d1c3179',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (104,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'859374cc5860dd44',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (105,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'05e1df46874a0aa9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (106,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'d0c30ff7377ab5de',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (107,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'a8bc4bbb21ddadbd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (108,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'1a8ffab23ccff9f5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (109,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'9fd3e5c674b24e6d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (110,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'e1856457692f0c1e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (111,NULL,6,'2023-09-07 08:52:20',50.00,NULL,NULL,'USD',1,'fe3e6113a8559c6c',NULL,1,NULL,1,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3981,89 +3949,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,24,'Added',NULL,NULL), - (2,2,134,'Added',NULL,NULL), - (3,2,88,'Added',NULL,NULL), - (4,2,117,'Added',NULL,NULL), - (5,2,82,'Added',NULL,NULL), - (6,2,72,'Added',NULL,NULL), - (7,2,135,'Added',NULL,NULL), - (8,2,151,'Added',NULL,NULL), - (9,2,143,'Added',NULL,NULL), - (10,2,13,'Added',NULL,NULL), - (11,2,93,'Added',NULL,NULL), - (12,2,141,'Added',NULL,NULL), - (13,2,78,'Added',NULL,NULL), - (14,2,25,'Added',NULL,NULL), - (15,2,128,'Added',NULL,NULL), - (16,2,132,'Added',NULL,NULL), - (17,2,63,'Added',NULL,NULL), - (18,2,170,'Added',NULL,NULL), - (19,2,86,'Added',NULL,NULL), - (20,2,15,'Added',NULL,NULL), - (21,2,60,'Added',NULL,NULL), - (22,2,146,'Added',NULL,NULL), - (23,2,108,'Added',NULL,NULL), - (24,2,95,'Added',NULL,NULL), - (25,2,131,'Added',NULL,NULL), - (26,2,46,'Added',NULL,NULL), - (27,2,110,'Added',NULL,NULL), - (28,2,54,'Added',NULL,NULL), - (29,2,12,'Added',NULL,NULL), - (30,2,23,'Added',NULL,NULL), - (31,2,96,'Added',NULL,NULL), - (32,2,176,'Added',NULL,NULL), - (33,2,123,'Added',NULL,NULL), - (34,2,160,'Added',NULL,NULL), - (35,2,190,'Added',NULL,NULL), + (1,2,55,'Added',NULL,NULL), + (2,2,41,'Added',NULL,NULL), + (3,2,34,'Added',NULL,NULL), + (4,2,171,'Added',NULL,NULL), + (5,2,123,'Added',NULL,NULL), + (6,2,64,'Added',NULL,NULL), + (7,2,178,'Added',NULL,NULL), + (8,2,24,'Added',NULL,NULL), + (9,2,146,'Added',NULL,NULL), + (10,2,4,'Added',NULL,NULL), + (11,2,37,'Added',NULL,NULL), + (12,2,181,'Added',NULL,NULL), + (13,2,98,'Added',NULL,NULL), + (14,2,33,'Added',NULL,NULL), + (15,2,160,'Added',NULL,NULL), + (16,2,148,'Added',NULL,NULL), + (17,2,79,'Added',NULL,NULL), + (18,2,158,'Added',NULL,NULL), + (19,2,145,'Added',NULL,NULL), + (20,2,82,'Added',NULL,NULL), + (21,2,175,'Added',NULL,NULL), + (22,2,102,'Added',NULL,NULL), + (23,2,117,'Added',NULL,NULL), + (24,2,124,'Added',NULL,NULL), + (25,2,28,'Added',NULL,NULL), + (26,2,40,'Added',NULL,NULL), + (27,2,66,'Added',NULL,NULL), + (28,2,32,'Added',NULL,NULL), + (29,2,162,'Added',NULL,NULL), + (30,2,199,'Added',NULL,NULL), + (31,2,26,'Added',NULL,NULL), + (32,2,180,'Added',NULL,NULL), + (33,2,192,'Added',NULL,NULL), + (34,2,141,'Added',NULL,NULL), + (35,2,59,'Added',NULL,NULL), (36,2,100,'Added',NULL,NULL), - (37,2,111,'Added',NULL,NULL), - (38,2,9,'Added',NULL,NULL), - (39,2,162,'Added',NULL,NULL), - (40,2,148,'Added',NULL,NULL), - (41,2,105,'Added',NULL,NULL), - (42,2,31,'Added',NULL,NULL), - (43,2,184,'Added',NULL,NULL), - (44,2,102,'Added',NULL,NULL), - (45,2,29,'Added',NULL,NULL), - (46,2,126,'Added',NULL,NULL), - (47,2,138,'Added',NULL,NULL), - (48,2,150,'Added',NULL,NULL), - (49,2,48,'Added',NULL,NULL), - (50,2,137,'Added',NULL,NULL), - (51,2,200,'Added',NULL,NULL), - (52,2,164,'Added',NULL,NULL), - (53,2,136,'Added',NULL,NULL), - (54,2,5,'Added',NULL,NULL), - (55,2,17,'Added',NULL,NULL), - (56,2,61,'Added',NULL,NULL), - (57,2,145,'Added',NULL,NULL), - (58,2,185,'Added',NULL,NULL), - (59,2,34,'Added',NULL,NULL), - (60,2,169,'Added',NULL,NULL), - (61,3,173,'Added',NULL,NULL), - (62,3,84,'Added',NULL,NULL), - (63,3,59,'Added',NULL,NULL), - (64,3,142,'Added',NULL,NULL), - (65,3,120,'Added',NULL,NULL), - (66,3,81,'Added',NULL,NULL), - (67,3,83,'Added',NULL,NULL), - (68,3,153,'Added',NULL,NULL), - (69,3,74,'Added',NULL,NULL), - (70,3,42,'Added',NULL,NULL), - (71,3,109,'Added',NULL,NULL), - (72,3,30,'Added',NULL,NULL), - (73,3,149,'Added',NULL,NULL), - (74,3,106,'Added',NULL,NULL), - (75,3,175,'Added',NULL,NULL), - (76,4,24,'Added',NULL,NULL), - (77,4,151,'Added',NULL,NULL), - (78,4,128,'Added',NULL,NULL), - (79,4,146,'Added',NULL,NULL), - (80,4,12,'Added',NULL,NULL), + (37,2,11,'Added',NULL,NULL), + (38,2,144,'Added',NULL,NULL), + (39,2,200,'Added',NULL,NULL), + (40,2,47,'Added',NULL,NULL), + (41,2,22,'Added',NULL,NULL), + (42,2,75,'Added',NULL,NULL), + (43,2,112,'Added',NULL,NULL), + (44,2,182,'Added',NULL,NULL), + (45,2,165,'Added',NULL,NULL), + (46,2,132,'Added',NULL,NULL), + (47,2,136,'Added',NULL,NULL), + (48,2,172,'Added',NULL,NULL), + (49,2,186,'Added',NULL,NULL), + (50,2,90,'Added',NULL,NULL), + (51,2,83,'Added',NULL,NULL), + (52,2,120,'Added',NULL,NULL), + (53,2,174,'Added',NULL,NULL), + (54,2,109,'Added',NULL,NULL), + (55,2,69,'Added',NULL,NULL), + (56,2,155,'Added',NULL,NULL), + (57,2,167,'Added',NULL,NULL), + (58,2,96,'Added',NULL,NULL), + (59,2,159,'Added',NULL,NULL), + (60,2,108,'Added',NULL,NULL), + (61,3,78,'Added',NULL,NULL), + (62,3,70,'Added',NULL,NULL), + (63,3,103,'Added',NULL,NULL), + (64,3,107,'Added',NULL,NULL), + (65,3,44,'Added',NULL,NULL), + (66,3,21,'Added',NULL,NULL), + (67,3,84,'Added',NULL,NULL), + (68,3,71,'Added',NULL,NULL), + (69,3,115,'Added',NULL,NULL), + (70,3,56,'Added',NULL,NULL), + (71,3,196,'Added',NULL,NULL), + (72,3,183,'Added',NULL,NULL), + (73,3,62,'Added',NULL,NULL), + (74,3,121,'Added',NULL,NULL), + (75,3,166,'Added',NULL,NULL), + (76,4,55,'Added',NULL,NULL), + (77,4,24,'Added',NULL,NULL), + (78,4,160,'Added',NULL,NULL), + (79,4,102,'Added',NULL,NULL), + (80,4,162,'Added',NULL,NULL), (81,4,100,'Added',NULL,NULL), - (82,4,184,'Added',NULL,NULL), - (83,4,137,'Added',NULL,NULL), + (82,4,112,'Added',NULL,NULL), + (83,4,90,'Added',NULL,NULL), (84,4,202,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -4147,117 +4115,117 @@ UNLOCK TABLES; LOCK TABLES `civicrm_line_item` WRITE; /*!40000 ALTER TABLE `civicrm_line_item` DISABLE KEYS */; INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contribution_id`, `price_field_id`, `label`, `qty`, `unit_price`, `line_total`, `participant_count`, `price_field_value_id`, `financial_type_id`, `non_deductible_amount`, `tax_amount`, `membership_num_terms`) VALUES - (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,NULL,NULL), - (2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL,NULL), - (3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL,NULL), - (5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL,NULL), - (6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL,NULL), - (7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,1750.00,1750.00,0,1,1,0.00,NULL,NULL), - (8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL,NULL), - (9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL,NULL), - (10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,NULL,NULL), - (11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,NULL,NULL), - (12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL,NULL), - (13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL,NULL), - (14,'civicrm_contribution',14,14,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,NULL,NULL), - (15,'civicrm_contribution',15,15,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (16,'civicrm_contribution',16,16,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (17,'civicrm_contribution',17,17,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (18,'civicrm_contribution',18,18,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (19,'civicrm_contribution',19,19,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (20,'civicrm_contribution',20,20,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (21,'civicrm_contribution',21,21,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (22,'civicrm_contribution',22,22,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (23,'civicrm_contribution',23,23,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (24,'civicrm_contribution',24,24,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (25,'civicrm_contribution',25,25,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,NULL,NULL), - (26,'civicrm_contribution',26,26,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL,NULL), - (27,'civicrm_contribution',27,27,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL,NULL), - (28,'civicrm_contribution',28,28,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL,NULL), - (29,'civicrm_contribution',29,29,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL,NULL), - (30,'civicrm_contribution',30,30,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,NULL,NULL), - (31,'civicrm_contribution',31,31,1,'Contribution Amount',1.00,5.00,5.00,0,1,1,0.00,NULL,NULL), - (32,'civicrm_membership',1,32,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (33,'civicrm_membership',3,34,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (34,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (35,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (36,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (37,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (38,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (39,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (40,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (41,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (42,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (43,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (44,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (45,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (46,'civicrm_membership',5,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (47,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (48,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (49,'civicrm_membership',10,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (50,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (51,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (52,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (53,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (54,'civicrm_membership',20,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (55,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (56,'civicrm_membership',25,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (57,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (58,'civicrm_membership',28,59,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (59,'civicrm_membership',30,61,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (60,'civicrm_membership',11,42,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL,NULL), - (61,'civicrm_membership',22,53,4,'Lifetime',1.00,1200.00,1200.00,NULL,9,2,0.00,NULL,NULL), - (63,'civicrm_participant',3,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (64,'civicrm_participant',6,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (65,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (66,'civicrm_participant',12,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (67,'civicrm_participant',15,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (68,'civicrm_participant',18,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (69,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (70,'civicrm_participant',24,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (71,'civicrm_participant',25,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (72,'civicrm_participant',28,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (73,'civicrm_participant',31,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (74,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (75,'civicrm_participant',37,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (76,'civicrm_participant',40,102,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (77,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (78,'civicrm_participant',46,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (79,'civicrm_participant',49,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (80,'civicrm_participant',50,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (81,'civicrm_participant',1,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (82,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (83,'civicrm_participant',7,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (84,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (85,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (86,'civicrm_participant',16,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (87,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (88,'civicrm_participant',22,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (89,'civicrm_participant',26,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (90,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (91,'civicrm_participant',32,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (92,'civicrm_participant',35,97,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (93,'civicrm_participant',38,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (94,'civicrm_participant',41,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (95,'civicrm_participant',44,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (96,'civicrm_participant',47,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (97,'civicrm_participant',2,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (98,'civicrm_participant',5,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (99,'civicrm_participant',8,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (100,'civicrm_participant',11,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (101,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (102,'civicrm_participant',17,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (103,'civicrm_participant',20,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (104,'civicrm_participant',23,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (105,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (106,'civicrm_participant',30,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (107,'civicrm_participant',33,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (108,'civicrm_participant',36,98,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (109,'civicrm_participant',39,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (110,'civicrm_participant',42,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (111,'civicrm_participant',45,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (112,'civicrm_participant',48,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL); + (1,'civicrm_contribution',1,1,1,'Contribution Amount',1.00,125.00,125.00,0,1,1,0.00,0.00,NULL), + (2,'civicrm_contribution',2,2,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,0.00,NULL), + (3,'civicrm_contribution',3,3,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (4,'civicrm_contribution',4,4,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,0.00,NULL), + (5,'civicrm_contribution',5,5,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,0.00,NULL), + (6,'civicrm_contribution',6,6,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,0.00,NULL), + (7,'civicrm_contribution',7,7,1,'Contribution Amount',1.00,1750.00,1750.00,0,1,1,0.00,0.00,NULL), + (8,'civicrm_contribution',8,8,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,0.00,NULL), + (9,'civicrm_contribution',9,9,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), + (10,'civicrm_contribution',10,10,1,'Contribution Amount',1.00,250.00,250.00,0,1,1,0.00,0.00,NULL), + (11,'civicrm_contribution',11,11,1,'Contribution Amount',1.00,500.00,500.00,0,1,1,0.00,0.00,NULL), + (12,'civicrm_contribution',12,12,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,0.00,NULL), + (13,'civicrm_contribution',13,13,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,0.00,NULL), + (14,'civicrm_contribution',14,14,1,'Contribution Amount',1.00,50.00,50.00,0,1,1,0.00,0.00,NULL), + (15,'civicrm_contribution',15,15,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (16,'civicrm_contribution',16,16,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (17,'civicrm_contribution',17,17,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (18,'civicrm_contribution',18,18,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (19,'civicrm_contribution',19,19,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (20,'civicrm_contribution',20,20,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (21,'civicrm_contribution',21,21,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (22,'civicrm_contribution',22,22,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (23,'civicrm_contribution',23,23,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (24,'civicrm_contribution',24,24,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (25,'civicrm_contribution',25,25,1,'Contribution Amount',1.00,25.00,25.00,0,1,1,0.00,0.00,NULL), + (26,'civicrm_contribution',26,26,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), + (27,'civicrm_contribution',27,27,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), + (28,'civicrm_contribution',28,28,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), + (29,'civicrm_contribution',29,29,1,'Contribution Amount',1.00,10.00,10.00,0,1,1,0.00,0.00,NULL), + (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',5,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (35,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (36,'civicrm_membership',9,40,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',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (45,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,0.00,NULL), + (46,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (47,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (48,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (49,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (50,'civicrm_membership',10,41,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (51,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (52,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (53,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (54,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (55,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,0.00,NULL), + (56,'civicrm_membership',25,56,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,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (64,'civicrm_participant',6,68,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,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (67,'civicrm_participant',15,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (68,'civicrm_participant',18,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (69,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (70,'civicrm_participant',24,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (71,'civicrm_participant',25,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (72,'civicrm_participant',28,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (73,'civicrm_participant',31,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (74,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (75,'civicrm_participant',37,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (76,'civicrm_participant',40,102,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,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (79,'civicrm_participant',49,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (80,'civicrm_participant',50,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,0.00,NULL), + (81,'civicrm_participant',1,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (82,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (83,'civicrm_participant',7,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (84,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (85,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (86,'civicrm_participant',16,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (87,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (88,'civicrm_participant',22,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (89,'civicrm_participant',26,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (90,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (91,'civicrm_participant',32,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (92,'civicrm_participant',35,97,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (93,'civicrm_participant',38,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (94,'civicrm_participant',41,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (95,'civicrm_participant',44,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (96,'civicrm_participant',47,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,0.00,NULL), + (97,'civicrm_participant',2,64,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (98,'civicrm_participant',5,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (99,'civicrm_participant',8,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (100,'civicrm_participant',11,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (101,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (102,'civicrm_participant',17,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (103,'civicrm_participant',20,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (104,'civicrm_participant',23,85,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,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (107,'civicrm_participant',33,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (108,'civicrm_participant',36,98,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (109,'civicrm_participant',39,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (110,'civicrm_participant',42,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (111,'civicrm_participant',45,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,0.00,NULL), + (112,'civicrm_participant',48,110,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; @@ -4268,9 +4236,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,176,208,161,NULL,NULL,NULL,NULL,NULL), - (2,177,209,162,NULL,NULL,NULL,NULL,NULL), - (3,178,210,163,NULL,NULL,NULL,NULL,NULL); + (1,180,191,162,NULL,NULL,NULL,NULL,NULL), + (2,181,192,163,NULL,NULL,NULL,NULL,NULL), + (3,182,193,164,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -4296,7 +4264,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-09-07 08:14:01'); + (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-09-07 08:52:18'); /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4306,8 +4274,8 @@ UNLOCK TABLES; LOCK TABLES `civicrm_mail_settings` WRITE; /*!40000 ALTER TABLE `civicrm_mail_settings` DISABLE KEYS */; -INSERT INTO `civicrm_mail_settings` (`id`, `domain_id`, `name`, `is_default`, `domain`, `localpart`, `return_path`, `protocol`, `server`, `port`, `username`, `password`, `is_ssl`, `source`, `activity_status`, `is_non_case_email_skipped`, `is_contact_creation_disabled_if_no_match`) VALUES - (1,1,'default',1,'EXAMPLE.ORG',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,0); +INSERT INTO `civicrm_mail_settings` (`id`, `domain_id`, `name`, `is_default`, `domain`, `localpart`, `return_path`, `protocol`, `server`, `port`, `username`, `password`, `is_ssl`, `source`, `activity_status`, `is_non_case_email_skipped`, `is_contact_creation_disabled_if_no_match`, `is_active`, `activity_type_id`, `campaign_id`, `activity_source`, `activity_targets`, `activity_assignees`) VALUES + (1,1,'default',1,'EXAMPLE.ORG',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_mail_settings` ENABLE KEYS */; UNLOCK TABLES; @@ -4716,36 +4684,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,134,1,'2023-09-07','2023-09-07','2025-09-06','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (2,193,2,'2023-09-06','2023-09-06','2024-09-05','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (3,130,1,'2023-09-05','2023-09-05','2025-09-04','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (4,154,2,'2023-09-04','2023-09-04','2024-09-03','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (5,23,2,'2022-09-03','2022-09-03','2023-09-02','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (6,17,2,'2023-09-02','2023-09-02','2024-09-01','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (7,169,1,'2023-09-01','2023-09-01','2025-08-31','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (8,162,2,'2023-08-31','2023-08-31','2024-08-30','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (9,187,1,'2023-08-30','2023-08-30','2025-08-29','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (10,55,2,'2022-08-29','2022-08-29','2023-08-28','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (11,145,3,'2023-08-28','2023-08-28',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (12,190,2,'2023-08-27','2023-08-27','2024-08-26','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (13,82,1,'2023-08-26','2023-08-26','2025-08-25','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (14,70,2,'2023-08-25','2023-08-25','2024-08-24','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (15,194,1,'2021-05-18','2021-05-18','2023-05-17','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (16,114,2,'2023-08-23','2023-08-23','2024-08-22','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (17,165,1,'2023-08-22','2023-08-22','2025-08-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (18,44,2,'2023-08-21','2023-08-21','2024-08-20','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (19,33,1,'2023-08-20','2023-08-20','2025-08-19','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (20,151,2,'2022-08-19','2022-08-19','2023-08-18','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (21,131,1,'2023-08-18','2023-08-18','2025-08-17','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (22,72,3,'2023-08-17','2023-08-17',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (23,122,1,'2023-08-16','2023-08-16','2025-08-15','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (24,111,2,'2023-08-15','2023-08-15','2024-08-14','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (25,11,2,'2022-08-14','2022-08-14','2023-08-13','Donation',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (26,97,2,'2023-08-13','2023-08-13','2024-08-12','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (27,191,1,'2023-08-12','2023-08-12','2025-08-11','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (28,91,2,'2023-08-11','2023-08-11','2024-08-10','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (29,90,1,'2023-08-10','2023-08-10','2025-08-09','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (30,200,2,'2022-08-09','2022-08-09','2023-08-08','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL); + (1,11,1,'2023-09-07','2023-09-07','2025-09-06','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (2,33,2,'2023-09-06','2023-09-06','2024-09-05','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (3,75,1,'2023-09-05','2023-09-05','2025-09-04','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (4,16,2,'2023-09-04','2023-09-04','2024-09-03','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (5,107,1,'2021-08-06','2021-08-06','2023-08-05','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (6,141,2,'2023-09-02','2023-09-02','2024-09-01','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (7,50,1,'2023-09-01','2023-09-01','2025-08-31','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (8,88,2,'2023-08-31','2023-08-31','2024-08-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (9,154,1,'2023-08-30','2023-08-30','2025-08-29','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (10,174,2,'2022-08-29','2022-08-29','2023-08-28','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (11,8,3,'2023-08-28','2023-08-28',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (12,36,2,'2023-08-27','2023-08-27','2024-08-26','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (13,44,1,'2023-08-26','2023-08-26','2025-08-25','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (14,37,2,'2023-08-25','2023-08-25','2024-08-24','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (15,197,1,'2021-05-18','2021-05-18','2023-05-17','Check',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (16,117,2,'2023-08-23','2023-08-23','2024-08-22','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (17,15,1,'2023-08-22','2023-08-22','2025-08-21','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (18,69,2,'2023-08-21','2023-08-21','2024-08-20','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (19,26,1,'2023-08-20','2023-08-20','2025-08-19','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (20,196,1,'2021-04-08','2021-04-08','2023-04-07','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (21,42,1,'2023-08-18','2023-08-18','2025-08-17','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (22,150,3,'2023-08-17','2023-08-17',NULL,'Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (23,7,1,'2023-08-16','2023-08-16','2025-08-15','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (24,198,2,'2023-08-15','2023-08-15','2024-08-14','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (25,186,2,'2022-08-14','2022-08-14','2023-08-13','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (26,140,2,'2023-08-13','2023-08-13','2024-08-12','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (27,163,1,'2023-08-12','2023-08-12','2025-08-11','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (28,121,2,'2023-08-11','2023-08-11','2024-08-10','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (29,162,1,'2023-08-10','2023-08-10','2025-08-09','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (30,202,2,'2022-08-09','2022-08-09','2023-08-08','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -4767,36 +4735,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,25,4,'2022-08-14','2023-08-13',11,'2023-09-07',2,NULL), - (2,6,1,'2023-09-02','2024-09-01',17,'2023-09-07',2,NULL), - (3,5,4,'2022-09-03','2023-09-02',23,'2023-09-07',2,NULL), - (4,19,1,'2023-08-20','2025-08-19',33,'2023-09-07',1,NULL), - (5,18,1,'2023-08-21','2024-08-20',44,'2023-09-07',2,NULL), - (6,10,4,'2022-08-29','2023-08-28',55,'2023-09-07',2,NULL), - (7,14,1,'2023-08-25','2024-08-24',70,'2023-09-07',2,NULL), - (8,22,1,'2023-08-17',NULL,72,'2023-09-07',3,NULL), - (9,13,1,'2023-08-26','2025-08-25',82,'2023-09-07',1,NULL), - (10,29,1,'2023-08-10','2025-08-09',90,'2023-09-07',1,NULL), - (11,28,1,'2023-08-11','2024-08-10',91,'2023-09-07',2,NULL), - (12,26,1,'2023-08-13','2024-08-12',97,'2023-09-07',2,NULL), - (13,24,1,'2023-08-15','2024-08-14',111,'2023-09-07',2,NULL), - (14,16,1,'2023-08-23','2024-08-22',114,'2023-09-07',2,NULL), - (15,23,1,'2023-08-16','2025-08-15',122,'2023-09-07',1,NULL), - (16,3,1,'2023-09-05','2025-09-04',130,'2023-09-07',1,NULL), - (17,21,1,'2023-08-18','2025-08-17',131,'2023-09-07',1,NULL), - (18,1,1,'2023-09-07','2025-09-06',134,'2023-09-07',1,NULL), - (19,11,1,'2023-08-28',NULL,145,'2023-09-07',3,NULL), - (20,20,4,'2022-08-19','2023-08-18',151,'2023-09-07',2,NULL), - (21,4,1,'2023-09-04','2024-09-03',154,'2023-09-07',2,NULL), - (22,8,1,'2023-08-31','2024-08-30',162,'2023-09-07',2,NULL), - (23,17,1,'2023-08-22','2025-08-21',165,'2023-09-07',1,NULL), - (24,7,1,'2023-09-01','2025-08-31',169,'2023-09-07',1,NULL), - (25,9,1,'2023-08-30','2025-08-29',187,'2023-09-07',1,NULL), - (26,12,1,'2023-08-27','2024-08-26',190,'2023-09-07',2,NULL), - (27,27,1,'2023-08-12','2025-08-11',191,'2023-09-07',1,NULL), - (28,2,1,'2023-09-06','2024-09-05',193,'2023-09-07',2,NULL), - (29,15,3,'2021-05-18','2023-05-17',194,'2023-09-07',1,NULL), - (30,30,4,'2022-08-09','2023-08-08',200,'2023-09-07',2,NULL); + (1,23,1,'2023-08-16','2025-08-15',7,'2023-09-07',1,NULL), + (2,11,1,'2023-08-28',NULL,8,'2023-09-07',3,NULL), + (3,1,1,'2023-09-07','2025-09-06',11,'2023-09-07',1,NULL), + (4,17,1,'2023-08-22','2025-08-21',15,'2023-09-07',1,NULL), + (5,4,1,'2023-09-04','2024-09-03',16,'2023-09-07',2,NULL), + (6,19,1,'2023-08-20','2025-08-19',26,'2023-09-07',1,NULL), + (7,2,1,'2023-09-06','2024-09-05',33,'2023-09-07',2,NULL), + (8,12,1,'2023-08-27','2024-08-26',36,'2023-09-07',2,NULL), + (9,14,1,'2023-08-25','2024-08-24',37,'2023-09-07',2,NULL), + (10,21,1,'2023-08-18','2025-08-17',42,'2023-09-07',1,NULL), + (11,13,1,'2023-08-26','2025-08-25',44,'2023-09-07',1,NULL), + (12,7,1,'2023-09-01','2025-08-31',50,'2023-09-07',1,NULL), + (13,18,1,'2023-08-21','2024-08-20',69,'2023-09-07',2,NULL), + (14,3,1,'2023-09-05','2025-09-04',75,'2023-09-07',1,NULL), + (15,8,1,'2023-08-31','2024-08-30',88,'2023-09-07',2,NULL), + (16,5,3,'2021-08-06','2023-08-05',107,'2023-09-07',1,NULL), + (17,16,1,'2023-08-23','2024-08-22',117,'2023-09-07',2,NULL), + (18,28,1,'2023-08-11','2024-08-10',121,'2023-09-07',2,NULL), + (19,26,1,'2023-08-13','2024-08-12',140,'2023-09-07',2,NULL), + (20,6,1,'2023-09-02','2024-09-01',141,'2023-09-07',2,NULL), + (21,22,1,'2023-08-17',NULL,150,'2023-09-07',3,NULL), + (22,9,1,'2023-08-30','2025-08-29',154,'2023-09-07',1,NULL), + (23,29,1,'2023-08-10','2025-08-09',162,'2023-09-07',1,NULL), + (24,27,1,'2023-08-12','2025-08-11',163,'2023-09-07',1,NULL), + (25,10,4,'2022-08-29','2023-08-28',174,'2023-09-07',2,NULL), + (26,25,4,'2022-08-14','2023-08-13',186,'2023-09-07',2,NULL), + (27,20,3,'2021-04-08','2023-04-07',196,'2023-09-07',1,NULL), + (28,15,3,'2021-05-18','2023-05-17',197,'2023-09-07',1,NULL), + (29,24,1,'2023-08-15','2024-08-14',198,'2023-09-07',2,NULL), + (30,30,4,'2022-08-09','2023-08-08',202,'2023-09-07',2,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4913,436 +4881,433 @@ INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title` (34,1,'civicrm/ajax/attachment',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:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:29:\"CRM_Core_Page_AJAX_Attachment\";i:1;s:10:\"attachFile\";}',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:{}'), (35,1,'civicrm/api',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:22:\"CRM_Core_Page_Redirect\";','s:16:\"url=civicrm/api3\";','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:{}'), (36,1,'civicrm/api3',NULL,'CiviCRM API v3','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_Admin_Page_APIExplorer\";',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:{}'), - (37,1,'civicrm/ajax/apiexample',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:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:14:\"getExampleFile\";}',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:{}'), - (38,1,'civicrm/ajax/apidoc',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:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',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:{}'), - (39,1,'civicrm/ajax/rest',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:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"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:{}'), - (40,1,'civicrm/api/json',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:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','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:{}'), - (41,1,'civicrm/inline',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:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',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:{}'), - (42,1,'civicrm/ajax/chart',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:38:\"CRM_Contribute_Form_ContributionCharts\";',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:{}'), - (43,1,'civicrm/asset/builder',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:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',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:{}'), - (44,1,'civicrm/contribute/ajax/tableview',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:29:\"CRM_Contribute_Page_DashBoard\";',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:{}'), - (45,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',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,1,1,0,0,'a:0:{}'), - (46,1,'civicrm/batch',NULL,'Batch Data Entry','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:20:\"CRM_Batch_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,1,1,0,0,'a:0:{}'), - (47,1,'civicrm/batch/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:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',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:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (48,1,'civicrm/batch/entry',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:20:\"CRM_Batch_Form_Entry\";',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:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (49,1,'civicrm/ajax/batch',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\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',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:{}'), - (50,1,'civicrm/ajax/batchlist',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_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',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:{}'), - (51,1,'civicrm/ajax/inline',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:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',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:{}'), - (52,1,'civicrm/dev/qunit',NULL,'QUnit','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:19:\"CRM_Core_Page_QUnit\";',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:{}'), - (53,1,'civicrm/dev/fake-error',NULL,'Fake Error','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:23:\"CRM_Core_Page_FakeError\";',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:{}'), - (54,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','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:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',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:{}'), - (55,1,'civicrm/a',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:23:\"\\Civi\\Angular\\Page\\Main\";',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:{}'), - (56,1,'civicrm/ajax/angular-modules',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:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',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:{}'), - (57,1,'civicrm/ajax/recurringentity/update-mode',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:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',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:{}'), - (58,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','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:36:\"CRM_Core_Page_RecurringEntityPreview\";',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:{}'), - (59,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','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:23:\"CRM_Core_Form_ShortCode\";',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:{}'), - (60,1,'civicrm/task/add-to-group',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_Contact_Form_Task_AddToGroup\";',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:{}'), - (61,1,'civicrm/task/remove-from-group',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:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',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:{}'), - (62,1,'civicrm/task/add-to-tag',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:30:\"CRM_Contact_Form_Task_AddToTag\";',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:{}'), - (63,1,'civicrm/task/remove-from-tag',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:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',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:{}'), - (64,1,'civicrm/task/send-email',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: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:{}'), - (65,1,'civicrm/task/make-mailing-label',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:27:\"CRM_Contact_Form_Task_Label\";',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:{}'), - (66,1,'civicrm/task/pick-profile',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:33:\"CRM_Contact_Form_Task_PickProfile\";',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:{}'), - (67,1,'civicrm/task/print-document',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:25:\"CRM_Contact_Form_Task_PDF\";',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:{}'), - (68,1,'civicrm/task/unhold-email',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_Unhold\";',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:{}'), - (69,1,'civicrm/task/alter-contact-preference',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:38:\"CRM_Contact_Form_Task_AlterPreferences\";',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:{}'), - (70,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:{}'), - (71,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:{}'), - (72,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:{}'), - (73,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\";}'), - (74,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:{}'), - (75,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:{}'), - (76,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:{}'), - (77,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:{}'), - (78,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:{}'), - (79,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:{}'), - (80,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:{}'), - (81,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:{}'), - (82,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:{}'), - (83,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:{}'), - (84,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:{}'), - (85,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:{}'), - (86,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:{}'), - (87,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\";}'), - (88,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:{}'), - (89,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:{}'), - (90,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:{}'), - (91,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:{}'), - (92,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:{}'), - (93,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:{}'), - (94,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:{}'), - (95,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:{}'), - (96,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:{}'), - (97,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\";}'), - (98,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:{}'), - (99,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:{}'), - (100,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:{}'), - (101,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:{}'), - (102,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:{}'), - (103,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:{}'), - (104,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:{}'), - (105,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\";}'), - (106,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\";}'), - (107,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:{}'), - (108,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\";}'), - (109,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:{}'), - (110,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\";}'), - (111,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\";}'), - (112,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\";}'), - (113,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\";}'), - (114,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:{}'), - (115,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\";}'), - (116,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\";}'), - (117,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\";}'), - (118,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\";}'), - (119,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\";}'), - (120,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\";}'), - (121,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:{}'), - (122,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\";}'), - (123,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\";}'), - (124,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\";}'), - (125,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\";}'), - (126,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\";}'), - (127,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\";}'), - (128,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\";}'), - (129,1,'civicrm/admin/scheduleReminders',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_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\";}'), - (130,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:{}'), - (131,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:{}'), - (132,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\";}'), - (133,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\";}'), - (134,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\";}'), - (135,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\";}'), - (136,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\";}'), - (137,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\";}'), - (138,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\";}'), - (139,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\";}'), - (140,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\";}'), - (141,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\";}'), - (142,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\";}'), - (143,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\";}'), - (144,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.\";}'), - (145,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\";}'), - (146,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\";}'), - (147,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\";}'), - (148,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\";}'), - (149,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:{}'), - (150,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\";}'), - (151,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\";}'), - (152,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:{}'), - (153,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\";}'), - (154,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\";}'), - (155,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\";}'), - (156,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\";}'), - (157,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\";}'), - (158,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\";}'), - (159,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\";}'), - (160,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\";}'), - (161,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\";}'), - (162,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\";}'), - (163,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\";}'), - (164,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\";}'), - (165,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\";}'), - (166,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\";}'), - (167,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\";}'), - (168,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.\";}'), - (169,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\";}'), - (170,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_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,1371,1,0,0,'a:2:{s:4:\"desc\";s:31:\"Add a periodially running task.\";s:10:\"adminGroup\";s:15:\"System Settings\";}'), - (171,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\";}'), - (172,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\";}'), - (173,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\";}'), - (174,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\";}'), - (175,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:{}'), - (176,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:{}'), - (177,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:{}'), - (178,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:{}'), - (179,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\";}'), - (180,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.\";}'), - (181,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:{}'), - (182,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:{}'), - (183,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:{}'), - (184,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:{}'), - (185,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:{}'), - (186,1,'civicrm/ajax/mapping',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:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:11:\"mappingList\";}',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/ajax/recipientListing',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:16:\"access CiviEvent\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Admin_Page_AJAX\";i:1;s:16:\"recipientListing\";}',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:{}'), - (188,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\";}'), - (189,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:{}'), - (190,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:{}'), - (191,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\";}'), - (192,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:{}'), - (193,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:{}'), - (194,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:{}'), - (195,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:{}'), - (196,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:{}'), - (197,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:{}'), - (198,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:{}'), - (199,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:{}'), - (200,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:{}'), - (201,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:{}'), - (202,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:{}'), - (203,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:{}'), - (204,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:{}'), - (205,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:{}'), - (206,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:{}'), - (207,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:{}'), - (208,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:{}'), - (209,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:{}'), - (210,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:{}'), - (211,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:{}'), - (212,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:{}'), - (213,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:{}'), - (214,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:{}'), - (215,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:{}'), - (216,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:{}'), - (217,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:{}'), - (218,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:{}'), - (219,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','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:26:\"CRM_Contact_Page_View_Note\";',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:{}'), - (220,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:{}'), - (221,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:{}'), - (222,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:{}'), - (223,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:{}'), - (224,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:{}'), - (225,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:{}'), - (226,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:{}'), - (227,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:{}'), - (228,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:{}'), - (229,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:{}'), - (230,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:{}'), - (231,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:{}'), - (232,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:{}'), - (233,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:{}'), - (234,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:{}'), - (235,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:{}'), - (236,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:{}'), - (237,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:{}'), - (238,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:{}'), - (239,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:{}'), - (240,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:{}'), - (241,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:{}'), - (242,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:{}'), - (243,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:{}'), - (244,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:{}'), - (245,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\";}'), - (246,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:{}'), - (247,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:{}'), - (248,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:{}'), - (249,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\";}'), - (250,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:{}'), - (251,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:{}'), - (252,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:{}'), - (253,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:{}'), - (254,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:{}'), - (255,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:{}'), - (256,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:{}'), - (257,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:{}'), - (258,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:{}'), - (259,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:{}'), - (260,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\";}'), - (261,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:{}'), - (262,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:{}'), - (263,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:{}'), - (264,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\";}'), - (265,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:{}'), - (266,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:{}'), - (267,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:{}'), - (268,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:{}'), - (269,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:{}'), - (270,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:{}'), - (271,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:{}'), - (272,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\";}'), - (273,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\";}'), - (274,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:{}'), - (275,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:{}'), - (276,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:{}'), - (277,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:{}'), - (278,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:{}'), - (279,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:{}'), - (280,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\";}'), - (281,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\";}'), - (282,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\";}'), - (283,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\";}'), - (284,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\";}'), - (285,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\";}'), - (286,1,'civicrm/admin/options/conference_slot',NULL,'Conference Slot Labels','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,415,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), - (287,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:{}'), - (288,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:{}'), - (289,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:{}'), - (290,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:{}'), - (291,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:{}'), - (292,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:{}'), - (293,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:{}'), - (294,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:{}'), - (295,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:{}'), - (296,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:{}'), - (297,1,'civicrm/event/manage/conference',NULL,'Conference Slots','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:37:\"CRM_Event_Form_ManageEvent_Conference\";',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:{}'), - (298,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:{}'), - (299,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:{}'), - (300,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:{}'), - (301,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:{}'), - (302,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:{}'), - (303,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:{}'), - (304,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:{}'), - (305,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:{}'), - (306,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:{}'), - (307,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:{}'), - (308,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:{}'), - (309,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\";}'), - (310,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\";}'), - (311,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\";}'), - (312,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:{}'), - (313,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\";}'), - (314,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:{}'), - (315,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:{}'), - (316,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:{}'), - (317,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:{}'), - (318,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:{}'), - (319,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:{}'), - (320,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:{}'), - (321,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:{}'), - (322,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:{}'), - (323,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:{}'), - (324,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\";}'), - (325,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\";}'), - (326,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:{}'), - (327,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\";}'), - (328,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\";}'), - (329,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:{}'), - (330,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\";}'), - (331,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\";}'), - (332,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\";}'), - (333,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:{}'), - (334,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:{}'), - (335,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:{}'), - (336,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:{}'), - (337,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:{}'), - (338,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:{}'), - (339,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:{}'), - (340,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:{}'), - (341,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:{}'), - (342,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:{}'), - (343,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:{}'), - (344,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:{}'), - (345,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:{}'), - (346,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:{}'), - (347,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:{}'), - (348,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:{}'), - (349,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:{}'), - (350,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:{}'), - (351,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\";}'), - (352,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\";}'), - (353,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\";}'), - (354,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\";}'), - (355,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:{}'), - (356,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:{}'), - (357,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:{}'), - (358,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:{}'), - (359,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:{}'), - (360,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\";}'), - (361,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\";}'), - (362,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\";}'), - (363,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','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_Member_Page_MembershipStatus\";',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: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:10:\"adminGroup\";s:10:\"CiviMember\";}'), - (364,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','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: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:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'), - (365,1,'civicrm/membership/view',NULL,'Memberships','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:30:\"CRM_Member_Form_MembershipView\";',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,390,1,0,0,'a:0:{}'), - (366,1,'civicrm/member/search',NULL,'Find Memberships','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:28:\"CRM_Member_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:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'), - (367,1,'civicrm/member/import',NULL,'Import Memberships','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:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_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:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'), - (368,1,'civicrm/ajax/memType',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:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',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:{}'), - (369,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','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:30:\"CRM_Member_Form_MembershipType\";',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:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (370,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'), - (371,1,'civicrm/admin/mail',NULL,'Mailer Settings','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',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,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (372,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_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,410,1,0,0,'a:2:{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:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (373,1,'civicrm/admin/options/from_email_address/civimail',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: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:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,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:8:\"CiviMail\";}'), - (374,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',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:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (375,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',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:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), - (376,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'), - (377,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), - (378,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), - (379,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','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:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'), - (380,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','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:26:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'), - (381,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'), - (382,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'), - (383,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'), - (384,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), - (385,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), - (386,1,'civicrm/mailing/preview',NULL,'Preview Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Page_Preview\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,670,1,0,0,'a:0:{}'), - (387,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','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:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'), - (388,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'), - (389,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'), - (390,1,'civicrm/ajax/template',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_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',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:{}'), - (391,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'), - (392,1,'civicrm/mailing/approve',NULL,'Approve Mailing','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:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'), - (393,1,'civicrm/contact/view/mailing',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:20:\"CRM_Mailing_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:{}'), - (394,1,'civicrm/ajax/contactmailing',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_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',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:{}'), - (395,1,'civicrm/ajax/setupMailAccount',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:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',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:{}'), - (396,1,'civicrm/mailing/url',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:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), - (397,1,'civicrm/mailing/open',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:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), - (398,1,'civicrm/pledge',NULL,'CiviPledge 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 CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_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,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), - (399,1,'civicrm/pledge/search',NULL,'Find Pledges','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 CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_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:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'), - (400,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','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 CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_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,570,1,0,0,'a:0:{}'), - (401,1,'civicrm/pledge/add','action=add','New Pledge','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 CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_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:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), - (402,1,'civicrm/pledge/payment',NULL,'Pledge Payments','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 CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_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:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'), - (403,1,'civicrm/ajax/pledgeAmount',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:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',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:{}'), - (404,1,'civicrm/case',NULL,'CiviCase Dashboard','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:23:\"CRM_Case_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,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), - (405,1,'civicrm/case/add',NULL,'Open Case','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_Case_Form_Case\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), - (406,1,'civicrm/case/search',NULL,'Find Cases','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_Case_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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'), - (407,1,'civicrm/case/activity',NULL,'Case 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:22:\"CRM_Case_Form_Activity\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (408,1,'civicrm/case/report',NULL,'Case Activity Audit','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:20:\"CRM_Case_Form_Report\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (409,1,'civicrm/case/cd/edit',NULL,'Case 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:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (410,1,'civicrm/contact/view/case',NULL,'Case','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:17:\"CRM_Case_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:{}'), - (411,1,'civicrm/case/activity/view',NULL,'Activity View','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_Case_Form_ActivityView\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (412,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','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_Case_Form_EditClient\";',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:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (413,1,'civicrm/case/addToCase',NULL,'File on Case','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_Case_Form_ActivityToCase\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (414,1,'civicrm/case/details',NULL,'Case Details','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_Case_Page_CaseDetails\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (415,1,'civicrm/admin/setting/case',NULL,'CiviCase 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:27:\"CRM_Admin_Form_Setting_Case\";',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:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (416,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','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,390,1,0,0,'a:2:{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:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (417,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}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,400,1,0,0,'a:2:{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:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (418,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}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,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (419,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}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,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), - (420,1,'civicrm/case/report/print',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:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (421,1,'civicrm/case/ajax/addclient',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:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (422,1,'civicrm/case/ajax/processtags',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:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'), - (423,1,'civicrm/case/ajax/details',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:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (424,1,'civicrm/ajax/delcaserole',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:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',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:{}'), - (425,1,'civicrm/ajax/get-cases',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:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',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:{}'), - (426,1,'civicrm/case/email/add','action=add,task=email','Email','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_Case_Form_Task_Email\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), - (427,1,'civicrm/report',NULL,'CiviReport','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 CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'), - (428,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), - (429,1,'civicrm/report/template/list',NULL,'Create New Report from Template','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 Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'), - (430,1,'civicrm/report/options/report_template',NULL,'Manage Templates','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 Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'), - (431,1,'civicrm/admin/report/register',NULL,'Register Report','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 Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',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:30:\"Register the Report templates.\";}'), - (432,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), - (433,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','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:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',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:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), - (434,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','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:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_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,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), - (435,1,'civicrm/admin/report/list',NULL,'Reports Listing','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:28:\"CRM_Report_Page_InstanceList\";',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:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), - (436,1,'civicrm/campaign',NULL,'Campaign Dashboard','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:27:\"CRM_Campaign_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,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (437,1,'civicrm/campaign/add',NULL,'New Campaign','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:26:\"CRM_Campaign_Form_Campaign\";',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (438,1,'civicrm/survey/add',NULL,'New 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:29:\"CRM_Campaign_Form_Survey_Main\";',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:12:\"CiviCampaign\";}'), - (439,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (440,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','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 CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',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:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (441,1,'civicrm/admin/options/campaign_type',NULL,'Campaign 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,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (442,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','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,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (443,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','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,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), - (444,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',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:12:\"CiviCampaign\";}'), - (445,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), - (446,1,'civicrm/petition/add',NULL,'New Petition','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:26:\"CRM_Campaign_Form_Petition\";',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:{}'), - (447,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',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:{}'), - (448,1,'civicrm/petition/browse',NULL,'View Petition Signatures','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_Campaign_Page_Petition\";',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:{}'), - (449,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',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:{}'), - (450,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',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:{}'), - (451,1,'civicrm/campaign/registerInterview',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:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:0:{}'), - (452,1,'civicrm/survey/configure/main',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:29:\"CRM_Campaign_Form_Survey_Main\";',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:{}'), - (453,1,'civicrm/survey/configure/questions',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:34:\"CRM_Campaign_Form_Survey_Questions\";',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:{}'), - (454,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:{}'), - (455,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:{}'), - (456,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:{}'), - (457,1,'civicrm/ajax/event/add_participant_to_cart',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:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',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:{}'), - (458,1,'civicrm/ajax/event/remove_participant_from_cart',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:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',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:{}'), - (459,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','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:29:\"CRM_Event_Cart_Page_AddToCart\";',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:{}'), - (460,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','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:34:\"CRM_Event_Cart_Controller_Checkout\";',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:{}'), - (461,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','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:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',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:{}'), - (462,1,'civicrm/event/view_cart',NULL,'View Cart','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_Cart_Page_ViewCart\";',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:{}'), - (463,1,'civicrm/contact/search/custom',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:42:\"CRM_Legacycustomsearches_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;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,10,1,1,0,'a:0:{}'), - (464,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','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_Page_CustomSearch\";','s:10:\"mode=16384\";','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:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:38:\"/civicrm/contact/search/custom?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,16,1,1,0,'a:0:{}'), - (465,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\";}'), - (466,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{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: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:21:{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:26:\"{weight}.Add Scheduled Job\";a:6:{s:5:\"title\";s:17:\"Add Scheduled Job\";s:4:\"desc\";s:31:\"Add a periodially running task.\";s:2:\"id\";s:15:\"AddScheduledJob\";s:3:\"url\";s:30:\"/civicrm/admin/job/add?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:9:{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:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:46:\"/civicrm/admin/options/conference_slot?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: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:{}'); + (37,1,'civicrm/ajax/apidoc',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:26:\"CRM_Admin_Page_APIExplorer\";i:1;s:6:\"getDoc\";}',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:{}'), + (38,1,'civicrm/ajax/rest',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:\"access AJAX API\";}i:1;s:2:\"or\";}','a:2:{i:0;s:14:\"CRM_Utils_REST\";i:1;s:4:\"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:{}'), + (39,1,'civicrm/api/json',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:14:\"CRM_Utils_REST\";i:1;s:8:\"ajaxJson\";}','s:16:\"url=civicrm/api3\";','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:{}'), + (40,1,'civicrm/inline',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:14:\"CRM_Utils_REST\";i:1;s:12:\"loadTemplate\";}',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:{}'), + (41,1,'civicrm/ajax/chart',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:38:\"CRM_Contribute_Form_ContributionCharts\";',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:{}'), + (42,1,'civicrm/asset/builder',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:\"*always allow*\";}i:1;s:3:\"and\";}','a:2:{i:0;s:23:\"\\Civi\\Core\\AssetBuilder\";i:1;s:7:\"pageRun\";}',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:{}'), + (43,1,'civicrm/contribute/ajax/tableview',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:29:\"CRM_Contribute_Page_DashBoard\";',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:{}'), + (44,1,'civicrm/payment/ipn',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:16:\"CRM_Core_Payment\";i:1;s:9:\"handleIPN\";}',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,1,1,0,0,'a:0:{}'), + (45,1,'civicrm/batch',NULL,'Batch Data Entry','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:20:\"CRM_Batch_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,1,1,0,0,'a:0:{}'), + (46,1,'civicrm/batch/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:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:20:\"CRM_Batch_Form_Batch\";',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:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (47,1,'civicrm/batch/entry',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:20:\"CRM_Batch_Form_Entry\";',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:\"Batch Data Entry\";s:3:\"url\";s:22:\"/civicrm/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (48,1,'civicrm/ajax/batch',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\";}','a:2:{i:0;s:19:\"CRM_Batch_Page_AJAX\";i:1;s:9:\"batchSave\";}',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:{}'), + (49,1,'civicrm/ajax/batchlist',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_Batch_Page_AJAX\";i:1;s:12:\"getBatchList\";}',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:{}'), + (50,1,'civicrm/ajax/inline',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:18:\"CRM_Core_Page_AJAX\";i:1;s:3:\"run\";}',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:{}'), + (51,1,'civicrm/dev/qunit',NULL,'QUnit','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:19:\"CRM_Core_Page_QUnit\";',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:{}'), + (52,1,'civicrm/dev/fake-error',NULL,'Fake Error','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:23:\"CRM_Core_Page_FakeError\";',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:{}'), + (53,1,'civicrm/profile-editor/schema',NULL,'ProfileEditor','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:25:\"CRM_UF_Page_ProfileEditor\";i:1;s:13:\"getSchemaJSON\";}',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:{}'), + (54,1,'civicrm/a',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:23:\"\\Civi\\Angular\\Page\\Main\";',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:{}'), + (55,1,'civicrm/ajax/angular-modules',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:\"*always allow*\";}i:1;s:3:\"and\";}','s:26:\"\\Civi\\Angular\\Page\\Modules\";',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:{}'), + (56,1,'civicrm/ajax/recurringentity/update-mode',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:34:\"CRM_Core_Page_AJAX_RecurringEntity\";i:1;s:10:\"updateMode\";}',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:{}'), + (57,1,'civicrm/recurringentity/preview',NULL,'Confirm dates','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:36:\"CRM_Core_Page_RecurringEntityPreview\";',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:{}'), + (58,1,'civicrm/shortcode',NULL,'Insert CiviCRM Content','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:23:\"CRM_Core_Form_ShortCode\";',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:{}'), + (59,1,'civicrm/task/add-to-group',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_Contact_Form_Task_AddToGroup\";',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:{}'), + (60,1,'civicrm/task/remove-from-group',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:37:\"CRM_Contact_Form_Task_RemoveFromGroup\";',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:{}'), + (61,1,'civicrm/task/add-to-tag',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:30:\"CRM_Contact_Form_Task_AddToTag\";',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:{}'), + (62,1,'civicrm/task/remove-from-tag',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:35:\"CRM_Contact_Form_Task_RemoveFromTag\";',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:{}'), + (63,1,'civicrm/task/send-email',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: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:{}'), + (64,1,'civicrm/task/make-mailing-label',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:27:\"CRM_Contact_Form_Task_Label\";',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:{}'), + (65,1,'civicrm/task/pick-profile',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:33:\"CRM_Contact_Form_Task_PickProfile\";',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:{}'), + (66,1,'civicrm/task/print-document',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:25:\"CRM_Contact_Form_Task_PDF\";',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:{}'), + (67,1,'civicrm/task/unhold-email',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_Unhold\";',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:{}'), + (68,1,'civicrm/task/alter-contact-preference',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:38:\"CRM_Contact_Form_Task_AlterPreferences\";',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:{}'), + (69,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:{}'), + (70,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:{}'), + (71,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:{}'), + (72,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\";}'), + (73,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:{}'), + (74,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:{}'), + (75,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:{}'), + (76,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:{}'), + (77,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:{}'), + (78,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:{}'), + (79,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:{}'), + (80,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:{}'), + (81,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:{}'), + (82,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:{}'), + (83,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:{}'), + (84,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:{}'), + (85,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:{}'), + (86,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\";}'), + (87,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:{}'), + (88,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:{}'), + (89,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:{}'), + (90,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:{}'), + (91,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:{}'), + (92,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:{}'), + (93,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:{}'), + (94,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:{}'), + (95,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:{}'), + (96,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\";}'), + (97,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:{}'), + (98,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:{}'), + (99,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:{}'), + (100,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:{}'), + (101,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:{}'), + (102,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:{}'), + (103,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:{}'), + (104,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\";}'), + (105,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\";}'), + (106,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:{}'), + (107,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\";}'), + (108,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:{}'), + (109,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\";}'), + (110,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\";}'), + (111,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\";}'), + (112,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\";}'), + (113,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:{}'), + (114,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\";}'), + (115,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\";}'), + (116,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\";}'), + (117,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\";}'), + (118,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\";}'), + (119,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\";}'), + (120,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:{}'), + (121,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\";}'), + (122,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\";}'), + (123,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\";}'), + (124,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\";}'), + (125,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\";}'), + (126,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\";}'), + (127,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\";}'), + (128,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\";}'), + (129,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:{}'), + (130,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:{}'), + (131,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\";}'), + (132,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\";}'), + (133,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\";}'), + (134,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\";}'), + (135,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\";}'), + (136,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\";}'), + (137,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\";}'), + (138,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\";}'), + (139,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\";}'), + (140,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\";}'), + (141,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\";}'), + (142,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\";}'), + (143,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.\";}'), + (144,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\";}'), + (145,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\";}'), + (146,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\";}'), + (147,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\";}'), + (148,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:{}'), + (149,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\";}'), + (150,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\";}'), + (151,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:{}'), + (152,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\";}'), + (153,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\";}'), + (154,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\";}'), + (155,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\";}'), + (156,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\";}'), + (157,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\";}'), + (158,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\";}'), + (159,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\";}'), + (160,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\";}'), + (161,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\";}'), + (162,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\";}'), + (163,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\";}'), + (164,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\";}'), + (165,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\";}'), + (166,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\";}'), + (167,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.\";}'), + (168,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\";}'), + (169,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.\";}'), + (170,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\";}'), + (171,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\";}'), + (172,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\";}'), + (173,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\";}'), + (174,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:{}'), + (175,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:{}'), + (176,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:{}'), + (177,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:{}'), + (178,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\";}'), + (179,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.\";}'), + (180,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:{}'), + (181,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:{}'), + (182,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:{}'), + (183,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:{}'), + (184,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:{}'), + (185,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\";}'), + (186,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:{}'), + (187,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:{}'), + (188,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\";}'), + (189,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:{}'), + (190,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:{}'), + (191,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:{}'), + (192,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:{}'), + (193,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:{}'), + (194,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:{}'), + (195,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:{}'), + (196,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:{}'), + (197,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:{}'), + (198,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:{}'), + (199,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:{}'), + (200,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:{}'), + (201,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:{}'), + (202,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:{}'), + (203,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:{}'), + (204,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:{}'), + (205,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:{}'), + (206,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:{}'), + (207,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:{}'), + (208,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:{}'), + (209,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:{}'), + (210,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:{}'), + (211,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:{}'), + (212,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:{}'), + (213,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:{}'), + (214,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:{}'), + (215,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:{}'), + (216,1,'civicrm/contact/view/note','cid=%%cid%%','Notes','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:26:\"CRM_Contact_Page_View_Note\";',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/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:{}'), + (218,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:{}'), + (219,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:{}'), + (220,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:{}'), + (221,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:{}'), + (222,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:{}'), + (223,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:{}'), + (224,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:{}'), + (225,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:{}'), + (226,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:{}'), + (227,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:{}'), + (228,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:{}'), + (229,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:{}'), + (230,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:{}'), + (231,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:{}'), + (232,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:{}'), + (233,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:{}'), + (234,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:{}'), + (235,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:{}'), + (236,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:{}'), + (237,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:{}'), + (238,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:{}'), + (239,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:{}'), + (240,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:{}'), + (241,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:{}'), + (242,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\";}'), + (243,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:{}'), + (244,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:{}'), + (245,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:{}'), + (246,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\";}'), + (247,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:{}'), + (248,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:{}'), + (249,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:{}'), + (250,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:{}'), + (251,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:{}'), + (252,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:{}'), + (253,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:{}'), + (254,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:{}'), + (255,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:{}'), + (256,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:{}'), + (257,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\";}'), + (258,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:{}'), + (259,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:{}'), + (260,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:{}'), + (261,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\";}'), + (262,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:{}'), + (263,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:{}'), + (264,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:{}'), + (265,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:{}'), + (266,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:{}'), + (267,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:{}'), + (268,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:{}'), + (269,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\";}'), + (270,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\";}'), + (271,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:{}'), + (272,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:{}'), + (273,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:{}'), + (274,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:{}'), + (275,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:{}'), + (276,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:{}'), + (277,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\";}'), + (278,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\";}'), + (279,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\";}'), + (280,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\";}'), + (281,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\";}'), + (282,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\";}'), + (283,1,'civicrm/admin/options/conference_slot',NULL,'Conference Slot Labels','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,415,1,0,0,'a:2:{s:4:\"desc\";s:35:\"Define conference slots and labels.\";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/manage/conference',NULL,'Conference Slots','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:37:\"CRM_Event_Form_ManageEvent_Conference\";',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:{}'), + (295,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:{}'), + (296,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:{}'), + (297,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:{}'), + (298,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:{}'), + (299,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:{}'), + (300,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:{}'), + (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\";}'), + (360,1,'civicrm/admin/member/membershipStatus',NULL,'Membership Status Rules','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_Member_Page_MembershipStatus\";',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: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:10:\"adminGroup\";s:10:\"CiviMember\";}'), + (361,1,'civicrm/contact/view/membership','force=1,cid=%%cid%%','Memberships','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: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:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,2,1,0,0,'a:0:{}'), + (362,1,'civicrm/membership/view',NULL,'Memberships','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:30:\"CRM_Member_Form_MembershipView\";',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,390,1,0,0,'a:0:{}'), + (363,1,'civicrm/member/search',NULL,'Find Memberships','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:28:\"CRM_Member_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:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,710,1,1,0,'a:0:{}'), + (364,1,'civicrm/member/import',NULL,'Import Memberships','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:16:\"edit memberships\";}i:1;s:3:\"and\";}','s:28:\"CRM_Member_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:20:\"CiviMember Dashboard\";s:3:\"url\";s:23:\"/civicrm/member?reset=1\";}}',NULL,NULL,3,1,0,1,0,720,1,1,0,'a:0:{}'), + (365,1,'civicrm/ajax/memType',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:17:\"access CiviMember\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Member_Page_AJAX\";i:1;s:21:\"getMemberTypeDefaults\";}',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:{}'), + (366,1,'civicrm/admin/member/membershipType/add',NULL,'Membership Types','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:30:\"CRM_Member_Form_MembershipType\";',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:16:\"Membership Types\";s:3:\"url\";s:44:\"/civicrm/admin/member/membershipType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (367,1,'civicrm/mailing',NULL,'CiviMail','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,4,1,0,1,0,600,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviMail\";}'), + (368,1,'civicrm/admin/mail',NULL,'Mailer Settings','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_Setting_Mail\";',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,400,1,0,0,'a:2:{s:4:\"desc\";s:61:\"Configure spool period, throttling and other mailer settings.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (369,1,'civicrm/admin/component',NULL,'Headers, Footers, and Automated Messages','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Page_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,410,1,0,0,'a:2:{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:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (370,1,'civicrm/admin/options/from_email_address/civimail',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: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:20:\"From Email Addresses\";s:3:\"url\";s:49:\"/civicrm/admin/options/from_email_address?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,415,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:8:\"CiviMail\";}'), + (371,1,'civicrm/admin/mailSettings',NULL,'Mail Accounts','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Page_MailSettings\";',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:20:\"List email accounts.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), + (372,1,'civicrm/admin/mailSettings/edit',NULL,'Mail Accounts','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:\"access CiviMail\";}i:1;s:3:\"and\";}','s:27:\"CRM_Admin_Form_MailSettings\";',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:\"Mail Accounts\";s:3:\"url\";s:35:\"/civicrm/admin/mailSettings?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), + (373,1,'civicrm/mailing/send',NULL,'New Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:27:\"CRM_Mailing_Controller_Send\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,610,1,1,0,'a:0:{}'), + (374,1,'civicrm/mailing/browse/scheduled','scheduled=true','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:5:{i:0;s:15:\"access CiviMail\";i:1;s:16:\"approve mailings\";i:2;s:15:\"create mailings\";i:3;s:17:\"schedule mailings\";i:4;s:8:\"send SMS\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), + (375,1,'civicrm/mailing/browse/unscheduled','scheduled=false','Find Mailings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:15:\"access CiviMail\";i:1;s:15:\"create mailings\";i:2;s:17:\"schedule mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,620,1,1,0,'a:0:{}'), + (376,1,'civicrm/mailing/browse/archived',NULL,'Find Mailings','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:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Browse\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,625,1,1,0,'a:0:{}'), + (377,1,'civicrm/mailing/component',NULL,'Headers, Footers, and Automated Messages','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:26:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,630,1,1,0,'a:0:{}'), + (378,1,'civicrm/mailing/unsubscribe',NULL,'Unsubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Form_Unsubscribe\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,640,1,0,0,'a:0:{}'), + (379,1,'civicrm/mailing/resubscribe',NULL,'Resubscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:28:\"CRM_Mailing_Page_Resubscribe\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,645,1,0,0,'a:0:{}'), + (380,1,'civicrm/mailing/optout',NULL,'Opt-out','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:23:\"CRM_Mailing_Form_Optout\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,650,1,0,0,'a:0:{}'), + (381,1,'civicrm/mailing/confirm',NULL,'Confirm','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:24:\"CRM_Mailing_Page_Confirm\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), + (382,1,'civicrm/mailing/subscribe',NULL,'Subscribe','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:26:\"CRM_Mailing_Form_Subscribe\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,660,1,0,0,'a:0:{}'), + (383,1,'civicrm/mailing/report','mid=%%mid%%','Mailing Report','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:15:\"create mailings\";}i:1;s:2:\"or\";}','s:23:\"CRM_Mailing_Page_Report\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,680,1,0,0,'a:0:{}'), + (384,1,'civicrm/mailing/forward',NULL,'Forward Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:43:\"access CiviMail subscribe/unsubscribe pages\";}i:1;s:3:\"and\";}','s:31:\"CRM_Mailing_Form_ForwardMailing\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,685,1,0,0,'a:0:{}'), + (385,1,'civicrm/mailing/report/event',NULL,'Mailing Event','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"access CiviMail\";}i:1;s:3:\"and\";}','s:22:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}i:2;a:2:{s:5:\"title\";s:14:\"Mailing Report\";s:3:\"url\";s:47:\"/civicrm/mailing/report?reset=1&mid=%%mid%%\";}}',NULL,NULL,4,1,0,1,0,695,1,0,0,'a:0:{}'), + (386,1,'civicrm/ajax/template',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_Mailing_Page_AJAX\";i:1;s:8:\"template\";}',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:{}'), + (387,1,'civicrm/mailing/view',NULL,'View Mailing','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:28:\"view public CiviMail content\";i:1;s:15:\"access CiviMail\";i:2;s:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:21:\"CRM_Mailing_Page_View\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,800,1,0,0,'a:0:{}'), + (388,1,'civicrm/mailing/approve',NULL,'Approve Mailing','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:16:\"approve mailings\";}i:1;s:2:\"or\";}','s:24:\"CRM_Mailing_Form_Approve\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,0,1,0,850,1,0,0,'a:0:{}'), + (389,1,'civicrm/contact/view/mailing',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:20:\"CRM_Mailing_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:{}'), + (390,1,'civicrm/ajax/contactmailing',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_Mailing_Page_AJAX\";i:1;s:18:\"getContactMailings\";}',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:{}'), + (391,1,'civicrm/ajax/setupMailAccount',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:\"access CiviMail\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Mailing_Page_AJAX\";i:1;s:5:\"setup\";}',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:{}'), + (392,1,'civicrm/mailing/url',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:\"*always allow*\";}i:1;s:3:\"and\";}','s:20:\"CRM_Mailing_Page_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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), + (393,1,'civicrm/mailing/open',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:\"*always allow*\";}i:1;s:3:\"and\";}','s:21:\"CRM_Mailing_Page_Open\";',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:8:\"CiviMail\";s:3:\"url\";s:24:\"/civicrm/mailing?reset=1\";}}',NULL,NULL,4,1,1,1,0,1,1,0,0,'a:0:{}'), + (394,1,'civicrm/pledge',NULL,'CiviPledge 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 CiviPledge\";}i:1;s:3:\"and\";}','s:25:\"CRM_Pledge_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,6,1,0,1,0,550,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), + (395,1,'civicrm/pledge/search',NULL,'Find Pledges','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 CiviPledge\";}i:1;s:3:\"and\";}','s:28:\"CRM_Pledge_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:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,560,1,1,0,'a:0:{}'), + (396,1,'civicrm/contact/view/pledge','force=1,cid=%%cid%%','Pledges','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 CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_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,570,1,0,0,'a:0:{}'), + (397,1,'civicrm/pledge/add','action=add','New Pledge','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 CiviPledge\";}i:1;s:3:\"and\";}','s:19:\"CRM_Pledge_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:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviPledge\";}'), + (398,1,'civicrm/pledge/payment',NULL,'Pledge Payments','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 CiviPledge\";}i:1;s:3:\"and\";}','s:23:\"CRM_Pledge_Page_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:20:\"CiviPledge Dashboard\";s:3:\"url\";s:23:\"/civicrm/pledge?reset=1\";}}',NULL,NULL,6,1,0,1,0,580,1,0,0,'a:0:{}'), + (399,1,'civicrm/ajax/pledgeAmount',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:17:\"access CiviPledge\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:20:\"CRM_Pledge_Page_AJAX\";i:1;s:17:\"getPledgeDefaults\";}',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:{}'), + (400,1,'civicrm/case',NULL,'CiviCase Dashboard','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:23:\"CRM_Case_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,7,1,0,1,0,900,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), + (401,1,'civicrm/case/add',NULL,'Open Case','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_Case_Form_Case\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:8:\"CiviCase\";}'), + (402,1,'civicrm/case/search',NULL,'Find Cases','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_Case_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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,910,1,1,0,'a:0:{}'), + (403,1,'civicrm/case/activity',NULL,'Case 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:22:\"CRM_Case_Form_Activity\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (404,1,'civicrm/case/report',NULL,'Case Activity Audit','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:20:\"CRM_Case_Form_Report\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (405,1,'civicrm/case/cd/edit',NULL,'Case 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:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Case_Form_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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (406,1,'civicrm/contact/view/case',NULL,'Case','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:17:\"CRM_Case_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:{}'), + (407,1,'civicrm/case/activity/view',NULL,'Activity View','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_Case_Form_ActivityView\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Case Activity\";s:3:\"url\";s:30:\"/civicrm/case/activity?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (408,1,'civicrm/contact/view/case/editClient',NULL,'Assign to Another Client','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_Case_Form_EditClient\";',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:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (409,1,'civicrm/case/addToCase',NULL,'File on Case','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_Case_Form_ActivityToCase\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (410,1,'civicrm/case/details',NULL,'Case Details','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_Case_Page_CaseDetails\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (411,1,'civicrm/admin/setting/case',NULL,'CiviCase 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:27:\"CRM_Admin_Form_Setting_Case\";',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:1:{s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (412,1,'civicrm/admin/options/case_type',NULL,'Case Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}i:1;s:3:\"and\";}','s:22:\"CRM_Core_Page_Redirect\";','s:24:\"url=civicrm/a/#/caseType\";','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,390,1,0,0,'a:2:{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:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (413,1,'civicrm/admin/options/redaction_rule',NULL,'Redaction Rules','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}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,400,1,0,0,'a:2:{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:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (414,1,'civicrm/admin/options/case_status',NULL,'Case Statuses','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}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,400,1,0,0,'a:2:{s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (415,1,'civicrm/admin/options/encounter_medium',NULL,'Encounter Mediums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"administer CiviCase\";}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,400,1,0,0,'a:2:{s:4:\"desc\";s:26:\"List of encounter mediums.\";s:10:\"adminGroup\";s:8:\"CiviCase\";}'), + (416,1,'civicrm/case/report/print',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:31:\"access all cases and activities\";}i:1;s:3:\"and\";}','a:2:{i:0;s:28:\"CRM_Case_XMLProcessor_Report\";i:1;s:15:\"printCaseReport\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}i:2;a:2:{s:5:\"title\";s:19:\"Case Activity Audit\";s:3:\"url\";s:28:\"/civicrm/case/report?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (417,1,'civicrm/case/ajax/addclient',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:18:\"CRM_Case_Page_AJAX\";i:1;s:9:\"addClient\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (418,1,'civicrm/case/ajax/processtags',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:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"processCaseTags\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,3,0,'a:0:{}'), + (419,1,'civicrm/case/ajax/details',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:18:\"CRM_Case_Page_AJAX\";i:1;s:11:\"CaseDetails\";}',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (420,1,'civicrm/ajax/delcaserole',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:18:\"CRM_Case_Page_AJAX\";i:1;s:15:\"deleteCaseRoles\";}',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:{}'), + (421,1,'civicrm/ajax/get-cases',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:18:\"CRM_Case_Page_AJAX\";i:1;s:8:\"getCases\";}',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:{}'), + (422,1,'civicrm/case/email/add','action=add,task=email','Email','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_Case_Form_Task_Email\";',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:18:\"CiviCase Dashboard\";s:3:\"url\";s:21:\"/civicrm/case?reset=1\";}}',NULL,NULL,7,1,0,1,0,1,1,0,0,'a:0:{}'), + (423,1,'civicrm/contact/view/case/deleteClient',NULL,'Remove Client','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:26:\"CRM_Case_Form_DeleteClient\";',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:4:\"Case\";s:3:\"url\";s:34:\"/civicrm/contact/view/case?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (424,1,'civicrm/report',NULL,'CiviReport','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 CiviReport\";}i:1;s:3:\"and\";}','s:22:\"CRM_Report_Page_Report\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,8,1,0,1,0,1200,1,1,0,'a:1:{s:9:\"component\";s:10:\"CiviReport\";}'), + (425,1,'civicrm/report/list',NULL,'CiviCRM Reports','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_InstanceList\";',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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), + (426,1,'civicrm/report/template/list',NULL,'Create New Report from Template','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 Reports\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1220,1,1,0,'a:0:{}'), + (427,1,'civicrm/report/options/report_template',NULL,'Manage Templates','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 Reports\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1241,1,1,0,'a:0:{}'), + (428,1,'civicrm/admin/report/register',NULL,'Register Report','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 Reports\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Form_Register\";',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:30:\"Register the Report templates.\";}'), + (429,1,'civicrm/report/instance',NULL,'Report','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:24:\"CRM_Report_Page_Instance\";',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:\"CiviReport\";s:3:\"url\";s:23:\"/civicrm/report?reset=1\";}}',NULL,NULL,8,1,0,1,0,1,1,0,0,'a:0:{}'), + (430,1,'civicrm/admin/report/template/list',NULL,'Create New Report from Template','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:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:28:\"CRM_Report_Page_TemplateList\";',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:49:\"Component wise listing of all available templates\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), + (431,1,'civicrm/admin/report/options/report_template',NULL,'Manage Templates','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:17:\"access CiviReport\";}i:1;s:3:\"and\";}','s:23:\"CRM_Report_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,1,1,0,0,'a:2:{s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), + (432,1,'civicrm/admin/report/list',NULL,'Reports Listing','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:28:\"CRM_Report_Page_InstanceList\";',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:60:\"Browse existing report, change report criteria and settings.\";s:10:\"adminGroup\";s:10:\"CiviReport\";}'), + (433,1,'civicrm/campaign',NULL,'Campaign Dashboard','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:27:\"CRM_Campaign_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,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (434,1,'civicrm/campaign/add',NULL,'New Campaign','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:26:\"CRM_Campaign_Form_Campaign\";',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (435,1,'civicrm/survey/add',NULL,'New 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:29:\"CRM_Campaign_Form_Survey_Main\";',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:12:\"CiviCampaign\";}'), + (436,1,'civicrm/campaign/vote',NULL,'Conduct Survey','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"reserve campaign contacts\";i:3;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Page_Vote\";',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (437,1,'civicrm/admin/campaign/surveyType',NULL,'Survey Types','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 CiviCampaign\";}i:1;s:3:\"and\";}','s:28:\"CRM_Campaign_Page_SurveyType\";',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:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (438,1,'civicrm/admin/options/campaign_type',NULL,'Campaign 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,2,1,0,0,'a:3:{s:4:\"desc\";s:47:\"categorize your campaigns using campaign types.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (439,1,'civicrm/admin/options/campaign_status',NULL,'Campaign Status','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,3,1,0,0,'a:3:{s:4:\"desc\";s:34:\"Define statuses for campaign here.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (440,1,'civicrm/admin/options/engagement_index',NULL,'Engagement Index','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,4,1,0,0,'a:3:{s:4:\"desc\";s:18:\"Engagement levels.\";s:10:\"adminGroup\";s:12:\"CiviCampaign\";s:9:\"component\";s:12:\"CiviCampaign\";}'), + (441,1,'civicrm/survey/search','op=interview','Record Respondents Interview','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','s:30:\"CRM_Campaign_Controller_Search\";',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:12:\"CiviCampaign\";}'), + (442,1,'civicrm/campaign/gotv',NULL,'GOTV (Track Voters)','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:4:{i:0;s:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:25:\"release campaign contacts\";i:3;s:22:\"gotv campaign contacts\";}i:1;s:2:\"or\";}','s:22:\"CRM_Campaign_Form_Gotv\";',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:12:\"CiviCampaign\";}'), + (443,1,'civicrm/petition/add',NULL,'New Petition','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:26:\"CRM_Campaign_Form_Petition\";',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:{}'), + (444,1,'civicrm/petition/sign',NULL,'Sign Petition','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:36:\"CRM_Campaign_Form_Petition_Signature\";',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:{}'), + (445,1,'civicrm/petition/browse',NULL,'View Petition Signatures','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_Campaign_Page_Petition\";',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:{}'), + (446,1,'civicrm/petition/confirm',NULL,'Email address verified','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:34:\"CRM_Campaign_Page_Petition_Confirm\";',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:{}'), + (447,1,'civicrm/petition/thankyou',NULL,'Thank You','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"sign CiviCRM Petition\";}i:1;s:3:\"and\";}','s:35:\"CRM_Campaign_Page_Petition_ThankYou\";',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:{}'), + (448,1,'civicrm/campaign/registerInterview',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:23:\"administer CiviCampaign\";i:1;s:15:\"manage campaign\";i:2;s:27:\"interview campaign contacts\";}i:1;s:2:\"or\";}','a:2:{i:0;s:22:\"CRM_Campaign_Page_AJAX\";i:1;s:17:\"registerInterview\";}',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:18:\"Campaign Dashboard\";s:3:\"url\";s:25:\"/civicrm/campaign?reset=1\";}}',NULL,NULL,9,1,0,1,0,1,1,0,0,'a:0:{}'), + (449,1,'civicrm/survey/configure/main',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:29:\"CRM_Campaign_Form_Survey_Main\";',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:{}'), + (450,1,'civicrm/survey/configure/questions',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:34:\"CRM_Campaign_Form_Survey_Questions\";',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/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:{}'), + (452,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:{}'), + (453,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:{}'), + (454,1,'civicrm/ajax/event/add_participant_to_cart',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:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:23:\"add_participant_to_cart\";}',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:{}'), + (455,1,'civicrm/ajax/event/remove_participant_from_cart',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:32:\"CRM_Event_Cart_Page_CheckoutAJAX\";i:1;s:28:\"remove_participant_from_cart\";}',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:{}'), + (456,1,'civicrm/event/add_to_cart',NULL,'Add Event To Cart','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:29:\"CRM_Event_Cart_Page_AddToCart\";',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:{}'), + (457,1,'civicrm/event/cart_checkout',NULL,'Cart Checkout','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:34:\"CRM_Event_Cart_Controller_Checkout\";',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:{}'), + (458,1,'civicrm/event/remove_from_cart',NULL,'Remove From Cart','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:34:\"CRM_Event_Cart_Page_RemoveFromCart\";',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:{}'), + (459,1,'civicrm/event/view_cart',NULL,'View Cart','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_Cart_Page_ViewCart\";',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:{}'), + (460,1,'civicrm/contact/search/custom',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:42:\"CRM_Legacycustomsearches_Controller_Search\";','s:10:\"mode=16384\";','a:2:{i:0;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,10,1,1,0,'a:0:{}'), + (461,1,'civicrm/contact/search/custom/list',NULL,'Custom Searches','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_Page_CustomSearch\";','s:10:\"mode=16384\";','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:13:\"Find Contacts\";s:3:\"url\";s:31:\"/civicrm/contact/search?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Find Contacts\";s:3:\"url\";s:38:\"/civicrm/contact/search/custom?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,16,1,1,0,'a:0:{}'), + (462,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\";}'), + (463,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{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: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:9:{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:31:\"{weight}.Conference Slot Labels\";a:6:{s:5:\"title\";s:22:\"Conference Slot Labels\";s:4:\"desc\";s:35:\"Define conference slots and labels.\";s:2:\"id\";s:20:\"ConferenceSlotLabels\";s:3:\"url\";s:46:\"/civicrm/admin/options/conference_slot?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: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; @@ -5353,70 +5318,70 @@ UNLOCK TABLES; LOCK TABLES `civicrm_msg_template` WRITE; /*!40000 ALTER TABLE `civicrm_msg_template` DISABLE KEYS */; INSERT INTO `civicrm_msg_template` (`id`, `msg_title`, `msg_subject`, `msg_text`, `msg_html`, `is_active`, `workflow_id`, `workflow_name`, `is_default`, `is_reserved`, `is_sms`, `pdf_format_id`) VALUES - (1,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if !empty($isCaseActivity)}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role|default:\'\'}\n </td>\n </tr>\n {if !empty($manageCaseURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if !empty($editActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if !empty($viewActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>\n',1,812,'case_activity',1,0,0,NULL), - (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if !empty($isCaseActivity)}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role|default:\'\'}\n </td>\n </tr>\n {if !empty($manageCaseURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if !empty($editActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if !empty($viewActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>\n',1,812,'case_activity',0,1,0,NULL), - (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\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 <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/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 <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\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}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</body>\n</html>\n',1,813,'contribution_dupalert',1,0,0,NULL), - (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\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 <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/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 <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\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}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</body>\n</html>\n',1,813,'contribution_dupalert',0,1,0,NULL), - (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Below you will find a receipt for this contribution.{/ts}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|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} {/if} {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\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\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\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{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\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\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}Below you will find a receipt for this contribution.{/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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contributor Name{/ts}\n </td>\n <td {$valueStyle}>\n {contact.display_name}\n </td>\n </tr>\n <tr>\n {if \'{contribution.financial_type_id}\'}\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n {/if}\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>\n {$line.title}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\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 {contribution.tax_exclusive_amount}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n\n {if $isShowTax}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n\n {if \'{contribution.receive_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if \'{contribution.receipt_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receipt_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\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}\'}\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\n {if \'{contribution.trxn_id}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($ccContribution)}\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 <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\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/foreach}\n {/if}\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 {if !empty($formValues.product_name)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if !empty($fulfilled_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,814,'contribution_offline_receipt',1,0,0,NULL), - (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Below you will find a receipt for this contribution.{/ts}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|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} {/if} {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\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\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\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{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\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\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}Below you will find a receipt for this contribution.{/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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contributor Name{/ts}\n </td>\n <td {$valueStyle}>\n {contact.display_name}\n </td>\n </tr>\n <tr>\n {if \'{contribution.financial_type_id}\'}\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n {/if}\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>\n {$line.title}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\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 {contribution.tax_exclusive_amount}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n\n {if $isShowTax}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n\n {if \'{contribution.receive_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if \'{contribution.receipt_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receipt_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if \'{contribution.payment_instrument_id}\' and empty($formValues.hidden_CreditCard)}\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}\'}\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\n {if \'{contribution.trxn_id}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($ccContribution)}\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 <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\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/foreach}\n {/if}\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 {if !empty($formValues.product_name)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if !empty($fulfilled_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,814,'contribution_offline_receipt',0,1,0,NULL), - (7,'Contributions - 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 {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/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\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\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 $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\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{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\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{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\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:$currency}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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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 {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>{$line.qty}</td>\n <td>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.unit_price*$line.qty|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>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\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 {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n\n {/if}\n {if $isShowTax}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {else}\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} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\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($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions 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 recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution 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 {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/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($isShare)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\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}<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:$currency}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 {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 {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,815,'contribution_online_receipt',1,0,0,NULL), - (8,'Contributions - 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 {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/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\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\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 $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\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{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\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{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\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:$currency}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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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 {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>{$line.qty}</td>\n <td>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.unit_price*$line.qty|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>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\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 {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n\n {/if}\n {if $isShowTax}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {else}\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} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\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($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions 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 recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution 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 {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/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($isShare)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\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}<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:$currency}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 {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 {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,815,'contribution_online_receipt',0,1,0,NULL), - (9,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/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 <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n {if $config->empoweredBy}\n <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n {if $email_comment}\n <tr>\n <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n </tr>\n {/if}\n <tr>\n <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n </tr>\n </table>\n\n <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td style=\"text-align:left;nowrap\"><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n {/if}\n <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n </tr>\n <tr>\n <td colspan=\"5\"></td>\n </tr>\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <tr>\n <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan=\"2\"></td>\n </tr>\n {/if}\n </table>\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n <tr>\n <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n {domain.name}<br />\n {domain.street_address} {domain.supplemental_address_1}<br />\n {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n {domain.city} {domain.postal_code}<br />\n {domain.country_id:label}<br />\n {domain.email}</div>\n {domain.phone}<br />\n </font>\n <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding=\"5\" cellspacing=\"0\" width=\"100%\" border=\"0\">\n <tr>\n <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n </tr>\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n\n <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n <tr>\n <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.country_id:label}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.email}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td><font size=\"1\" align=\"right\">\n {domain.phone}\n </font></td>\n </tr>\n </table>\n\n <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td colspan=\"2\">\n <table>\n <tr>\n <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line key=index}\n <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n <tr>\n <td style =\"text-align:left;\" ><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n {/if}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if \'{contribution.is_pay_later}\' == 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan=\"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan=\"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n\n <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\">\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n </tr>\n <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n </div>\n </body>\n</html>\n',1,816,'contribution_invoice_receipt',1,0,0,NULL), - (10,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/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 <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n {if $config->empoweredBy}\n <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n {if $email_comment}\n <tr>\n <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n </tr>\n {/if}\n <tr>\n <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n </tr>\n </table>\n\n <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td style=\"text-align:left;nowrap\"><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n {/if}\n <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n </tr>\n <tr>\n <td colspan=\"5\"></td>\n </tr>\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <tr>\n <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan=\"2\"></td>\n </tr>\n {/if}\n </table>\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n <tr>\n <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n {domain.name}<br />\n {domain.street_address} {domain.supplemental_address_1}<br />\n {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n {domain.city} {domain.postal_code}<br />\n {domain.country_id:label}<br />\n {domain.email}</div>\n {domain.phone}<br />\n </font>\n <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding=\"5\" cellspacing=\"0\" width=\"100%\" border=\"0\">\n <tr>\n <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n </tr>\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n\n <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n <tr>\n <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.country_id:label}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.email}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td><font size=\"1\" align=\"right\">\n {domain.phone}\n </font></td>\n </tr>\n </table>\n\n <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td colspan=\"2\">\n <table>\n <tr>\n <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line key=index}\n <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n <tr>\n <td style =\"text-align:left;\" ><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n {/if}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if \'{contribution.is_pay_later}\' == 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan=\"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan=\"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n\n <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\">\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n </tr>\n <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n </div>\n </body>\n</html>\n',1,816,'contribution_invoice_receipt',0,1,0,NULL), - (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\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\n{/if}\n\n{if $updateSubscriptionBillingUrl}\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\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\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\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 </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$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 {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/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 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,817,'contribution_recurring_notify',1,0,0,NULL), - (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\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\n{/if}\n\n{if $updateSubscriptionBillingUrl}\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\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\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\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 </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$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 {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/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 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,817,'contribution_recurring_notify',0,1,0,NULL), - (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_cancelled',1,0,0,NULL), - (14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_cancelled',0,1,0,NULL), - (15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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 </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_billing',1,0,0,NULL), - (16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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 </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_billing',0,1,0,NULL), - (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\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}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_edit',1,0,0,NULL), - (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\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}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_edit',0,1,0,NULL), - (19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\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=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,821,'pcp_notify',1,0,0,NULL), - (20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\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=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,821,'pcp_notify',0,1,0,NULL), - (21,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\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 <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\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,822,'pcp_status_change',1,0,0,NULL), - (22,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\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 <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\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,822,'pcp_status_change',0,1,0,NULL), - (23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\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 <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\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}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,823,'pcp_supporter_notify',1,0,0,NULL), - (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\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 <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\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}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,823,'pcp_supporter_notify',0,1,0,NULL), - (25,'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,824,'pcp_owner_notify',1,0,0,NULL), - (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,824,'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,825,'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,825,'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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.title}\n{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) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\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 {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 !empty($event.is_public)}\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($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\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 !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{/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 !empty($dataArray)} {$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----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/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 !empty($dataArray)}\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 $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {if {contribution.paid_amount|boolean}}{contribution.paid_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {if {contribution.total_amount|boolean}}{contribution.total_amount}{/if} {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 $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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\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|htmlize}</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 $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 <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.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) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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\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\n {/if}\n\n {if !empty($event.is_public)}\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 $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\n {if {event.is_monetary|boolean}}\n\n <tr>\n <th {$headerStyle}>\n {if !empty($event.fee_label)}{$event.fee_label}{/if}\n </th>\n </tr>\n\n {if !empty($lineItem)}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n\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 !empty($dataArray)}\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) }<th>{ts}Total Participants{/ts}</th>{/if}\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.qty}\n </td>\n <td>\n {$line.unit_price|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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if !empty($pricesetFieldsCount) }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if $totalAmount and $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {/if}\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 {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if !empty($amount) && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\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 {if {event.is_monetary|boolean}}\n {if {contribution.balance_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {if {contribution.paid_amount|boolean}}{contribution.paid_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {else}\n <tr>\n <td {$labelStyle}>{ts}Total Amount{/ts}</td>\n <td {$valueStyle}>\n {if {contribution.total_amount|boolean}}{contribution.total_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {/if}\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 {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\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 !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\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\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=value 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 {$value}\n </td>\n </tr>\n {/if}\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=value 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 {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n </th>\n </tr>\n {foreach from=$value item=val key=field}\n {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {if $field eq \'additionalCustomPre\'}\n {$additionalCustomPre_grouptitle}\n {else}\n {$additionalCustomPost_grouptitle}\n {/if}\n </td>\n </tr>\n {foreach from=$val item=v key=f}\n <tr>\n <td {$labelStyle}>\n {$f}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/foreach}\n {/if}\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,826,'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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{event.title}\n{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) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\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 {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 !empty($event.is_public)}\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($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\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 !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{/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 !empty($dataArray)} {$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----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/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 !empty($dataArray)}\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 $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if {event.is_monetary|boolean}}\n\n{if {contribution.balance_amount|boolean}}{ts}Total Paid{/ts}: {if {contribution.paid_amount|boolean}}{contribution.paid_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n{ts}Balance{/ts}: {contribution.balance_amount}\n{else}{ts}Total Amount{/ts}: {if {contribution.total_amount|boolean}}{contribution.total_amount}{/if} {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 $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPre_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPre item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customPost_grouptitle}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$customPost item=value key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n{$customName}: {$value}\n{/if}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile item=value key=customName}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts 1=$customName+1}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{foreach from=$value item=val key=field}\n{if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\' }\n{if $field eq \'additionalCustomPre\' }\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPre_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{else}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{$additionalCustomPost_grouptitle}\n----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\n\n{/if}\n{foreach from=$val item=v key=f}\n{$f}: {$v}\n{/foreach}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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\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|htmlize}</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 $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 <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.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) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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\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\n {/if}\n\n {if !empty($event.is_public)}\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 $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\n {if {event.is_monetary|boolean}}\n\n <tr>\n <th {$headerStyle}>\n {if !empty($event.fee_label)}{$event.fee_label}{/if}\n </th>\n </tr>\n\n {if !empty($lineItem)}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n\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 !empty($dataArray)}\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) }<th>{ts}Total Participants{/ts}</th>{/if}\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.qty}\n </td>\n <td>\n {$line.unit_price|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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if !empty($pricesetFieldsCount) }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if $totalAmount and $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {/if}\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 {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if !empty($amount) && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\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 {if {event.is_monetary|boolean}}\n {if {contribution.balance_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {if {contribution.paid_amount|boolean}}{contribution.paid_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {else}\n <tr>\n <td {$labelStyle}>{ts}Total Amount{/ts}</td>\n <td {$valueStyle}>\n {if {contribution.total_amount|boolean}}{contribution.total_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {/if}\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 {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$pay_later_receipt}\n </td>\n </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\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 !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\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\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n {if !empty($customPre)}\n <tr>\n <th {$headerStyle}>\n {$customPre_grouptitle}\n </th>\n </tr>\n {foreach from=$customPre item=value 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 {$value}\n </td>\n </tr>\n {/if}\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=value 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 {$value}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if !empty($customProfile)}\n {foreach from=$customProfile item=value key=customName}\n <tr>\n <th {$headerStyle}>\n {ts 1=$customName+1}Participant Information - Participant %1{/ts}\n </th>\n </tr>\n {foreach from=$value item=val key=field}\n {if $field eq \'additionalCustomPre\' or $field eq \'additionalCustomPost\'}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {if $field eq \'additionalCustomPre\'}\n {$additionalCustomPre_grouptitle}\n {else}\n {$additionalCustomPost_grouptitle}\n {/if}\n </td>\n </tr>\n {foreach from=$val item=v key=f}\n <tr>\n <td {$labelStyle}>\n {$f}\n </td>\n <td {$valueStyle}>\n {$v}\n </td>\n </tr>\n {/foreach}\n {/if}\n {/foreach}\n {/foreach}\n {/if}\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,826,'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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {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:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\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 !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/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:$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 !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\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 $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\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=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\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|htmlize}</p>\n\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}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n {/if}\n\n <p>\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> {* FIXME: this might be text rather than HTML *}\n {/if}\n\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.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:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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}\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}\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\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n\n {if $isShowLineItems}\n {foreach from=$participants key=index item=participant}\n {if $isPrimary || {participant.id} === $participant.id}\n {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$participant.index}Participant %1{/ts} {$participant.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)}<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$participant.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 $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 <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $isShowTax}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$participant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$participant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$participant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\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\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\n {if !empty($amounts) && empty($lineItem)}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\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} {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> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\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 !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\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\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n {foreach from=$customPr item=customValue key=customName}\n {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/if}\n {/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n {foreach from=$customPos item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customProfile)}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{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,827,'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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {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:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\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 !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/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:$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 !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\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 $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPr item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$customPos item=customValue key=customName}\n{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n{if !empty($customProfile)}\n\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\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=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\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|htmlize}</p>\n\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}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n {/if}\n\n <p>\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> {* FIXME: this might be text rather than HTML *}\n {/if}\n\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.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:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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}\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}\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\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n\n {if $isShowLineItems}\n {foreach from=$participants key=index item=participant}\n {if $isPrimary || {participant.id} === $participant.id}\n {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$participant.index}Participant %1{/ts} {$participant.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)}<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$participant.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 $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 <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $isShowTax}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$participant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$participant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$participant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\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\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\n {if !empty($amounts) && empty($lineItem)}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\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} {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> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\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 !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\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\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr>\n {foreach from=$customPr item=customValue key=customName}\n {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n {/if}\n {/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customPost)}\n{foreach from=$customPost item=customPos key=j}\n <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr>\n {foreach from=$customPos item=customValue key=customName}\n {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n <tr>\n <td {$labelStyle}>{$customName}</td>\n <td {$valueStyle}>{$customValue}</td>\n </tr>\n{/if}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($customProfile)}\n{foreach from=$customProfile.profile item=eachParticipant key=participantID}\n <tr><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{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,827,'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,828,'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,828,'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,829,'participant_cancelled',1,0,0,NULL), - (36,'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,829,'participant_cancelled',0,1,0,NULL), - (37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $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 $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===========================================================\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:\"%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{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 <!-- 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}This is an invitation to complete your registration that was initially waitlisted.{/ts}</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">{ts}Click here to confirm and complete your registration{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n {ts}This event allows for{/ts}\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}self service cancel or transfer{/ts}</a>\n {/if}\n\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:\"%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 {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $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 $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 <tr>\n <td colspan=\"2\" {$valueStyle}>\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,830,'participant_confirm',1,0,0,NULL), - (38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $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 $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===========================================================\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:\"%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{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 <!-- 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}This is an invitation to complete your registration that was initially waitlisted.{/ts}</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">{ts}Click here to confirm and complete your registration{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n {ts}This event allows for{/ts}\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}self service cancel or transfer{/ts}</a>\n {/if}\n\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:\"%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 {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $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 $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 <tr>\n <td colspan=\"2\" {$valueStyle}>\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,830,'participant_confirm',0,1,0,NULL), - (39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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_expired',1,0,0,NULL), - (40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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_expired',0,1,0,NULL), - (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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','<!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=$to_participant}Your Event Registration has been Transferred to %1.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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,832,'participant_transferred',1,0,0,NULL), - (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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','<!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=$to_participant}Your Event Registration has been Transferred to %1.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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,832,'participant_transferred',0,1,0,NULL), - (43,'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,833,'friend',1,0,0,NULL), - (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,833,'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+$line.tax_amount|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+$line.tax_amount|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}}\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,834,'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+$line.tax_amount|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+$line.tax_amount|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}}\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,834,'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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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 {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 {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,835,'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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)}\n {$customName}: {$customValue}\n{/if}\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 {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 {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,835,'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,836,'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,836,'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,837,'membership_autorenew_billing',1,0,0,NULL), - (52,'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,837,'membership_autorenew_billing',0,1,0,NULL), - (53,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' <table id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n',1,838,'test_preview',1,0,0,NULL), - (54,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' <table id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n',1,838,'test_preview',0,1,0,NULL), - (55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\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 <p>{ts}Thank you for your generous pledge.{/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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $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,839,'pledge_acknowledge',1,0,0,NULL), - (56,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\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 <p>{ts}Thank you for your generous pledge.{/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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $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,839,'pledge_acknowledge',0,1,0,NULL), - (57,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/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=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/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}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {domain.address}</p>\n {/if}\n </td>\n </tr>\n\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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\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\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank you for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,840,'pledge_reminder',1,0,0,NULL), - (58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/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=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/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}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {domain.address}</p>\n {/if}\n </td>\n </tr>\n\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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\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\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank you for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,840,'pledge_reminder',0,1,0,NULL), - (59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,841,'uf_notify',1,0,0,NULL), - (60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,841,'uf_notify',0,1,0,NULL), - (61,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {survey.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {survey.title}.</p>\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,842,'petition_sign',1,0,0,NULL), - (62,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {survey.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {survey.title}.</p>\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,842,'petition_sign',0,1,0,NULL), - (63,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,843,'petition_confirmation_needed',1,0,0,NULL), - (64,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,843,'petition_confirmation_needed',0,1,0,NULL), + (1,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if !empty($isCaseActivity)}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role|default:\'\'}\n </td>\n </tr>\n {if !empty($manageCaseURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if !empty($editActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if !empty($viewActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>\n',1,813,'case_activity',1,0,0,NULL), + (2,'Cases - Send Copy of an Activity','{if !empty($idHash)}[case #{$idHash}]{/if} {$activitySubject}\n','===========================================================\n{ts}Activity Summary{/ts} - {$activityTypeName}\n===========================================================\n{if !empty($isCaseActivity)}\n{ts}Your Case Role(s){/ts} : {$contact.role|default:\'\'}\n{if !empty($manageCaseURL)}\n{ts}Manage Case{/ts} : {$manageCaseURL}\n{/if}\n{/if}\n\n{if !empty($editActURL)}\n{ts}Edit activity{/ts} : {$editActURL}\n{/if}\n{if !empty($viewActURL)}\n{ts}View activity{/ts} : {$viewActURL}\n{/if}\n\n{foreach from=$activity.fields item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\n{if !empty($activity.customGroups)}\n{foreach from=$activity.customGroups key=customGroupName item=customGroup}\n==========================================================\n{$customGroupName}\n==========================================================\n{foreach from=$customGroup item=field}\n{if $field.type eq \'Date\'}\n{$field.label} : {$field.value|crmDate:$config->dateformatDatetime}\n{else}\n{$field.label} : {$field.value}\n{/if}\n{/foreach}\n\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Activity Summary{/ts} - {$activityTypeName}\n </th>\n </tr>\n {if !empty($isCaseActivity)}\n <tr>\n <td {$labelStyle}>\n {ts}Your Case Role(s){/ts}\n </td>\n <td {$valueStyle}>\n {$contact.role|default:\'\'}\n </td>\n </tr>\n {if !empty($manageCaseURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$manageCaseURL}\" title=\"{ts}Manage Case{/ts}\">{ts}Manage Case{/ts}</a>\n </td>\n </tr>\n {/if}\n {/if}\n {if !empty($editActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$editActURL}\" title=\"{ts}Edit activity{/ts}\">{ts}Edit activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {if !empty($viewActURL)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <a href=\"{$viewActURL}\" title=\"{ts}View activity{/ts}\">{ts}View activity{/ts}</a>\n </td>\n </tr>\n {/if}\n {foreach from=$activity.fields item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n\n {if !empty($activity.customGroups)}\n {foreach from=$activity.customGroups key=customGroupName item=customGroup}\n <tr>\n <th {$headerStyle}>\n {$customGroupName}\n </th>\n </tr>\n {foreach from=$customGroup item=field}\n <tr>\n <td {$labelStyle}>\n {$field.label}\n </td>\n <td {$valueStyle}>\n {if $field.type eq \'Date\'}\n {$field.value|crmDate:$config->dateformatDatetime}\n {else}\n {$field.value}\n {/if}\n </td>\n </tr>\n {/foreach}\n {/foreach}\n {/if}\n </table>\n </td>\n </tr>\n </table>\n</body>\n</html>\n',1,813,'case_activity',0,1,0,NULL), + (3,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\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 <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/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 <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\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}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</body>\n</html>\n',1,814,'contribution_dupalert',1,0,0,NULL), + (4,'Contributions - Duplicate Organization Alert','{ts}CiviContribute Alert: Possible Duplicate Contact Record{/ts} - {contact.display_name}\n','{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}\n{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/ts}\n\n{ts}Organization Name{/ts}: {$onBehalfName}\n{ts}Organization Email{/ts}: {$onBehalfEmail}\n{ts}Organization Contact ID{/ts}: {$onBehalfID}\n\n{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}\n\n{if $receiptMessage}\n###########################################################\n{ts}Copy of Contribution Receipt{/ts}\n\n###########################################################\n{$receiptMessage}\n\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 <p>{ts}A contribution / membership signup was made on behalf of the organization listed below.{/ts}</p>\n <p>{ts}The information provided matched multiple existing database records based on the configured Duplicate Matching Rules for your site.{/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 <td {$labelStyle}>\n {ts}Organization Name{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Email{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfEmail}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Organization Contact ID{/ts}\n </td>\n <td {$valueStyle}>\n {$onBehalfID}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <p>{ts}If you think this may be a duplicate contact which should be merged with an existing record - Go to \"Contacts >> Find and Merge Duplicate Contacts\". Use the strict rule for Organizations to find the potential duplicates and merge them if appropriate.{/ts}</p>\n </td>\n </tr>\n {if $receiptMessage}\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}Copy of Contribution Receipt{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {* FIXME: the below is most probably not HTML-ised *}\n {$receiptMessage}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n {/if}\n </table>\n</body>\n</html>\n',1,814,'contribution_dupalert',0,1,0,NULL), + (5,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|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} {/if} {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\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\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\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{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\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\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>\n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n </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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contributor Name{/ts}\n </td>\n <td {$valueStyle}>\n {contact.display_name}\n </td>\n </tr>\n <tr>\n {if \'{contribution.financial_type_id}\'}\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n {/if}\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>\n {$line.title}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\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 {contribution.tax_exclusive_amount}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n\n {if $isShowTax}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n\n {if \'{contribution.receive_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if \'{contribution.receipt_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receipt_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|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}\'}\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\n {if \'{contribution.trxn_id}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($ccContribution)}\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 <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\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/foreach}\n {/if}\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 {if !empty($formValues.product_name)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if !empty($fulfilled_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,815,'contribution_offline_receipt',1,0,0,NULL), + (6,'Contributions - Receipt (off-line)','{ts}Contribution Receipt{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if {contribution.contribution_page_id.receipt_text|boolean}}\n{contribution.contribution_page_id.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}\n{/if}\n\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{ts}Contributor{/ts}: {contact.display_name}\n{if \'{contribution.financial_type_id}\'}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney:\'{contribution.currency}\'|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} {/if} {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"}\n{/foreach}\n{/if}\n\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount}\n{/if}\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\n{if $isShowTax}\n{ts}Total Tax Amount{/ts} : {contribution.tax_amount}\n{/if}\n{ts}Total Amount{/ts} : {contribution.total_amount}\n{if \'{contribution.receive_date}\'}\n{ts}Contribution Date{/ts}: {contribution.receive_date|crmDate:\"shortdate\"}\n{/if}\n{if \'{contribution.receipt_date}\'}\n{ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:\"shortdate\"}\n{/if}\n{if {contribution.payment_instrument_id|boolean}}\n{ts}Paid By{/ts}: {contribution.payment_instrument_id:label}\n{if \'{contribution.check_number}\'}\n{ts}Check Number{/ts}: {contribution.check_number}\n{/if}\n{/if}\n{if \'{contribution.trxn_id}\'}\n{ts}Transaction ID{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($ccContribution)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\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{if !empty($customGroup)}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\n{/if}\n\n{if !empty($formValues.product_name)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$formValues.product_name}\n{if $formValues.product_option}\n{ts}Option{/ts}: {$formValues.product_option}\n{/if}\n{if $formValues.product_sku}\n{ts}SKU{/ts}: {$formValues.product_sku}\n{/if}\n{if !empty($fulfilled_date)}\n{ts}Sent{/ts}: {$fulfilled_date|crmDate}\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\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>\n {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text}\n {else}{ts}Below you will find a receipt for this contribution.{/ts}{/if}\n </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}Contribution Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contributor Name{/ts}\n </td>\n <td {$valueStyle}>\n {contact.display_name}\n </td>\n </tr>\n <tr>\n {if \'{contribution.financial_type_id}\'}\n <td {$labelStyle}>\n {ts}Financial Type{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.financial_type_id:label}\n </td>\n {/if}\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>\n {$line.title}\n </td>\n <td>\n {$line.qty}\n </td>\n <td>\n {$line.unit_price|crmMoney:\'{contribution.currency}\'}\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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney:\'{contribution.currency}\'}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\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 {contribution.tax_exclusive_amount}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n {/if}\n\n {if $isShowTax}\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\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n\n {if \'{contribution.receive_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Contribution Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receive_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if \'{contribution.receipt_date}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Receipt Date{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.receipt_date|crmDate:\"shortdate\"}\n </td>\n </tr>\n {/if}\n\n {if {contribution.payment_instrument_id|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}\'}\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\n {if \'{contribution.trxn_id}\'}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction ID{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.trxn_id}\n </td>\n </tr>\n {/if}\n\n {if !empty($ccContribution)}\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 <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\n {if !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/foreach}\n {/if}\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 {if !empty($formValues.product_name)}\n <tr>\n <th {$headerStyle}>\n {ts}Premium Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$formValues.product_name}\n </td>\n </tr>\n {if $formValues.product_option}\n <tr>\n <td {$labelStyle}>\n {ts}Option{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_option}\n </td>\n </tr>\n {/if}\n {if $formValues.product_sku}\n <tr>\n <td {$labelStyle}>\n {ts}SKU{/ts}\n </td>\n <td {$valueStyle}>\n {$formValues.product_sku}\n </td>\n </tr>\n {/if}\n {if !empty($fulfilled_date)}\n <tr>\n <td {$labelStyle}>\n {ts}Sent{/ts}\n </td>\n <td {$valueStyle}>\n {$fulfilled_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {/if}\n\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,815,'contribution_offline_receipt',0,1,0,NULL), + (7,'Contributions - 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 {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/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\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\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 $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\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{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\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:$currency}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 {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>{$line.qty}</td>\n <td>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.unit_price*$line.qty|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>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\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 {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n\n {/if}\n {if $isShowTax}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {else}\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} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\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 {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 !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions 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 recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution 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 {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/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($isShare)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\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}<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:$currency}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,816,'contribution_online_receipt',1,0,0,NULL), + (8,'Contributions - 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 {contribution.total_amount|boolean}}\n===========================================================\n{ts}Contribution Information{/ts}\n\n===========================================================\n{if $isShowLineItems}\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{$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} {$ts_taxAmount|string_format:\"%10s\"} {/if} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$lineItems item=line}\n{capture assign=ts_item}{$line.title}{/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\"}\n{/foreach}\n\n{if $isShowTax && {contribution.tax_amount|boolean}}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\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 $isShowTax}\n{ts}Total Tax Amount{/ts}: {contribution.tax_amount|crmMoney}\n{/if}\n\n{ts}Total Amount{/ts}: {contribution.total_amount}\n{else}\n{ts}Amount{/ts}: {contribution.total_amount} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n{/if}\n{/if}\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if {contribution.trxn_id|boolean}}\n{ts}Transaction #{/ts}: {contribution.trxn_id}\n{/if}\n\n{if !empty($is_recur)}\n{ts}This is a recurring contribution.{/ts}\n\n{if $cancelSubscriptionUrl}\n{ts}You can cancel future contributions at:{/ts}\n\n{$cancelSubscriptionUrl}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts}You can update billing details for this recurring contribution at:{/ts}\n\n{$updateSubscriptionBillingUrl}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts}You can update recurring contribution amount or change the number of installments for this recurring contribution at:{/ts}\n\n{$updateSubscriptionUrl}\n\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{elseif !empty($softCreditTypes) and !empty($softCredits)}\n{foreach from=$softCreditTypes item=softCreditType key=n}\n===========================================================\n{$softCreditType}\n===========================================================\n{foreach from=$softCredits.$n item=value key=label}\n{$label}: {$value}\n{/foreach}\n{/foreach}\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:$currency}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 {if {contribution.total_amount|boolean}}\n <tr>\n <th {$headerStyle}>\n {ts}Contribution Information{/ts}\n </th>\n </tr>\n\n {if $isShowLineItems}\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 </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td>{$line.title}</td>\n <td>{$line.qty}</td>\n <td>{$line.unit_price|crmMoney:$currency}</td>\n {if $isShowTax && {contribution.tax_amount|boolean}}\n <td>{$line.unit_price*$line.qty|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>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\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 {$amount-$totalTaxAmount|crmMoney:$currency}\n </td>\n </tr>\n\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n <tr>\n <td>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td>\n <td>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td>\n </tr>\n {/foreach}\n\n {/if}\n {if $isShowTax}\n <tr>\n <td {$labelStyle}>\n {ts}Total Tax{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.tax_amount}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {contribution.total_amount}\n </td>\n </tr>\n {else}\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} {if \'{contribution.amount_level}\'} - {contribution.amount_level}{/if}\n </td>\n </tr>\n\n {/if}\n\n {/if}\n\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 {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 !empty($is_recur)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}This is a recurring contribution.{/ts}\n {if $cancelSubscriptionUrl}\n {ts 1=$cancelSubscriptionUrl}You can cancel future contributions 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 recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution 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 {elseif !empty($softCreditTypes) and !empty($softCredits)}\n {foreach from=$softCreditTypes item=softCreditType key=n}\n <tr>\n <th {$headerStyle}>\n {$softCreditType}\n </th>\n </tr>\n {foreach from=$softCredits.$n 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 {/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($isShare)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contributionPageId`\" a=true fe=1 h=1}{/capture}\n {include file=\"CRM/common/SocialNetwork.tpl\" emailMode=true url=$contributionUrl title=$title pageURL=$contributionUrl}\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}<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:$currency}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,816,'contribution_online_receipt',0,1,0,NULL), + (9,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/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 <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n {if $config->empoweredBy}\n <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n {if $email_comment}\n <tr>\n <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n </tr>\n {/if}\n <tr>\n <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n </tr>\n </table>\n\n <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td style=\"text-align:left;nowrap\"><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n {/if}\n <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n </tr>\n <tr>\n <td colspan=\"5\"></td>\n </tr>\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <tr>\n <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan=\"2\"></td>\n </tr>\n {/if}\n </table>\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n <tr>\n <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n {domain.name}<br />\n {domain.street_address} {domain.supplemental_address_1}<br />\n {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n {domain.city} {domain.postal_code}<br />\n {domain.country_id:label}<br />\n {domain.email}</div>\n {domain.phone}<br />\n </font>\n <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding=\"5\" cellspacing=\"0\" width=\"100%\" border=\"0\">\n <tr>\n <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n </tr>\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n\n <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n <tr>\n <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.country_id:label}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.email}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td><font size=\"1\" align=\"right\">\n {domain.phone}\n </font></td>\n </tr>\n </table>\n\n <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td colspan=\"2\">\n <table>\n <tr>\n <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line key=index}\n <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n <tr>\n <td style =\"text-align:left;\" ><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n {/if}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if \'{contribution.is_pay_later}\' == 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan=\"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan=\"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n\n <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\">\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n </tr>\n <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n </div>\n </body>\n</html>\n',1,817,'contribution_invoice_receipt',1,0,0,NULL), + (10,'Contributions - Invoice','{if $title}\n {if $component}\n {if $component == \'event\'}\n {ts 1=$title}Event Registration Invoice: %1{/ts}\n {else}\n {ts 1=$title}Contribution Invoice: %1{/ts}\n {/if}\n {/if}\n{else}\n {ts}Invoice{/ts}\n{/if}\n - {contact.display_name}\n','{ts}Contribution Invoice{/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 <div style=\"padding-top:100px;margin-right:50px;border-style: none;\">\n {if $config->empoweredBy}\n <table style=\"margin-top:5px;padding-bottom:50px;\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{domain.empowered_by_civicrm_image_url}\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n <table style=\"font-family: Arial, Verdana, sans-serif;\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n {if $email_comment}\n <tr>\n <td><font size=\"1\" colspan=\"3\">{$email_comment}</font></td>\n </tr>\n {/if}\n <tr>\n <td width=\"30%\"><b><font size=\"4\" align=\"center\">{ts}INVOICE{/ts}</font></b></td>\n <td width=\"50%\" valign=\"bottom\"><b><font size=\"1\" align=\"center\">{ts}Invoice Date:{/ts}</font></b></td>\n <td valign=\"bottom\" style=\"white-space: nowrap\"><b><font size=\"1\" align=\"right\">{domain.name}</font></b></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td><b><font size=\"1\" align=\"right\">{ts}Invoice Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.country_id:label}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\"> {$country}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td valign=\"top\" style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{domain.email}</font> </td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td valign=\"top\"><font size=\"1\" align=\"right\">{domain.phone}</font> </td>\n </tr>\n </table>\n\n <table style=\"padding-top:75px;font-family: Arial, Verdana, sans-serif;\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\">\n <tr>\n <th style=\"text-align:left;font-weight:bold;width:100%\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"text-align:right;font-weight:bold;white-space: nowrap\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line}\n <tr>\n <td style=\"text-align:left;nowrap\"><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}-{/ts}{/if}</font></td>\n {/if}\n <td style=\"text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"text-align:right\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\"><font size=\"1\">\n {if \'{contribution.contribution_status_id:name}\' == \'Refunded\'}\n {ts}Amount Credited{/ts}\n {else}\n {ts}Amount Paid{/ts}\n {/if}\n </font></td>\n <td style=\"text-align:right;\"><font size=\"1\">{$amountPaid|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"text-align:right;white-space: nowrap\" ><b><font size=\"1\">{ts}AMOUNT DUE:{/ts}</font></b></td>\n <td style=\"text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n </tr>\n <tr>\n <td colspan=\"5\"></td>\n </tr>\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <tr>\n <td colspan=\"3\"><b><font size=\"1\" align=\"center\">{ts 1=$dueDate}DUE DATE: %1{/ts}</font></b></td>\n <td colspan=\"2\"></td>\n </tr>\n {/if}\n </table>\n\n {if \'{contribution.contribution_status_id:name}\' == \'Pending\' && \'{contribution.is_pay_later}\' == 1}\n <table style=\"margin-top:5px;\" width=\"100%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:5px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"0\" id=\"desc\">\n <tr>\n <td width=\"60%\"><b><font size=\"4\" align=\"right\">{ts}PAYMENT ADVICE{/ts}</font></b><br/><br/>\n <font size=\"1\" align=\"left\"><b>{ts}To:{/ts}</b><div style=\"width:24em;word-wrap:break-word;\">\n {domain.name}<br />\n {domain.street_address} {domain.supplemental_address_1}<br />\n {domain.supplemental_address_2} {domain.state_province_id:label}<br />\n {domain.city} {domain.postal_code}<br />\n {domain.country_id:label}<br />\n {domain.email}</div>\n {domain.phone}<br />\n </font>\n <br/><br/><font size=\"1\" align=\"left\">{$notes}</font>\n </td>\n <td width=\"40%\">\n <table cellpadding=\"5\" cellspacing=\"0\" width=\"100%\" border=\"0\">\n <tr>\n <td width=\"100%\"><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td style=\"white-space: nowrap\"><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Invoice Number:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.invoice_number}</font></td>\n </tr>\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td></tr>\n {if $is_pay_later == 1}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {else}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Amount Due:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amountDue|crmMoney:$currency}</font></td>\n </tr>\n {/if}\n <tr>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Due Date:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{$dueDate}</font></td>\n </tr>\n <tr>\n <td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n {if \'{contribution.contribution_status_id:name}\' === \'Refunded\' || \'{contribution.contribution_status_id:name}\' === \'Cancelled\'}\n {if $config->empoweredBy}\n <table style=\"margin-top:2px;padding-left:7px;page-break-before: always;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/civi99.png\" height=\"34px\" width=\"99px\"></td>\n </tr>\n </table>\n {/if}\n\n <table style=\"font-family: Arial, Verdana, sans-serif\" width=\"100%\" height=\"100\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\">\n <tr>\n <td style=\"padding-left:15px;\"><b><font size=\"4\" align=\"center\">{ts}CREDIT NOTE{/ts}</font></b></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Date:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">{domain.name}</font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{contact.display_name}{if \'{contact.current_employer}\'} ({contact.current_employer}){/if}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{$invoice_date}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.street_address}\n {domain.supplemental_address_1}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$street_address} {$supplemental_address_1}</font></td>\n <td style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Credit Note Number:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.supplemental_address_2}\n {domain.state_province_id:label}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"center\">{$supplemental_address_2} {$stateProvinceAbbreviation}</font></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.city}\n {domain.postal_code}\n </font></td>\n </tr>\n <tr>\n <td style=\"padding-left:17px;\"><font size=\"1\" align=\"right\">{$city} {$postal_code}</font></td>\n <td height=\"10\" style=\"padding-left:30px;\"><b><font size=\"1\" align=\"right\">{ts}Reference:{/ts}</font></b></td>\n <td><font size=\"1\" align=\"right\">\n {domain.country_id:label}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td style=\"padding-left:30px;\"><font size=\"1\" align=\"right\">{contribution.source}</font></td>\n <td><font size=\"1\" align=\"right\">\n {domain.email}\n </font></td>\n </tr>\n <tr>\n <td></td>\n <td></td>\n <td><font size=\"1\" align=\"right\">\n {domain.phone}\n </font></td>\n </tr>\n </table>\n\n <table style=\"margin-top:75px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td colspan=\"2\">\n <table>\n <tr>\n <th style=\"padding-right:28px;text-align:left;font-weight:bold;width:200px;\"><font size=\"1\">{ts}Description{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Quantity{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts}Unit Price{/ts}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{domain.tax_term}</font></th>\n <th style=\"padding-left:28px;text-align:right;font-weight:bold;\"><font size=\"1\">{ts 1=$currency}Amount %1{/ts}</font></th>\n </tr>\n {foreach from=$lineItems item=line key=index}\n <tr><td colspan=\"5\"><hr {if $index == 0}size=\"3\" style=\"color:#000;\"{else}style=\"color:#F5F5F5;\"{/if}></hr></td></tr>\n <tr>\n <td style =\"text-align:left;\" ><font size=\"1\">\n {$line.title}\n </font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.qty}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.unit_price|crmMoney:$currency}</font></td>\n {if $line.tax_amount != \'\'}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if $line.tax_rate}{$line.tax_rate|crmNumberFormat}%{/if}</font></td>\n {else}\n <td style=\"padding-left:28px;text-align:right\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\'}No %1{/ts}{/if}</font></td>\n {/if}\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$line.line_total|crmMoney:\'{contribution.currency}\'}</font></td>\n </tr>\n {/foreach}\n <tr><td colspan=\"5\" style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}Sub Total{/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$subTotal|crmMoney:$currency}</font></td>\n </tr>\n {foreach from=$taxRateBreakdown item=taxDetail key=taxRate}\n {if $taxRate != 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{if \'{domain.tax_term}\'}{ts 1=\'{domain.tax_term}\' 2=$taxRate|crmNumberFormat}TOTAL %1 %2%{/ts}{/if}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\" align=\"right\">{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</font> </td>\n </tr>\n {/if}\n {/foreach}\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts 1=$currency}TOTAL %1{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n {if \'{contribution.is_pay_later}\' == 0}\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{ts}LESS Credit to invoice(s){/ts}</font></td>\n <td style=\"padding-left:28px;text-align:right;\"><font size=\"1\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td colspan=\"2\"><hr></hr></td>\n </tr>\n <tr>\n <td colspan=\"3\"></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{ts}REMAINING CREDIT{/ts}</font></b></td>\n <td style=\"padding-left:28px;text-align:right;\"><b><font size=\"1\">{$amountDue|crmMoney:$currency}</font></b></td>\n <td style=\"padding-left:28px;\"><font size=\"1\" align=\"right\"></font></td>\n </tr>\n {/if}\n <br/><br/><br/>\n <tr>\n <td colspan=\"3\"></td>\n </tr>\n <tr>\n <td></td>\n <td colspan=\"3\"></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n\n <table width=\"100%\" style=\"margin-top:5px;padding-right:45px;\">\n <tr>\n <td><img src=\"{$resourceBase}/i/contribute/cut_line.png\" height=\"15\" width=\"100%\"></td>\n </tr>\n </table>\n\n <table style=\"margin-top:6px;font-family: Arial, Verdana, sans-serif\" width=\"100%\" border=\"0\" cellpadding=\"5\" cellspacing=\"5\" id=\"desc\">\n <tr>\n <td width=\"60%\"><font size=\"4\" align=\"right\"><b>{ts}CREDIT ADVICE{/ts}</b><br/><br /><div style=\"font-size:10px;max-width:300px;\">{ts}Please do not pay on this advice. Deduct the amount of this Credit Note from your next payment to us{/ts}</div><br/></font></td>\n <td width=\"40%\">\n <table align=\"right\">\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Customer:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contact.display_name}</font></td>\n </tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Note#:{/ts}</font></td>\n <td><font size=\"1\" align=\"right\">{contribution.creditnote_id}</font></td>\n </tr>\n <tr><td colspan=\"5\"style=\"color:#F5F5F5;\"><hr></hr></td></tr>\n <tr>\n <td colspan=\"2\"></td>\n <td><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{ts}Credit Amount:{/ts}</font></td>\n <td width=\'50px\'><font size=\"1\" align=\"right\" style=\"font-weight:bold;\">{$amount|crmMoney:$currency}</font></td>\n </tr>\n </table>\n </td>\n </tr>\n </table>\n {/if}\n\n </div>\n </body>\n</html>\n',1,817,'contribution_invoice_receipt',0,1,0,NULL), + (11,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\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\n{/if}\n\n{if $updateSubscriptionBillingUrl}\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\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\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\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 </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$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 {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/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 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_notify',1,0,0,NULL), + (12,'Contributions - Recurring Start and End Notification','{ts}Recurring Contribution Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $recur_txnType eq \'START\'}\n{if $auto_renew_membership}\n{ts}Thanks for your auto renew membership sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s).{/ts}\n\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\n{/if}\n\n{if $updateSubscriptionBillingUrl}\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\n{/if}\n{else}\n{ts}Thanks for your recurring contribution sign-up.{/ts}\n\n\n{ts 1=$recur_frequency_interval 2=$recur_frequency_unit 3=$recur_installments}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments } {ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.\n\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{if $cancelSubscriptionUrl}\n{ts 1=$cancelSubscriptionUrl}You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n\n{if $updateSubscriptionUrl}\n{ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n\n{/if}\n{/if}\n\n{elseif $recur_txnType eq \'END\'}\n{if $auto_renew_membership}\n{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}\n\n\n{else}\n{ts}Your recurring contribution term has ended.{/ts}\n\n\n{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/ts}\n\n\n==================================================\n{ts 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n\n==================================================\n{ts}Start Date{/ts}: {$recur_start_date|crmDate}\n\n{ts}End Date{/ts}: {$recur_end_date|crmDate}\n\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\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 </td>\n </tr>\n\n <tr>\n <td> </td>\n </tr>\n\n {if $recur_txnType eq \'START\'}\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Thanks for your auto renew membership sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This membership will be automatically renewed every %1 %2(s). {/ts}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$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 {else}\n <tr>\n <td>\n <p>{ts}Thanks for your recurring contribution sign-up.{/ts}</p>\n <p>{ts 1=$recur_frequency_interval 2=$recur_frequency_unit}This recurring contribution will be automatically processed every %1 %2(s){/ts}{if $recur_installments }{ts 1=$recur_installments} for a total of %1 installment(s){/ts}{/if}.</p>\n <p>{ts}Start Date{/ts}: {$recur_start_date|crmDate}</p>\n </td>\n </tr>\n {if $cancelSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$cancelSubscriptionUrl} You can cancel the recurring contribution option by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionBillingUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionBillingUrl}You can update billing details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {if $updateSubscriptionUrl}\n <tr>\n <td {$labelStyle}>\n {ts 1=$updateSubscriptionUrl}You can update recurring contribution amount or change the number of installments details for this recurring contribution by <a href=\"%1\">visiting this web page</a>.{/ts}\n </td>\n </tr>\n {/if}\n {/if}\n\n {elseif $recur_txnType eq \'END\'}\n\n {if $auto_renew_membership}\n <tr>\n <td>\n <p>{ts}Your auto renew membership sign-up has ended and your membership will not be automatically renewed.{/ts}</p>\n </td>\n </tr>\n {else}\n <tr>\n <td>\n <p>{ts}Your recurring contribution term has ended.{/ts}</p>\n <p>{ts 1=$recur_installments}You have successfully completed %1 recurring contributions. Thank you.{/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 1=$recur_installments}Interval of Subscription for %1 installment(s){/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_start_date|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}End Date{/ts}\n </td>\n <td {$valueStyle}>\n {$recur_end_date|crmDate}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n {/if}\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,818,'contribution_recurring_notify',0,1,0,NULL), + (13,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_cancelled',1,0,0,NULL), + (14,'Contributions - Recurring Cancellation Notification','{ts}Recurring Contribution Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Your recurring contribution of %1, every %2 %3 has been cancelled as requested.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,819,'contribution_recurring_cancelled',0,1,0,NULL), + (15,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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 </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_billing',1,0,0,NULL), + (16,'Contributions - Recurring Billing Updates','{ts}Recurring Contribution Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Billing details for your recurring contribution of %1, every %2 %3 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 </table>\n\n</body>\n</html>\n',1,820,'contribution_recurring_billing',0,1,0,NULL), + (17,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\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}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,821,'contribution_recurring_edit',1,0,0,NULL), + (18,'Contributions - Recurring Updates','{ts}Recurring Contribution Update Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your recurring contribution has been updated as requested:{/ts}\n\n{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}\n{if $installments}{ts 1=$installments} for %1 installments.{/ts}{/if}\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}Your recurring contribution has been updated as requested:{/ts}\n <p>{ts 1=$amount 2=$recur_frequency_interval 3=$recur_frequency_unit}Recurring contribution is for %1, every %2 %3(s){/ts}{if $installments}{ts 1=$installments} for %1 installments{/ts}{/if}.</p>\n\n <p>{ts 1=$receipt_from_email}If you have questions please contact us at %1.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n</body>\n</html>\n',1,821,'contribution_recurring_edit',0,1,0,NULL), + (19,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\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=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,822,'pcp_notify',1,0,0,NULL), + (20,'Personal Campaign Pages - Admin Notification','{ts}Personal Campaign Page Notification{/ts} - {contact.display_name}\n','===========================================================\n{ts}Personal Campaign Page Notification{/ts}\n\n===========================================================\n{ts}Action{/ts}: {if $mode EQ \'Update\'}{ts}Updated personal campaign page{/ts}{else}{ts}New personal campaign page{/ts}{/if}\n{ts}Personal Campaign Page Title{/ts}: {$pcpTitle}\n{ts}Current Status{/ts}: {$pcpStatus}\n{capture assign=pcpURL}{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/capture}\n{ts}View Page{/ts}:\n>> {$pcpURL}\n\n{ts}Supporter{/ts}: {$supporterName}\n>> {$supporterUrl}\n\n{ts}Linked to Contribution Page{/ts}: {$contribPageTitle}\n>> {$contribPageUrl}\n\n{ts}Manage Personal Campaign Pages{/ts}:\n>> {$managePCPUrl}\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=pcpURL }{crmURL p=\"civicrm/pcp/info\" q=\"reset=1&id=`$pcpId`\" h=0 a=1 fe=1}{/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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Personal Campaign Page Notification{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Action{/ts}:\n </td>\n <td {$valueStyle}>\n {if $mode EQ \'Update\'}\n {ts}Updated personal campaign page{/ts}\n {else}\n {ts}New personal campaign page{/ts}\n {/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Personal Campaign Page Title{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpTitle}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Current Status{/ts}\n </td>\n <td {$valueStyle}>\n {$pcpStatus}\n </td>\n </tr>\n\n <tr>\n <td {$labelStyle}>\n <a href=\"{$pcpURL}\">{ts}View Page{/ts}</a>\n </td>\n <td></td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Supporter{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$supporterUrl}\">{$supporterName}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Linked to Contribution Page{/ts}\n </td>\n <td {$valueStyle}>\n <a href=\"{$contribPageUrl}\">{$contribPageTitle}</a>\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n <a href=\"{$managePCPUrl}\">{ts}Manage Personal Campaign Pages{/ts}</a>\n </td>\n <td></td>\n </tr>\n\n </table>\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,822,'pcp_notify',0,1,0,NULL), + (21,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\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 <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\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,823,'pcp_status_change',1,0,0,NULL), + (22,'Personal Campaign Pages - Supporter Status Change Notification','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{if $pcpStatus eq \'Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been approved and is now live.{/ts}\n\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n{if $isTellFriendEnabled}\n\n{ts}After logging in, you can use this form to promote your fundraising page{/ts}:\n{$pcpTellFriendURL}\n\n{/if}\n\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\n{* Rejected message *}\n{elseif $pcpStatus eq \'Not Approved\'}\n============================\n{ts}Your Personal Campaign Page{/ts}\n\n============================\n\n{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}\n\n{if $pcpNotifyEmailAddress}\n\n{ts}Please contact our site administrator for more information{/ts}:\n{$pcpNotifyEmailAddress}\n{/if}\n\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 <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\n <h1>{ts}Your Personal Campaign Page{/ts}</h1>\n\n {if $pcpStatus eq \'Approved\'}\n\n <p>{ts}Your personal campaign page has been approved and is now live.{/ts}</p>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n\n {if $isTellFriendEnabled}\n <p><a href=\"{$pcpTellFriendURL}\">{ts}After logging in, you can use this form to promote your fundraising page{/ts}</a></p>\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {elseif $pcpStatus eq \'Not Approved\'}\n\n <p>{ts}Your personal campaign page has been reviewed. There were some issues with the content which prevented us from approving the page. We are sorry for any inconvenience.{/ts}</p>\n {if $pcpNotifyEmailAddress}\n <p>{ts}Please contact our site administrator for more information{/ts}: {$pcpNotifyEmailAddress}</p>\n {/if}\n\n {/if}\n\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,823,'pcp_status_change',0,1,0,NULL), + (23,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\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 <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\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}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,824,'pcp_supporter_notify',1,0,0,NULL), + (24,'Personal Campaign Pages - Supporter Welcome','{ts 1=$contribPageTitle}Your Personal Campaign Page for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}\n\n{if $pcpStatus eq \'Approved\'}\n====================\n{ts}Promoting Your Page{/ts}\n\n====================\n{if $isTellFriendEnabled}\n\n{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:\n\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser and follow the prompts{/ts}:\n{$pcpTellFriendURL}\n{else}\n\n{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts}\n{ts}Include this link to your fundraising page in your emails{/ts}:\n{$pcpInfoURL}\n{/if}\n\n===================\n{ts}Managing Your Page{/ts}\n\n===================\n{ts}Whenever you want to preview, update or promote your page{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser to go to your page{/ts}:\n{$pcpInfoURL}\n\n{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}\n\n\n{elseif $pcpStatus EQ \'Waiting Review\'}\n{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}\n\n\n{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}\n\n\n{ts}You can still preview your page prior to approval{/ts}:\n1. {ts}Login to your account at{/ts}:\n{$loginUrl}\n\n2. {ts}Click or paste this link into your browser{/ts}:\n{$pcpInfoURL}\n\n{/if}\n{if $pcpNotifyEmailAddress}\n{ts}Questions? Send email to{/ts}:\n{$pcpNotifyEmailAddress}\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 <p>{ts 1=\"$contribPageTitle\"}Thanks for creating a personal campaign page in support of %1.{/ts}</p>\n </td>\n </tr>\n\n {if $pcpStatus eq \'Approved\'}\n\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}Promoting Your Page{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if $isTellFriendEnabled}\n <p>{ts}You can begin your fundraising efforts using our \"Tell a Friend\" form{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpTellFriendURL}\">{ts}Click this link and follow the prompts{/ts}</a></li>\n </ol>\n {else}\n <p>{ts}Send email to family, friends and colleagues with a personal message about this campaign.{/ts} {ts}Include this link to your fundraising page in your emails{/ts}: {$pcpInfoURL}</p>\n {/if}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Managing Your Page{/ts}\n </th>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts}Whenever you want to preview, update or promote your page{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Go to your page{/ts}</a></li>\n </ol>\n <p>{ts}When you view your campaign page WHILE LOGGED IN, the page includes links to edit your page, tell friends, and update your contact info.{/ts}</p>\n </td>\n </tr>\n </tr>\n </table>\n </td>\n </tr>\n\n {elseif $pcpStatus EQ \'Waiting Review\'}\n\n <tr>\n <td>\n <p>{ts}Your page requires administrator review before you can begin your fundraising efforts.{/ts}</p>\n <p>{ts}A notification email has been sent to the site administrator, and you will receive another notification from them as soon as the review process is complete.{/ts}</p>\n <p>{ts}You can still preview your page prior to approval{/ts}:</p>\n <ol>\n <li><a href=\"{$loginUrl}\">{ts}Login to your account{/ts}</a></li>\n <li><a href=\"{$pcpInfoURL}\">{ts}Click this link{/ts}</a></li>\n </ol>\n </td>\n </tr>\n\n {/if}\n\n {if $pcpNotifyEmailAddress}\n <tr>\n <td>\n <p>{ts}Questions? Send email to{/ts}: {$pcpNotifyEmailAddress}</p>\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,824,'pcp_supporter_notify',0,1,0,NULL), + (25,'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,825,'pcp_owner_notify',1,0,0,NULL), + (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,825,'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,826,'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,826,'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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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 !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\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 {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 !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\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 !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{/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 !empty($dataArray)} {$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----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/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 !empty($dataArray)}\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 $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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\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 $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 <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 !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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\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\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 $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\n {if {event.is_monetary|boolean}}\n\n <tr>\n <th {$headerStyle}>\n {if !empty($event.fee_label)}{$event.fee_label}{/if}\n </th>\n </tr>\n\n {if !empty($lineItem)}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n\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 !empty($dataArray)}\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) }<th>{ts}Total Participants{/ts}</th>{/if}\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.qty}\n </td>\n <td>\n {$line.unit_price|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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if !empty($pricesetFieldsCount) }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if $totalAmount and $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {/if}\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 {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if !empty($amount) && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\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 {if {event.is_monetary|boolean}}\n {if {contribution.balance_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {else}\n <tr>\n <td {$labelStyle}>{ts}Total Amount{/ts}</td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {/if}\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 {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$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 !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 !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\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\n {/if}\n\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,827,'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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{elseif $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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 !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and empty($defaultRole)}\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 {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 !empty($email)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Registered Email{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$email}\n{/if}\n{if !empty($event.is_monetary)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{if !empty($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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---------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if}\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 !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{/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 !empty($dataArray)} {$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----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/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 !empty($dataArray)}\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 $is_pay_later}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$pay_later_receipt}\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{/if}\n\n{if {participant.register_date|boolean}}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\n\n{$customName}\n=========================================================={if !empty($pricesetFieldsCount) }===================={/if}\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\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 $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 <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 !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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\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\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 $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\n {if {event.is_monetary|boolean}}\n\n <tr>\n <th {$headerStyle}>\n {if !empty($event.fee_label)}{$event.fee_label}{/if}\n </th>\n </tr>\n\n {if !empty($lineItem)}\n {foreach from=$lineItem item=value key=priceset}\n {if $value neq \'skip\'}\n {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$priceset+1}Participant %1{/ts}\n </td>\n </tr>\n {/if}\n\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 !empty($dataArray)}\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) }<th>{ts}Total Participants{/ts}</th>{/if}\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.qty}\n </td>\n <td>\n {$line.unit_price|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 {/if}\n <td>\n {$line.line_total+$line.tax_amount|crmMoney}\n </td>\n {if !empty($pricesetFieldsCount) }\n <td>\n {$line.participant_count}\n </td>\n {/if}\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if $totalAmount and $totalTaxAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Amount Before Tax:{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount-$totalTaxAmount|crmMoney}\n </td>\n </tr>\n {/if}\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 {/if}\n </tr>\n {/foreach}\n {/if}\n {/if}\n\n {if !empty($amount) && !$lineItem}\n {foreach from=$amount item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney} {$amnt.label}\n </td>\n </tr>\n {/foreach}\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 {if {event.is_monetary|boolean}}\n {if {contribution.balance_amount|boolean}}\n <tr>\n <td {$labelStyle}>{ts}Total Paid{/ts}</td>\n <td {$valueStyle}>\n {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>{ts}Balance{/ts}</td>\n <td {$valueStyle}>{contribution.balance_amount}</td>\n </tr>\n {else}\n <tr>\n <td {$labelStyle}>{ts}Total Amount{/ts}</td>\n <td {$valueStyle}>\n {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if}\n </td>\n </tr>\n {/if}\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 {if $is_pay_later}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {$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 !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 !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\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\n {/if}\n\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,827,'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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {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:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\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 !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/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:$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 !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\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 $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\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=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\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 {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n\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}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n {/if}\n\n <p>\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> {* FIXME: this might be text rather than HTML *}\n {/if}\n\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\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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}\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}\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\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n\n {if $isShowLineItems}\n {foreach from=$participants key=index item=participant}\n {if $isPrimary || {participant.id} === $participant.id}\n {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$participant.index}Participant %1{/ts} {$participant.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)}<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$participant.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 $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 <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $isShowTax}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$participant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$participant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$participant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\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\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\n {if !empty($amounts) && empty($lineItem)}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\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} {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> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\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 !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\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\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></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> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></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><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{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,828,'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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($isRequireApproval)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if {event.pay_later_receipt|boolean}}{event.pay_later_receipt}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{/if}\n\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Event Information and Location{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{event.title}\n{event.start_date|crmDate:\"%A\"} {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:\"%A\"} {$event.event_end_date|crmDate}{/if}{/if}\n{if !empty($conference_sessions)}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n{if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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 {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{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\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 !empty($payer.name)}\nYou were registered by: {$payer.name}\n{/if}\n{if !empty($event.is_monetary) and empty($isRequireApproval)} {* This section for Paid events only.*}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{if !empty ($event.fee_label)}{$event.fee_label}{/if}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if}\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-----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/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:$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 !empty($amounts) && empty($lineItem)}\n{foreach from=$amounts item=amnt key=level}{$amnt.amount|crmMoney:$currency} {$amnt.label}\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 $register_date}\n{ts}Registration Date{/ts}: {$register_date|crmDate}\n{/if}\n{if !empty($receive_date)}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\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 !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n{if !empty($billingName)}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Billing Name and Address{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$billingName}\n{$address}\n{/if}\n\n{if !empty($credit_card_type)}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts}Credit Card Information{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPre_grouptitle.$i}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{$customPost_grouptitle.$j}\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\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==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{ts 1=$participantID+2}Participant Information - Participant %1{/ts}\n\n==========================================================={if !empty($pricesetFieldsCount)}===================={/if}\n\n{foreach from=$eachParticipant item=eachProfile key=pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\n\n{$customProfile.title.$pid}\n----------------------------------------------------------{if !empty($pricesetFieldsCount)}--------------------{/if}\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=participantTotal}style=\"margin: 0.5em 0 0.5em;padding: 0.5em;background-color: #999999;font-weight: bold;color: #FAFAFA;border-radius: 2px;\"{/capture}\n\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 {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n <p>{event.confirm_email_text}</p>\n\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}{if $isOnWaitlist}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>waitlisted</strong>.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to <strong>registered<strong>.{/ts}{/if}{/if}</p>\n\n {/if}\n\n <p>\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> {* FIXME: this might be text rather than HTML *}\n {/if}\n\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\n {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n\n {if !empty($event.participant_role) and $event.participant_role neq \'Attendee\' and !empty($defaultRole)}\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}\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}\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\n <tr>\n <th {$headerStyle}>\n {event.fee_label}\n </th>\n </tr>\n\n {if $isShowLineItems}\n {foreach from=$participants key=index item=participant}\n {if $isPrimary || {participant.id} === $participant.id}\n {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts 1=$participant.index}Participant %1{/ts} {$participant.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)}<th>{ts}Total Participants{/ts}</th>{/if}\n </tr>\n {foreach from=$participant.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 $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 <td {$tdStyle}>\n {$line.line_total+$line.tax_amount|crmMoney:$currency}\n </td>\n {if !empty($pricesetFieldsCount)}<td {$tdStyle}>{$line.participant_count}</td> {/if}\n </tr>\n {/foreach}\n {if $isShowTax}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$participant.totals.total_amount_exclusive|crmMoney}</td>\n <td colspan=1>{$participant.totals.tax_amount|crmMoney}</td>\n <td colspan=2>{$participant.totals.total_amount_inclusive|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\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\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\n {if !empty($amounts) && empty($lineItem)}\n {foreach from=$amounts item=amnt key=level}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$amnt.amount|crmMoney:$currency} {$amnt.label}\n </td>\n </tr>\n {/foreach}\n {/if}\n\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} {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> </tr>\n {/if}\n\n {if $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$register_date|crmDate}\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 !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\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\n {/if}\n\n {/if} {* End of conditional section for Paid events *}\n\n\n{if !empty($customPre)}\n{foreach from=$customPre item=customPr key=i}\n <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></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> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></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><th {$headerStyle}>{ts 1=$participantID+2}Participant %1{/ts} </th></tr>\n {foreach from=$eachParticipant item=eachProfile key=pid}\n <tr><th {$headerStyle}>{$customProfile.title.$pid}</th></tr>\n {foreach from=$eachProfile item=val key=field}\n <tr>{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,828,'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,829,'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,829,'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,830,'participant_cancelled',1,0,0,NULL), + (36,'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,830,'participant_cancelled',0,1,0,NULL), + (37,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $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 $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===========================================================\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:\"%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{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 <!-- 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}This is an invitation to complete your registration that was initially waitlisted.{/ts}</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">{ts}Click here to confirm and complete your registration{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n {ts}This event allows for{/ts}\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}self service cancel or transfer{/ts}</a>\n {/if}\n\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:\"%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 {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $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 $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 <tr>\n <td colspan=\"2\" {$valueStyle}>\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_confirm',1,0,0,NULL), + (38,'Events - Registration Confirmation Invite','{ts 1=$event.event_title}Confirm your registration for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}This is an invitation to complete your registration that was initially waitlisted.{/ts}\n\n{if !$isAdditional and $participant.id}\n\n===========================================================\n{ts}Confirm Your Registration{/ts}\n\n===========================================================\n{capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can confirm your registration online:\n{$confirmUrl}\n{/if}\n{if $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 $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===========================================================\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:\"%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{if $conference_sessions}\n\n\n{ts}Your schedule:{/ts}\n{assign var=\'group_by_day\' value=\'NA\'}\n{foreach from=$conference_sessions item=session}\n{if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n{assign var=\'group_by_day\' value=$session.start_date}\n\n{$group_by_day|crmDate:\"%m/%d/%Y\"}\n\n\n{/if}\n{$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}\n{if $session.location} {$session.location}{/if}\n{/foreach}\n{/if}\n\n\n{ts}Participant Role{/ts}: {$participant.role}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 <!-- 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}This is an invitation to complete your registration that was initially waitlisted.{/ts}</p>\n </td>\n </tr>\n {if !$isAdditional and $participant.id}\n <tr>\n <th {$headerStyle}>\n {ts}Confirm Your Registration{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {capture assign=confirmUrl}{crmURL p=\'civicrm/event/confirm\' q=\"reset=1&participantId=`$participant.id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <a href=\"{$confirmUrl}\">{ts}Click here to confirm and complete your registration{/ts}</a>\n </td>\n </tr>\n {/if}\n {if $event.allow_selfcancelxfer }\n {ts}This event allows for{/ts}\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}self service cancel or transfer{/ts}</a>\n {/if}\n\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:\"%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 {if $conference_sessions}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Your schedule:{/ts}\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {assign var=\'group_by_day\' value=\'NA\'}\n {foreach from=$conference_sessions item=session}\n {if $session.start_date|crmDate:\"%Y/%m/%d\" != $group_by_day|crmDate:\"%Y/%m/%d\"}\n {assign var=\'group_by_day\' value=$session.start_date}\n <em>{$group_by_day|crmDate:\"%m/%d/%Y\"}</em><br />\n {/if}\n {$session.start_date|crmDate:0:1}{if $session.end_date}-{$session.end_date|crmDate:0:1}{/if} {$session.title}<br />\n {if $session.location} {$session.location}<br />{/if}\n {/foreach}\n </td>\n </tr>\n {/if}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $event.location.phone.1.phone || $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 $event.is_public}\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}\'}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n {if $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 $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 <tr>\n <td colspan=\"2\" {$valueStyle}>\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_confirm',0,1,0,NULL), + (39,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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,832,'participant_expired',1,0,0,NULL), + (40,'Events - Pending Registration Expiration Notice','{ts 1=$event.event_title}Event registration has expired for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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 1=$event.event_title}Your pending event registration for %1 has expired\nbecause you did not confirm your registration.{/ts}</p>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor want to inquire about reinstating your registration for this event.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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,832,'participant_expired',0,1,0,NULL), + (41,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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','<!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=$to_participant}Your Event Registration has been Transferred to %1.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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,833,'participant_transferred',1,0,0,NULL), + (42,'Events - Registration Transferred Notice','{ts 1=$event.event_title}Event Registration Transferred for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$to_participant}Your Event Registration has been transferred to %1.{/ts}\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:\"%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{ts}Participant Role{/ts}: {$participant.role}\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 $register_date}\n{ts}Registration Date{/ts}: {$participant.register_date|crmDate}\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','<!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=$to_participant}Your Event Registration has been Transferred to %1.{/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:\"%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 <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {$participant.role}\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 $register_date}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$participant.register_date|crmDate}\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,833,'participant_transferred',0,1,0,NULL), + (43,'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,834,'friend',1,0,0,NULL), + (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,834,'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+$line.tax_amount|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+$line.tax_amount|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}}\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,835,'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+$line.tax_amount|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+$line.tax_amount|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}}\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,835,'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,836,'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,836,'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,837,'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,837,'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,838,'membership_autorenew_billing',1,0,0,NULL), + (52,'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,838,'membership_autorenew_billing',0,1,0,NULL), + (53,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' <table id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n',1,839,'test_preview',1,0,0,NULL), + (54,'Test-drive - Receipt Header','[TEST]\n','***********************************************************\n\n{ts}Test-drive Email / Receipt{/ts}\n\n{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}\n\n***********************************************************\n',' <table id=\"crm-event_receipt_test\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n <tr>\n <td>\n <p>{ts}Test-drive Email / Receipt{/ts}</p>\n <p>{ts}This is a test-drive email. No live financial transaction has occurred.{/ts}</p>\n </td>\n </tr>\n </table>\n',1,839,'test_preview',0,1,0,NULL), + (55,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\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 <p>{ts}Thank you for your generous pledge.{/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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $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,840,'pledge_acknowledge',1,0,0,NULL), + (56,'Pledges - Acknowledgement','{ts}Thank you for your Pledge{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Thank you for your generous pledge.{/ts}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$total_pledge_amount|crmMoney:$currency}\n\n===========================================================\n{ts}Payment Schedule{/ts}\n\n===========================================================\n{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}\n\n{if $frequency_day}\n\n{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}\n{/if}\n\n{if $payments}\n{assign var=\"count\" value=\"1\"}\n{foreach from=$payments item=payment}\n\n{ts 1=$count}Payment %1{/ts}: {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n{assign var=\"count\" value=`$count+1`}\n{/foreach}\n{/if}\n\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n{if $customGroup}\n{foreach from=$customGroup item=value key=customName}\n===========================================================\n{$customName}\n===========================================================\n{foreach from=$value item=v key=n}\n{$n}: {$v}\n{/foreach}\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 <p>{ts}Thank you for your generous pledge.{/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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$total_pledge_amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Payment Schedule{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=$scheduled_amount|crmMoney:$currency 2=$frequency_interval 3=$frequency_unit 4=$installments}%1 every %2 %3 for %4 installments.{/ts}</p>\n\n {if $frequency_day}\n <p>{ts 1=$frequency_day 2=$frequency_unit}Payments are due on day %1 of the %2.{/ts}</p>\n {/if}\n </td>\n </tr>\n\n {if $payments}\n {assign var=\"count\" value=\"1\"}\n {foreach from=$payments item=payment}\n <tr>\n <td {$labelStyle}>\n {ts 1=$count}Payment %1{/ts}\n </td>\n <td {$valueStyle}>\n {$payment.amount|crmMoney:$currency} {if $payment.status eq 1}{ts}paid{/ts} {$payment.receive_date|truncate:10:\'\'|crmDate}{else}{ts}due{/ts} {$payment.due_date|truncate:10:\'\'|crmDate}{/if}\n </td>\n </tr>\n {assign var=\"count\" value=`$count+1`}\n {/foreach}\n {/if}\n\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}</p>\n </td>\n </tr>\n\n {if $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,840,'pledge_acknowledge',0,1,0,NULL), + (57,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/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=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/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}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {domain.address}</p>\n {/if}\n </td>\n </tr>\n\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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\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\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank you for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,841,'pledge_reminder',1,0,0,NULL), + (58,'Pledges - Payment Reminder','{ts}Pledge Payment Reminder{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/ts}\n\n===========================================================\n{ts}Payment Due{/ts}\n\n===========================================================\n{ts}Amount Due{/ts}: {$amount_due|crmMoney:$currency}\n{ts}Due Date{/ts}: {$scheduled_payment_date|truncate:10:\'\'|crmDate}\n\n{if $contribution_page_id}\n{capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\nClick this link to go to a web page where you can make your payment online:\n{$contributionUrl}\n{else}\n{ts}Please mail your payment to{/ts}:\n{domain.address}\n{/if}\n\n===========================================================\n{ts}Pledge Information{/ts}\n\n===========================================================\n{ts}Pledge Received{/ts}: {$create_date|truncate:10:\'\'|crmDate}\n{ts}Total Pledge Amount{/ts}: {$amount|crmMoney:$currency}\n{ts}Total Paid{/ts}: {$amount_paid|crmMoney:$currency}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'} Please contact us at %1 or send email to %2 if you have questions\nor need to modify your payment schedule.{/ts}\n\n\n{ts}Thank you for your generous support.{/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=$next_payment|truncate:10:\'\'|crmDate}This is a reminder that the next payment on your pledge is due on %1.{/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}Payment Due{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Amount Due{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_due|crmMoney:$currency}\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n {if $contribution_page_id}\n {capture assign=contributionUrl}{crmURL p=\'civicrm/contribute/transact\' q=\"reset=1&id=`$contribution_page_id`&cid=`{contact.id}`&pledgeId=`$pledge_id`&cs=`$checksumValue`\" a=true h=0 fe=1}{/capture}\n <p><a href=\"{$contributionUrl}\">{ts}Go to a web page where you can make your payment online{/ts}</a></p>\n {else}\n <p>{ts}Please mail your payment to{/ts}: {domain.address}</p>\n {/if}\n </td>\n </tr>\n\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}Pledge Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Pledge Received{/ts}\n </td>\n <td {$valueStyle}>\n {$create_date|truncate:10:\'\'|crmDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Pledge Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$amount|crmMoney:$currency}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$amount_paid|crmMoney:$currency}\n </td>\n </tr>\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\nor need to modify your payment schedule.{/ts}</p>\n <p>{ts}Thank you for your generous support.{/ts}</p>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,841,'pledge_reminder',0,1,0,NULL), + (59,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,842,'uf_notify',1,0,0,NULL), + (60,'Profiles - Admin Notification','{$grouptitle} {ts 1=$displayName}Submitted by %1{/ts} - {contact.display_name}\n','{ts}Submitted For:{/ts} {$displayName}\n{ts}Date:{/ts} {$currentDate}\n{ts}Contact Summary:{/ts} {$contactLink}\n\n===========================================================\n{$grouptitle}\n\n===========================================================\n{foreach from=$values item=value key=valueName}\n{$valueName}: {$value}\n{/foreach}\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 <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <td {$labelStyle}>\n {ts}Submitted For{/ts}\n </td>\n <td {$valueStyle}>\n {$displayName}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Date{/ts}\n </td>\n <td {$valueStyle}>\n {$currentDate}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Contact Summary{/ts}\n </td>\n <td {$valueStyle}>\n {$contactLink}\n </td>\n </tr>\n\n <tr>\n <th {$headerStyle}>\n {$grouptitle}\n </th>\n </tr>\n\n {foreach from=$values item=value key=valueName}\n <tr>\n <td {$labelStyle}>\n {$valueName}\n </td>\n <td {$valueStyle}>\n {$value}\n </td>\n </tr>\n {/foreach}\n </table>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,842,'uf_notify',0,1,0,NULL), + (61,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {survey.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {survey.title}.</p>\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,843,'petition_sign',1,0,0,NULL), + (62,'Petition - signature added','Thank you for signing {survey.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {survey.title}.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {survey.title}.</p>\n\n{capture assign=petitionURL}{crmURL p=\'civicrm/petition/sign\' q=\"sid={survey.id}\" a=1 fe=1 h=1}{/capture}\n{include file=\"CRM/common/SocialNetwork.tpl\" url=$petitionURL title=\'{survey.title}\' pageURL=$petitionURL petition_id=\'{survey.id}\' noscript=true emailMode=true}\n',1,843,'petition_sign',0,1,0,NULL), + (63,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,844,'petition_confirmation_needed',1,0,0,NULL), + (64,'Petition - need verification','Confirmation of signature needed for {$petition.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\nThank you for signing {$petition.title}.\n\nIn order to complete your signature, we must confirm your e-mail.\nPlease do so by visiting the following email confirmation web page:\n\n{$petition.confirmUrlPlainText}\n\nIf you did not sign this petition, please ignore this message.\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n\n<p>Thank you for signing {$petition.title}.</p>\n\n<p>In order to <b>complete your signature</b>, we must confirm your e-mail.\n<br />\nPlease do so by visiting the following web page by clicking\non the link below or pasting the link into your browser.\n<br /><br />\nEmail confirmation page: <a href=\"{$petition.confirmUrl}\">{$petition.confirmUrl}</a></p>\n\n<p>If you did not sign this petition, please ignore this message.</p>\n',1,844,'petition_confirmation_needed',0,1,0,NULL), (65,'Sample CiviMail Newsletter Template','Sample CiviMail Newsletter','','<!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<table width=612 cellpadding=0 cellspacing=0 bgcolor=\"#ffffff\">\n <tr>\n <td colspan=\"2\" bgcolor=\"#ffffff\" valign=\"middle\" >\n <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" >\n <tr>\n <td>\n <a href=\"https://civicrm.org\"><img src=\"https://civicrm.org/sites/civicrm.org/files/top-logo_2.png\" border=0 alt=\"Replace this logo with the URL to your own\"></a>\n </td>\n <td> </td>\n <td>\n <a href=\"https://civicrm.org\" style=\"text-decoration: none;\"><font size=5 face=\"Arial, Verdana, sans-serif\" color=\"#8bc539\">Your Newsletter Title</font></a>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td valign=\"top\" width=\"70%\">\n <!-- left column -->\n <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td style=\"font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n Greetings {contact.display_name},\n <br /><br />\n This is a sample template designed to help you get started creating and sending your own CiviMail messages. This template uses an HTML layout that is generally compatible with the wide variety of email clients that your recipients might be using (e.g. Gmail, Outlook, Yahoo, etc.).\n <br /><br />You can select this \"Sample CiviMail Newsletter Template\" from the \"Use Template\" drop-down in Step 3 of creating a mailing, and customize it to your needs. Then check the \"Save as New Template\" box on the bottom the page to save your customized version for use in future mailings.\n <br /><br />The logo you use must be uploaded to your server. Copy and paste the URL path to the logo into the <img src= tag in the HTML at the top. Click \"Source\" or the Image button if you are using the text editor.\n <br /><br />\n Edit the color of the links and headers using the color button or by editing the HTML.\n <br /><br />\n Your newsletter message and donation appeal can go here. Click the link button to <a href=\"#\">create links</a> - remember to use a fully qualified URL starting with http:// in all your links!\n <br /><br />\n To use CiviMail:\n <ul>\n <li><a href=\"http://book.civicrm.org/user/advanced-configuration/email-system-configuration/\">Configure your Email System</a>.</li>\n <li>Make sure your web hosting provider allows outgoing bulk mail, and see if they have a restriction on quantity. If they don\'t allow bulk mail, consider <a href=\"https://civicrm.org/providers/hosting\">finding a new host</a>.</li>\n </ul>\n Sincerely,\n <br /><br />\n Your Team\n <br /><br />\n </font>\n </td>\n </tr>\n </table>\n </td>\n\n <td valign=\"top\" width=\"30%\" bgcolor=\"#ffffff\" style=\"border: 1px solid #056085;\">\n <!-- right column -->\n <table cellpadding=10 cellspacing=0 border=0>\n <tr>\n <td bgcolor=\"#056085\"><font face=\"Arial, Verdana, sans-serif\" size=\"4\" color=\"#ffffff\">News and Events</font></td>\n </tr>\n <tr>\n <td style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 12px;\" >\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <font color=\"#056085\"><strong>Featured Events</strong> </font><br />\n Fundraising Dinner<br />\n Training Meeting<br />\n Board of Directors Annual Meeting<br />\n\n <br /><br />\n <font color=\"#056085\"><strong>Community Events</strong></font><br />\n Bake Sale<br />\n Charity Auction<br />\n Art Exhibit<br />\n\n <br /><br />\n <font color=\"#056085\"><strong>Important Dates</strong></font><br />\n Tuesday August 27<br />\n Wednesday September 8<br />\n Thursday September 29<br />\n Saturday October 1<br />\n Sunday October 20<br />\n </font>\n </td>\n </tr>\n </table>\n </td>\n </tr>\n\n <tr>\n <td colspan=\"2\">\n <table cellpadding=\"10\" cellspacing=\"0\" border=\"0\">\n <tr>\n <td>\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <font color=\"#7dc857\"><strong>Helpful Tips</strong></font>\n <br /><br />\n <font color=\"#3b5187\">Tokens</font><br />\n Click \"Insert Tokens\" to dynamically insert names, addresses, and other contact data of your recipients.\n <br /><br />\n <font color=\"#3b5187\">Plain Text Version</font><br />\n Some people refuse HTML emails altogether. We recommend sending a plain-text version of your important communications to accommodate them. Luckily, CiviCRM accommodates for this! Just click \"Plain Text\" and copy and paste in some text. Line breaks (carriage returns) and fully qualified URLs like http://www.example.com are all you get, no HTML here!\n <br /><br />\n <font color=\"#3b5187\">Play by the Rules</font><br />\n The address of the sender is required by the Can Spam Act law. This is an available token called domain.address. An unsubscribe or opt-out link is also required. There are several available tokens for this. <em>{action.optOutUrl}</em> creates a link for recipients to click if they want to opt out of receiving emails from your organization. <em>{action.unsubscribeUrl}</em> creates a link to unsubscribe from the specific mailing list used to send this message. Click on \"Insert Tokens\" to find these and look for tokens named \"Domain\" or \"Unsubscribe\". This sample template includes both required tokens at the bottom of the message. You can also configure a default Mailing Footer containing these tokens.\n <br /><br />\n <font color=\"#3b5187\">Composing Offline</font><br />\n If you prefer to compose an HTML email offline in your own text editor, you can upload this HTML content into CiviMail or simply click \"Source\" and then copy and paste the HTML in.\n <br /><br />\n <font color=\"#3b5187\">Images</font><br />\n Most email clients these days (Outlook, Gmail, etc) block image loading by default. This is to protect their users from annoying or harmful email. Not much we can do about this, so encourage recipients to add you to their contacts or \"whitelist\". Also use images sparingly, do not rely on images to convey vital information, and always use HTML \"alt\" tags which describe the image content.\n </td>\n </tr>\n </table>\n </td>\n </tr>\n <tr>\n <td colspan=\"2\" style=\"color: #000; font-family: Arial, Verdana, sans-serif; font-size: 10px;\">\n <font face=\"Arial, Verdana, sans-serif\" size=\"2\" >\n <hr />\n <a href=\"{action.unsubscribeUrl}\" title=\"click to unsubscribe\">Click here</a> to unsubscribe from this mailing list.<br /><br />\n Our mailing address is:<br />\n {domain.address}\n </td>\n </tr>\n </table>\n\n</body>\n</html>\n',1,NULL,NULL,1,0,0,NULL), (66,'Sample Responsive Design Newsletter - Single Column Template','Sample Responsive Design Newsletter - Single Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n <title></title>\n\n <style type=\"text/css\">\n {literal}\n /* Client-specific Styles */\n #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n a img {border:none;}\n .image_fix {display:block;}\n p {margin: 0px 0px !important;}\n table td {border-collapse: collapse;}\n table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n a {text-decoration: none;text-decoration:none;}\n\n /*STYLES*/\n table[class=full] { width: 100%; clear: both; }\n\n /*IPAD STYLES*/\n @media only screen and (max-width: 640px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color:#136388;pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 416px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 416px!important;text-align:center!important;}\n img[class=banner] {width: 440px!important;auto!important;}\n img[class=col2img] {width: 440px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 100px!important;}\n table[class=\"col3img\"] {width: 131px!important;}\n img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n table[class=\"removeMobile\"]{width:10px!important;}\n img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n }\n\n /*IPHONE STYLES*/\n @media only screen and (max-width: 480px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #136388;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: none;color:#136388;pointer-events: auto;cursor: default;}\n\n table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n img[class=banner] {width: 280px!important;height:100px!important;}\n img[class=col2img] {width: 280px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 260px!important;}\n img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n table[class=\"col3img\"] {width: 280px!important;}\n img[class=\"blog\"] {width: 280px!important;auto!important;}\n td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}\n }\n\n @media only screen and (max-device-width: 800px)\n {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}}\n @media only screen and (max-device-width: 769px) {\n .devicewidthmob {font-size:16px;}\n }\n\n @media only screen and (max-width: 640px) {\n .desktop-spacer {display:none !important;}\n }\n {/literal}\n </style>\n\n<body>\n <!-- Start of preheader --><!-- Start of preheader -->\n <table bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"310\">\n <tbody>\n <tr>\n <td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; line-height:120%; color: #f8f8f8;padding-left:15px; padding-bottom:5px;\" valign=\"middle\">Organization or Program Name Here</td>\n </tr>\n </tbody>\n </table>\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"310\">\n <tbody>\n <tr>\n <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px; text-align:right;\" valign=\"middle\">Month and Year</td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of main-banner-->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n <tbody>\n <tr>\n <td rowspan=\"2\" style=\"padding-top:10px; padding-bottom:10px;\" width=\"38%\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" /></td>\n <td align=\"right\" width=\"62%\">\n <h6 class=\"collapse\"> </h6>\n </td>\n </tr>\n <tr>\n <td align=\"right\">\n <h5 style=\"font-family: Gill Sans, Gill Sans MT, Myriad Pro, DejaVu Sans Condensed, Helvetica, Arial, sans-serif; color:#136388;\"> </h5>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 23px; color:#f8f8f8; text-align:left; line-height: 32px; padding:5px 15px; background-color:#136388;\">Headline Here</td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- hero story -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/650x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /hero image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px; color:#89c66b;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td style=\"padding:0 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">{contact.email_greeting_display}, </p>\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></p>\n </td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- end of hero image and story --><!-- story 1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"250\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#89c66b;\">Your Heading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td style=\"padding:0 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #7a6e67; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n </td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#136388;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story 2--><!-- banner1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- content --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding:15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna </p>\n </td>\n </tr>\n <!-- /button --><!-- white button -->\n <!-- /button --><!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /banner 1--><!-- banner 2 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#136388\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"650\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"auto\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/banner-image-650-250.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"650\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- content --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding: 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color: #f0f0f0; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n </td>\n </tr>\n <!-- /button --><!-- white button -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px; padding-bottom:10px; padding-left:15px;\"><a href=\"#\" style=\"color:#ffffff;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"read more\">Read More</a></td>\n </tr>\n <!-- /button --><!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /banner2 --><!-- footer -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"650\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td><!-- logo -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n <tbody>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0; \">Unsubscribe | </a><a href=\"{action.subscribeUrl}\" style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n </tr>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --><!-- start of social icons -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n <tbody>\n <tr>\n <td align=\"left\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\"> </td>\n <td align=\"right\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of social icons --></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n\n</body>\n</html>\n',1,NULL,NULL,1,0,0,NULL), (67,'Sample Responsive Design Newsletter - Two Column Template','Sample Responsive Design Newsletter - Two Column','','<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\" />\n <meta content=\"width=device-width, initial-scale=1.0\" name=\"viewport\" />\n <title></title>\n <style type=\"text/css\">\n {literal}\n img {height: auto !important;}\n /* Client-specific Styles */\n #outlook a {padding:0;} /* Force Outlook to provide a \"view in browser\" menu link. */\n body{width:100% !important; -webkit-text-size-adjust:100%; -ms-text-size-adjust:100%; margin:0; padding:0;}\n\n /* Prevent Webkit and Windows Mobile platforms from changing default font sizes, while not breaking desktop design. */\n .ExternalClass {width:100%;} /* Force Hotmail to display emails at full width */\n .ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;} /* Force Hotmail to display normal line spacing. */\n #backgroundTable {margin:0; padding:0; width:100% !important; line-height: 100% !important;}\n img {outline:none; text-decoration:none;border:none; -ms-interpolation-mode: bicubic;}\n a img {border:none;}\n .image_fix {display:block;}\n p {margin: 0px 0px !important;}\n table td {border-collapse: collapse;}\n table { border-collapse:collapse; mso-table-lspace:0pt; mso-table-rspace:0pt; }\n a {/*color: #33b9ff;*/text-decoration: none;text-decoration:none!important;}\n\n\n /*STYLES*/\n table[class=full] { width: 100%; clear: both; }\n\n /*IPAD STYLES*/\n @media only screen and (max-width: 640px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important;pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 440px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 414px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 414px!important;text-align:center!important;}\n img[class=banner] {width: 440px!important;auto!important;}\n img[class=col2img] {width: 440px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 100px!important;}\n table[class=\"col3img\"] {width: 131px!important;}\n img[class=\"col3img\"] {width: 131px!important;height: auto!important;}\n table[class=\"removeMobile\"]{width:10px!important;}\n img[class=\"blog\"] {width: 440px!important;height: auto!important;}\n }\n\n /*IPHONE STYLES*/\n @media only screen and (max-width: 480px) {\n a[href^=\"tel\"], a[href^=\"sms\"] {text-decoration: none;color: #0a8cce;pointer-events: none;cursor: default;}\n .mobile_link a[href^=\"tel\"], .mobile_link a[href^=\"sms\"] {text-decoration: default;color: #0a8cce !important; pointer-events: auto;cursor: default;}\n table[class=devicewidth] {width: 280px!important;text-align:center!important;}\n table[class=devicewidthmob] {width: 260px!important;text-align:center!important;}\n table[class=devicewidthinner] {width: 260px!important;text-align:center!important;}\n img[class=banner] {width: 280px!important;height:100px!important;}\n img[class=col2img] {width: 280px!important;height:auto!important;}\n table[class=\"cols3inner\"] {width: 260px!important;}\n img[class=\"col3img\"] {width: 280px!important;height: auto!important;}\n table[class=\"col3img\"] {width: 280px!important;}\n img[class=\"blog\"] {width: 280px!important;auto!important;}\n td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}\n }\n\n @media only screen and (max-device-width: 800px)\n {td[class=\"padding-top-right15\"]{padding:15px 15px 0 0 !important;}\n td[class=\"padding-right15\"]{padding-right:15px !important;}}\n @media only screen and (max-device-width: 769px) {.devicewidthmob {font-size:14px;}}\n\n @media only screen and (max-width: 640px) {.desktop-spacer {display:none !important;}\n }\n {/literal}\n </style>\n <body>\n <!-- Start of preheader --><!-- Start of preheader -->\n <table bgcolor=\"#0B4151\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"360\">\n <tbody>\n <tr>\n <td align=\"left\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height:120%; color: #f8f8f8;padding-left:15px;\" valign=\"middle\">Organization or Program Name Here</td>\n </tr>\n </tbody>\n </table>\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"emhide\" width=\"320\">\n <tbody>\n <tr>\n <td align=\"right\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px;color: #f8f8f8;padding-right:15px;\" valign=\"middle\">Month Year</td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of preheader --><!-- start of logo -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"20\" width=\"100%\">\n <table align=\"center\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\" width=\"93%\">\n <tbody>\n <tr>\n <td rowspan=\"2\" width=\"330\"><a href=\"#\"> <div class=\"imgpop\"><img src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/civicrm-logo-transparent.png\" alt=\"Replace with your own logo\" width=\"220\" border=\"0\" style=\"display:block;\"/></div></a></td>\n <td align=\"right\" >\n <h6 class=\"collapse\"> </h6>\n </td>\n </tr>\n <tr>\n <td align=\"right\">\n\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --> <!-- hero story 1 -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"101%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#f8f8f8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Hero Story Heading</td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthinner\" width=\"700\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidthinner\" width=\"100%\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" class=\"blog\" height=\"396\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/700x396.png\" style=\"display:block; border:none; outline:none; text-decoration:none; padding:0; line-height:0;\" width=\"700\" /></a></div>\n </td>\n </tr>\n <!-- /image --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- hero story -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 26px; padding:0 15px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Subheading Here</a></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr><!-- /Spacing -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 26px; padding:0 15px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Replace with your text and images, and remember to link the facebook and twitter links in the footer to your pages. Have fun!</span></td>\n </tr>\n\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr><!-- /Spacing -->\n\n <!-- /Spacing --><!-- /hero story -->\n\n <!-- Spacing --> <!-- Spacing -->\n\n\n\n <!-- Spacing --><!-- end of content -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Section Heading -->\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 24px; color:#f8f8f8; text-align:left; line-height: 26px; padding:5px 15px; background-color: #80C457\">Section Heading Here</td>\n </tr>\n <!-- /Section Heading -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /hero story 1 --><!-- story one -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful†Movementâ€going strong\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM helps keep the “City Beautiful†Movementâ€going strong\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story one -->\n <!-- story two -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"How CiviCRM will take Tribodar Eco Learning Center to another level\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story two --><!-- story three -->\n\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing --><!-- Spacing -->\n <tr>\n <td height=\"20\" class=\"desktop-spacer\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px; text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"CiviCRM provides a soup-to-nuts open-source solution for Friends of the San Pedro River\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story three -->\n\n\n\n\n\n <!-- story four -->\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"left-image\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#ffffff\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <!-- Spacing -->\n <tr>\n <td bgcolor=\"#076187\" height=\"0\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <!-- Spacing -->\n <tr>\n <td class=\"desktop-spacer\" height=\"20\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"660\">\n <tbody>\n <tr>\n <td><!-- Start of left column -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"330\">\n <tbody><!-- image -->\n <tr>\n <td align=\"center\" class=\"devicewidth\" height=\"150\" valign=\"top\" width=\"330\"><a href=\"#\"><img alt=\"\" border=\"0\" class=\"col2img\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/330x150.png\" style=\"display:block; border:none; outline:none; text-decoration:none; display:block;\" width=\"330\" /></a></td>\n </tr>\n <!-- /image -->\n </tbody>\n </table>\n <!-- end of left column --><!-- spacing for mobile devices-->\n\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"mobilespacing\">\n <tbody>\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of for mobile devices--><!-- start of right column -->\n\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidthmob\" width=\"310\">\n <tbody>\n <tr>\n <td class=\"padding-top-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 18px;text-align:left; line-height: 24px;\"><a href=\"#\" style=\"color:#076187; text-decoration:none; \" target=\"_blank\">Heading Here</a><a href=\"#\" style=\"color:#076187; text-decoration:none;\" target=\"_blank\" title=\"Google Summer of Code\"></a></td>\n </tr>\n <!-- end of title --><!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing --><!-- content -->\n <tr>\n <td class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\"><span class=\"padding-right15\" style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; color: #7a6e67; text-align:left; line-height: 24px;\">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod\n tempor incididunt ut labore et dolore magna </span></td>\n </tr>\n <tr>\n <td style=\"font-family: Helvetica, arial, sans-serif; font-size: 14px; font-weight:bold; color: #333333; text-align:left;line-height: 24px; padding-top:10px;\"><a href=\"#\" style=\"color:#80C457;text-decoration:none;font-weight:bold;\" target=\"_blank\" title=\"Google Summer of Code\">Read More</a></td>\n </tr>\n <!-- /button --><!-- end of content -->\n </tbody>\n </table>\n <!-- end of right column --></td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"15\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\" width=\"100%\"> </td>\n </tr>\n <!-- /Spacing -->\n <tr>\n <td style=\"padding: 15px;\">\n <p style=\"font-family: Helvetica, arial, sans-serif; font-size: 16px; color:#076187; text-align:left; line-height: 26px; padding-bottom:10px;\">Remember to link the facebook and twitter links below to your pages!</p>\n </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- /story four -->\n\n <!-- footer -->\n\n <!-- End of footer --><!-- Start of postfooter -->\n <table bgcolor=\"#d8d8d8\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"backgroundTable\" st-sortable=\"footer\" width=\"100%\">\n <tbody>\n <tr>\n <td>\n <table align=\"center\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody>\n <tr>\n <td width=\"100%\">\n <table align=\"center\" bgcolor=\"#89c66b\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"devicewidth\" width=\"700\">\n <tbody><!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td><!-- logo -->\n <table align=\"left\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"250\">\n <tbody>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px;\"><a href=\"{action.unsubscribeUrl}\" style=\"color: #f0f0f0;\">Unsubscribe | </a><a href=\"{action.subscribeUrl}\" style=\"color: #f0f0f0;\">Subscribe |</a> <a href=\"{action.optOutUrl}\" style=\"color: #f0f0f0;\">Opt out</a></span></td>\n </tr>\n <tr>\n <td width=\"20\"> </td>\n <td align=\"left\" height=\"40\" width=\"250\"><span style=\"font-family: Helvetica, arial, sans-serif; font-size: 13px; text-align:left; line-height: 26px; padding-bottom:10px; color: #f0f0f0;\">{domain.address}</span></td>\n </tr>\n </tbody>\n </table>\n <!-- end of logo --><!-- start of social icons -->\n <table align=\"right\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" height=\"40\" vaalign=\"middle\" width=\"60\">\n <tbody>\n <tr>\n <td align=\"left\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/facebook.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div> </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"10\"> </td>\n <td align=\"right\" height=\"22\" width=\"22\">\n <div class=\"imgpop\"><a href=\"#\" target=\"_blank\"><img alt=\"\" border=\"0\" height=\"22\" src=\"https://civicrm.org/sites/default/files/civicrm/custom/images/twitter.png\" style=\"display:block; border:none; outline:none; text-decoration:none;\" width=\"22\" /> </a></div>\n </td>\n <td align=\"left\" style=\"font-size:1px; line-height:1px;\" width=\"20\"> </td>\n </tr>\n </tbody>\n </table>\n <!-- end of social icons --></td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td height=\"10\" style=\"font-size:1px; line-height:1px; mso-line-height-rule: exactly;\"> </td>\n </tr>\n <!-- Spacing -->\n <tr>\n <td bgcolor=\"#80C457\" height=\"10\" width=\"100%\"> </td>\n </tr>\n <!-- Spacing -->\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n </td>\n </tr>\n </tbody>\n </table>\n <!-- End of footer -->\n </body>\n</html>\n',1,NULL,NULL,1,0,0,NULL); @@ -5575,8 +5540,8 @@ INSERT INTO `civicrm_navigation` (`id`, `domain_id`, `label`, `name`, `url`, `ic (143,1,'Date Formats','Date Formats','civicrm/admin/setting/date?reset=1',NULL,'administer CiviCRM','',140,1,NULL,3), (144,1,'Preferred Language Options','Preferred Language Options','civicrm/admin/options/languages?reset=1',NULL,'administer CiviCRM','',140,1,NULL,4), (145,1,'Users and Permissions','Users and Permissions',NULL,NULL,'administer CiviCRM','',103,1,NULL,7), - (146,1,'Permissions (Access Control)','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',145,1,NULL,1), - (147,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',145,1,NULL,2), + (146,1,'Access Control Lists','Permissions (Access Control)','civicrm/admin/access?reset=1',NULL,'administer CiviCRM','',145,1,NULL,5), + (147,1,'Synchronize Users to Contacts','Synchronize Users to Contacts','civicrm/admin/synchUser?reset=1',NULL,'administer CiviCRM','',145,1,NULL,10), (148,1,'System Settings','System Settings',NULL,NULL,'administer CiviCRM','',103,1,NULL,8), (149,1,'Components','Enable Components','civicrm/admin/setting/component?reset=1',NULL,'administer CiviCRM','',148,1,NULL,1), (150,1,'Extensions','Manage Extensions','civicrm/admin/extensions?reset=1',NULL,'administer CiviCRM','',148,1,1,3), @@ -5691,26 +5656,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',182,'Arrange for cricket match with Sunil Gavaskar',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-02-15 11:36:54',NULL,'0'), - (2,'civicrm_contact',133,'Arrange collection of funds from members',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-03-17 23:44:44',NULL,'0'), - (3,'civicrm_contact',170,'Organize the Terry Fox run',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-02-22 13:23:06',NULL,'0'), - (4,'civicrm_contact',85,'Get the registration done for NGO status',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-01-08 22:18:24',NULL,'0'), - (5,'civicrm_contact',63,'Organize the Terry Fox run',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-03-25 05:09:05',NULL,'0'), - (6,'civicrm_contact',152,'Reminder screening of \"Black\" on next Friday',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2022-12-14 18:09:34',NULL,'0'), - (7,'civicrm_contact',165,'Arrange collection of funds from members',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-05-27 06:48:19',NULL,'0'), - (8,'civicrm_contact',148,'Send reminder for annual dinner',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-05-17 06:40:03',NULL,'0'), - (9,'civicrm_contact',86,'Arrange collection of funds from members',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2022-10-20 04:13:03',NULL,'0'), - (10,'civicrm_contact',150,'Chart out route map for next 10k run',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-06-20 01:35:49',NULL,'0'), - (11,'civicrm_contact',31,'Connect for presentation',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-02-25 01:17:07',NULL,'0'), - (12,'civicrm_contact',51,'Send reminder for annual dinner',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-08-02 19:35:02',NULL,'0'), - (13,'civicrm_contact',106,'Get the registration done for NGO status',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-08-09 18:41:34',NULL,'0'), - (14,'civicrm_contact',24,'Contact the Commissioner of Charities',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-07-16 11:25:58',NULL,'0'), - (15,'civicrm_contact',119,'Reminder screening of \"Black\" on next Friday',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-03-16 21:58:46',NULL,'0'), - (16,'civicrm_contact',44,'Organize the Terry Fox run',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-06-03 08:13:15',NULL,'0'), - (17,'civicrm_contact',121,'Arrange collection of funds from members',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-05-21 05:02:10',NULL,'0'), - (18,'civicrm_contact',109,'Connect for presentation',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-08-22 07:29:58',NULL,'0'), - (19,'civicrm_contact',118,'Connect for presentation',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-08-22 13:16:11',NULL,'0'), - (20,'civicrm_contact',164,'Get the registration done for NGO status',1,'2023-09-06 22:14:01','2023-09-06 22:14:01','2023-06-04 17:16:11',NULL,'0'); + (1,'civicrm_contact',121,'Reminder screening of \"Black\" on next Friday',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-09-02 04:10:25',NULL,'0'), + (2,'civicrm_contact',96,'Arrange collection of funds from members',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-09-17 18:05:34',NULL,'0'), + (3,'civicrm_contact',123,'Arrange for cricket match with Sunil Gavaskar',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-02-28 08:21:34',NULL,'0'), + (4,'civicrm_contact',33,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-11-13 18:10:15',NULL,'0'), + (5,'civicrm_contact',96,'Connect for presentation',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-03-28 19:47:44',NULL,'0'), + (6,'civicrm_contact',104,'Reminder screening of \"Black\" on next Friday',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-04-26 17:15:39',NULL,'0'), + (7,'civicrm_contact',122,'Connect for presentation',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-09-17 20:50:36',NULL,'0'), + (8,'civicrm_contact',152,'Reminder screening of \"Black\" on next Friday',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-11-23 17:03:55',NULL,'0'), + (9,'civicrm_contact',71,'Send newsletter for April 2005',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-12-29 14:00:17',NULL,'0'), + (10,'civicrm_contact',163,'Send reminder for annual dinner',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-12-16 08:42:43',NULL,'0'), + (11,'civicrm_contact',15,'Get the registration done for NGO status',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-08-17 17:34:29',NULL,'0'), + (12,'civicrm_contact',95,'Connect for presentation',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-12-11 01:57:11',NULL,'0'), + (13,'civicrm_contact',131,'Get the registration done for NGO status',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-02-19 04:50:53',NULL,'0'), + (14,'civicrm_contact',132,'Contact the Commissioner of Charities',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-07-29 18:56:37',NULL,'0'), + (15,'civicrm_contact',58,'Arrange for cricket match with Sunil Gavaskar',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-06-15 08:32:05',NULL,'0'), + (16,'civicrm_contact',163,'Send newsletter for April 2005',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-01-23 22:02:08',NULL,'0'), + (17,'civicrm_contact',185,'Arrange for cricket match with Sunil Gavaskar',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-01-16 12:31:03',NULL,'0'), + (18,'civicrm_contact',11,'Send newsletter for April 2005',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-09-13 22:39:15',NULL,'0'), + (19,'civicrm_contact',192,'Send reminder for annual dinner',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2023-02-14 08:40:24',NULL,'0'), + (20,'civicrm_contact',33,'Get the registration done for NGO status',1,'2023-09-06 22:52:18','2023-09-06 22:52:18','2022-11-17 05:34:06',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -5894,817 +5859,818 @@ INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, ` (55,2,'Contact Merged','51','Contact Merged',NULL,1,0,51,'Contact Merged',0,1,1,NULL,NULL,NULL,NULL,NULL), (56,2,'Contact Deleted by Merge','52','Contact Deleted by Merge',NULL,1,0,52,'Contact was merged into another contact',0,1,1,NULL,NULL,NULL,NULL,NULL), (57,2,'Failed Payment','54','Failed Payment',NULL,1,0,54,'Failed Payment',0,1,1,2,NULL,NULL,NULL,NULL), - (58,3,'Female','1','Female',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (59,3,'Male','2','Male',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (60,3,'Other','3','Other',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (61,4,'Yahoo','1','Yahoo',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (62,4,'MSN','2','Msn',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (63,4,'AIM','3','Aim',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (64,4,'GTalk','4','Gtalk',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (65,4,'Jabber','5','Jabber',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (66,4,'Skype','6','Skype',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (67,5,'Sprint','1','Sprint',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (68,5,'Verizon','2','Verizon',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (69,5,'Cingular','3','Cingular',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (70,6,'Mrs.','1','Mrs.',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (71,6,'Ms.','2','Ms.',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (72,6,'Mr.','3','Mr.',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (73,6,'Dr.','4','Dr.',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (74,7,'Jr.','1','Jr.',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (75,7,'Sr.','2','Sr.',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (76,7,'II','3','II',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (77,7,'III','4','III',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (78,7,'IV','5','IV',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (79,7,'V','6','V',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (80,7,'VI','7','VI',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (81,7,'VII','8','VII',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (82,8,'Everyone','0','Everyone',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (83,8,'Administrator','1','Admin',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (84,8,'Authenticated','2','Auth',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (85,9,'Visa','1','Visa',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (86,9,'MasterCard','2','MasterCard',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (87,9,'Amex','3','Amex',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (88,9,'Discover','4','Discover',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (89,10,'Credit Card','1','Credit Card',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (90,10,'Debit Card','2','Debit Card',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (91,10,'Cash','3','Cash',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (92,10,'Check','4','Check',NULL,0,1,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (93,10,'EFT','5','EFT',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (94,11,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (95,11,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (96,11,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (97,11,'Failed','4','Failed',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (98,11,'Refunded','7','Refunded',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (99,11,'Partially paid','8','Partially paid',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (100,11,'Pending refund','9','Pending refund',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (101,11,'Chargeback','10','Chargeback',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (102,11,'Template','11','Template',NULL,0,0,11,'Status for contribution records which represent a template for a recurring contribution rather than an actual contribution. This status is transitional, to ensure that said contributions don\\\'t appear in reports. The is_template field is the preferred way to find and filter these contributions.',0,1,1,NULL,NULL,NULL,NULL,NULL), - (103,12,'Waiting Review','1','Waiting Review',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (104,12,'Approved','2','Approved',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (105,12,'Not Approved','3','Not Approved',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (106,13,'Owner chooses whether to receive notifications','1','owner_chooses',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (107,13,'Notifications are sent to ALL owners','2','all_owners',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (108,13,'Notifications are NOT available','3','no_notifications',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (109,14,'Attendee','1','Attendee',NULL,1,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (110,14,'Volunteer','2','Volunteer',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (111,14,'Host','3','Host',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (112,14,'Speaker','4','Speaker',NULL,1,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (113,15,'Conference','1','Conference',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (114,15,'Exhibition','2','Exhibition',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (115,15,'Fundraiser','3','Fundraiser',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (116,15,'Meeting','4','Meeting',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (117,15,'Performance','5','Performance',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (118,15,'Workshop','6','Workshop',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (119,16,'Activities','1','activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (120,16,'Relationships','2','rel',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (121,16,'Groups','3','group',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (122,16,'Notes','4','note',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (123,16,'Tags','5','tag',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (124,16,'Change Log','6','log',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (125,16,'Contributions','7','CiviContribute',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (126,16,'Memberships','8','CiviMember',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (127,16,'Events','9','CiviEvent',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (128,16,'Cases','10','CiviCase',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (129,16,'Pledges','13','CiviPledge',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (130,16,'Mailings','14','CiviMail',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (131,17,'Show Smart Groups on Demand','1','showondemand',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (132,17,'Always Show Smart Groups','2','alwaysshow',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (133,17,'Hide Smart Groups','3','hide',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (134,18,'Custom Data','1','CustomData',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (135,18,'Address','2','Address',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (136,18,'Communication Preferences','3','CommunicationPreferences',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (137,18,'Notes','4','Notes',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (138,18,'Demographics','5','Demographics',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (139,18,'Tags and Groups','6','TagsAndGroups',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (140,18,'Email','7','Email',NULL,1,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (141,18,'Phone','8','Phone',NULL,1,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (142,18,'Instant Messenger','9','IM',NULL,1,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (143,18,'Open ID','10','OpenID',NULL,1,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (144,18,'Website','11','Website',NULL,1,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (145,18,'Prefix','12','Prefix',NULL,2,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (146,18,'Formal Title','13','Formal Title',NULL,2,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (147,18,'First Name','14','First Name',NULL,2,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (148,18,'Middle Name','15','Middle Name',NULL,2,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (149,18,'Last Name','16','Last Name',NULL,2,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (150,18,'Suffix','17','Suffix',NULL,2,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (151,19,'Address Fields','1','location',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (152,19,'Custom Fields','2','custom',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (153,19,'Activities','3','activity',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (154,19,'Relationships','4','relationship',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (155,19,'Notes','5','notes',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (156,19,'Change Log','6','changeLog',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (157,19,'Contributions','7','CiviContribute',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (158,19,'Memberships','8','CiviMember',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (159,19,'Events','9','CiviEvent',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (160,19,'Cases','10','CiviCase',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (161,19,'Demographics','13','demographics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (162,19,'Pledges','15','CiviPledge',NULL,0,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (163,19,'Contact Type','16','contactType',NULL,0,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (164,19,'Groups','17','groups',NULL,0,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (165,19,'Tags','18','tags',NULL,0,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (166,19,'Mailing','19','CiviMail',NULL,0,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (167,20,'Groups','1','Groups',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (168,20,'Contributions','2','CiviContribute',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (169,20,'Memberships','3','CiviMember',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (170,20,'Events','4','CiviEvent',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (171,20,'My Contacts / Organizations','5','Permissioned Orgs',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (172,20,'Pledges','7','CiviPledge',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (173,20,'Personal Campaign Pages','8','PCP',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (174,20,'Assigned Activities','9','Assigned Activities',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (175,20,'Invoices / Credit Notes','10','Invoices / Credit Notes',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (176,21,'Street Address','1','street_address',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (177,21,'Supplemental Address 1','2','supplemental_address_1',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (178,21,'Supplemental Address 2','3','supplemental_address_2',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (179,21,'Supplemental Address 3','4','supplemental_address_3',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (180,21,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (181,21,'Postal Code','6','postal_code',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (182,21,'Postal Code Suffix','7','postal_code_suffix',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (183,21,'County','8','county',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (184,21,'State/Province','9','state_province',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (185,21,'Country','10','country',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (186,21,'Latitude','11','geo_code_1',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (187,21,'Longitude','12','geo_code_2',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (188,21,'Address Name','13','address_name',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (189,21,'Street Address Parsing','14','street_address_parsing',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (190,22,'Access Control','1','Access Control',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (191,22,'Mailing List','2','Mailing List',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (192,23,'CRM_Contact_Form_Search_Custom_Sample','1','CRM_Contact_Form_Search_Custom_Sample',NULL,0,0,1,'Household Name and State',0,0,1,NULL,NULL,NULL,NULL,NULL), - (193,23,'CRM_Contact_Form_Search_Custom_ContributionAggregate','2','CRM_Contact_Form_Search_Custom_ContributionAggregate',NULL,0,0,2,'Contribution Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL), - (194,23,'CRM_Contact_Form_Search_Custom_Group','4','CRM_Contact_Form_Search_Custom_Group',NULL,0,0,4,'Include / Exclude Search',0,0,1,NULL,NULL,NULL,NULL,NULL), - (195,23,'CRM_Contact_Form_Search_Custom_PostalMailing','5','CRM_Contact_Form_Search_Custom_PostalMailing',NULL,0,0,5,'Postal Mailing',0,0,1,NULL,NULL,NULL,NULL,NULL), - (196,23,'CRM_Contact_Form_Search_Custom_Proximity','6','CRM_Contact_Form_Search_Custom_Proximity',NULL,0,0,6,'Proximity Search',0,0,1,NULL,NULL,NULL,NULL,NULL), - (197,23,'CRM_Contact_Form_Search_Custom_EventAggregate','7','CRM_Contact_Form_Search_Custom_EventAggregate',NULL,0,0,7,'Event Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL), - (198,23,'CRM_Contact_Form_Search_Custom_ActivitySearch','8','CRM_Contact_Form_Search_Custom_ActivitySearch',NULL,0,0,8,'Activity Search',0,0,0,NULL,NULL,NULL,NULL,NULL), - (199,23,'CRM_Contact_Form_Search_Custom_PriceSet','9','CRM_Contact_Form_Search_Custom_PriceSet',NULL,0,0,9,'Price Set Details for Event Participants',0,0,1,NULL,NULL,NULL,NULL,NULL), - (200,23,'CRM_Contact_Form_Search_Custom_ZipCodeRange','10','CRM_Contact_Form_Search_Custom_ZipCodeRange',NULL,0,0,10,'Zip Code Range',0,0,1,NULL,NULL,NULL,NULL,NULL), - (201,23,'CRM_Contact_Form_Search_Custom_DateAdded','11','CRM_Contact_Form_Search_Custom_DateAdded',NULL,0,0,11,'Date Added to CiviCRM',0,0,1,NULL,NULL,NULL,NULL,NULL), - (202,23,'CRM_Contact_Form_Search_Custom_MultipleValues','12','CRM_Contact_Form_Search_Custom_MultipleValues',NULL,0,0,12,'Custom Group Multiple Values Listing',0,0,1,NULL,NULL,NULL,NULL,NULL), - (203,23,'CRM_Contact_Form_Search_Custom_ContribSYBNT','13','CRM_Contact_Form_Search_Custom_ContribSYBNT',NULL,0,0,13,'Contributions made in Year X and not Year Y',0,0,1,NULL,NULL,NULL,NULL,NULL), - (204,23,'CRM_Contact_Form_Search_Custom_TagContributions','14','CRM_Contact_Form_Search_Custom_TagContributions',NULL,0,0,14,'Find Contribution Amounts by Tag',0,0,1,NULL,NULL,NULL,NULL,NULL), - (205,23,'CRM_Contact_Form_Search_Custom_FullText','15','CRM_Contact_Form_Search_Custom_FullText',NULL,0,0,15,'Full-text Search',0,0,1,NULL,NULL,NULL,NULL,NULL), - (206,24,'Scheduled','1','Scheduled',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (207,24,'Completed','2','Completed',NULL,1,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (208,24,'Cancelled','3','Cancelled',NULL,2,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (209,24,'Left Message','4','Left Message',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (210,24,'Unreachable','5','Unreachable',NULL,2,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (211,24,'Not Required','6','Not Required',NULL,2,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (212,24,'Available','7','Available',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (213,24,'No-show','8','No_show',NULL,2,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (214,26,'Ongoing','1','Open','Opened',0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (215,26,'Resolved','2','Closed','Closed',0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (216,26,'Urgent','3','Urgent','Opened',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (217,27,'Name Only','1','Name Only',NULL,0,0,1,'CRM_Event_Page_ParticipantListing_Name',0,1,1,NULL,NULL,NULL,NULL,NULL), - (218,27,'Name and Email','2','Name and Email',NULL,0,0,2,'CRM_Event_Page_ParticipantListing_NameAndEmail',0,1,1,NULL,NULL,NULL,NULL,NULL), - (219,27,'Name, Status and Register Date','3','Name, Status and Register Date',NULL,0,0,3,'CRM_Event_Page_ParticipantListing_NameStatusAndDate',0,1,1,NULL,NULL,NULL,NULL,NULL), - (220,28,'jpg','1','jpg',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (221,28,'jpeg','2','jpeg',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (222,28,'png','3','png',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (223,28,'gif','4','gif',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (224,28,'txt','5','txt',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (225,28,'pdf','6','pdf',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (226,28,'doc','7','doc',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (227,28,'xls','8','xls',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (228,28,'rtf','9','rtf',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (229,28,'csv','10','csv',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (230,28,'ppt','11','ppt',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (231,28,'docx','12','docx',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (232,28,'xlsx','13','xlsx',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (233,28,'odt','14','odt',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (234,28,'ics','15','ics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (235,28,'pptx','16','pptx',NULL,0,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (236,29,'\"FIXME\" <info@EXAMPLE.ORG>','1','\"FIXME\" <info@EXAMPLE.ORG>',NULL,0,1,1,'Default domain email address and from name.',0,0,1,NULL,1,NULL,NULL,NULL), - (237,30,'Search Builder','1','Search Builder',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (238,30,'Import Contact','2','Import Contact',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (239,30,'Import Activity','3','Import Activity',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (240,30,'Import Contribution','4','Import Contribution',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (241,30,'Import Membership','5','Import Membership',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (242,30,'Import Participant','6','Import Participant',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (243,30,'Export Contact','7','Export Contact',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (244,30,'Export Contribution','8','Export Contribution',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (245,30,'Export Membership','9','Export Membership',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (246,30,'Export Participant','10','Export Participant',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (247,30,'Export Pledge','11','Export Pledge',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (248,30,'Export Case','12','Export Case',NULL,0,0,12,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (249,30,'Export Activity','14','Export Activity',NULL,0,0,14,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (250,31,'Textarea','1','Textarea',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (251,31,'CKEditor 4','2','CKEditor',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (252,32,'day','day','day',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (253,32,'week','week','week',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (254,32,'month','month','month',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (255,32,'year','year','year',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (256,33,'Phone','1','Phone',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (257,33,'Mobile','2','Mobile',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (258,33,'Fax','3','Fax',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (259,33,'Pager','4','Pager',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (260,33,'Voicemail','5','Voicemail',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (261,34,'Participants (Role)','1','ParticipantRole','role_id',0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (262,34,'Participants (Event Name)','2','ParticipantEventName','event_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (263,34,'Participants (Event Type)','3','ParticipantEventType','event_id.event_type_id',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (264,35,'Public','1','public',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (265,35,'Admin','2','admin',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (266,36,'IMAP','1','IMAP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (267,36,'Maildir','2','Maildir',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (268,36,'POP3','3','POP3',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (269,36,'Localdir','4','Localdir',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (270,37,'Urgent','1','Urgent',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (271,37,'Normal','2','Normal',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (272,37,'Low','3','Low',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (273,38,'Vancouver','city_','city_',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (274,38,'/(19|20)(\\d{2})-(\\d{1,2})-(\\d{1,2})/','date_','date_',NULL,1,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (275,39,'Constituent Report (Summary)','contact/summary','CRM_Report_Form_Contact_Summary',NULL,0,0,1,'Provides a list of address and telephone information for constituent records in your system.',0,0,1,NULL,NULL,NULL,NULL,NULL), - (276,39,'Constituent Report (Detail)','contact/detail','CRM_Report_Form_Contact_Detail',NULL,0,0,2,'Provides contact-related information on contributions, memberships, events and activities.',0,0,1,NULL,NULL,NULL,NULL,NULL), - (277,39,'Activity Details Report','activity','CRM_Report_Form_Activity',NULL,0,0,3,'Provides a list of constituent activity including activity statistics for one/all contacts during a given date range(required)',0,0,1,NULL,NULL,NULL,NULL,NULL), - (278,39,'Walk / Phone List Report','walklist','CRM_Report_Form_Walklist_Walklist',NULL,0,0,4,'Provides a detailed report for your walk/phonelist for targeted contacts',0,0,0,NULL,NULL,NULL,NULL,NULL), - (279,39,'Current Employer Report','contact/currentEmployer','CRM_Report_Form_Contact_CurrentEmployer',NULL,0,0,5,'Provides detail list of employer employee relationships along with employment details Ex Join Date',0,0,1,NULL,NULL,NULL,NULL,NULL), - (280,39,'Contribution Summary Report','contribute/summary','CRM_Report_Form_Contribute_Summary',NULL,0,0,6,'Groups and totals contributions by criteria including contact, time period, financial type, contributor location, etc.',0,0,1,2,NULL,NULL,NULL,NULL), - (281,39,'Contribution Detail Report','contribute/detail','CRM_Report_Form_Contribute_Detail',NULL,0,0,7,'Lists specific contributions by criteria including contact, time period, financial type, contributor location, etc. Contribution summary report points to this report for contribution details.',0,0,1,2,NULL,NULL,NULL,NULL), - (282,39,'Repeat Contributions Report','contribute/repeat','CRM_Report_Form_Contribute_Repeat',NULL,0,0,8,'Given two date ranges, shows contacts who contributed in both the date ranges with the amount contributed in each and the percentage increase / decrease.',0,0,1,2,NULL,NULL,NULL,NULL), - (283,39,'Contributions by Organization Report','contribute/organizationSummary','CRM_Report_Form_Contribute_OrganizationSummary',NULL,0,0,9,'Displays a detailed list of contributions grouped by organization, which includes contributions made by employees for the organisation.',0,0,1,2,NULL,NULL,NULL,NULL), - (284,39,'Contributions by Household Report','contribute/householdSummary','CRM_Report_Form_Contribute_HouseholdSummary',NULL,0,0,10,'Displays a detailed list of contributions grouped by household which includes contributions made by members of the household.',0,0,1,2,NULL,NULL,NULL,NULL), - (285,39,'Top Donors Report','contribute/topDonor','CRM_Report_Form_Contribute_TopDonor',NULL,0,0,11,'Provides a list of the top donors during a time period you define. You can include as many donors as you want (for example, top 100 of your donors).',0,0,1,2,NULL,NULL,NULL,NULL), - (286,39,'SYBUNT Report','contribute/sybunt','CRM_Report_Form_Contribute_Sybunt',NULL,0,0,12,'SYBUNT means some year(s) but not this year. Provides a list of constituents who donated at some time in the history of your organization but did not donate during the time period you specify.',0,0,1,2,NULL,NULL,NULL,NULL), - (287,39,'LYBUNT Report','contribute/lybunt','CRM_Report_Form_Contribute_Lybunt',NULL,0,0,13,'LYBUNT means last year but not this year. Provides a list of constituents who donated last year but did not donate during the time period you specify as the current year.',0,0,1,2,NULL,NULL,NULL,NULL), - (288,39,'Soft Credit Report','contribute/softcredit','CRM_Report_Form_Contribute_SoftCredit',NULL,0,0,14,'Shows contributions made by contacts that have been soft-credited to other contacts.',0,0,1,2,NULL,NULL,NULL,NULL), - (289,39,'Membership Report (Summary)','member/summary','CRM_Report_Form_Member_Summary',NULL,0,0,15,'Provides a summary of memberships by type and Member Since.',0,0,1,3,NULL,NULL,NULL,NULL), - (290,39,'Membership Report (Detail)','member/detail','CRM_Report_Form_Member_Detail',NULL,0,0,16,'Provides a list of members along with their membership status and membership details (Member Since, Membership Start Date, Membership Expiration Date). Can also display contributions (payments) associated with each membership.',0,0,1,3,NULL,NULL,NULL,NULL), - (291,39,'Membership Report (Lapsed)','member/lapse','CRM_Report_Form_Member_Lapse',NULL,0,0,17,'Provides a list of memberships that lapsed or will lapse before the date you specify.',0,0,1,3,NULL,NULL,NULL,NULL), - (292,39,'Event Participant Report (List)','event/participantListing','CRM_Report_Form_Event_ParticipantListing',NULL,0,0,18,'Provides lists of participants for an event.',0,0,1,1,NULL,NULL,NULL,NULL), - (293,39,'Event Income Report (Summary)','event/summary','CRM_Report_Form_Event_Summary',NULL,0,0,19,'Provides an overview of event income. You can include key information such as event ID, registration, attendance, and income generated to help you determine the success of an event.',0,0,1,1,NULL,NULL,NULL,NULL), - (294,39,'Event Income Report (Detail)','event/income','CRM_Report_Form_Event_Income',NULL,0,0,20,'Helps you to analyze the income generated by an event. The report can include details by participant type, status and payment method.',0,0,1,1,NULL,NULL,NULL,NULL), - (295,39,'Pledge Detail Report','pledge/detail','CRM_Report_Form_Pledge_Detail',NULL,0,0,21,'List of pledges including amount pledged, pledge status, next payment date, balance due, total amount paid etc.',0,0,1,6,NULL,NULL,NULL,NULL), - (296,39,'Pledged but not Paid Report','pledge/pbnp','CRM_Report_Form_Pledge_Pbnp',NULL,0,0,22,'Pledged but not Paid Report',0,0,1,6,NULL,NULL,NULL,NULL), - (297,39,'Relationship Report','contact/relationship','CRM_Report_Form_Contact_Relationship',NULL,0,0,23,'Relationship Report',0,0,1,NULL,NULL,NULL,NULL,NULL), - (298,39,'Case Summary Report','case/summary','CRM_Report_Form_Case_Summary',NULL,0,0,24,'Provides a summary of cases and their duration by date range, status, staff member and / or case role.',0,0,1,7,NULL,NULL,NULL,NULL), - (299,39,'Case Time Spent Report','case/timespent','CRM_Report_Form_Case_TimeSpent',NULL,0,0,25,'Aggregates time spent on case and / or non-case activities by activity type and contact.',0,0,1,7,NULL,NULL,NULL,NULL), - (300,39,'Contact Demographics Report','case/demographics','CRM_Report_Form_Case_Demographics',NULL,0,0,26,'Demographic breakdown for case clients (and or non-case contacts) in your database. Includes custom contact fields.',0,0,1,7,NULL,NULL,NULL,NULL), - (301,39,'Database Log Report','contact/log','CRM_Report_Form_Contact_Log',NULL,0,0,27,'Log of contact and activity records created or updated in a given date range.',0,0,1,NULL,NULL,NULL,NULL,NULL), - (302,39,'Activity Summary Report','activitySummary','CRM_Report_Form_ActivitySummary',NULL,0,0,28,'Shows activity statistics by type / date',0,0,1,NULL,NULL,NULL,NULL,NULL), - (303,39,'Bookkeeping Transactions Report','contribute/bookkeeping','CRM_Report_Form_Contribute_Bookkeeping',NULL,0,0,29,'Shows Bookkeeping Transactions Report',0,0,1,2,NULL,NULL,NULL,NULL), - (304,39,'Participant list Count Report','event/participantlist','CRM_Report_Form_Event_ParticipantListCount',NULL,0,0,31,'Shows the Participant list with Participant Count.',0,0,1,1,NULL,NULL,NULL,NULL), - (305,39,'Income Count Summary Report','event/incomesummary','CRM_Report_Form_Event_IncomeCountSummary',NULL,0,0,32,'Shows the Income Summary of events with Count.',0,0,1,1,NULL,NULL,NULL,NULL), - (306,39,'Case Detail Report','case/detail','CRM_Report_Form_Case_Detail',NULL,0,0,33,'Case Details',0,0,1,7,NULL,NULL,NULL,NULL), - (307,39,'Mail Bounce Report','Mailing/bounce','CRM_Report_Form_Mailing_Bounce',NULL,0,0,34,'Bounce Report for mailings',0,0,1,4,NULL,NULL,NULL,NULL), - (308,39,'Mail Summary Report','Mailing/summary','CRM_Report_Form_Mailing_Summary',NULL,0,0,35,'Summary statistics for mailings',0,0,1,4,NULL,NULL,NULL,NULL), - (309,39,'Mail Opened Report','Mailing/opened','CRM_Report_Form_Mailing_Opened',NULL,0,0,36,'Display contacts who opened emails from a mailing',0,0,1,4,NULL,NULL,NULL,NULL), - (310,39,'Mail Click-Through Report','Mailing/clicks','CRM_Report_Form_Mailing_Clicks',NULL,0,0,37,'Display clicks from each mailing',0,0,1,4,NULL,NULL,NULL,NULL), - (311,39,'Contact Logging Report (Summary)','logging/contact/summary','CRM_Report_Form_Contact_LoggingSummary',NULL,0,0,38,'Contact modification report for the logging infrastructure (summary).',0,0,0,NULL,NULL,NULL,NULL,NULL), - (312,39,'Contact Logging Report (Detail)','logging/contact/detail','CRM_Report_Form_Contact_LoggingDetail',NULL,0,0,39,'Contact modification report for the logging infrastructure (detail).',0,0,0,NULL,NULL,NULL,NULL,NULL), - (313,39,'Survey Report (Detail)','survey/detail','CRM_Report_Form_Campaign_SurveyDetails',NULL,0,0,43,'Detailed report for canvassing, phone-banking, walk lists or other surveys.',0,0,1,9,NULL,NULL,NULL,NULL), - (314,39,'Personal Campaign Page Report','contribute/pcp','CRM_Report_Form_Contribute_PCP',NULL,0,0,44,'Summarizes amount raised and number of contributors for each Personal Campaign Page.',0,0,1,2,NULL,NULL,NULL,NULL), - (315,39,'Pledge Summary Report','pledge/summary','CRM_Report_Form_Pledge_Summary',NULL,0,0,45,'Groups and totals pledges by criteria including contact, time period, pledge status, location, etc.',0,0,1,6,NULL,NULL,NULL,NULL), - (316,39,'Contribution Aggregate by Relationship','contribute/history','CRM_Report_Form_Contribute_History',NULL,0,0,46,'List contact\'s donation history, grouped by year, along with contributions attributed to any of the contact\'s related contacts.',0,0,1,2,NULL,NULL,NULL,NULL), - (317,39,'Mail Detail Report','mailing/detail','CRM_Report_Form_Mailing_Detail',NULL,0,0,47,'Provides reporting on Intended and Successful Deliveries, Unsubscribes and Opt-outs, Replies and Forwards.',0,0,1,4,NULL,NULL,NULL,NULL), - (318,39,'Contribution and Membership Details','member/contributionDetail','CRM_Report_Form_Member_ContributionDetail',NULL,0,0,48,'Contribution details for any type of contribution, plus associated membership information for contributions which are in payment for memberships.',0,0,1,3,NULL,NULL,NULL,NULL), - (319,39,'Recurring Contributions Report','contribute/recur','CRM_Report_Form_Contribute_Recur',NULL,0,0,49,'Provides information about the status of recurring contributions',0,0,1,2,NULL,NULL,NULL,NULL), - (320,39,'Recurring Contributions Summary','contribute/recursummary','CRM_Report_Form_Contribute_RecurSummary',NULL,0,0,49,'Provides simple summary for each payment instrument for which there are recurring contributions (e.g. Credit Card, Standing Order, Direct Debit, etc., NULL), showing within a given date range.',0,0,1,2,NULL,NULL,NULL,NULL), - (321,39,'Deferred Revenue Details','contribute/deferredrevenue','CRM_Report_Form_Contribute_DeferredRevenue',NULL,0,0,50,'Deferred Revenue Details Report',0,0,1,2,NULL,NULL,NULL,NULL), - (322,40,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (323,40,'Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}','2','Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (324,40,'Dear {contact.prefix_id:label} {contact.last_name}','3','Dear {contact.prefix_id:label} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (325,40,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (326,40,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (327,41,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (328,41,'Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}','2','Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (329,41,'Dear {contact.prefix_id:label} {contact.last_name}','3','Dear {contact.prefix_id:label} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (330,41,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (331,41,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (332,42,'{contact.prefix_id:label}{ }{contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.suffix_id:label}','1','{contact.prefix_id:label}{ }{contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.suffix_id:label}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (333,42,'{contact.household_name}','2','{contact.household_name}',NULL,2,1,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (334,42,'{contact.organization_name}','3','{contact.organization_name}',NULL,3,1,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (335,42,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (336,43,'Email Address','2','email',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (337,43,'Phone','3','phone',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (338,43,'Street Address','4','street_address',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (339,43,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (340,43,'State/Province','6','state_province',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (341,43,'Country','7','country',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (342,43,'Postal Code','8','postal_code',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (343,44,'Email Address','2','email',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (344,44,'Phone','3','phone',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (345,44,'Street Address','4','street_address',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (346,44,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (347,44,'State/Province','6','state_province',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (348,44,'Country','7','country',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (349,44,'Postal Code','8','postal_code',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (350,45,'Work','1','Work',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (351,45,'Main','2','Main',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (352,45,'Facebook','3','Facebook',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (353,45,'Instagram','5','Instagram',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (354,45,'LinkedIn','6','LinkedIn',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (355,45,'MySpace','7','MySpace',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (356,45,'Pinterest','8','Pinterest',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (357,45,'SnapChat','9','SnapChat',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (358,45,'Tumblr','10','Tumblr',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (359,45,'Twitter','11','Twitter',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (360,45,'Vine','12','Vine ',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (361,46,'Contacts','civicrm_contact','Contact',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (362,46,'Activities','civicrm_activity','Activity',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (363,46,'Cases','civicrm_case','Case',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (364,46,'Attachments','civicrm_file','File',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (365,47,'Contacts','civicrm_contact','Contact',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (366,47,'Relationships','civicrm_relationship','Relationship',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (367,47,'Participants','civicrm_participant','Participant',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (368,47,'Contributions','civicrm_contribution','Contribution',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (369,48,'USD ($)','USD','USD',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (370,48,'CAD ($)','CAD','CAD',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (371,48,'EUR (€)','EUR','EUR',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (372,48,'GBP (£)','GBP','GBP',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (373,48,'JPY (Â¥)','JPY','JPY',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (374,49,'Name Only','1','CRM_Event_Badge_Simple',NULL,0,0,1,'Simple Event Name Badge',0,1,1,NULL,NULL,NULL,NULL,NULL), - (375,49,'Name Tent','2','CRM_Event_Badge_NameTent',NULL,0,0,2,'Name Tent',0,1,1,NULL,NULL,NULL,NULL,NULL), - (376,49,'With Logo','3','CRM_Event_Badge_Logo',NULL,0,0,3,'You can set your own background image',0,1,1,NULL,NULL,NULL,NULL,NULL), - (377,49,'5395 with Logo','4','CRM_Event_Badge_Logo5395',NULL,0,0,4,'Avery 5395 compatible labels with logo (4 up by 2, 59.2mm x 85.7mm)',0,1,1,NULL,NULL,NULL,NULL,NULL), - (378,50,'None','0','None',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (379,50,'Author Only','1','Author Only',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (380,51,'Direct Mail','1','Direct Mail',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (381,51,'Referral Program','2','Referral Program',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (382,51,'Constituent Engagement','3','Constituent Engagement',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (383,52,'Planned','1','Planned',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (384,52,'In Progress','2','In Progress',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (385,52,'Completed','3','Completed',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (386,52,'Cancelled','4','Cancelled',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (387,54,'Approved','1','Approved',NULL,0,1,1,NULL,0,1,1,4,1,NULL,NULL,NULL), - (388,54,'Rejected','2','Rejected',NULL,0,0,2,NULL,0,1,1,4,1,NULL,NULL,NULL), - (389,54,'None','3','None',NULL,0,0,3,NULL,0,1,1,4,1,NULL,NULL,NULL), - (390,55,'1','1','1',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (391,55,'2','2','2',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (392,55,'3','3','3',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (393,55,'4','4','4',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (394,55,'5','5','5',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (395,56,'Survey','Survey','civicrm_survey',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (396,56,'Cases','Case','civicrm_case','case_type_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (397,57,'Letter','{\"metric\":\"in\",\"width\":8.5,\"height\":11}','letter',NULL,NULL,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (398,57,'Legal','{\"metric\":\"in\",\"width\":8.5,\"height\":14}','legal',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (399,57,'Ledger','{\"metric\":\"in\",\"width\":17,\"height\":11}','ledger',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (400,57,'Tabloid','{\"metric\":\"in\",\"width\":11,\"height\":17}','tabloid',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (401,57,'Executive','{\"metric\":\"in\",\"width\":7.25,\"height\":10.5}','executive',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (402,57,'Folio','{\"metric\":\"in\",\"width\":8.5,\"height\":13}','folio',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (403,57,'Envelope #9','{\"metric\":\"pt\",\"width\":638.93,\"height\":278.93}','envelope-9',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (404,57,'Envelope #10','{\"metric\":\"pt\",\"width\":684,\"height\":297}','envelope-10',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (405,57,'Envelope #11','{\"metric\":\"pt\",\"width\":747,\"height\":324}','envelope-11',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (406,57,'Envelope #12','{\"metric\":\"pt\",\"width\":792,\"height\":342}','envelope-12',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (407,57,'Envelope #14','{\"metric\":\"pt\",\"width\":828,\"height\":360}','envelope-14',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (408,57,'Envelope ISO B4','{\"metric\":\"pt\",\"width\":1000.63,\"height\":708.66}','envelope-b4',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (409,57,'Envelope ISO B5','{\"metric\":\"pt\",\"width\":708.66,\"height\":498.9}','envelope-b5',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (410,57,'Envelope ISO B6','{\"metric\":\"pt\",\"width\":498.9,\"height\":354.33}','envelope-b6',NULL,NULL,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (411,57,'Envelope ISO C3','{\"metric\":\"pt\",\"width\":1298.27,\"height\":918.42}','envelope-c3',NULL,NULL,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (412,57,'Envelope ISO C4','{\"metric\":\"pt\",\"width\":918.42,\"height\":649.13}','envelope-c4',NULL,NULL,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (413,57,'Envelope ISO C5','{\"metric\":\"pt\",\"width\":649.13,\"height\":459.21}','envelope-c5',NULL,NULL,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (414,57,'Envelope ISO C6','{\"metric\":\"pt\",\"width\":459.21,\"height\":323.15}','envelope-c6',NULL,NULL,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (415,57,'Envelope ISO DL','{\"metric\":\"pt\",\"width\":623.622,\"height\":311.811}','envelope-dl',NULL,NULL,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (416,57,'ISO A0','{\"metric\":\"pt\",\"width\":2383.94,\"height\":3370.39}','a0',NULL,NULL,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (417,57,'ISO A1','{\"metric\":\"pt\",\"width\":1683.78,\"height\":2383.94}','a1',NULL,NULL,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (418,57,'ISO A2','{\"metric\":\"pt\",\"width\":1190.55,\"height\":1683.78}','a2',NULL,NULL,0,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (419,57,'ISO A3','{\"metric\":\"pt\",\"width\":841.89,\"height\":1190.55}','a3',NULL,NULL,0,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (420,57,'ISO A4','{\"metric\":\"pt\",\"width\":595.28,\"height\":841.89}','a4',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (421,57,'ISO A5','{\"metric\":\"pt\",\"width\":419.53,\"height\":595.28}','a5',NULL,NULL,0,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (422,57,'ISO A6','{\"metric\":\"pt\",\"width\":297.64,\"height\":419.53}','a6',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (423,57,'ISO A7','{\"metric\":\"pt\",\"width\":209.76,\"height\":297.64}','a7',NULL,NULL,0,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (424,57,'ISO A8','{\"metric\":\"pt\",\"width\":147.4,\"height\":209.76}','a8',NULL,NULL,0,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (425,57,'ISO A9','{\"metric\":\"pt\",\"width\":104.88,\"height\":147.4}','a9',NULL,NULL,0,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (426,57,'ISO A10','{\"metric\":\"pt\",\"width\":73.7,\"height\":104.88}','a10',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (427,57,'ISO B0','{\"metric\":\"pt\",\"width\":2834.65,\"height\":4008.19}','b0',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (428,57,'ISO B1','{\"metric\":\"pt\",\"width\":2004.09,\"height\":2834.65}','b1',NULL,NULL,0,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (429,57,'ISO B2','{\"metric\":\"pt\",\"width\":1417.32,\"height\":2004.09}','b2',NULL,NULL,0,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (430,57,'ISO B3','{\"metric\":\"pt\",\"width\":1000.63,\"height\":1417.32}','b3',NULL,NULL,0,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (431,57,'ISO B4','{\"metric\":\"pt\",\"width\":708.66,\"height\":1000.63}','b4',NULL,NULL,0,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (432,57,'ISO B5','{\"metric\":\"pt\",\"width\":498.9,\"height\":708.66}','b5',NULL,NULL,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (433,57,'ISO B6','{\"metric\":\"pt\",\"width\":354.33,\"height\":498.9}','b6',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (434,57,'ISO B7','{\"metric\":\"pt\",\"width\":249.45,\"height\":354.33}','b7',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (435,57,'ISO B8','{\"metric\":\"pt\",\"width\":175.75,\"height\":249.45}','b8',NULL,NULL,0,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (436,57,'ISO B9','{\"metric\":\"pt\",\"width\":124.72,\"height\":175.75}','b9',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (437,57,'ISO B10','{\"metric\":\"pt\",\"width\":87.87,\"height\":124.72}','b10',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (438,57,'ISO C0','{\"metric\":\"pt\",\"width\":2599.37,\"height\":3676.54}','c0',NULL,NULL,0,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (439,57,'ISO C1','{\"metric\":\"pt\",\"width\":1836.85,\"height\":2599.37}','c1',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (440,57,'ISO C2','{\"metric\":\"pt\",\"width\":1298.27,\"height\":1836.85}','c2',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (441,57,'ISO C3','{\"metric\":\"pt\",\"width\":918.43,\"height\":1298.27}','c3',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (442,57,'ISO C4','{\"metric\":\"pt\",\"width\":649.13,\"height\":918.43}','c4',NULL,NULL,0,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (443,57,'ISO C5','{\"metric\":\"pt\",\"width\":459.21,\"height\":649.13}','c5',NULL,NULL,0,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (444,57,'ISO C6','{\"metric\":\"pt\",\"width\":323.15,\"height\":459.21}','c6',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (445,57,'ISO C7','{\"metric\":\"pt\",\"width\":229.61,\"height\":323.15}','c7',NULL,NULL,0,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (446,57,'ISO C8','{\"metric\":\"pt\",\"width\":161.57,\"height\":229.61}','c8',NULL,NULL,0,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (447,57,'ISO C9','{\"metric\":\"pt\",\"width\":113.39,\"height\":161.57}','c9',NULL,NULL,0,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (448,57,'ISO C10','{\"metric\":\"pt\",\"width\":79.37,\"height\":113.39}','c10',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (449,57,'ISO RA0','{\"metric\":\"pt\",\"width\":2437.8,\"height\":3458.27}','ra0',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (450,57,'ISO RA1','{\"metric\":\"pt\",\"width\":1729.13,\"height\":2437.8}','ra1',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (451,57,'ISO RA2','{\"metric\":\"pt\",\"width\":1218.9,\"height\":1729.13}','ra2',NULL,NULL,0,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (452,57,'ISO RA3','{\"metric\":\"pt\",\"width\":864.57,\"height\":1218.9}','ra3',NULL,NULL,0,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (453,57,'ISO RA4','{\"metric\":\"pt\",\"width\":609.45,\"height\":864.57}','ra4',NULL,NULL,0,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (454,57,'ISO SRA0','{\"metric\":\"pt\",\"width\":2551.18,\"height\":3628.35}','sra0',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (455,57,'ISO SRA1','{\"metric\":\"pt\",\"width\":1814.17,\"height\":2551.18}','sra1',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (456,57,'ISO SRA2','{\"metric\":\"pt\",\"width\":1275.59,\"height\":1814.17}','sra2',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (457,57,'ISO SRA3','{\"metric\":\"pt\",\"width\":907.09,\"height\":1275.59}','sra3',NULL,NULL,0,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (458,57,'ISO SRA4','{\"metric\":\"pt\",\"width\":637.8,\"height\":907.09}','sra4',NULL,NULL,0,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (459,58,'Invoice PDF Format','{\"metric\":\"px\",\"margin_top\":10,\"margin_bottom\":0,\"margin_left\":65,\"margin_right\":0}','default_invoice_pdf_format',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (460,59,'Avery 3475','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":10,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":0,\"tMargin\":5,\"NX\":3,\"NY\":8,\"SpaceX\":0,\"SpaceY\":0,\"width\":70,\"height\":36,\"lPadding\":5.08,\"tPadding\":5.08}','3475','Avery',NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (461,59,'Avery 5160','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.21975,\"tMargin\":0.5,\"NX\":3,\"NY\":10,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":2.5935,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5160','Avery',NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (462,59,'Avery 5161','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.175,\"tMargin\":0.5,\"NX\":2,\"NY\":10,\"SpaceX\":0.15625,\"SpaceY\":0,\"width\":4,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5161','Avery',NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (463,59,'Avery 5162','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.1525,\"tMargin\":0.88,\"NX\":2,\"NY\":7,\"SpaceX\":0.195,\"SpaceY\":0,\"width\":4,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','5162','Avery',NULL,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (464,59,'Avery 5163','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.5,\"NX\":2,\"NY\":5,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":4,\"height\":2,\"lPadding\":0.20,\"tPadding\":0.20}','5163','Avery',NULL,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (465,59,'Avery 5164','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":12,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.156,\"tMargin\":0.5,\"NX\":2,\"NY\":3,\"SpaceX\":0.1875,\"SpaceY\":0,\"width\":4,\"height\":3.33,\"lPadding\":0.20,\"tPadding\":0.20}','5164','Avery',NULL,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (466,59,'Avery 8600','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":7.1,\"tMargin\":19,\"NX\":3,\"NY\":10,\"SpaceX\":9.5,\"SpaceY\":3.1,\"width\":66.6,\"height\":25.4,\"lPadding\":5.08,\"tPadding\":5.08}','8600','Avery',NULL,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (467,59,'Avery L7160','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.6,\"NX\":3,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7160','Avery',NULL,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (468,59,'Avery L7161','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.35,\"NX\":3,\"NY\":6,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.83,\"lPadding\":0.20,\"tPadding\":0.20}','L7161','Avery',NULL,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (469,59,'Avery L7162','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.51,\"NX\":2,\"NY\":8,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','L7162','Avery',NULL,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (470,59,'Avery L7163','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.6,\"NX\":2,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7163','Avery',NULL,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (471,60,'Activity Assignees','1','Activity Assignees',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (472,60,'Activity Source','2','Activity Source',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (473,60,'Activity Targets','3','Activity Targets',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (474,61,'Income Account is','1','Income Account is',NULL,0,1,1,'Income Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (475,61,'Credit/Contra Revenue Account is','2','Credit/Contra Revenue Account is',NULL,0,0,2,'Credit/Contra Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (476,61,'Accounts Receivable Account is','3','Accounts Receivable Account is',NULL,0,0,3,'Accounts Receivable Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (477,61,'Credit Liability Account is','4','Credit Liability Account is',NULL,0,0,4,'Credit Liability Account is',0,1,0,2,NULL,NULL,NULL,NULL), - (478,61,'Expense Account is','5','Expense Account is',NULL,0,0,5,'Expense Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (479,61,'Asset Account is','6','Asset Account is',NULL,0,0,6,'Asset Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (480,61,'Cost of Sales Account is','7','Cost of Sales Account is',NULL,0,0,7,'Cost of Sales Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (481,61,'Premiums Inventory Account is','8','Premiums Inventory Account is',NULL,0,0,8,'Premiums Inventory Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (482,61,'Discounts Account is','9','Discounts Account is',NULL,0,0,9,'Discounts Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (483,61,'Sales Tax Account is','10','Sales Tax Account is',NULL,0,0,10,'Sales Tax Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (484,61,'Chargeback Account is','11','Chargeback Account is',NULL,0,0,11,'Chargeback Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (485,61,'Deferred Revenue Account is','12','Deferred Revenue Account is',NULL,0,0,12,'Deferred Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL), - (486,62,'Participant Role','1','participant_role',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (487,63,'Morning Sessions','1','Morning Sessions',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (488,63,'Evening Sessions','2','Evening Sessions',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (489,64,'Contribution','1','Contribution',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (490,64,'Membership','2','Membership',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (491,64,'Pledge Payment','3','Pledge Payment',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (492,65,'Manual Batch','1','Manual Batch',NULL,0,0,1,'Manual Batch',0,1,1,2,NULL,NULL,NULL,NULL), - (493,65,'Automatic Batch','2','Automatic Batch',NULL,0,0,2,'Automatic Batch',0,1,1,2,NULL,NULL,NULL,NULL), - (494,66,'Open','1','Open',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (495,66,'Closed','2','Closed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (496,66,'Data Entry','3','Data Entry',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (497,66,'Reopened','4','Reopened',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (498,66,'Exported','5','Exported',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (499,67,'http','1','http',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (500,67,'xml','2','xml',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (501,67,'smtp','3','smtp',NULL,NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (502,69,'Renewal Reminder (non-auto-renew memberships only)','1','Renewal Reminder (non-auto-renew memberships only)',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (503,69,'Auto-renew Memberships Only','2','Auto-renew Memberships Only',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (504,69,'Reminder for Both','3','Reminder for Both',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (505,70,'Asset','1','Asset',NULL,0,0,1,'Things you own',0,1,1,2,NULL,NULL,NULL,NULL), - (506,70,'Liability','2','Liability',NULL,0,0,2,'Things you owe, like a grant still to be disbursed',0,1,1,2,NULL,NULL,NULL,NULL), - (507,70,'Revenue','3','Revenue',NULL,0,1,3,'Income from contributions and sales of tickets and memberships',0,1,1,2,NULL,NULL,NULL,NULL), - (508,70,'Cost of Sales','4','Cost of Sales',NULL,0,0,4,'Costs incurred to get revenue, e.g. premiums for donations, dinner for a fundraising dinner ticket',0,1,1,2,NULL,NULL,NULL,NULL), - (509,70,'Expenses','5','Expenses',NULL,0,0,5,'Things that are paid for that are consumable, e.g. grants disbursed',0,1,1,2,NULL,NULL,NULL,NULL), - (510,71,'Paid','1','Paid',NULL,0,0,1,'Paid',0,1,1,2,NULL,NULL,NULL,NULL), - (511,71,'Unpaid','3','Unpaid',NULL,0,0,1,'Unpaid',0,1,1,2,NULL,NULL,NULL,NULL), - (512,71,'Partially paid','2','Partially paid',NULL,0,0,2,'Partially paid',0,1,1,2,NULL,NULL,NULL,NULL), - (513,72,'Event Badge','1','Event Badge',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (514,73,'Avery 5395','{\"name\":\"Avery 5395\",\"paper-size\":\"a4\",\"metric\":\"mm\",\"lMargin\":15,\"tMargin\":26,\"NX\":2,\"NY\":4,\"SpaceX\":10,\"SpaceY\":5,\"width\":83,\"height\":57,\"font-size\":12,\"orientation\":\"portrait\",\"font-name\":\"helvetica\",\"font-style\":\"\",\"lPadding\":3,\"tPadding\":3}','Avery 5395',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (515,73,'A6 Badge Portrait 150x106','{\"paper-size\":\"a4\",\"orientation\":\"landscape\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":1,\"metric\":\"mm\",\"lMargin\":25,\"tMargin\":27,\"SpaceX\":0,\"SpaceY\":35,\"width\":106,\"height\":150,\"lPadding\":5,\"tPadding\":5}','A6 Badge Portrait 150x106',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (516,73,'Fattorini Name Badge 100x65','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":4,\"metric\":\"mm\",\"lMargin\":6,\"tMargin\":19,\"SpaceX\":0,\"SpaceY\":0,\"width\":100,\"height\":65,\"lPadding\":0,\"tPadding\":0}','Fattorini Name Badge 100x65',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (517,73,'Hanging Badge 3-3/4\" x 4-3\"/4','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":2,\"metric\":\"mm\",\"lMargin\":10,\"tMargin\":28,\"SpaceX\":0,\"SpaceY\":0,\"width\":96,\"height\":121,\"lPadding\":5,\"tPadding\":5}','Hanging Badge 3-3/4\" x 4-3\"/4',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (518,74,'Formal','1','formal',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (519,74,'Familiar','2','familiar',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (520,75,'Email','Email','Email',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (521,75,'SMS','SMS','SMS',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (522,75,'User Preference','User_Preference','User Preference',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (523,76,'Actual date only','1','Actual date only',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (524,76,'Each anniversary','2','Each anniversary',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (525,77,'Default','1','default',NULL,NULL,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (526,77,'CiviMail','2','civimail',NULL,NULL,0,2,NULL,0,1,1,4,NULL,NULL,NULL,NULL), - (527,77,'CiviEvent','3','civievent',NULL,NULL,0,3,NULL,0,1,1,1,NULL,NULL,NULL,NULL), - (528,78,'Today','this.day','this.day',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (529,78,'This week','this.week','this.week',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (530,78,'This calendar month','this.month','this.month',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (531,78,'This quarter','this.quarter','this.quarter',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (532,78,'This fiscal year','this.fiscal_year','this.fiscal_year',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (533,78,'This calendar year','this.year','this.year',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (534,78,'Yesterday','previous.day','previous.day',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (535,78,'Previous week','previous.week','previous.week',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (536,78,'Previous calendar month','previous.month','previous.month',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (537,78,'Previous quarter','previous.quarter','previous.quarter',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (538,78,'Previous fiscal year','previous.fiscal_year','previous.fiscal_year',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (539,78,'Previous calendar year','previous.year','previous.year',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (540,78,'Last 7 days including today','ending.week','ending.week',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (541,78,'Last 30 days including today','ending_30.day','ending.month',NULL,NULL,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (542,78,'Last 60 days including today','ending_60.day','ending_2.month',NULL,NULL,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (543,78,'Last 90 days including today','ending_90.day','ending.quarter',NULL,NULL,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (544,78,'Last 12 months including today','ending.year','ending.year',NULL,NULL,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (545,78,'Last 2 years including today','ending_2.year','ending_2.year',NULL,NULL,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (546,78,'Last 3 years including today','ending_3.year','ending_3.year',NULL,NULL,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (547,78,'Tomorrow','starting.day','starting.day',NULL,NULL,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (548,78,'Next week','next.week','next.week',NULL,NULL,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (549,78,'Next calendar month','next.month','next.month',NULL,NULL,0,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (550,78,'Next quarter','next.quarter','next.quarter',NULL,NULL,0,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (551,78,'Next fiscal year','next.fiscal_year','next.fiscal_year',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (552,78,'Next calendar year','next.year','next.year',NULL,NULL,0,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (553,78,'Next 7 days including today','starting.week','starting.week',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (554,78,'Next 30 days including today','starting.month','starting.month',NULL,NULL,0,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (555,78,'Next 60 days including today','starting_2.month','starting_2.month',NULL,NULL,0,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (556,78,'Next 90 days including today','starting.quarter','starting.quarter',NULL,NULL,0,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (557,78,'Next 12 months including today','starting.year','starting.year',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (558,78,'Current week to-date','current.week','current.week',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (559,78,'Current calendar month to-date','current.month','current.month',NULL,NULL,0,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (560,78,'Current quarter to-date','current.quarter','current.quarter',NULL,NULL,0,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (561,78,'Current calendar year to-date','current.year','current.year',NULL,NULL,0,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (562,78,'To end of yesterday','earlier.day','earlier.day',NULL,NULL,0,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (563,78,'To end of previous week','earlier.week','earlier.week',NULL,NULL,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (564,78,'To end of previous calendar month','earlier.month','earlier.month',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (565,78,'To end of previous quarter','earlier.quarter','earlier.quarter',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (566,78,'To end of previous calendar year','earlier.year','earlier.year',NULL,NULL,0,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (567,78,'From start of current day','greater.day','greater.day',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (568,78,'From start of current week','greater.week','greater.week',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (569,78,'From start of current calendar month','greater.month','greater.month',NULL,NULL,0,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (570,78,'From start of current quarter','greater.quarter','greater.quarter',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (571,78,'From start of current calendar year','greater.year','greater.year',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (572,78,'To end of current week','less.week','less.week',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (573,78,'To end of current calendar month','less.month','less.month',NULL,NULL,0,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (574,78,'To end of current quarter','less.quarter','less.quarter',NULL,NULL,0,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (575,78,'To end of current calendar year','less.year','less.year',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (576,78,'Previous 2 days','previous_2.day','previous_2.day',NULL,NULL,0,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (577,78,'Previous 2 weeks','previous_2.week','previous_2.week',NULL,NULL,0,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (578,78,'Previous 2 calendar months','previous_2.month','previous_2.month',NULL,NULL,0,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (579,78,'Previous 2 quarters','previous_2.quarter','previous_2.quarter',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (580,78,'Previous 2 calendar years','previous_2.year','previous_2.year',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (581,78,'Previous 2 fiscal years','previous_2.fiscal_year','previous_2.fiscal_year',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (582,78,'Day prior to yesterday','previous_before.day','previous_before.day',NULL,NULL,0,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (583,78,'Week prior to previous week','previous_before.week','previous_before.week',NULL,NULL,0,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (584,78,'Month prior to previous calendar month','previous_before.month','previous_before.month',NULL,NULL,NULL,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (585,78,'Quarter prior to previous quarter','previous_before.quarter','previous_before.quarter',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (586,78,'Year prior to previous calendar year','previous_before.year','previous_before.year',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (587,78,'Fiscal year prior to previous fiscal year','previous_before.fiscal_year','previous_before.fiscal_year',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (588,78,'From end of previous week','greater_previous.week','greater_previous.week',NULL,NULL,0,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (589,78,'From end of previous calendar month','greater_previous.month','greater_previous.month',NULL,NULL,0,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (590,78,'From end of previous quarter','greater_previous.quarter','greater_previous.quarter',NULL,NULL,0,63,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (591,78,'From end of previous calendar year','greater_previous.year','greater_previous.year',NULL,NULL,0,64,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (592,79,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (593,79,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (594,79,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (595,79,'In Progress','5','In Progress',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (596,79,'Overdue','6','Overdue',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (597,80,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (598,80,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (599,80,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (600,80,'Failed','4','Failed',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (601,80,'In Progress','5','In Progress',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (602,80,'Overdue','6','Overdue',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (603,80,'Processing','7','Processing',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (604,80,'Failing','8','Failing',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (605,81,'Production','Production','Production',NULL,NULL,1,1,'Production Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), - (606,81,'Staging','Staging','Staging',NULL,NULL,0,2,'Staging Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), - (607,81,'Development','Development','Development',NULL,NULL,0,3,'Development Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), - (608,82,'None','1','NONE',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (609,82,'By relationship to case client','2','BY_RELATIONSHIP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (610,82,'Specific contact','3','SPECIFIC_CONTACT',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (611,82,'User creating the case','4','USER_CREATING_THE_CASE',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (612,83,'Financial Transactions','civicrm_financial_trxn','civicrm_financial_trxn',NULL,0,1,1,NULL,0,0,1,2,NULL,NULL,NULL,NULL), - (613,85,'Abkhaz','ab','ab_GE',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (614,85,'Afar','aa','aa_ET',NULL,0,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (615,85,'Afrikaans','af','af_ZA',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (616,85,'Akan','ak','ak_GH',NULL,0,0,4,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (617,85,'Albanian','sq','sq_AL',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (618,85,'Amharic','am','am_ET',NULL,0,0,6,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (619,85,'Arabic','ar','ar_EG',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (620,85,'Aragonese','an','an_ES',NULL,0,0,8,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (621,85,'Armenian','hy','hy_AM',NULL,0,0,9,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (622,85,'Assamese','as','as_IN',NULL,0,0,10,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (623,85,'Avaric','av','av_RU',NULL,0,0,11,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (624,85,'Avestan','ae','ae_XX',NULL,0,0,12,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (625,85,'Aymara','ay','ay_BO',NULL,0,0,13,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (626,85,'Azerbaijani','az','az_AZ',NULL,0,0,14,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (627,85,'Bambara','bm','bm_ML',NULL,0,0,15,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (628,85,'Bashkir','ba','ba_RU',NULL,0,0,16,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (629,85,'Basque','eu','eu_ES',NULL,0,0,17,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (630,85,'Belarusian','be','be_BY',NULL,0,0,18,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (631,85,'Bengali','bn','bn_BD',NULL,0,0,19,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (632,85,'Bihari','bh','bh_IN',NULL,0,0,20,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (633,85,'Bislama','bi','bi_VU',NULL,0,0,21,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (634,85,'Bosnian','bs','bs_BA',NULL,0,0,22,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (635,85,'Breton','br','br_FR',NULL,0,0,23,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (636,85,'Bulgarian','bg','bg_BG',NULL,0,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (637,85,'Burmese','my','my_MM',NULL,0,0,25,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (638,85,'Catalan; Valencian','ca','ca_ES',NULL,0,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (639,85,'Chamorro','ch','ch_GU',NULL,0,0,27,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (640,85,'Chechen','ce','ce_RU',NULL,0,0,28,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (641,85,'Chichewa; Chewa; Nyanja','ny','ny_MW',NULL,0,0,29,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (642,85,'Chinese (China)','zh','zh_CN',NULL,0,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (643,85,'Chinese (Taiwan)','zh','zh_TW',NULL,0,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (644,85,'Chuvash','cv','cv_RU',NULL,0,0,32,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (645,85,'Cornish','kw','kw_GB',NULL,0,0,33,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (646,85,'Corsican','co','co_FR',NULL,0,0,34,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (647,85,'Cree','cr','cr_CA',NULL,0,0,35,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (648,85,'Croatian','hr','hr_HR',NULL,0,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (649,85,'Czech','cs','cs_CZ',NULL,0,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (650,85,'Danish','da','da_DK',NULL,0,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (651,85,'Divehi; Dhivehi; Maldivian;','dv','dv_MV',NULL,0,0,39,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (652,85,'Dutch (Netherlands)','nl','nl_NL',NULL,0,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (653,85,'Dutch (Belgium)','nl','nl_BE',NULL,0,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (654,85,'Dzongkha','dz','dz_BT',NULL,0,0,42,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (655,85,'English (Australia)','en','en_AU',NULL,0,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (656,85,'English (Canada)','en','en_CA',NULL,0,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (657,85,'English (United Kingdom)','en','en_GB',NULL,0,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (658,85,'English (United States)','en','en_US',NULL,0,1,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (659,85,'Esperanto','eo','eo_XX',NULL,0,0,47,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (660,85,'Estonian','et','et_EE',NULL,0,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (661,85,'Ewe','ee','ee_GH',NULL,0,0,49,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (662,85,'Faroese','fo','fo_FO',NULL,0,0,50,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (663,85,'Fijian','fj','fj_FJ',NULL,0,0,51,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (664,85,'Finnish','fi','fi_FI',NULL,0,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (665,85,'French (Canada)','fr','fr_CA',NULL,0,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (666,85,'French (France)','fr','fr_FR',NULL,0,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (667,85,'Fula; Fulah; Pulaar; Pular','ff','ff_SN',NULL,0,0,55,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (668,85,'Galician','gl','gl_ES',NULL,0,0,56,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (669,85,'Georgian','ka','ka_GE',NULL,0,0,57,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (670,85,'German','de','de_DE',NULL,0,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (671,85,'German (Swiss)','de','de_CH',NULL,0,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (672,85,'Greek, Modern','el','el_GR',NULL,0,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (673,85,'GuaraniÂ','gn','gn_PY',NULL,0,0,61,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (674,85,'Gujarati','gu','gu_IN',NULL,0,0,62,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (675,85,'Haitian; Haitian Creole','ht','ht_HT',NULL,0,0,63,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (676,85,'Hausa','ha','ha_NG',NULL,0,0,64,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (677,85,'Hebrew (modern)','he','he_IL',NULL,0,0,65,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (678,85,'Herero','hz','hz_NA',NULL,0,0,66,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (679,85,'Hindi','hi','hi_IN',NULL,0,0,67,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (680,85,'Hiri Motu','ho','ho_PG',NULL,0,0,68,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (681,85,'Hungarian','hu','hu_HU',NULL,0,0,69,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (682,85,'Interlingua','ia','ia_XX',NULL,0,0,70,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (683,85,'Indonesian','id','id_ID',NULL,0,0,71,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (684,85,'Interlingue','ie','ie_XX',NULL,0,0,72,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (685,85,'Irish','ga','ga_IE',NULL,0,0,73,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (686,85,'Igbo','ig','ig_NG',NULL,0,0,74,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (687,85,'Inupiaq','ik','ik_US',NULL,0,0,75,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (688,85,'Ido','io','io_XX',NULL,0,0,76,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (689,85,'Icelandic','is','is_IS',NULL,0,0,77,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (690,85,'Italian','it','it_IT',NULL,0,0,78,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (691,85,'Inuktitut','iu','iu_CA',NULL,0,0,79,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (692,85,'Japanese','ja','ja_JP',NULL,0,0,80,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (693,85,'Javanese','jv','jv_ID',NULL,0,0,81,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (694,85,'Kalaallisut, Greenlandic','kl','kl_GL',NULL,0,0,82,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (695,85,'Kannada','kn','kn_IN',NULL,0,0,83,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (696,85,'Kanuri','kr','kr_NE',NULL,0,0,84,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (697,85,'Kashmiri','ks','ks_IN',NULL,0,0,85,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (698,85,'Kazakh','kk','kk_KZ',NULL,0,0,86,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (699,85,'Khmer','km','km_KH',NULL,0,0,87,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (700,85,'Kikuyu, Gikuyu','ki','ki_KE',NULL,0,0,88,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (701,85,'Kinyarwanda','rw','rw_RW',NULL,0,0,89,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (702,85,'Kirghiz, Kyrgyz','ky','ky_KG',NULL,0,0,90,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (703,85,'Komi','kv','kv_RU',NULL,0,0,91,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (704,85,'Kongo','kg','kg_CD',NULL,0,0,92,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (705,85,'Korean','ko','ko_KR',NULL,0,0,93,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (706,85,'Kurdish','ku','ku_IQ',NULL,0,0,94,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (707,85,'Kwanyama, Kuanyama','kj','kj_NA',NULL,0,0,95,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (708,85,'Latin','la','la_VA',NULL,0,0,96,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (709,85,'Luxembourgish, Letzeburgesch','lb','lb_LU',NULL,0,0,97,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (710,85,'Luganda','lg','lg_UG',NULL,0,0,98,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (711,85,'Limburgish, Limburgan, Limburger','li','li_NL',NULL,0,0,99,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (712,85,'Lingala','ln','ln_CD',NULL,0,0,100,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (713,85,'Lao','lo','lo_LA',NULL,0,0,101,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (714,85,'Lithuanian','lt','lt_LT',NULL,0,0,102,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (715,85,'Luba-Katanga','lu','lu_CD',NULL,0,0,103,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (716,85,'Latvian','lv','lv_LV',NULL,0,0,104,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (717,85,'Manx','gv','gv_IM',NULL,0,0,105,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (718,85,'Macedonian','mk','mk_MK',NULL,0,0,106,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (719,85,'Malagasy','mg','mg_MG',NULL,0,0,107,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (720,85,'Malay','ms','ms_MY',NULL,0,0,108,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (721,85,'Malayalam','ml','ml_IN',NULL,0,0,109,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (722,85,'Maltese','mt','mt_MT',NULL,0,0,110,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (723,85,'MÄori','mi','mi_NZ',NULL,0,0,111,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (724,85,'Marathi','mr','mr_IN',NULL,0,0,112,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (725,85,'Marshallese','mh','mh_MH',NULL,0,0,113,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (726,85,'Mongolian','mn','mn_MN',NULL,0,0,114,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (727,85,'Nauru','na','na_NR',NULL,0,0,115,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (728,85,'Navajo, Navaho','nv','nv_US',NULL,0,0,116,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (729,85,'Norwegian BokmÃ¥l','nb','nb_NO',NULL,0,0,117,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (730,85,'North Ndebele','nd','nd_ZW',NULL,0,0,118,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (731,85,'Nepali','ne','ne_NP',NULL,0,0,119,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (732,85,'Ndonga','ng','ng_NA',NULL,0,0,120,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (733,85,'Norwegian Nynorsk','nn','nn_NO',NULL,0,0,121,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (734,85,'Norwegian','no','no_NO',NULL,0,0,122,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (735,85,'Nuosu','ii','ii_CN',NULL,0,0,123,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (736,85,'South Ndebele','nr','nr_ZA',NULL,0,0,124,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (737,85,'Occitan (after 1500)','oc','oc_FR',NULL,0,0,125,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (738,85,'Ojibwa','oj','oj_CA',NULL,0,0,126,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (739,85,'Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic','cu','cu_BG',NULL,0,0,127,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (740,85,'Oromo','om','om_ET',NULL,0,0,128,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (741,85,'Oriya','or','or_IN',NULL,0,0,129,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (742,85,'Ossetian, Ossetic','os','os_GE',NULL,0,0,130,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (743,85,'Panjabi, Punjabi','pa','pa_IN',NULL,0,0,131,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (744,85,'Pali','pi','pi_KH',NULL,0,0,132,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (745,85,'Persian (Iran)','fa','fa_IR',NULL,0,0,133,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (746,85,'Polish','pl','pl_PL',NULL,0,0,134,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (747,85,'Pashto, Pushto','ps','ps_AF',NULL,0,0,135,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (748,85,'Portuguese (Brazil)','pt','pt_BR',NULL,0,0,136,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (749,85,'Portuguese (Portugal)','pt','pt_PT',NULL,0,0,137,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (750,85,'Quechua','qu','qu_PE',NULL,0,0,138,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (751,85,'Romansh','rm','rm_CH',NULL,0,0,139,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (752,85,'Kirundi','rn','rn_BI',NULL,0,0,140,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (753,85,'Romanian, Moldavian, Moldovan','ro','ro_RO',NULL,0,0,141,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (754,85,'Russian','ru','ru_RU',NULL,0,0,142,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (755,85,'Sanskrit','sa','sa_IN',NULL,0,0,143,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (756,85,'Sardinian','sc','sc_IT',NULL,0,0,144,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (757,85,'Sindhi','sd','sd_IN',NULL,0,0,145,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (758,85,'Northern Sami','se','se_NO',NULL,0,0,146,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (759,85,'Samoan','sm','sm_WS',NULL,0,0,147,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (760,85,'Sango','sg','sg_CF',NULL,0,0,148,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (761,85,'Serbian','sr','sr_RS',NULL,0,0,149,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (762,85,'Scottish Gaelic; Gaelic','gd','gd_GB',NULL,0,0,150,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (763,85,'Shona','sn','sn_ZW',NULL,0,0,151,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (764,85,'Sinhala, Sinhalese','si','si_LK',NULL,0,0,152,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (765,85,'Slovak','sk','sk_SK',NULL,0,0,153,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (766,85,'Slovene','sl','sl_SI',NULL,0,0,154,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (767,85,'Somali','so','so_SO',NULL,0,0,155,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (768,85,'Southern Sotho','st','st_ZA',NULL,0,0,156,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (769,85,'Spanish; Castilian (Spain)','es','es_ES',NULL,0,0,157,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (770,85,'Spanish; Castilian (Mexico)','es','es_MX',NULL,0,0,158,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (771,85,'Spanish; Castilian (Puerto Rico)','es','es_PR',NULL,0,0,159,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (772,85,'Sundanese','su','su_ID',NULL,0,0,160,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (773,85,'Swahili','sw','sw_TZ',NULL,0,0,161,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (774,85,'Swati','ss','ss_ZA',NULL,0,0,162,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (775,85,'Swedish','sv','sv_SE',NULL,0,0,163,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (776,85,'Tamil','ta','ta_IN',NULL,0,0,164,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (777,85,'Telugu','te','te_IN',NULL,0,0,165,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (778,85,'Tajik','tg','tg_TJ',NULL,0,0,166,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (779,85,'Thai','th','th_TH',NULL,0,0,167,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (780,85,'Tigrinya','ti','ti_ET',NULL,0,0,168,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (781,85,'Tibetan Standard, Tibetan, Central','bo','bo_CN',NULL,0,0,169,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (782,85,'Turkmen','tk','tk_TM',NULL,0,0,170,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (783,85,'Tagalog','tl','tl_PH',NULL,0,0,171,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (784,85,'Tswana','tn','tn_ZA',NULL,0,0,172,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (785,85,'Tonga (Tonga Islands)','to','to_TO',NULL,0,0,173,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (786,85,'Turkish','tr','tr_TR',NULL,0,0,174,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (787,85,'Tsonga','ts','ts_ZA',NULL,0,0,175,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (788,85,'Tatar','tt','tt_RU',NULL,0,0,176,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (789,85,'Twi','tw','tw_GH',NULL,0,0,177,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (790,85,'Tahitian','ty','ty_PF',NULL,0,0,178,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (791,85,'Uighur, Uyghur','ug','ug_CN',NULL,0,0,179,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (792,85,'Ukrainian','uk','uk_UA',NULL,0,0,180,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (793,85,'Urdu','ur','ur_PK',NULL,0,0,181,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (794,85,'Uzbek','uz','uz_UZ',NULL,0,0,182,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (795,85,'Venda','ve','ve_ZA',NULL,0,0,183,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (796,85,'Vietnamese','vi','vi_VN',NULL,0,0,184,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (797,85,'Volapük','vo','vo_XX',NULL,0,0,185,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (798,85,'Walloon','wa','wa_BE',NULL,0,0,186,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (799,85,'Welsh','cy','cy_GB',NULL,0,0,187,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (800,85,'Wolof','wo','wo_SN',NULL,0,0,188,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (801,85,'Western Frisian','fy','fy_NL',NULL,0,0,189,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (802,85,'Xhosa','xh','xh_ZA',NULL,0,0,190,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (803,85,'Yiddish','yi','yi_US',NULL,0,0,191,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (804,85,'Yoruba','yo','yo_NG',NULL,0,0,192,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (805,85,'Zhuang, Chuang','za','za_CN',NULL,0,0,193,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (806,85,'Zulu','zu','zu_ZA',NULL,0,0,194,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), - (807,86,'In Person','1','in_person',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (808,86,'Phone','2','phone',NULL,0,1,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (809,86,'Email','3','email',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (810,86,'Fax','4','fax',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (811,86,'Letter Mail','5','letter_mail',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (812,87,'Cases - Send Copy of an Activity','1','case_activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (813,88,'Contributions - Duplicate Organization Alert','1','contribution_dupalert',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (814,88,'Contributions - Receipt (off-line)','2','contribution_offline_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (815,88,'Contributions - Receipt (on-line)','3','contribution_online_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (816,88,'Contributions - Invoice','4','contribution_invoice_receipt',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (817,88,'Contributions - Recurring Start and End Notification','5','contribution_recurring_notify',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (818,88,'Contributions - Recurring Cancellation Notification','6','contribution_recurring_cancelled',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (819,88,'Contributions - Recurring Billing Updates','7','contribution_recurring_billing',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (820,88,'Contributions - Recurring Updates','8','contribution_recurring_edit',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (821,88,'Personal Campaign Pages - Admin Notification','9','pcp_notify',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (822,88,'Personal Campaign Pages - Supporter Status Change Notification','10','pcp_status_change',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (823,88,'Personal Campaign Pages - Supporter Welcome','11','pcp_supporter_notify',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (824,88,'Personal Campaign Pages - Owner Notification','12','pcp_owner_notify',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (825,88,'Additional Payment Receipt or Refund Notification','13','payment_or_refund_notification',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (826,89,'Events - Registration Confirmation and Receipt (off-line)','1','event_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (827,89,'Events - Registration Confirmation and Receipt (on-line)','2','event_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (828,89,'Events - Receipt only','3','event_registration_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (829,89,'Events - Registration Cancellation Notice','4','participant_cancelled',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (830,89,'Events - Registration Confirmation Invite','5','participant_confirm',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (831,89,'Events - Pending Registration Expiration Notice','6','participant_expired',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (832,89,'Events - Registration Transferred Notice','7','participant_transferred',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (833,90,'Tell-a-Friend Email','1','friend',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (834,91,'Memberships - Signup and Renewal Receipts (off-line)','1','membership_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (835,91,'Memberships - Receipt (on-line)','2','membership_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (836,91,'Memberships - Auto-renew Cancellation Notification','3','membership_autorenew_cancelled',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (837,91,'Memberships - Auto-renew Billing Updates','4','membership_autorenew_billing',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (838,92,'Test-drive - Receipt Header','1','test_preview',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (839,93,'Pledges - Acknowledgement','1','pledge_acknowledge',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (840,93,'Pledges - Payment Reminder','2','pledge_reminder',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (841,94,'Profiles - Admin Notification','1','uf_notify',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (842,95,'Petition - signature added','1','petition_sign',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (843,95,'Petition - need verification','2','petition_confirmation_needed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (844,96,'In Honor of','1','in_honor_of',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (845,96,'In Memory of','2','in_memory_of',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (846,96,'Solicited','3','solicited',NULL,0,1,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (847,96,'Household','4','household',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (848,96,'Workplace Giving','5','workplace',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (849,96,'Foundation Affiliate','6','foundation_affiliate',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (850,96,'3rd-party Service','7','3rd-party_service',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (851,96,'Donor-advised Fund','8','donor-advised_fund',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (852,96,'Matched Gift','9','matched_gift',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (853,96,'Personal Campaign Page','10','pcp',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (854,96,'Gift','11','gift',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), - (855,97,'Contacts','Contact','Contact',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (856,97,'Relationships','Relationship','Relationship',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (857,97,'Activities','Activity','Activity',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (858,97,'Notes','Note','Note',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (859,97,'Groups','Group','Group',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (860,97,'Cases','Case','Case',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (861,97,'Contributions','Contribution','Contribution',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (862,97,'Participants','Participant','Participant',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (863,97,'Memberships','Membership','Membership',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (864,97,'Pledges','Pledge','Pledge',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (865,97,'Events','Event','Event',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (866,97,'Campaigns','Campaign','Campaign',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), - (867,2,'Interview','55','Interview',NULL,0,NULL,55,'Conduct a phone or in person interview.',0,0,1,NULL,NULL,NULL,'fa-comment-o',NULL), - (868,8,'Advisory Board','3','Advisory Board',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL); + (58,2,'Case Client was removed from Case','55','Case Client Removed',NULL,0,0,55,'Case client was removed from a case',0,0,1,7,NULL,NULL,'fa-trash',NULL), + (59,3,'Female','1','Female',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (60,3,'Male','2','Male',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (61,3,'Other','3','Other',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (62,4,'Yahoo','1','Yahoo',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (63,4,'MSN','2','Msn',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (64,4,'AIM','3','Aim',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (65,4,'GTalk','4','Gtalk',NULL,0,NULL,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (66,4,'Jabber','5','Jabber',NULL,0,NULL,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (67,4,'Skype','6','Skype',NULL,0,NULL,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (68,5,'Sprint','1','Sprint',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (69,5,'Verizon','2','Verizon',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (70,5,'Cingular','3','Cingular',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (71,6,'Mrs.','1','Mrs.',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (72,6,'Ms.','2','Ms.',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (73,6,'Mr.','3','Mr.',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (74,6,'Dr.','4','Dr.',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (75,7,'Jr.','1','Jr.',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (76,7,'Sr.','2','Sr.',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (77,7,'II','3','II',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (78,7,'III','4','III',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (79,7,'IV','5','IV',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (80,7,'V','6','V',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (81,7,'VI','7','VI',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (82,7,'VII','8','VII',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (83,8,'Everyone','0','Everyone',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (84,8,'Administrator','1','Admin',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (85,8,'Authenticated','2','Auth',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (86,9,'Visa','1','Visa',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (87,9,'MasterCard','2','MasterCard',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (88,9,'Amex','3','Amex',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (89,9,'Discover','4','Discover',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (90,10,'Credit Card','1','Credit Card',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (91,10,'Debit Card','2','Debit Card',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (92,10,'Cash','3','Cash',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (93,10,'Check','4','Check',NULL,0,1,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (94,10,'EFT','5','EFT',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (95,11,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (96,11,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (97,11,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (98,11,'Failed','4','Failed',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (99,11,'Refunded','7','Refunded',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (100,11,'Partially paid','8','Partially paid',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (101,11,'Pending refund','9','Pending refund',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (102,11,'Chargeback','10','Chargeback',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (103,11,'Template','11','Template',NULL,0,0,11,'Status for contribution records which represent a template for a recurring contribution rather than an actual contribution. This status is transitional, to ensure that said contributions don\\\'t appear in reports. The is_template field is the preferred way to find and filter these contributions.',0,1,1,NULL,NULL,NULL,NULL,NULL), + (104,12,'Waiting Review','1','Waiting Review',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (105,12,'Approved','2','Approved',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (106,12,'Not Approved','3','Not Approved',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (107,13,'Owner chooses whether to receive notifications','1','owner_chooses',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (108,13,'Notifications are sent to ALL owners','2','all_owners',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (109,13,'Notifications are NOT available','3','no_notifications',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (110,14,'Attendee','1','Attendee',NULL,1,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (111,14,'Volunteer','2','Volunteer',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (112,14,'Host','3','Host',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (113,14,'Speaker','4','Speaker',NULL,1,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (114,15,'Conference','1','Conference',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (115,15,'Exhibition','2','Exhibition',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (116,15,'Fundraiser','3','Fundraiser',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (117,15,'Meeting','4','Meeting',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (118,15,'Performance','5','Performance',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (119,15,'Workshop','6','Workshop',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (120,16,'Activities','1','activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (121,16,'Relationships','2','rel',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (122,16,'Groups','3','group',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (123,16,'Notes','4','note',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (124,16,'Tags','5','tag',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (125,16,'Change Log','6','log',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (126,16,'Contributions','7','CiviContribute',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (127,16,'Memberships','8','CiviMember',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (128,16,'Events','9','CiviEvent',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (129,16,'Cases','10','CiviCase',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (130,16,'Pledges','13','CiviPledge',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (131,16,'Mailings','14','CiviMail',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (132,17,'Show Smart Groups on Demand','1','showondemand',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (133,17,'Always Show Smart Groups','2','alwaysshow',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (134,17,'Hide Smart Groups','3','hide',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (135,18,'Custom Data','1','CustomData',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (136,18,'Address','2','Address',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (137,18,'Communication Preferences','3','CommunicationPreferences',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (138,18,'Notes','4','Notes',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (139,18,'Demographics','5','Demographics',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (140,18,'Tags and Groups','6','TagsAndGroups',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (141,18,'Email','7','Email',NULL,1,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (142,18,'Phone','8','Phone',NULL,1,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (143,18,'Instant Messenger','9','IM',NULL,1,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (144,18,'Open ID','10','OpenID',NULL,1,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (145,18,'Website','11','Website',NULL,1,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (146,18,'Prefix','12','Prefix',NULL,2,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (147,18,'Formal Title','13','Formal Title',NULL,2,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (148,18,'First Name','14','First Name',NULL,2,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (149,18,'Middle Name','15','Middle Name',NULL,2,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (150,18,'Last Name','16','Last Name',NULL,2,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (151,18,'Suffix','17','Suffix',NULL,2,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (152,19,'Address Fields','1','location',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (153,19,'Custom Fields','2','custom',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (154,19,'Activities','3','activity',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (155,19,'Relationships','4','relationship',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (156,19,'Notes','5','notes',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (157,19,'Change Log','6','changeLog',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (158,19,'Contributions','7','CiviContribute',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (159,19,'Memberships','8','CiviMember',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (160,19,'Events','9','CiviEvent',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (161,19,'Cases','10','CiviCase',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (162,19,'Demographics','13','demographics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (163,19,'Pledges','15','CiviPledge',NULL,0,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (164,19,'Contact Type','16','contactType',NULL,0,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (165,19,'Groups','17','groups',NULL,0,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (166,19,'Tags','18','tags',NULL,0,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (167,19,'Mailing','19','CiviMail',NULL,0,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (168,20,'Groups','1','Groups',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (169,20,'Contributions','2','CiviContribute',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (170,20,'Memberships','3','CiviMember',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (171,20,'Events','4','CiviEvent',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (172,20,'My Contacts / Organizations','5','Permissioned Orgs',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (173,20,'Pledges','7','CiviPledge',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (174,20,'Personal Campaign Pages','8','PCP',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (175,20,'Assigned Activities','9','Assigned Activities',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (176,20,'Invoices / Credit Notes','10','Invoices / Credit Notes',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (177,21,'Street Address','1','street_address',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (178,21,'Supplemental Address 1','2','supplemental_address_1',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (179,21,'Supplemental Address 2','3','supplemental_address_2',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (180,21,'Supplemental Address 3','4','supplemental_address_3',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (181,21,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (182,21,'Postal Code','6','postal_code',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (183,21,'Postal Code Suffix','7','postal_code_suffix',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (184,21,'County','8','county',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (185,21,'State/Province','9','state_province',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (186,21,'Country','10','country',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (187,21,'Latitude','11','geo_code_1',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (188,21,'Longitude','12','geo_code_2',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (189,21,'Address Name','13','address_name',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (190,21,'Street Address Parsing','14','street_address_parsing',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (191,22,'Access Control','1','Access Control',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (192,22,'Mailing List','2','Mailing List',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (193,23,'CRM_Contact_Form_Search_Custom_Sample','1','CRM_Contact_Form_Search_Custom_Sample',NULL,0,0,1,'Household Name and State',0,0,1,NULL,NULL,NULL,NULL,NULL), + (194,23,'CRM_Contact_Form_Search_Custom_ContributionAggregate','2','CRM_Contact_Form_Search_Custom_ContributionAggregate',NULL,0,0,2,'Contribution Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL), + (195,23,'CRM_Contact_Form_Search_Custom_Group','4','CRM_Contact_Form_Search_Custom_Group',NULL,0,0,4,'Include / Exclude Search',0,0,1,NULL,NULL,NULL,NULL,NULL), + (196,23,'CRM_Contact_Form_Search_Custom_PostalMailing','5','CRM_Contact_Form_Search_Custom_PostalMailing',NULL,0,0,5,'Postal Mailing',0,0,1,NULL,NULL,NULL,NULL,NULL), + (197,23,'CRM_Contact_Form_Search_Custom_Proximity','6','CRM_Contact_Form_Search_Custom_Proximity',NULL,0,0,6,'Proximity Search',0,0,1,NULL,NULL,NULL,NULL,NULL), + (198,23,'CRM_Contact_Form_Search_Custom_EventAggregate','7','CRM_Contact_Form_Search_Custom_EventAggregate',NULL,0,0,7,'Event Aggregate',0,0,1,NULL,NULL,NULL,NULL,NULL), + (199,23,'CRM_Contact_Form_Search_Custom_ActivitySearch','8','CRM_Contact_Form_Search_Custom_ActivitySearch',NULL,0,0,8,'Activity Search',0,0,0,NULL,NULL,NULL,NULL,NULL), + (200,23,'CRM_Contact_Form_Search_Custom_PriceSet','9','CRM_Contact_Form_Search_Custom_PriceSet',NULL,0,0,9,'Price Set Details for Event Participants',0,0,1,NULL,NULL,NULL,NULL,NULL), + (201,23,'CRM_Contact_Form_Search_Custom_ZipCodeRange','10','CRM_Contact_Form_Search_Custom_ZipCodeRange',NULL,0,0,10,'Zip Code Range',0,0,1,NULL,NULL,NULL,NULL,NULL), + (202,23,'CRM_Contact_Form_Search_Custom_DateAdded','11','CRM_Contact_Form_Search_Custom_DateAdded',NULL,0,0,11,'Date Added to CiviCRM',0,0,1,NULL,NULL,NULL,NULL,NULL), + (203,23,'CRM_Contact_Form_Search_Custom_MultipleValues','12','CRM_Contact_Form_Search_Custom_MultipleValues',NULL,0,0,12,'Custom Group Multiple Values Listing',0,0,1,NULL,NULL,NULL,NULL,NULL), + (204,23,'CRM_Contact_Form_Search_Custom_ContribSYBNT','13','CRM_Contact_Form_Search_Custom_ContribSYBNT',NULL,0,0,13,'Contributions made in Year X and not Year Y',0,0,1,NULL,NULL,NULL,NULL,NULL), + (205,23,'CRM_Contact_Form_Search_Custom_TagContributions','14','CRM_Contact_Form_Search_Custom_TagContributions',NULL,0,0,14,'Find Contribution Amounts by Tag',0,0,1,NULL,NULL,NULL,NULL,NULL), + (206,23,'CRM_Contact_Form_Search_Custom_FullText','15','CRM_Contact_Form_Search_Custom_FullText',NULL,0,0,15,'Full-text Search',0,0,1,NULL,NULL,NULL,NULL,NULL), + (207,24,'Scheduled','1','Scheduled',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (208,24,'Completed','2','Completed',NULL,1,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (209,24,'Cancelled','3','Cancelled',NULL,2,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (210,24,'Left Message','4','Left Message',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (211,24,'Unreachable','5','Unreachable',NULL,2,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (212,24,'Not Required','6','Not Required',NULL,2,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (213,24,'Available','7','Available',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (214,24,'No-show','8','No_show',NULL,2,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (215,26,'Ongoing','1','Open','Opened',0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (216,26,'Resolved','2','Closed','Closed',0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (217,26,'Urgent','3','Urgent','Opened',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (218,27,'Name Only','1','Name Only',NULL,0,0,1,'CRM_Event_Page_ParticipantListing_Name',0,1,1,NULL,NULL,NULL,NULL,NULL), + (219,27,'Name and Email','2','Name and Email',NULL,0,0,2,'CRM_Event_Page_ParticipantListing_NameAndEmail',0,1,1,NULL,NULL,NULL,NULL,NULL), + (220,27,'Name, Status and Register Date','3','Name, Status and Register Date',NULL,0,0,3,'CRM_Event_Page_ParticipantListing_NameStatusAndDate',0,1,1,NULL,NULL,NULL,NULL,NULL), + (221,28,'jpg','1','jpg',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (222,28,'jpeg','2','jpeg',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (223,28,'png','3','png',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (224,28,'gif','4','gif',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (225,28,'txt','5','txt',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (226,28,'pdf','6','pdf',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (227,28,'doc','7','doc',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (228,28,'xls','8','xls',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (229,28,'rtf','9','rtf',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (230,28,'csv','10','csv',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (231,28,'ppt','11','ppt',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (232,28,'docx','12','docx',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (233,28,'xlsx','13','xlsx',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (234,28,'odt','14','odt',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (235,28,'ics','15','ics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (236,28,'pptx','16','pptx',NULL,0,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (237,29,'\"FIXME\" <info@EXAMPLE.ORG>','1','\"FIXME\" <info@EXAMPLE.ORG>',NULL,0,1,1,'Default domain email address and from name.',0,0,1,NULL,1,NULL,NULL,NULL), + (238,30,'Search Builder','1','Search Builder',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (239,30,'Import Contact','2','Import Contact',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (240,30,'Import Activity','3','Import Activity',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (241,30,'Import Contribution','4','Import Contribution',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (242,30,'Import Membership','5','Import Membership',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (243,30,'Import Participant','6','Import Participant',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (244,30,'Export Contact','7','Export Contact',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (245,30,'Export Contribution','8','Export Contribution',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (246,30,'Export Membership','9','Export Membership',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (247,30,'Export Participant','10','Export Participant',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (248,30,'Export Pledge','11','Export Pledge',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (249,30,'Export Case','12','Export Case',NULL,0,0,12,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (250,30,'Export Activity','14','Export Activity',NULL,0,0,14,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (251,31,'Textarea','1','Textarea',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (252,31,'CKEditor 4','2','CKEditor',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (253,32,'day','day','day',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (254,32,'week','week','week',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (255,32,'month','month','month',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (256,32,'year','year','year',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (257,33,'Phone','1','Phone',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (258,33,'Mobile','2','Mobile',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (259,33,'Fax','3','Fax',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (260,33,'Pager','4','Pager',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (261,33,'Voicemail','5','Voicemail',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (262,34,'Participants (Role)','1','ParticipantRole','role_id',0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (263,34,'Participants (Event Name)','2','ParticipantEventName','event_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (264,34,'Participants (Event Type)','3','ParticipantEventType','event_id.event_type_id',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (265,35,'Public','1','public',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (266,35,'Admin','2','admin',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (267,36,'IMAP','1','IMAP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (268,36,'Maildir','2','Maildir',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (269,36,'POP3','3','POP3',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (270,36,'Localdir','4','Localdir',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (271,37,'Urgent','1','Urgent',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (272,37,'Normal','2','Normal',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (273,37,'Low','3','Low',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (274,38,'Vancouver','city_','city_',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (275,38,'/(19|20)(\\d{2})-(\\d{1,2})-(\\d{1,2})/','date_','date_',NULL,1,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (276,39,'Constituent Report (Summary)','contact/summary','CRM_Report_Form_Contact_Summary',NULL,0,0,1,'Provides a list of address and telephone information for constituent records in your system.',0,0,1,NULL,NULL,NULL,NULL,NULL), + (277,39,'Constituent Report (Detail)','contact/detail','CRM_Report_Form_Contact_Detail',NULL,0,0,2,'Provides contact-related information on contributions, memberships, events and activities.',0,0,1,NULL,NULL,NULL,NULL,NULL), + (278,39,'Activity Details Report','activity','CRM_Report_Form_Activity',NULL,0,0,3,'Provides a list of constituent activity including activity statistics for one/all contacts during a given date range(required)',0,0,1,NULL,NULL,NULL,NULL,NULL), + (279,39,'Walk / Phone List Report','walklist','CRM_Report_Form_Walklist_Walklist',NULL,0,0,4,'Provides a detailed report for your walk/phonelist for targeted contacts',0,0,0,NULL,NULL,NULL,NULL,NULL), + (280,39,'Current Employer Report','contact/currentEmployer','CRM_Report_Form_Contact_CurrentEmployer',NULL,0,0,5,'Provides detail list of employer employee relationships along with employment details Ex Join Date',0,0,1,NULL,NULL,NULL,NULL,NULL), + (281,39,'Contribution Summary Report','contribute/summary','CRM_Report_Form_Contribute_Summary',NULL,0,0,6,'Groups and totals contributions by criteria including contact, time period, financial type, contributor location, etc.',0,0,1,2,NULL,NULL,NULL,NULL), + (282,39,'Contribution Detail Report','contribute/detail','CRM_Report_Form_Contribute_Detail',NULL,0,0,7,'Lists specific contributions by criteria including contact, time period, financial type, contributor location, etc. Contribution summary report points to this report for contribution details.',0,0,1,2,NULL,NULL,NULL,NULL), + (283,39,'Repeat Contributions Report','contribute/repeat','CRM_Report_Form_Contribute_Repeat',NULL,0,0,8,'Given two date ranges, shows contacts who contributed in both the date ranges with the amount contributed in each and the percentage increase / decrease.',0,0,1,2,NULL,NULL,NULL,NULL), + (284,39,'Contributions by Organization Report','contribute/organizationSummary','CRM_Report_Form_Contribute_OrganizationSummary',NULL,0,0,9,'Displays a detailed list of contributions grouped by organization, which includes contributions made by employees for the organisation.',0,0,1,2,NULL,NULL,NULL,NULL), + (285,39,'Contributions by Household Report','contribute/householdSummary','CRM_Report_Form_Contribute_HouseholdSummary',NULL,0,0,10,'Displays a detailed list of contributions grouped by household which includes contributions made by members of the household.',0,0,1,2,NULL,NULL,NULL,NULL), + (286,39,'Top Donors Report','contribute/topDonor','CRM_Report_Form_Contribute_TopDonor',NULL,0,0,11,'Provides a list of the top donors during a time period you define. You can include as many donors as you want (for example, top 100 of your donors).',0,0,1,2,NULL,NULL,NULL,NULL), + (287,39,'SYBUNT Report','contribute/sybunt','CRM_Report_Form_Contribute_Sybunt',NULL,0,0,12,'SYBUNT means some year(s) but not this year. Provides a list of constituents who donated at some time in the history of your organization but did not donate during the time period you specify.',0,0,1,2,NULL,NULL,NULL,NULL), + (288,39,'LYBUNT Report','contribute/lybunt','CRM_Report_Form_Contribute_Lybunt',NULL,0,0,13,'LYBUNT means last year but not this year. Provides a list of constituents who donated last year but did not donate during the time period you specify as the current year.',0,0,1,2,NULL,NULL,NULL,NULL), + (289,39,'Soft Credit Report','contribute/softcredit','CRM_Report_Form_Contribute_SoftCredit',NULL,0,0,14,'Shows contributions made by contacts that have been soft-credited to other contacts.',0,0,1,2,NULL,NULL,NULL,NULL), + (290,39,'Membership Report (Summary)','member/summary','CRM_Report_Form_Member_Summary',NULL,0,0,15,'Provides a summary of memberships by type and Member Since.',0,0,1,3,NULL,NULL,NULL,NULL), + (291,39,'Membership Report (Detail)','member/detail','CRM_Report_Form_Member_Detail',NULL,0,0,16,'Provides a list of members along with their membership status and membership details (Member Since, Membership Start Date, Membership Expiration Date). Can also display contributions (payments) associated with each membership.',0,0,1,3,NULL,NULL,NULL,NULL), + (292,39,'Membership Report (Lapsed)','member/lapse','CRM_Report_Form_Member_Lapse',NULL,0,0,17,'Provides a list of memberships that lapsed or will lapse before the date you specify.',0,0,1,3,NULL,NULL,NULL,NULL), + (293,39,'Event Participant Report (List)','event/participantListing','CRM_Report_Form_Event_ParticipantListing',NULL,0,0,18,'Provides lists of participants for an event.',0,0,1,1,NULL,NULL,NULL,NULL), + (294,39,'Event Income Report (Summary)','event/summary','CRM_Report_Form_Event_Summary',NULL,0,0,19,'Provides an overview of event income. You can include key information such as event ID, registration, attendance, and income generated to help you determine the success of an event.',0,0,1,1,NULL,NULL,NULL,NULL), + (295,39,'Event Income Report (Detail)','event/income','CRM_Report_Form_Event_Income',NULL,0,0,20,'Helps you to analyze the income generated by an event. The report can include details by participant type, status and payment method.',0,0,1,1,NULL,NULL,NULL,NULL), + (296,39,'Pledge Detail Report','pledge/detail','CRM_Report_Form_Pledge_Detail',NULL,0,0,21,'List of pledges including amount pledged, pledge status, next payment date, balance due, total amount paid etc.',0,0,1,6,NULL,NULL,NULL,NULL), + (297,39,'Pledged but not Paid Report','pledge/pbnp','CRM_Report_Form_Pledge_Pbnp',NULL,0,0,22,'Pledged but not Paid Report',0,0,1,6,NULL,NULL,NULL,NULL), + (298,39,'Relationship Report','contact/relationship','CRM_Report_Form_Contact_Relationship',NULL,0,0,23,'Relationship Report',0,0,1,NULL,NULL,NULL,NULL,NULL), + (299,39,'Case Summary Report','case/summary','CRM_Report_Form_Case_Summary',NULL,0,0,24,'Provides a summary of cases and their duration by date range, status, staff member and / or case role.',0,0,1,7,NULL,NULL,NULL,NULL), + (300,39,'Case Time Spent Report','case/timespent','CRM_Report_Form_Case_TimeSpent',NULL,0,0,25,'Aggregates time spent on case and / or non-case activities by activity type and contact.',0,0,1,7,NULL,NULL,NULL,NULL), + (301,39,'Contact Demographics Report','case/demographics','CRM_Report_Form_Case_Demographics',NULL,0,0,26,'Demographic breakdown for case clients (and or non-case contacts) in your database. Includes custom contact fields.',0,0,1,7,NULL,NULL,NULL,NULL), + (302,39,'Database Log Report','contact/log','CRM_Report_Form_Contact_Log',NULL,0,0,27,'Log of contact and activity records created or updated in a given date range.',0,0,1,NULL,NULL,NULL,NULL,NULL), + (303,39,'Activity Summary Report','activitySummary','CRM_Report_Form_ActivitySummary',NULL,0,0,28,'Shows activity statistics by type / date',0,0,1,NULL,NULL,NULL,NULL,NULL), + (304,39,'Bookkeeping Transactions Report','contribute/bookkeeping','CRM_Report_Form_Contribute_Bookkeeping',NULL,0,0,29,'Shows Bookkeeping Transactions Report',0,0,1,2,NULL,NULL,NULL,NULL), + (305,39,'Participant list Count Report','event/participantlist','CRM_Report_Form_Event_ParticipantListCount',NULL,0,0,31,'Shows the Participant list with Participant Count.',0,0,1,1,NULL,NULL,NULL,NULL), + (306,39,'Income Count Summary Report','event/incomesummary','CRM_Report_Form_Event_IncomeCountSummary',NULL,0,0,32,'Shows the Income Summary of events with Count.',0,0,1,1,NULL,NULL,NULL,NULL), + (307,39,'Case Detail Report','case/detail','CRM_Report_Form_Case_Detail',NULL,0,0,33,'Case Details',0,0,1,7,NULL,NULL,NULL,NULL), + (308,39,'Mail Bounce Report','Mailing/bounce','CRM_Report_Form_Mailing_Bounce',NULL,0,0,34,'Bounce Report for mailings',0,0,1,4,NULL,NULL,NULL,NULL), + (309,39,'Mail Summary Report','Mailing/summary','CRM_Report_Form_Mailing_Summary',NULL,0,0,35,'Summary statistics for mailings',0,0,1,4,NULL,NULL,NULL,NULL), + (310,39,'Mail Opened Report','Mailing/opened','CRM_Report_Form_Mailing_Opened',NULL,0,0,36,'Display contacts who opened emails from a mailing',0,0,1,4,NULL,NULL,NULL,NULL), + (311,39,'Mail Click-Through Report','Mailing/clicks','CRM_Report_Form_Mailing_Clicks',NULL,0,0,37,'Display clicks from each mailing',0,0,1,4,NULL,NULL,NULL,NULL), + (312,39,'Contact Logging Report (Summary)','logging/contact/summary','CRM_Report_Form_Contact_LoggingSummary',NULL,0,0,38,'Contact modification report for the logging infrastructure (summary).',0,0,0,NULL,NULL,NULL,NULL,NULL), + (313,39,'Contact Logging Report (Detail)','logging/contact/detail','CRM_Report_Form_Contact_LoggingDetail',NULL,0,0,39,'Contact modification report for the logging infrastructure (detail).',0,0,0,NULL,NULL,NULL,NULL,NULL), + (314,39,'Survey Report (Detail)','survey/detail','CRM_Report_Form_Campaign_SurveyDetails',NULL,0,0,43,'Detailed report for canvassing, phone-banking, walk lists or other surveys.',0,0,1,9,NULL,NULL,NULL,NULL), + (315,39,'Personal Campaign Page Report','contribute/pcp','CRM_Report_Form_Contribute_PCP',NULL,0,0,44,'Summarizes amount raised and number of contributors for each Personal Campaign Page.',0,0,1,2,NULL,NULL,NULL,NULL), + (316,39,'Pledge Summary Report','pledge/summary','CRM_Report_Form_Pledge_Summary',NULL,0,0,45,'Groups and totals pledges by criteria including contact, time period, pledge status, location, etc.',0,0,1,6,NULL,NULL,NULL,NULL), + (317,39,'Contribution Aggregate by Relationship','contribute/history','CRM_Report_Form_Contribute_History',NULL,0,0,46,'List contact\'s donation history, grouped by year, along with contributions attributed to any of the contact\'s related contacts.',0,0,1,2,NULL,NULL,NULL,NULL), + (318,39,'Mail Detail Report','mailing/detail','CRM_Report_Form_Mailing_Detail',NULL,0,0,47,'Provides reporting on Intended and Successful Deliveries, Unsubscribes and Opt-outs, Replies and Forwards.',0,0,1,4,NULL,NULL,NULL,NULL), + (319,39,'Contribution and Membership Details','member/contributionDetail','CRM_Report_Form_Member_ContributionDetail',NULL,0,0,48,'Contribution details for any type of contribution, plus associated membership information for contributions which are in payment for memberships.',0,0,1,3,NULL,NULL,NULL,NULL), + (320,39,'Recurring Contributions Report','contribute/recur','CRM_Report_Form_Contribute_Recur',NULL,0,0,49,'Provides information about the status of recurring contributions',0,0,1,2,NULL,NULL,NULL,NULL), + (321,39,'Recurring Contributions Summary','contribute/recursummary','CRM_Report_Form_Contribute_RecurSummary',NULL,0,0,49,'Provides simple summary for each payment instrument for which there are recurring contributions (e.g. Credit Card, Standing Order, Direct Debit, etc., NULL), showing within a given date range.',0,0,1,2,NULL,NULL,NULL,NULL), + (322,39,'Deferred Revenue Details','contribute/deferredrevenue','CRM_Report_Form_Contribute_DeferredRevenue',NULL,0,0,50,'Deferred Revenue Details Report',0,0,1,2,NULL,NULL,NULL,NULL), + (323,40,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (324,40,'Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}','2','Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (325,40,'Dear {contact.prefix_id:label} {contact.last_name}','3','Dear {contact.prefix_id:label} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (326,40,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (327,40,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (328,41,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (329,41,'Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}','2','Dear {contact.prefix_id:label} {contact.first_name} {contact.last_name}',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (330,41,'Dear {contact.prefix_id:label} {contact.last_name}','3','Dear {contact.prefix_id:label} {contact.last_name}',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (331,41,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (332,41,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (333,42,'{contact.prefix_id:label}{ }{contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.suffix_id:label}','1','{contact.prefix_id:label}{ }{contact.first_name}{ }{contact.middle_name}{ }{contact.last_name}{ }{contact.suffix_id:label}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (334,42,'{contact.household_name}','2','{contact.household_name}',NULL,2,1,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (335,42,'{contact.organization_name}','3','{contact.organization_name}',NULL,3,1,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (336,42,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (337,43,'Email Address','2','email',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (338,43,'Phone','3','phone',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (339,43,'Street Address','4','street_address',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (340,43,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (341,43,'State/Province','6','state_province',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (342,43,'Country','7','country',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (343,43,'Postal Code','8','postal_code',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (344,44,'Email Address','2','email',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (345,44,'Phone','3','phone',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (346,44,'Street Address','4','street_address',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (347,44,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (348,44,'State/Province','6','state_province',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (349,44,'Country','7','country',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (350,44,'Postal Code','8','postal_code',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (351,45,'Work','1','Work',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (352,45,'Main','2','Main',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (353,45,'Facebook','3','Facebook',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (354,45,'Instagram','5','Instagram',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (355,45,'LinkedIn','6','LinkedIn',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (356,45,'MySpace','7','MySpace',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (357,45,'Pinterest','8','Pinterest',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (358,45,'SnapChat','9','SnapChat',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (359,45,'Tumblr','10','Tumblr',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (360,45,'Twitter','11','Twitter',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (361,45,'Vine','12','Vine ',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (362,46,'Contacts','civicrm_contact','Contact',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (363,46,'Activities','civicrm_activity','Activity',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (364,46,'Cases','civicrm_case','Case',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (365,46,'Attachments','civicrm_file','File',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (366,47,'Contacts','civicrm_contact','Contact',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (367,47,'Relationships','civicrm_relationship','Relationship',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (368,47,'Participants','civicrm_participant','Participant',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (369,47,'Contributions','civicrm_contribution','Contribution',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (370,48,'USD ($)','USD','USD',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (371,48,'CAD ($)','CAD','CAD',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (372,48,'EUR (€)','EUR','EUR',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (373,48,'GBP (£)','GBP','GBP',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (374,48,'JPY (Â¥)','JPY','JPY',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (375,49,'Name Only','1','CRM_Event_Badge_Simple',NULL,0,0,1,'Simple Event Name Badge',0,1,1,NULL,NULL,NULL,NULL,NULL), + (376,49,'Name Tent','2','CRM_Event_Badge_NameTent',NULL,0,0,2,'Name Tent',0,1,1,NULL,NULL,NULL,NULL,NULL), + (377,49,'With Logo','3','CRM_Event_Badge_Logo',NULL,0,0,3,'You can set your own background image',0,1,1,NULL,NULL,NULL,NULL,NULL), + (378,49,'5395 with Logo','4','CRM_Event_Badge_Logo5395',NULL,0,0,4,'Avery 5395 compatible labels with logo (4 up by 2, 59.2mm x 85.7mm)',0,1,1,NULL,NULL,NULL,NULL,NULL), + (379,50,'None','0','None',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (380,50,'Author Only','1','Author Only',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (381,51,'Direct Mail','1','Direct Mail',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (382,51,'Referral Program','2','Referral Program',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (383,51,'Constituent Engagement','3','Constituent Engagement',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (384,52,'Planned','1','Planned',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (385,52,'In Progress','2','In Progress',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (386,52,'Completed','3','Completed',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (387,52,'Cancelled','4','Cancelled',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (388,54,'Approved','1','Approved',NULL,0,1,1,NULL,0,1,1,4,1,NULL,NULL,NULL), + (389,54,'Rejected','2','Rejected',NULL,0,0,2,NULL,0,1,1,4,1,NULL,NULL,NULL), + (390,54,'None','3','None',NULL,0,0,3,NULL,0,1,1,4,1,NULL,NULL,NULL), + (391,55,'1','1','1',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (392,55,'2','2','2',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (393,55,'3','3','3',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (394,55,'4','4','4',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (395,55,'5','5','5',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (396,56,'Survey','Survey','civicrm_survey',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (397,56,'Cases','Case','civicrm_case','case_type_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (398,57,'Letter','{\"metric\":\"in\",\"width\":8.5,\"height\":11}','letter',NULL,NULL,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (399,57,'Legal','{\"metric\":\"in\",\"width\":8.5,\"height\":14}','legal',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (400,57,'Ledger','{\"metric\":\"in\",\"width\":17,\"height\":11}','ledger',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (401,57,'Tabloid','{\"metric\":\"in\",\"width\":11,\"height\":17}','tabloid',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (402,57,'Executive','{\"metric\":\"in\",\"width\":7.25,\"height\":10.5}','executive',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (403,57,'Folio','{\"metric\":\"in\",\"width\":8.5,\"height\":13}','folio',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (404,57,'Envelope #9','{\"metric\":\"pt\",\"width\":638.93,\"height\":278.93}','envelope-9',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (405,57,'Envelope #10','{\"metric\":\"pt\",\"width\":684,\"height\":297}','envelope-10',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (406,57,'Envelope #11','{\"metric\":\"pt\",\"width\":747,\"height\":324}','envelope-11',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (407,57,'Envelope #12','{\"metric\":\"pt\",\"width\":792,\"height\":342}','envelope-12',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (408,57,'Envelope #14','{\"metric\":\"pt\",\"width\":828,\"height\":360}','envelope-14',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (409,57,'Envelope ISO B4','{\"metric\":\"pt\",\"width\":1000.63,\"height\":708.66}','envelope-b4',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (410,57,'Envelope ISO B5','{\"metric\":\"pt\",\"width\":708.66,\"height\":498.9}','envelope-b5',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (411,57,'Envelope ISO B6','{\"metric\":\"pt\",\"width\":498.9,\"height\":354.33}','envelope-b6',NULL,NULL,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (412,57,'Envelope ISO C3','{\"metric\":\"pt\",\"width\":1298.27,\"height\":918.42}','envelope-c3',NULL,NULL,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (413,57,'Envelope ISO C4','{\"metric\":\"pt\",\"width\":918.42,\"height\":649.13}','envelope-c4',NULL,NULL,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (414,57,'Envelope ISO C5','{\"metric\":\"pt\",\"width\":649.13,\"height\":459.21}','envelope-c5',NULL,NULL,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (415,57,'Envelope ISO C6','{\"metric\":\"pt\",\"width\":459.21,\"height\":323.15}','envelope-c6',NULL,NULL,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (416,57,'Envelope ISO DL','{\"metric\":\"pt\",\"width\":623.622,\"height\":311.811}','envelope-dl',NULL,NULL,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (417,57,'ISO A0','{\"metric\":\"pt\",\"width\":2383.94,\"height\":3370.39}','a0',NULL,NULL,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (418,57,'ISO A1','{\"metric\":\"pt\",\"width\":1683.78,\"height\":2383.94}','a1',NULL,NULL,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (419,57,'ISO A2','{\"metric\":\"pt\",\"width\":1190.55,\"height\":1683.78}','a2',NULL,NULL,0,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (420,57,'ISO A3','{\"metric\":\"pt\",\"width\":841.89,\"height\":1190.55}','a3',NULL,NULL,0,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (421,57,'ISO A4','{\"metric\":\"pt\",\"width\":595.28,\"height\":841.89}','a4',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (422,57,'ISO A5','{\"metric\":\"pt\",\"width\":419.53,\"height\":595.28}','a5',NULL,NULL,0,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (423,57,'ISO A6','{\"metric\":\"pt\",\"width\":297.64,\"height\":419.53}','a6',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (424,57,'ISO A7','{\"metric\":\"pt\",\"width\":209.76,\"height\":297.64}','a7',NULL,NULL,0,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (425,57,'ISO A8','{\"metric\":\"pt\",\"width\":147.4,\"height\":209.76}','a8',NULL,NULL,0,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (426,57,'ISO A9','{\"metric\":\"pt\",\"width\":104.88,\"height\":147.4}','a9',NULL,NULL,0,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (427,57,'ISO A10','{\"metric\":\"pt\",\"width\":73.7,\"height\":104.88}','a10',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (428,57,'ISO B0','{\"metric\":\"pt\",\"width\":2834.65,\"height\":4008.19}','b0',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (429,57,'ISO B1','{\"metric\":\"pt\",\"width\":2004.09,\"height\":2834.65}','b1',NULL,NULL,0,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (430,57,'ISO B2','{\"metric\":\"pt\",\"width\":1417.32,\"height\":2004.09}','b2',NULL,NULL,0,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (431,57,'ISO B3','{\"metric\":\"pt\",\"width\":1000.63,\"height\":1417.32}','b3',NULL,NULL,0,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (432,57,'ISO B4','{\"metric\":\"pt\",\"width\":708.66,\"height\":1000.63}','b4',NULL,NULL,0,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (433,57,'ISO B5','{\"metric\":\"pt\",\"width\":498.9,\"height\":708.66}','b5',NULL,NULL,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (434,57,'ISO B6','{\"metric\":\"pt\",\"width\":354.33,\"height\":498.9}','b6',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (435,57,'ISO B7','{\"metric\":\"pt\",\"width\":249.45,\"height\":354.33}','b7',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (436,57,'ISO B8','{\"metric\":\"pt\",\"width\":175.75,\"height\":249.45}','b8',NULL,NULL,0,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (437,57,'ISO B9','{\"metric\":\"pt\",\"width\":124.72,\"height\":175.75}','b9',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (438,57,'ISO B10','{\"metric\":\"pt\",\"width\":87.87,\"height\":124.72}','b10',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (439,57,'ISO C0','{\"metric\":\"pt\",\"width\":2599.37,\"height\":3676.54}','c0',NULL,NULL,0,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (440,57,'ISO C1','{\"metric\":\"pt\",\"width\":1836.85,\"height\":2599.37}','c1',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (441,57,'ISO C2','{\"metric\":\"pt\",\"width\":1298.27,\"height\":1836.85}','c2',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (442,57,'ISO C3','{\"metric\":\"pt\",\"width\":918.43,\"height\":1298.27}','c3',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (443,57,'ISO C4','{\"metric\":\"pt\",\"width\":649.13,\"height\":918.43}','c4',NULL,NULL,0,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (444,57,'ISO C5','{\"metric\":\"pt\",\"width\":459.21,\"height\":649.13}','c5',NULL,NULL,0,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (445,57,'ISO C6','{\"metric\":\"pt\",\"width\":323.15,\"height\":459.21}','c6',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (446,57,'ISO C7','{\"metric\":\"pt\",\"width\":229.61,\"height\":323.15}','c7',NULL,NULL,0,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (447,57,'ISO C8','{\"metric\":\"pt\",\"width\":161.57,\"height\":229.61}','c8',NULL,NULL,0,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (448,57,'ISO C9','{\"metric\":\"pt\",\"width\":113.39,\"height\":161.57}','c9',NULL,NULL,0,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (449,57,'ISO C10','{\"metric\":\"pt\",\"width\":79.37,\"height\":113.39}','c10',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (450,57,'ISO RA0','{\"metric\":\"pt\",\"width\":2437.8,\"height\":3458.27}','ra0',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (451,57,'ISO RA1','{\"metric\":\"pt\",\"width\":1729.13,\"height\":2437.8}','ra1',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (452,57,'ISO RA2','{\"metric\":\"pt\",\"width\":1218.9,\"height\":1729.13}','ra2',NULL,NULL,0,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (453,57,'ISO RA3','{\"metric\":\"pt\",\"width\":864.57,\"height\":1218.9}','ra3',NULL,NULL,0,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (454,57,'ISO RA4','{\"metric\":\"pt\",\"width\":609.45,\"height\":864.57}','ra4',NULL,NULL,0,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (455,57,'ISO SRA0','{\"metric\":\"pt\",\"width\":2551.18,\"height\":3628.35}','sra0',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (456,57,'ISO SRA1','{\"metric\":\"pt\",\"width\":1814.17,\"height\":2551.18}','sra1',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (457,57,'ISO SRA2','{\"metric\":\"pt\",\"width\":1275.59,\"height\":1814.17}','sra2',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (458,57,'ISO SRA3','{\"metric\":\"pt\",\"width\":907.09,\"height\":1275.59}','sra3',NULL,NULL,0,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (459,57,'ISO SRA4','{\"metric\":\"pt\",\"width\":637.8,\"height\":907.09}','sra4',NULL,NULL,0,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (460,58,'Invoice PDF Format','{\"metric\":\"px\",\"margin_top\":10,\"margin_bottom\":0,\"margin_left\":65,\"margin_right\":0}','default_invoice_pdf_format',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (461,59,'Avery 3475','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":10,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":0,\"tMargin\":5,\"NX\":3,\"NY\":8,\"SpaceX\":0,\"SpaceY\":0,\"width\":70,\"height\":36,\"lPadding\":5.08,\"tPadding\":5.08}','3475','Avery',NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (462,59,'Avery 5160','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.21975,\"tMargin\":0.5,\"NX\":3,\"NY\":10,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":2.5935,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5160','Avery',NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (463,59,'Avery 5161','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.175,\"tMargin\":0.5,\"NX\":2,\"NY\":10,\"SpaceX\":0.15625,\"SpaceY\":0,\"width\":4,\"height\":1,\"lPadding\":0.20,\"tPadding\":0.20}','5161','Avery',NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (464,59,'Avery 5162','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.1525,\"tMargin\":0.88,\"NX\":2,\"NY\":7,\"SpaceX\":0.195,\"SpaceY\":0,\"width\":4,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','5162','Avery',NULL,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (465,59,'Avery 5163','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.5,\"NX\":2,\"NY\":5,\"SpaceX\":0.14,\"SpaceY\":0,\"width\":4,\"height\":2,\"lPadding\":0.20,\"tPadding\":0.20}','5163','Avery',NULL,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (466,59,'Avery 5164','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":12,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.156,\"tMargin\":0.5,\"NX\":2,\"NY\":3,\"SpaceX\":0.1875,\"SpaceY\":0,\"width\":4,\"height\":3.33,\"lPadding\":0.20,\"tPadding\":0.20}','5164','Avery',NULL,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (467,59,'Avery 8600','{\"paper-size\":\"letter\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":8,\"font-style\":\"\",\"metric\":\"mm\",\"lMargin\":7.1,\"tMargin\":19,\"NX\":3,\"NY\":10,\"SpaceX\":9.5,\"SpaceY\":3.1,\"width\":66.6,\"height\":25.4,\"lPadding\":5.08,\"tPadding\":5.08}','8600','Avery',NULL,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (468,59,'Avery L7160','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.6,\"NX\":3,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7160','Avery',NULL,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (469,59,'Avery L7161','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.28,\"tMargin\":0.35,\"NX\":3,\"NY\":6,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":2.5,\"height\":1.83,\"lPadding\":0.20,\"tPadding\":0.20}','L7161','Avery',NULL,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (470,59,'Avery L7162','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.51,\"NX\":2,\"NY\":8,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.33,\"lPadding\":0.20,\"tPadding\":0.20}','L7162','Avery',NULL,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (471,59,'Avery L7163','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"dejavusans\",\"font-size\":9,\"font-style\":\"\",\"metric\":\"in\",\"lMargin\":0.18,\"tMargin\":0.6,\"NX\":2,\"NY\":7,\"SpaceX\":0.1,\"SpaceY\":0,\"width\":3.9,\"height\":1.5,\"lPadding\":0.20,\"tPadding\":0.20}','L7163','Avery',NULL,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (472,60,'Activity Assignees','1','Activity Assignees',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (473,60,'Activity Source','2','Activity Source',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (474,60,'Activity Targets','3','Activity Targets',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (475,61,'Income Account is','1','Income Account is',NULL,0,1,1,'Income Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (476,61,'Credit/Contra Revenue Account is','2','Credit/Contra Revenue Account is',NULL,0,0,2,'Credit/Contra Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (477,61,'Accounts Receivable Account is','3','Accounts Receivable Account is',NULL,0,0,3,'Accounts Receivable Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (478,61,'Credit Liability Account is','4','Credit Liability Account is',NULL,0,0,4,'Credit Liability Account is',0,1,0,2,NULL,NULL,NULL,NULL), + (479,61,'Expense Account is','5','Expense Account is',NULL,0,0,5,'Expense Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (480,61,'Asset Account is','6','Asset Account is',NULL,0,0,6,'Asset Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (481,61,'Cost of Sales Account is','7','Cost of Sales Account is',NULL,0,0,7,'Cost of Sales Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (482,61,'Premiums Inventory Account is','8','Premiums Inventory Account is',NULL,0,0,8,'Premiums Inventory Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (483,61,'Discounts Account is','9','Discounts Account is',NULL,0,0,9,'Discounts Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (484,61,'Sales Tax Account is','10','Sales Tax Account is',NULL,0,0,10,'Sales Tax Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (485,61,'Chargeback Account is','11','Chargeback Account is',NULL,0,0,11,'Chargeback Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (486,61,'Deferred Revenue Account is','12','Deferred Revenue Account is',NULL,0,0,12,'Deferred Revenue Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (487,62,'Participant Role','1','participant_role',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (488,63,'Morning Sessions','1','Morning Sessions',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (489,63,'Evening Sessions','2','Evening Sessions',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (490,64,'Contribution','1','Contribution',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (491,64,'Membership','2','Membership',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (492,64,'Pledge Payment','3','Pledge Payment',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (493,65,'Manual Batch','1','Manual Batch',NULL,0,0,1,'Manual Batch',0,1,1,2,NULL,NULL,NULL,NULL), + (494,65,'Automatic Batch','2','Automatic Batch',NULL,0,0,2,'Automatic Batch',0,1,1,2,NULL,NULL,NULL,NULL), + (495,66,'Open','1','Open',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (496,66,'Closed','2','Closed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (497,66,'Data Entry','3','Data Entry',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (498,66,'Reopened','4','Reopened',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (499,66,'Exported','5','Exported',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (500,67,'http','1','http',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (501,67,'xml','2','xml',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (502,67,'smtp','3','smtp',NULL,NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (503,69,'Renewal Reminder (non-auto-renew memberships only)','1','Renewal Reminder (non-auto-renew memberships only)',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (504,69,'Auto-renew Memberships Only','2','Auto-renew Memberships Only',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (505,69,'Reminder for Both','3','Reminder for Both',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (506,70,'Asset','1','Asset',NULL,0,0,1,'Things you own',0,1,1,2,NULL,NULL,NULL,NULL), + (507,70,'Liability','2','Liability',NULL,0,0,2,'Things you owe, like a grant still to be disbursed',0,1,1,2,NULL,NULL,NULL,NULL), + (508,70,'Revenue','3','Revenue',NULL,0,1,3,'Income from contributions and sales of tickets and memberships',0,1,1,2,NULL,NULL,NULL,NULL), + (509,70,'Cost of Sales','4','Cost of Sales',NULL,0,0,4,'Costs incurred to get revenue, e.g. premiums for donations, dinner for a fundraising dinner ticket',0,1,1,2,NULL,NULL,NULL,NULL), + (510,70,'Expenses','5','Expenses',NULL,0,0,5,'Things that are paid for that are consumable, e.g. grants disbursed',0,1,1,2,NULL,NULL,NULL,NULL), + (511,71,'Paid','1','Paid',NULL,0,0,1,'Paid',0,1,1,2,NULL,NULL,NULL,NULL), + (512,71,'Unpaid','3','Unpaid',NULL,0,0,1,'Unpaid',0,1,1,2,NULL,NULL,NULL,NULL), + (513,71,'Partially paid','2','Partially paid',NULL,0,0,2,'Partially paid',0,1,1,2,NULL,NULL,NULL,NULL), + (514,72,'Event Badge','1','Event Badge',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (515,73,'Avery 5395','{\"name\":\"Avery 5395\",\"paper-size\":\"a4\",\"metric\":\"mm\",\"lMargin\":15,\"tMargin\":26,\"NX\":2,\"NY\":4,\"SpaceX\":10,\"SpaceY\":5,\"width\":83,\"height\":57,\"font-size\":12,\"orientation\":\"portrait\",\"font-name\":\"helvetica\",\"font-style\":\"\",\"lPadding\":3,\"tPadding\":3}','Avery 5395',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (516,73,'A6 Badge Portrait 150x106','{\"paper-size\":\"a4\",\"orientation\":\"landscape\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":1,\"metric\":\"mm\",\"lMargin\":25,\"tMargin\":27,\"SpaceX\":0,\"SpaceY\":35,\"width\":106,\"height\":150,\"lPadding\":5,\"tPadding\":5}','A6 Badge Portrait 150x106',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (517,73,'Fattorini Name Badge 100x65','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":4,\"metric\":\"mm\",\"lMargin\":6,\"tMargin\":19,\"SpaceX\":0,\"SpaceY\":0,\"width\":100,\"height\":65,\"lPadding\":0,\"tPadding\":0}','Fattorini Name Badge 100x65',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (518,73,'Hanging Badge 3-3/4\" x 4-3\"/4','{\"paper-size\":\"a4\",\"orientation\":\"portrait\",\"font-name\":\"times\",\"font-size\":6,\"font-style\":\"\",\"NX\":2,\"NY\":2,\"metric\":\"mm\",\"lMargin\":10,\"tMargin\":28,\"SpaceX\":0,\"SpaceY\":0,\"width\":96,\"height\":121,\"lPadding\":5,\"tPadding\":5}','Hanging Badge 3-3/4\" x 4-3\"/4',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (519,74,'Formal','1','formal',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (520,74,'Familiar','2','familiar',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (521,75,'Email','Email','Email',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (522,75,'SMS','SMS','SMS',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (523,75,'User Preference','User_Preference','User Preference',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (524,76,'Actual date only','1','Actual date only',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (525,76,'Each anniversary','2','Each anniversary',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (526,77,'Default','1','default',NULL,NULL,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (527,77,'CiviMail','2','civimail',NULL,NULL,0,2,NULL,0,1,1,4,NULL,NULL,NULL,NULL), + (528,77,'CiviEvent','3','civievent',NULL,NULL,0,3,NULL,0,1,1,1,NULL,NULL,NULL,NULL), + (529,78,'Today','this.day','this.day',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (530,78,'This week','this.week','this.week',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (531,78,'This calendar month','this.month','this.month',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (532,78,'This quarter','this.quarter','this.quarter',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (533,78,'This fiscal year','this.fiscal_year','this.fiscal_year',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (534,78,'This calendar year','this.year','this.year',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (535,78,'Yesterday','previous.day','previous.day',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (536,78,'Previous week','previous.week','previous.week',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (537,78,'Previous calendar month','previous.month','previous.month',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (538,78,'Previous quarter','previous.quarter','previous.quarter',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (539,78,'Previous fiscal year','previous.fiscal_year','previous.fiscal_year',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (540,78,'Previous calendar year','previous.year','previous.year',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (541,78,'Last 7 days including today','ending.week','ending.week',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (542,78,'Last 30 days including today','ending_30.day','ending.month',NULL,NULL,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (543,78,'Last 60 days including today','ending_60.day','ending_2.month',NULL,NULL,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (544,78,'Last 90 days including today','ending_90.day','ending.quarter',NULL,NULL,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (545,78,'Last 12 months including today','ending.year','ending.year',NULL,NULL,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (546,78,'Last 2 years including today','ending_2.year','ending_2.year',NULL,NULL,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (547,78,'Last 3 years including today','ending_3.year','ending_3.year',NULL,NULL,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (548,78,'Tomorrow','starting.day','starting.day',NULL,NULL,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (549,78,'Next week','next.week','next.week',NULL,NULL,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (550,78,'Next calendar month','next.month','next.month',NULL,NULL,0,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (551,78,'Next quarter','next.quarter','next.quarter',NULL,NULL,0,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (552,78,'Next fiscal year','next.fiscal_year','next.fiscal_year',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (553,78,'Next calendar year','next.year','next.year',NULL,NULL,0,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (554,78,'Next 7 days including today','starting.week','starting.week',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (555,78,'Next 30 days including today','starting.month','starting.month',NULL,NULL,0,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (556,78,'Next 60 days including today','starting_2.month','starting_2.month',NULL,NULL,0,28,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (557,78,'Next 90 days including today','starting.quarter','starting.quarter',NULL,NULL,0,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (558,78,'Next 12 months including today','starting.year','starting.year',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (559,78,'Current week to-date','current.week','current.week',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (560,78,'Current calendar month to-date','current.month','current.month',NULL,NULL,0,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (561,78,'Current quarter to-date','current.quarter','current.quarter',NULL,NULL,0,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (562,78,'Current calendar year to-date','current.year','current.year',NULL,NULL,0,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (563,78,'To end of yesterday','earlier.day','earlier.day',NULL,NULL,0,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (564,78,'To end of previous week','earlier.week','earlier.week',NULL,NULL,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (565,78,'To end of previous calendar month','earlier.month','earlier.month',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (566,78,'To end of previous quarter','earlier.quarter','earlier.quarter',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (567,78,'To end of previous calendar year','earlier.year','earlier.year',NULL,NULL,0,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (568,78,'From start of current day','greater.day','greater.day',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (569,78,'From start of current week','greater.week','greater.week',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (570,78,'From start of current calendar month','greater.month','greater.month',NULL,NULL,0,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (571,78,'From start of current quarter','greater.quarter','greater.quarter',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (572,78,'From start of current calendar year','greater.year','greater.year',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (573,78,'To end of current week','less.week','less.week',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (574,78,'To end of current calendar month','less.month','less.month',NULL,NULL,0,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (575,78,'To end of current quarter','less.quarter','less.quarter',NULL,NULL,0,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (576,78,'To end of current calendar year','less.year','less.year',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (577,78,'Previous 2 days','previous_2.day','previous_2.day',NULL,NULL,0,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (578,78,'Previous 2 weeks','previous_2.week','previous_2.week',NULL,NULL,0,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (579,78,'Previous 2 calendar months','previous_2.month','previous_2.month',NULL,NULL,0,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (580,78,'Previous 2 quarters','previous_2.quarter','previous_2.quarter',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (581,78,'Previous 2 calendar years','previous_2.year','previous_2.year',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (582,78,'Previous 2 fiscal years','previous_2.fiscal_year','previous_2.fiscal_year',NULL,NULL,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (583,78,'Day prior to yesterday','previous_before.day','previous_before.day',NULL,NULL,0,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (584,78,'Week prior to previous week','previous_before.week','previous_before.week',NULL,NULL,0,56,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (585,78,'Month prior to previous calendar month','previous_before.month','previous_before.month',NULL,NULL,NULL,57,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (586,78,'Quarter prior to previous quarter','previous_before.quarter','previous_before.quarter',NULL,NULL,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (587,78,'Year prior to previous calendar year','previous_before.year','previous_before.year',NULL,NULL,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (588,78,'Fiscal year prior to previous fiscal year','previous_before.fiscal_year','previous_before.fiscal_year',NULL,NULL,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (589,78,'From end of previous week','greater_previous.week','greater_previous.week',NULL,NULL,0,61,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (590,78,'From end of previous calendar month','greater_previous.month','greater_previous.month',NULL,NULL,0,62,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (591,78,'From end of previous quarter','greater_previous.quarter','greater_previous.quarter',NULL,NULL,0,63,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (592,78,'From end of previous calendar year','greater_previous.year','greater_previous.year',NULL,NULL,0,64,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (593,79,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (594,79,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (595,79,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (596,79,'In Progress','5','In Progress',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (597,79,'Overdue','6','Overdue',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (598,80,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (599,80,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (600,80,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (601,80,'Failed','4','Failed',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (602,80,'In Progress','5','In Progress',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (603,80,'Overdue','6','Overdue',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (604,80,'Processing','7','Processing',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (605,80,'Failing','8','Failing',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (606,81,'Production','Production','Production',NULL,NULL,1,1,'Production Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), + (607,81,'Staging','Staging','Staging',NULL,NULL,0,2,'Staging Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), + (608,81,'Development','Development','Development',NULL,NULL,0,3,'Development Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), + (609,82,'None','1','NONE',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (610,82,'By relationship to case client','2','BY_RELATIONSHIP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (611,82,'Specific contact','3','SPECIFIC_CONTACT',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (612,82,'User creating the case','4','USER_CREATING_THE_CASE',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (613,83,'Financial Transactions','civicrm_financial_trxn','civicrm_financial_trxn',NULL,0,1,1,NULL,0,0,1,2,NULL,NULL,NULL,NULL), + (614,85,'Abkhaz','ab','ab_GE',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (615,85,'Afar','aa','aa_ET',NULL,0,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (616,85,'Afrikaans','af','af_ZA',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (617,85,'Akan','ak','ak_GH',NULL,0,0,4,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (618,85,'Albanian','sq','sq_AL',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (619,85,'Amharic','am','am_ET',NULL,0,0,6,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (620,85,'Arabic','ar','ar_EG',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (621,85,'Aragonese','an','an_ES',NULL,0,0,8,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (622,85,'Armenian','hy','hy_AM',NULL,0,0,9,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (623,85,'Assamese','as','as_IN',NULL,0,0,10,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (624,85,'Avaric','av','av_RU',NULL,0,0,11,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (625,85,'Avestan','ae','ae_XX',NULL,0,0,12,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (626,85,'Aymara','ay','ay_BO',NULL,0,0,13,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (627,85,'Azerbaijani','az','az_AZ',NULL,0,0,14,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (628,85,'Bambara','bm','bm_ML',NULL,0,0,15,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (629,85,'Bashkir','ba','ba_RU',NULL,0,0,16,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (630,85,'Basque','eu','eu_ES',NULL,0,0,17,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (631,85,'Belarusian','be','be_BY',NULL,0,0,18,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (632,85,'Bengali','bn','bn_BD',NULL,0,0,19,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (633,85,'Bihari','bh','bh_IN',NULL,0,0,20,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (634,85,'Bislama','bi','bi_VU',NULL,0,0,21,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (635,85,'Bosnian','bs','bs_BA',NULL,0,0,22,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (636,85,'Breton','br','br_FR',NULL,0,0,23,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (637,85,'Bulgarian','bg','bg_BG',NULL,0,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (638,85,'Burmese','my','my_MM',NULL,0,0,25,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (639,85,'Catalan; Valencian','ca','ca_ES',NULL,0,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (640,85,'Chamorro','ch','ch_GU',NULL,0,0,27,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (641,85,'Chechen','ce','ce_RU',NULL,0,0,28,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (642,85,'Chichewa; Chewa; Nyanja','ny','ny_MW',NULL,0,0,29,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (643,85,'Chinese (China)','zh','zh_CN',NULL,0,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (644,85,'Chinese (Taiwan)','zh','zh_TW',NULL,0,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (645,85,'Chuvash','cv','cv_RU',NULL,0,0,32,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (646,85,'Cornish','kw','kw_GB',NULL,0,0,33,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (647,85,'Corsican','co','co_FR',NULL,0,0,34,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (648,85,'Cree','cr','cr_CA',NULL,0,0,35,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (649,85,'Croatian','hr','hr_HR',NULL,0,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (650,85,'Czech','cs','cs_CZ',NULL,0,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (651,85,'Danish','da','da_DK',NULL,0,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (652,85,'Divehi; Dhivehi; Maldivian;','dv','dv_MV',NULL,0,0,39,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (653,85,'Dutch (Netherlands)','nl','nl_NL',NULL,0,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (654,85,'Dutch (Belgium)','nl','nl_BE',NULL,0,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (655,85,'Dzongkha','dz','dz_BT',NULL,0,0,42,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (656,85,'English (Australia)','en','en_AU',NULL,0,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (657,85,'English (Canada)','en','en_CA',NULL,0,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (658,85,'English (United Kingdom)','en','en_GB',NULL,0,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (659,85,'English (United States)','en','en_US',NULL,0,1,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (660,85,'Esperanto','eo','eo_XX',NULL,0,0,47,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (661,85,'Estonian','et','et_EE',NULL,0,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (662,85,'Ewe','ee','ee_GH',NULL,0,0,49,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (663,85,'Faroese','fo','fo_FO',NULL,0,0,50,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (664,85,'Fijian','fj','fj_FJ',NULL,0,0,51,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (665,85,'Finnish','fi','fi_FI',NULL,0,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (666,85,'French (Canada)','fr','fr_CA',NULL,0,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (667,85,'French (France)','fr','fr_FR',NULL,0,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (668,85,'Fula; Fulah; Pulaar; Pular','ff','ff_SN',NULL,0,0,55,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (669,85,'Galician','gl','gl_ES',NULL,0,0,56,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (670,85,'Georgian','ka','ka_GE',NULL,0,0,57,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (671,85,'German','de','de_DE',NULL,0,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (672,85,'German (Swiss)','de','de_CH',NULL,0,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (673,85,'Greek, Modern','el','el_GR',NULL,0,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (674,85,'GuaraniÂ','gn','gn_PY',NULL,0,0,61,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (675,85,'Gujarati','gu','gu_IN',NULL,0,0,62,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (676,85,'Haitian; Haitian Creole','ht','ht_HT',NULL,0,0,63,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (677,85,'Hausa','ha','ha_NG',NULL,0,0,64,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (678,85,'Hebrew (modern)','he','he_IL',NULL,0,0,65,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (679,85,'Herero','hz','hz_NA',NULL,0,0,66,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (680,85,'Hindi','hi','hi_IN',NULL,0,0,67,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (681,85,'Hiri Motu','ho','ho_PG',NULL,0,0,68,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (682,85,'Hungarian','hu','hu_HU',NULL,0,0,69,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (683,85,'Interlingua','ia','ia_XX',NULL,0,0,70,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (684,85,'Indonesian','id','id_ID',NULL,0,0,71,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (685,85,'Interlingue','ie','ie_XX',NULL,0,0,72,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (686,85,'Irish','ga','ga_IE',NULL,0,0,73,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (687,85,'Igbo','ig','ig_NG',NULL,0,0,74,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (688,85,'Inupiaq','ik','ik_US',NULL,0,0,75,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (689,85,'Ido','io','io_XX',NULL,0,0,76,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (690,85,'Icelandic','is','is_IS',NULL,0,0,77,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (691,85,'Italian','it','it_IT',NULL,0,0,78,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (692,85,'Inuktitut','iu','iu_CA',NULL,0,0,79,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (693,85,'Japanese','ja','ja_JP',NULL,0,0,80,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (694,85,'Javanese','jv','jv_ID',NULL,0,0,81,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (695,85,'Kalaallisut, Greenlandic','kl','kl_GL',NULL,0,0,82,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (696,85,'Kannada','kn','kn_IN',NULL,0,0,83,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (697,85,'Kanuri','kr','kr_NE',NULL,0,0,84,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (698,85,'Kashmiri','ks','ks_IN',NULL,0,0,85,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (699,85,'Kazakh','kk','kk_KZ',NULL,0,0,86,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (700,85,'Khmer','km','km_KH',NULL,0,0,87,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (701,85,'Kikuyu, Gikuyu','ki','ki_KE',NULL,0,0,88,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (702,85,'Kinyarwanda','rw','rw_RW',NULL,0,0,89,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (703,85,'Kirghiz, Kyrgyz','ky','ky_KG',NULL,0,0,90,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (704,85,'Komi','kv','kv_RU',NULL,0,0,91,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (705,85,'Kongo','kg','kg_CD',NULL,0,0,92,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (706,85,'Korean','ko','ko_KR',NULL,0,0,93,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (707,85,'Kurdish','ku','ku_IQ',NULL,0,0,94,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (708,85,'Kwanyama, Kuanyama','kj','kj_NA',NULL,0,0,95,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (709,85,'Latin','la','la_VA',NULL,0,0,96,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (710,85,'Luxembourgish, Letzeburgesch','lb','lb_LU',NULL,0,0,97,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (711,85,'Luganda','lg','lg_UG',NULL,0,0,98,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (712,85,'Limburgish, Limburgan, Limburger','li','li_NL',NULL,0,0,99,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (713,85,'Lingala','ln','ln_CD',NULL,0,0,100,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (714,85,'Lao','lo','lo_LA',NULL,0,0,101,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (715,85,'Lithuanian','lt','lt_LT',NULL,0,0,102,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (716,85,'Luba-Katanga','lu','lu_CD',NULL,0,0,103,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (717,85,'Latvian','lv','lv_LV',NULL,0,0,104,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (718,85,'Manx','gv','gv_IM',NULL,0,0,105,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (719,85,'Macedonian','mk','mk_MK',NULL,0,0,106,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (720,85,'Malagasy','mg','mg_MG',NULL,0,0,107,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (721,85,'Malay','ms','ms_MY',NULL,0,0,108,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (722,85,'Malayalam','ml','ml_IN',NULL,0,0,109,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (723,85,'Maltese','mt','mt_MT',NULL,0,0,110,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (724,85,'MÄori','mi','mi_NZ',NULL,0,0,111,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (725,85,'Marathi','mr','mr_IN',NULL,0,0,112,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (726,85,'Marshallese','mh','mh_MH',NULL,0,0,113,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (727,85,'Mongolian','mn','mn_MN',NULL,0,0,114,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (728,85,'Nauru','na','na_NR',NULL,0,0,115,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (729,85,'Navajo, Navaho','nv','nv_US',NULL,0,0,116,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (730,85,'Norwegian BokmÃ¥l','nb','nb_NO',NULL,0,0,117,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (731,85,'North Ndebele','nd','nd_ZW',NULL,0,0,118,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (732,85,'Nepali','ne','ne_NP',NULL,0,0,119,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (733,85,'Ndonga','ng','ng_NA',NULL,0,0,120,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (734,85,'Norwegian Nynorsk','nn','nn_NO',NULL,0,0,121,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (735,85,'Norwegian','no','no_NO',NULL,0,0,122,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (736,85,'Nuosu','ii','ii_CN',NULL,0,0,123,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (737,85,'South Ndebele','nr','nr_ZA',NULL,0,0,124,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (738,85,'Occitan (after 1500)','oc','oc_FR',NULL,0,0,125,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (739,85,'Ojibwa','oj','oj_CA',NULL,0,0,126,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (740,85,'Old Church Slavonic, Church Slavic, Church Slavonic, Old Bulgarian, Old Slavonic','cu','cu_BG',NULL,0,0,127,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (741,85,'Oromo','om','om_ET',NULL,0,0,128,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (742,85,'Oriya','or','or_IN',NULL,0,0,129,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (743,85,'Ossetian, Ossetic','os','os_GE',NULL,0,0,130,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (744,85,'Panjabi, Punjabi','pa','pa_IN',NULL,0,0,131,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (745,85,'Pali','pi','pi_KH',NULL,0,0,132,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (746,85,'Persian (Iran)','fa','fa_IR',NULL,0,0,133,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (747,85,'Polish','pl','pl_PL',NULL,0,0,134,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (748,85,'Pashto, Pushto','ps','ps_AF',NULL,0,0,135,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (749,85,'Portuguese (Brazil)','pt','pt_BR',NULL,0,0,136,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (750,85,'Portuguese (Portugal)','pt','pt_PT',NULL,0,0,137,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (751,85,'Quechua','qu','qu_PE',NULL,0,0,138,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (752,85,'Romansh','rm','rm_CH',NULL,0,0,139,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (753,85,'Kirundi','rn','rn_BI',NULL,0,0,140,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (754,85,'Romanian, Moldavian, Moldovan','ro','ro_RO',NULL,0,0,141,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (755,85,'Russian','ru','ru_RU',NULL,0,0,142,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (756,85,'Sanskrit','sa','sa_IN',NULL,0,0,143,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (757,85,'Sardinian','sc','sc_IT',NULL,0,0,144,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (758,85,'Sindhi','sd','sd_IN',NULL,0,0,145,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (759,85,'Northern Sami','se','se_NO',NULL,0,0,146,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (760,85,'Samoan','sm','sm_WS',NULL,0,0,147,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (761,85,'Sango','sg','sg_CF',NULL,0,0,148,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (762,85,'Serbian','sr','sr_RS',NULL,0,0,149,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (763,85,'Scottish Gaelic; Gaelic','gd','gd_GB',NULL,0,0,150,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (764,85,'Shona','sn','sn_ZW',NULL,0,0,151,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (765,85,'Sinhala, Sinhalese','si','si_LK',NULL,0,0,152,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (766,85,'Slovak','sk','sk_SK',NULL,0,0,153,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (767,85,'Slovene','sl','sl_SI',NULL,0,0,154,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (768,85,'Somali','so','so_SO',NULL,0,0,155,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (769,85,'Southern Sotho','st','st_ZA',NULL,0,0,156,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (770,85,'Spanish; Castilian (Spain)','es','es_ES',NULL,0,0,157,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (771,85,'Spanish; Castilian (Mexico)','es','es_MX',NULL,0,0,158,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (772,85,'Spanish; Castilian (Puerto Rico)','es','es_PR',NULL,0,0,159,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (773,85,'Sundanese','su','su_ID',NULL,0,0,160,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (774,85,'Swahili','sw','sw_TZ',NULL,0,0,161,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (775,85,'Swati','ss','ss_ZA',NULL,0,0,162,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (776,85,'Swedish','sv','sv_SE',NULL,0,0,163,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (777,85,'Tamil','ta','ta_IN',NULL,0,0,164,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (778,85,'Telugu','te','te_IN',NULL,0,0,165,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (779,85,'Tajik','tg','tg_TJ',NULL,0,0,166,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (780,85,'Thai','th','th_TH',NULL,0,0,167,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (781,85,'Tigrinya','ti','ti_ET',NULL,0,0,168,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (782,85,'Tibetan Standard, Tibetan, Central','bo','bo_CN',NULL,0,0,169,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (783,85,'Turkmen','tk','tk_TM',NULL,0,0,170,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (784,85,'Tagalog','tl','tl_PH',NULL,0,0,171,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (785,85,'Tswana','tn','tn_ZA',NULL,0,0,172,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (786,85,'Tonga (Tonga Islands)','to','to_TO',NULL,0,0,173,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (787,85,'Turkish','tr','tr_TR',NULL,0,0,174,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (788,85,'Tsonga','ts','ts_ZA',NULL,0,0,175,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (789,85,'Tatar','tt','tt_RU',NULL,0,0,176,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (790,85,'Twi','tw','tw_GH',NULL,0,0,177,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (791,85,'Tahitian','ty','ty_PF',NULL,0,0,178,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (792,85,'Uighur, Uyghur','ug','ug_CN',NULL,0,0,179,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (793,85,'Ukrainian','uk','uk_UA',NULL,0,0,180,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (794,85,'Urdu','ur','ur_PK',NULL,0,0,181,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (795,85,'Uzbek','uz','uz_UZ',NULL,0,0,182,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (796,85,'Venda','ve','ve_ZA',NULL,0,0,183,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (797,85,'Vietnamese','vi','vi_VN',NULL,0,0,184,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (798,85,'Volapük','vo','vo_XX',NULL,0,0,185,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (799,85,'Walloon','wa','wa_BE',NULL,0,0,186,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (800,85,'Welsh','cy','cy_GB',NULL,0,0,187,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (801,85,'Wolof','wo','wo_SN',NULL,0,0,188,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (802,85,'Western Frisian','fy','fy_NL',NULL,0,0,189,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (803,85,'Xhosa','xh','xh_ZA',NULL,0,0,190,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (804,85,'Yiddish','yi','yi_US',NULL,0,0,191,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (805,85,'Yoruba','yo','yo_NG',NULL,0,0,192,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (806,85,'Zhuang, Chuang','za','za_CN',NULL,0,0,193,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (807,85,'Zulu','zu','zu_ZA',NULL,0,0,194,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (808,86,'In Person','1','in_person',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (809,86,'Phone','2','phone',NULL,0,1,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (810,86,'Email','3','email',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (811,86,'Fax','4','fax',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (812,86,'Letter Mail','5','letter_mail',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (813,87,'Cases - Send Copy of an Activity','1','case_activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (814,88,'Contributions - Duplicate Organization Alert','1','contribution_dupalert',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (815,88,'Contributions - Receipt (off-line)','2','contribution_offline_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (816,88,'Contributions - Receipt (on-line)','3','contribution_online_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (817,88,'Contributions - Invoice','4','contribution_invoice_receipt',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (818,88,'Contributions - Recurring Start and End Notification','5','contribution_recurring_notify',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (819,88,'Contributions - Recurring Cancellation Notification','6','contribution_recurring_cancelled',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (820,88,'Contributions - Recurring Billing Updates','7','contribution_recurring_billing',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (821,88,'Contributions - Recurring Updates','8','contribution_recurring_edit',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (822,88,'Personal Campaign Pages - Admin Notification','9','pcp_notify',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (823,88,'Personal Campaign Pages - Supporter Status Change Notification','10','pcp_status_change',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (824,88,'Personal Campaign Pages - Supporter Welcome','11','pcp_supporter_notify',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (825,88,'Personal Campaign Pages - Owner Notification','12','pcp_owner_notify',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (826,88,'Additional Payment Receipt or Refund Notification','13','payment_or_refund_notification',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (827,89,'Events - Registration Confirmation and Receipt (off-line)','1','event_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (828,89,'Events - Registration Confirmation and Receipt (on-line)','2','event_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (829,89,'Events - Receipt only','3','event_registration_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (830,89,'Events - Registration Cancellation Notice','4','participant_cancelled',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (831,89,'Events - Registration Confirmation Invite','5','participant_confirm',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (832,89,'Events - Pending Registration Expiration Notice','6','participant_expired',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (833,89,'Events - Registration Transferred Notice','7','participant_transferred',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (834,90,'Tell-a-Friend Email','1','friend',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (835,91,'Memberships - Signup and Renewal Receipts (off-line)','1','membership_offline_receipt',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (836,91,'Memberships - Receipt (on-line)','2','membership_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (837,91,'Memberships - Auto-renew Cancellation Notification','3','membership_autorenew_cancelled',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (838,91,'Memberships - Auto-renew Billing Updates','4','membership_autorenew_billing',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (839,92,'Test-drive - Receipt Header','1','test_preview',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (840,93,'Pledges - Acknowledgement','1','pledge_acknowledge',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (841,93,'Pledges - Payment Reminder','2','pledge_reminder',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (842,94,'Profiles - Admin Notification','1','uf_notify',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (843,95,'Petition - signature added','1','petition_sign',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (844,95,'Petition - need verification','2','petition_confirmation_needed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (845,96,'In Honor of','1','in_honor_of',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (846,96,'In Memory of','2','in_memory_of',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (847,96,'Solicited','3','solicited',NULL,0,1,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (848,96,'Household','4','household',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (849,96,'Workplace Giving','5','workplace',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (850,96,'Foundation Affiliate','6','foundation_affiliate',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (851,96,'3rd-party Service','7','3rd-party_service',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (852,96,'Donor-advised Fund','8','donor-advised_fund',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (853,96,'Matched Gift','9','matched_gift',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (854,96,'Personal Campaign Page','10','pcp',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (855,96,'Gift','11','gift',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (856,97,'Contacts','Contact','Contact',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (857,97,'Relationships','Relationship','Relationship',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (858,97,'Activities','Activity','Activity',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (859,97,'Notes','Note','Note',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (860,97,'Groups','Group','Group',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (861,97,'Cases','Case','Case',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (862,97,'Contributions','Contribution','Contribution',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (863,97,'Participants','Participant','Participant',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (864,97,'Memberships','Membership','Membership',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (865,97,'Pledges','Pledge','Pledge',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (866,97,'Events','Event','Event',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (867,97,'Campaigns','Campaign','Campaign',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (868,2,'Interview','56','Interview',NULL,0,NULL,56,'Conduct a phone or in person interview.',0,0,1,NULL,NULL,NULL,'fa-comment-o',NULL), + (869,8,'Advisory Board','3','Advisory Board',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_option_value` ENABLE KEYS */; UNLOCK TABLES; @@ -6715,56 +6681,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,160,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,52,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,13,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,135,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,105,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,182,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,154,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,98,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,127,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,168,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,149,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,80,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,6,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,40,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,122,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,7,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,86,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,177,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,78,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,32,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,178,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,88,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,90,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,128,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,171,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,183,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,132,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,70,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,99,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,106,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,112,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,161,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,189,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,145,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,95,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,35,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,66,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,190,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,23,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,91,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,174,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,101,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,64,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,146,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,63,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,153,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,176,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,188,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,139,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,103,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,102,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,181,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,184,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,119,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,123,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,88,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,149,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,137,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,56,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,153,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,47,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,133,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,29,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,43,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,145,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,194,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,142,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,63,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,92,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,91,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,132,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,38,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,76,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,174,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,3,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,167,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,170,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,128,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,9,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,94,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,186,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,178,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,127,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,177,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,90,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,159,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,195,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,151,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,131,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,104,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,161,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,11,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,115,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,50,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,199,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,37,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,42,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,68,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,2,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,193,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; @@ -6897,7 +6863,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,117,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,171,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; @@ -6919,169 +6885,170 @@ 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,24,1,1,0,NULL,'(257) 659-4451',NULL,'2576594451',1), - (2,24,1,0,0,NULL,'678-4460',NULL,'6784460',2), - (3,88,1,1,0,NULL,'755-2355',NULL,'7552355',2), - (4,82,1,1,0,NULL,'(446) 495-9560',NULL,'4464959560',2), - (5,82,1,0,0,NULL,'(604) 217-2615',NULL,'6042172615',1), - (6,72,1,1,0,NULL,'363-5905',NULL,'3635905',2), - (7,72,1,0,0,NULL,'(806) 637-4324',NULL,'8066374324',2), - (8,135,1,1,0,NULL,'(421) 587-3061',NULL,'4215873061',1), - (9,135,1,0,0,NULL,'479-3557',NULL,'4793557',2), - (10,151,1,1,0,NULL,'600-4232',NULL,'6004232',2), - (11,143,1,1,0,NULL,'(812) 870-4851',NULL,'8128704851',2), - (12,143,1,0,0,NULL,'(615) 551-6016',NULL,'6155516016',2), - (13,13,1,1,0,NULL,'(292) 638-1800',NULL,'2926381800',1), - (14,93,1,1,0,NULL,'420-7220',NULL,'4207220',1), - (15,78,1,1,0,NULL,'695-3529',NULL,'6953529',2), - (16,78,1,0,0,NULL,'657-1916',NULL,'6571916',1), - (17,25,1,1,0,NULL,'(794) 572-5074',NULL,'7945725074',2), - (18,25,1,0,0,NULL,'(581) 811-8784',NULL,'5818118784',2), - (19,128,1,1,0,NULL,'(259) 632-6686',NULL,'2596326686',2), - (20,128,1,0,0,NULL,'368-6138',NULL,'3686138',1), - (21,132,1,1,0,NULL,'688-3307',NULL,'6883307',2), - (22,86,1,1,0,NULL,'642-9136',NULL,'6429136',1), - (23,86,1,0,0,NULL,'(695) 864-5996',NULL,'6958645996',2), - (24,15,1,1,0,NULL,'719-7213',NULL,'7197213',1), - (25,108,1,1,0,NULL,'(605) 536-7553',NULL,'6055367553',1), - (26,131,1,1,0,NULL,'(679) 777-6014',NULL,'6797776014',2), - (27,131,1,0,0,NULL,'(462) 312-1763',NULL,'4623121763',1), - (28,46,1,1,0,NULL,'(383) 506-9937',NULL,'3835069937',1), - (29,46,1,0,0,NULL,'365-1240',NULL,'3651240',2), - (30,110,1,1,0,NULL,'(363) 725-5476',NULL,'3637255476',2), - (31,110,1,0,0,NULL,'(874) 620-8716',NULL,'8746208716',1), - (32,12,1,1,0,NULL,'209-9133',NULL,'2099133',2), - (33,12,1,0,0,NULL,'558-5312',NULL,'5585312',1), - (34,23,1,1,0,NULL,'(457) 765-9338',NULL,'4577659338',1), - (35,23,1,0,0,NULL,'(533) 717-6679',NULL,'5337176679',1), - (36,96,1,1,0,NULL,'786-1664',NULL,'7861664',2), - (37,176,1,1,0,NULL,'(772) 748-1901',NULL,'7727481901',1), - (38,123,1,1,0,NULL,'(375) 638-3078',NULL,'3756383078',2), - (39,100,1,1,0,NULL,'(725) 765-9764',NULL,'7257659764',2), - (40,111,1,1,0,NULL,'548-4054',NULL,'5484054',2), - (41,111,1,0,0,NULL,'(884) 468-4653',NULL,'8844684653',1), - (42,9,1,1,0,NULL,'(738) 356-9489',NULL,'7383569489',2), - (43,9,1,0,0,NULL,'457-7651',NULL,'4577651',1), - (44,148,1,1,0,NULL,'(861) 642-4137',NULL,'8616424137',2), - (45,105,1,1,0,NULL,'331-9554',NULL,'3319554',2), - (46,31,1,1,0,NULL,'(571) 448-9467',NULL,'5714489467',1), - (47,31,1,0,0,NULL,'(496) 754-4521',NULL,'4967544521',1), - (48,184,1,1,0,NULL,'462-1164',NULL,'4621164',2), - (49,184,1,0,0,NULL,'(538) 868-6369',NULL,'5388686369',1), - (50,29,1,1,0,NULL,'261-4043',NULL,'2614043',2), - (51,29,1,0,0,NULL,'(879) 802-3319',NULL,'8798023319',1), - (52,126,1,1,0,NULL,'357-2699',NULL,'3572699',2), - (53,126,1,0,0,NULL,'772-5011',NULL,'7725011',1), - (54,138,1,1,0,NULL,'278-5362',NULL,'2785362',2), - (55,138,1,0,0,NULL,'(223) 361-8535',NULL,'2233618535',2), - (56,48,1,1,0,NULL,'285-6254',NULL,'2856254',2), - (57,48,1,0,0,NULL,'(693) 408-3245',NULL,'6934083245',1), - (58,137,1,1,0,NULL,'(822) 443-2290',NULL,'8224432290',1), - (59,164,1,1,0,NULL,'771-9191',NULL,'7719191',1), - (60,136,1,1,0,NULL,'(500) 342-3147',NULL,'5003423147',2), - (61,136,1,0,0,NULL,'691-6422',NULL,'6916422',2), - (62,61,1,1,0,NULL,'310-4549',NULL,'3104549',1), - (63,61,1,0,0,NULL,'(330) 813-4842',NULL,'3308134842',1), - (64,34,1,1,0,NULL,'(390) 695-3216',NULL,'3906953216',2), - (65,173,1,1,0,NULL,'(839) 500-3684',NULL,'8395003684',1), - (66,84,1,1,0,NULL,'687-3656',NULL,'6873656',2), - (67,84,1,0,0,NULL,'(599) 407-3929',NULL,'5994073929',2), - (68,59,1,1,0,NULL,'(798) 399-7385',NULL,'7983997385',2), - (69,59,1,0,0,NULL,'380-7880',NULL,'3807880',2), - (70,142,1,1,0,NULL,'(761) 701-6046',NULL,'7617016046',1), - (71,81,1,1,0,NULL,'216-1111',NULL,'2161111',1), - (72,74,1,1,0,NULL,'873-3074',NULL,'8733074',2), - (73,74,1,0,0,NULL,'(854) 893-7780',NULL,'8548937780',1), - (74,109,1,1,0,NULL,'653-3402',NULL,'6533402',1), - (75,30,1,1,0,NULL,'609-8997',NULL,'6098997',2), - (76,149,1,1,0,NULL,'739-2319',NULL,'7392319',1), - (77,175,1,1,0,NULL,'(852) 598-8109',NULL,'8525988109',1), - (78,175,1,0,0,NULL,'853-1970',NULL,'8531970',1), - (79,27,1,1,0,NULL,'806-5869',NULL,'8065869',2), - (80,33,1,1,0,NULL,'299-2809',NULL,'2992809',2), - (81,33,1,0,0,NULL,'(377) 228-8453',NULL,'3772288453',2), - (82,35,1,1,0,NULL,'621-3720',NULL,'6213720',2), - (83,35,1,0,0,NULL,'265-2068',NULL,'2652068',2), - (84,67,1,1,0,NULL,'(473) 701-6949',NULL,'4737016949',1), - (85,67,1,0,0,NULL,'402-2412',NULL,'4022412',2), - (86,79,1,1,0,NULL,'(795) 644-2116',NULL,'7956442116',2), - (87,154,1,1,0,NULL,'(851) 249-3036',NULL,'8512493036',2), - (88,41,1,1,0,NULL,'601-2662',NULL,'6012662',2), - (89,201,1,1,0,NULL,'258-7710',NULL,'2587710',2), - (90,171,1,1,0,NULL,'227-3883',NULL,'2273883',1), - (91,178,1,1,0,NULL,'306-6754',NULL,'3066754',2), - (92,178,1,0,0,NULL,'(407) 813-9438',NULL,'4078139438',1), - (93,80,1,1,0,NULL,'816-9356',NULL,'8169356',1), - (94,80,1,0,0,NULL,'(410) 727-3113',NULL,'4107273113',1), - (95,172,1,1,0,NULL,'(856) 539-6232',NULL,'8565396232',1), - (96,116,1,1,0,NULL,'602-1995',NULL,'6021995',2), - (97,116,1,0,0,NULL,'724-5625',NULL,'7245625',2), - (98,165,1,1,0,NULL,'883-8757',NULL,'8838757',2), - (99,165,1,0,0,NULL,'(656) 785-8544',NULL,'6567858544',2), - (100,14,1,1,0,NULL,'(319) 615-7691',NULL,'3196157691',2), - (101,195,1,1,0,NULL,'763-4673',NULL,'7634673',1), - (102,192,1,1,0,NULL,'(880) 551-2524',NULL,'8805512524',1), - (103,113,1,1,0,NULL,'657-7591',NULL,'6577591',2), - (104,113,1,0,0,NULL,'506-7986',NULL,'5067986',1), - (105,114,1,1,0,NULL,'(807) 279-1528',NULL,'8072791528',1), - (106,114,1,0,0,NULL,'466-6032',NULL,'4666032',1), - (107,155,1,1,0,NULL,'427-2408',NULL,'4272408',2), - (108,125,1,1,0,NULL,'838-2574',NULL,'8382574',1), - (109,68,1,1,0,NULL,'(360) 239-9137',NULL,'3602399137',2), - (110,69,1,1,0,NULL,'(530) 731-8881',NULL,'5307318881',2), - (111,69,1,0,0,NULL,'482-4891',NULL,'4824891',2), - (112,64,1,1,0,NULL,'(557) 780-7959',NULL,'5577807959',2), - (113,64,1,0,0,NULL,'706-9995',NULL,'7069995',2), - (114,20,1,1,0,NULL,'531-9720',NULL,'5319720',1), - (115,20,1,0,0,NULL,'(721) 449-3574',NULL,'7214493574',2), - (116,181,1,1,0,NULL,'(796) 697-1216',NULL,'7966971216',2), - (117,181,1,0,0,NULL,'(359) 414-5114',NULL,'3594145114',2), - (118,77,1,1,0,NULL,'865-2011',NULL,'8652011',1), - (119,77,1,0,0,NULL,'(592) 646-5524',NULL,'5926465524',2), - (120,156,1,1,0,NULL,'(625) 739-8499',NULL,'6257398499',1), - (121,156,1,0,0,NULL,'(228) 348-9932',NULL,'2283489932',1), - (122,180,1,1,0,NULL,'(726) 273-5057',NULL,'7262735057',2), - (123,180,1,0,0,NULL,'539-2183',NULL,'5392183',2), - (124,11,1,1,0,NULL,'(291) 667-3086',NULL,'2916673086',1), - (125,11,1,0,0,NULL,'(694) 826-5966',NULL,'6948265966',1), - (126,99,1,1,0,NULL,'841-6333',NULL,'8416333',1), - (127,99,1,0,0,NULL,'(454) 455-1614',NULL,'4544551614',1), - (128,91,1,1,0,NULL,'(593) 437-9544',NULL,'5934379544',1), - (129,91,1,0,0,NULL,'628-7850',NULL,'6287850',1), - (130,73,1,1,0,NULL,'686-4241',NULL,'6864241',2), - (131,73,1,0,0,NULL,'(223) 418-9865',NULL,'2234189865',1), - (132,139,1,1,0,NULL,'722-4029',NULL,'7224029',2), - (133,139,1,0,0,NULL,'(868) 866-8186',NULL,'8688668186',1), - (134,189,1,1,0,NULL,'(339) 436-2264',NULL,'3394362264',1), - (135,62,1,1,0,NULL,'795-8888',NULL,'7958888',1), - (136,87,1,1,0,NULL,'407-2473',NULL,'4072473',1), - (137,40,1,1,0,NULL,'879-2229',NULL,'8792229',2), - (138,92,1,1,0,NULL,'236-3500',NULL,'2363500',2), - (139,70,1,1,0,NULL,'(488) 757-9692',NULL,'4887579692',2), - (140,32,1,1,0,NULL,'(558) 535-5012',NULL,'5585355012',2), - (141,75,1,1,0,NULL,'(264) 312-9452',NULL,'2643129452',2), - (142,75,1,0,0,NULL,'(813) 296-6550',NULL,'8132966550',1), - (143,104,1,1,0,NULL,'479-5627',NULL,'4795627',2), - (144,51,1,1,0,NULL,'818-4331',NULL,'8184331',1), - (145,163,1,1,0,NULL,'720-3821',NULL,'7203821',1), - (146,44,1,1,0,NULL,'(487) 481-2115',NULL,'4874812115',1), - (147,107,1,1,0,NULL,'(530) 537-3717',NULL,'5305373717',1), - (148,107,1,0,0,NULL,'(209) 610-6121',NULL,'2096106121',1), - (149,130,1,1,0,NULL,'(327) 757-8283',NULL,'3277578283',2), - (150,183,1,1,0,NULL,'550-4320',NULL,'5504320',2), - (151,183,1,0,0,NULL,'393-2221',NULL,'3932221',2), - (152,55,1,1,0,NULL,'369-2084',NULL,'3692084',1), - (153,55,1,0,0,NULL,'(238) 335-9689',NULL,'2383359689',2), - (154,85,1,1,0,NULL,'(268) 828-1078',NULL,'2688281078',1), - (155,85,1,0,0,NULL,'386-5650',NULL,'3865650',1), - (156,56,1,1,0,NULL,'723-1340',NULL,'7231340',1), - (157,56,1,0,0,NULL,'380-2535',NULL,'3802535',2), - (158,22,1,1,0,NULL,'(488) 726-5093',NULL,'4887265093',1), - (159,168,1,1,0,NULL,'515-1071',NULL,'5151071',2), - (160,168,1,0,0,NULL,'(772) 495-3920',NULL,'7724953920',2), - (161,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), - (162,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), - (163,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); + (1,41,1,1,0,NULL,'(289) 519-6054',NULL,'2895196054',1), + (2,34,1,1,0,NULL,'520-4215',NULL,'5204215',2), + (3,171,1,1,0,NULL,'(611) 494-7031',NULL,'6114947031',2), + (4,123,1,1,0,NULL,'824-9212',NULL,'8249212',2), + (5,123,1,0,0,NULL,'706-2985',NULL,'7062985',1), + (6,24,1,1,0,NULL,'328-3172',NULL,'3283172',1), + (7,24,1,0,0,NULL,'(567) 566-6529',NULL,'5675666529',2), + (8,146,1,1,0,NULL,'809-5931',NULL,'8095931',1), + (9,4,1,1,0,NULL,'810-4044',NULL,'8104044',1), + (10,37,1,1,0,NULL,'(462) 381-8201',NULL,'4623818201',2), + (11,37,1,0,0,NULL,'(863) 769-7521',NULL,'8637697521',1), + (12,33,1,1,0,NULL,'620-3654',NULL,'6203654',2), + (13,160,1,1,0,NULL,'666-8895',NULL,'6668895',1), + (14,160,1,0,0,NULL,'(815) 384-2755',NULL,'8153842755',2), + (15,148,1,1,0,NULL,'(315) 306-7997',NULL,'3153067997',2), + (16,145,1,1,0,NULL,'809-5669',NULL,'8095669',1), + (17,145,1,0,0,NULL,'552-9847',NULL,'5529847',2), + (18,102,1,1,0,NULL,'(362) 321-5371',NULL,'3623215371',1), + (19,117,1,1,0,NULL,'408-1033',NULL,'4081033',1), + (20,117,1,0,0,NULL,'433-5455',NULL,'4335455',1), + (21,28,1,1,0,NULL,'321-5248',NULL,'3215248',2), + (22,40,1,1,0,NULL,'659-5852',NULL,'6595852',1), + (23,26,1,1,0,NULL,'881-3571',NULL,'8813571',1), + (24,192,1,1,0,NULL,'(470) 372-7457',NULL,'4703727457',2), + (25,141,1,1,0,NULL,'(255) 561-2330',NULL,'2555612330',2), + (26,59,1,1,0,NULL,'(696) 607-6846',NULL,'6966076846',2), + (27,100,1,1,0,NULL,'(333) 790-5892',NULL,'3337905892',1), + (28,11,1,1,0,NULL,'878-9420',NULL,'8789420',1), + (29,11,1,0,0,NULL,'(834) 794-8983',NULL,'8347948983',2), + (30,47,1,1,0,NULL,'389-7833',NULL,'3897833',1), + (31,47,1,0,0,NULL,'568-2506',NULL,'5682506',2), + (32,22,1,1,0,NULL,'207-1069',NULL,'2071069',1), + (33,75,1,1,0,NULL,'308-4515',NULL,'3084515',1), + (34,75,1,0,0,NULL,'(366) 266-5652',NULL,'3662665652',2), + (35,182,1,1,0,NULL,'(231) 601-4939',NULL,'2316014939',2), + (36,132,1,1,0,NULL,'211-8137',NULL,'2118137',1), + (37,132,1,0,0,NULL,'(632) 471-3546',NULL,'6324713546',2), + (38,136,1,1,0,NULL,'478-7361',NULL,'4787361',1), + (39,136,1,0,0,NULL,'(393) 756-6446',NULL,'3937566446',2), + (40,172,1,1,0,NULL,'(816) 420-6539',NULL,'8164206539',2), + (41,172,1,0,0,NULL,'332-7598',NULL,'3327598',2), + (42,90,1,1,0,NULL,'554-4992',NULL,'5544992',1), + (43,90,1,0,0,NULL,'740-1806',NULL,'7401806',2), + (44,120,1,1,0,NULL,'(562) 332-2740',NULL,'5623322740',2), + (45,109,1,1,0,NULL,'(444) 519-9615',NULL,'4445199615',2), + (46,69,1,1,0,NULL,'719-8366',NULL,'7198366',1), + (47,69,1,0,0,NULL,'(570) 383-4080',NULL,'5703834080',1), + (48,96,1,1,0,NULL,'(850) 588-2618',NULL,'8505882618',2), + (49,96,1,0,0,NULL,'(590) 786-3934',NULL,'5907863934',1), + (50,159,1,1,0,NULL,'711-8388',NULL,'7118388',1), + (51,78,1,1,0,NULL,'882-4369',NULL,'8824369',1), + (52,70,1,1,0,NULL,'(208) 588-4365',NULL,'2085884365',2), + (53,70,1,0,0,NULL,'330-3371',NULL,'3303371',1), + (54,103,1,1,0,NULL,'(301) 301-6529',NULL,'3013016529',1), + (55,84,1,1,0,NULL,'388-1082',NULL,'3881082',2), + (56,71,1,1,0,NULL,'632-8191',NULL,'6328191',1), + (57,115,1,1,0,NULL,'(768) 546-1445',NULL,'7685461445',1), + (58,115,1,0,0,NULL,'(240) 323-4439',NULL,'2403234439',1), + (59,56,1,1,0,NULL,'804-4284',NULL,'8044284',1), + (60,56,1,0,0,NULL,'604-3082',NULL,'6043082',2), + (61,196,1,1,0,NULL,'581-1053',NULL,'5811053',2), + (62,62,1,1,0,NULL,'(444) 529-6168',NULL,'4445296168',2), + (63,121,1,1,0,NULL,'538-7666',NULL,'5387666',1), + (64,121,1,0,0,NULL,'(649) 838-6012',NULL,'6498386012',1), + (65,114,1,1,0,NULL,'(491) 697-4292',NULL,'4916974292',2), + (66,114,1,0,0,NULL,'(402) 806-4331',NULL,'4028064331',2), + (67,143,1,1,0,NULL,'684-2929',NULL,'6842929',2), + (68,143,1,0,0,NULL,'504-9030',NULL,'5049030',1), + (69,39,1,1,0,NULL,'(745) 784-2855',NULL,'7457842855',2), + (70,13,1,1,0,NULL,'405-6241',NULL,'4056241',1), + (71,53,1,1,0,NULL,'(259) 503-4581',NULL,'2595034581',2), + (72,53,1,0,0,NULL,'(270) 454-3150',NULL,'2704543150',1), + (73,23,1,1,0,NULL,'590-6821',NULL,'5906821',2), + (74,23,1,0,0,NULL,'822-3359',NULL,'8223359',1), + (75,151,1,1,0,NULL,'484-6640',NULL,'4846640',1), + (76,151,1,0,0,NULL,'(460) 842-2951',NULL,'4608422951',1), + (77,20,1,1,0,NULL,'295-6660',NULL,'2956660',2), + (78,20,1,0,0,NULL,'232-6904',NULL,'2326904',2), + (79,30,1,1,0,NULL,'(541) 276-1336',NULL,'5412761336',1), + (80,50,1,1,0,NULL,'(260) 460-6723',NULL,'2604606723',2), + (81,194,1,1,0,NULL,'297-5015',NULL,'2975015',1), + (82,194,1,0,0,NULL,'869-8221',NULL,'8698221',1), + (83,140,1,1,0,NULL,'(570) 504-9344',NULL,'5705049344',1), + (84,140,1,0,0,NULL,'(294) 614-9255',NULL,'2946149255',1), + (85,87,1,1,0,NULL,'(276) 458-3484',NULL,'2764583484',2), + (86,18,1,1,0,NULL,'445-7801',NULL,'4457801',2), + (87,18,1,0,0,NULL,'674-8715',NULL,'6748715',1), + (88,63,1,1,0,NULL,'(876) 484-7201',NULL,'8764847201',2), + (89,63,1,0,0,NULL,'(661) 579-4735',NULL,'6615794735',2), + (90,8,1,1,0,NULL,'335-3207',NULL,'3353207',2), + (91,80,1,1,0,NULL,'(897) 792-7837',NULL,'8977927837',2), + (92,104,1,1,0,NULL,'(494) 804-4620',NULL,'4948044620',2), + (93,104,1,0,0,NULL,'(866) 813-7362',NULL,'8668137362',1), + (94,137,1,1,0,NULL,'462-1248',NULL,'4621248',2), + (95,137,1,0,0,NULL,'803-4098',NULL,'8034098',2), + (96,163,1,1,0,NULL,'(479) 206-8560',NULL,'4792068560',2), + (97,27,1,1,0,NULL,'546-7688',NULL,'5467688',2), + (98,27,1,0,0,NULL,'(742) 619-4578',NULL,'7426194578',2), + (99,35,1,1,0,NULL,'229-1377',NULL,'2291377',1), + (100,35,1,0,0,NULL,'444-2114',NULL,'4442114',1), + (101,3,1,1,0,NULL,'710-7788',NULL,'7107788',1), + (102,3,1,0,0,NULL,'(712) 717-7402',NULL,'7127177402',1), + (103,147,1,1,0,NULL,'221-2010',NULL,'2212010',1), + (104,147,1,0,0,NULL,'378-7886',NULL,'3787886',1), + (105,191,1,1,0,NULL,'(848) 215-4760',NULL,'8482154760',1), + (106,191,1,0,0,NULL,'(451) 690-4689',NULL,'4516904689',1), + (107,16,1,1,0,NULL,'(721) 823-7187',NULL,'7218237187',2), + (108,81,1,1,0,NULL,'434-9644',NULL,'4349644',2), + (109,81,1,0,0,NULL,'(400) 235-8825',NULL,'4002358825',2), + (110,127,1,1,0,NULL,'(237) 287-9540',NULL,'2372879540',1), + (111,127,1,0,0,NULL,'(877) 890-6177',NULL,'8778906177',1), + (112,95,1,1,0,NULL,'(245) 812-5457',NULL,'2458125457',2), + (113,72,1,1,0,NULL,'434-3213',NULL,'4343213',1), + (114,125,1,1,0,NULL,'(521) 657-1085',NULL,'5216571085',1), + (115,125,1,0,0,NULL,'220-9619',NULL,'2209619',1), + (116,173,1,1,0,NULL,'778-3377',NULL,'7783377',1), + (117,173,1,0,0,NULL,'402-8034',NULL,'4028034',1), + (118,139,1,1,0,NULL,'239-6190',NULL,'2396190',2), + (119,139,1,0,0,NULL,'210-8531',NULL,'2108531',2), + (120,77,1,1,0,NULL,'(892) 444-7958',NULL,'8924447958',2), + (121,31,1,1,0,NULL,'(528) 665-5024',NULL,'5286655024',1), + (122,31,1,0,0,NULL,'(213) 448-5903',NULL,'2134485903',1), + (123,116,1,1,0,NULL,'324-5380',NULL,'3245380',2), + (124,116,1,0,0,NULL,'(569) 828-7641',NULL,'5698287641',1), + (125,29,1,1,0,NULL,'307-6855',NULL,'3076855',1), + (126,29,1,0,0,NULL,'(748) 447-7864',NULL,'7484477864',1), + (127,60,1,1,0,NULL,'(533) 276-2337',NULL,'5332762337',1), + (128,60,1,0,0,NULL,'693-7759',NULL,'6937759',2), + (129,170,1,1,0,NULL,'628-1484',NULL,'6281484',2), + (130,170,1,0,0,NULL,'(503) 245-5623',NULL,'5032455623',2), + (131,7,1,1,0,NULL,'(684) 261-2691',NULL,'6842612691',1), + (132,7,1,0,0,NULL,'(671) 716-3868',NULL,'6717163868',1), + (133,65,1,1,0,NULL,'248-6201',NULL,'2486201',1), + (134,94,1,1,0,NULL,'262-5737',NULL,'2625737',2), + (135,195,1,1,0,NULL,'589-1822',NULL,'5891822',2), + (136,195,1,0,0,NULL,'344-7467',NULL,'3447467',2), + (137,45,1,1,0,NULL,'(732) 256-6124',NULL,'7322566124',2), + (138,176,1,1,0,NULL,'(571) 304-4319',NULL,'5713044319',1), + (139,176,1,0,0,NULL,'(826) 209-3476',NULL,'8262093476',2), + (140,36,1,1,0,NULL,'234-5012',NULL,'2345012',1), + (141,36,1,0,0,NULL,'(525) 650-9890',NULL,'5256509890',1), + (142,133,1,1,0,NULL,'(368) 362-9079',NULL,'3683629079',1), + (143,133,1,0,0,NULL,'(207) 546-6030',NULL,'2075466030',2), + (144,19,1,1,0,NULL,'(496) 763-9847',NULL,'4967639847',1), + (145,97,1,1,0,NULL,'(643) 444-9060',NULL,'6434449060',2), + (146,97,1,0,0,NULL,'896-1424',NULL,'8961424',1), + (147,46,1,1,0,NULL,'(300) 237-3631',NULL,'3002373631',2), + (148,46,1,0,0,NULL,'476-6631',NULL,'4766631',1), + (149,93,1,1,0,NULL,'311-6393',NULL,'3116393',2), + (150,76,1,1,0,NULL,'254-5604',NULL,'2545604',2), + (151,187,1,1,0,NULL,'(796) 242-6495',NULL,'7962426495',2), + (152,74,1,1,0,NULL,'(443) 855-6494',NULL,'4438556494',2), + (153,74,1,0,0,NULL,'243-8653',NULL,'2438653',2), + (154,185,1,1,0,NULL,'508-6226',NULL,'5086226',1), + (155,119,1,1,0,NULL,'893-1349',NULL,'8931349',1), + (156,119,1,0,0,NULL,'(554) 844-9642',NULL,'5548449642',1), + (157,2,1,1,0,NULL,'741-2314',NULL,'7412314',2), + (158,57,1,1,0,NULL,'(374) 203-8158',NULL,'3742038158',2), + (159,110,1,1,0,NULL,'(355) 658-8825',NULL,'3556588825',1), + (160,89,1,1,0,NULL,'869-3052',NULL,'8693052',2), + (161,54,1,1,0,NULL,'502-2841',NULL,'5022841',1), + (162,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), + (163,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), + (164,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -7316,224 +7283,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,112,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (2,154,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (3,112,79,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (4,154,79,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (5,154,112,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (6,79,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (7,112,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (8,154,39,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (9,67,39,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (10,79,67,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (11,43,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (12,201,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (13,43,41,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (14,201,41,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (15,201,43,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (16,41,158,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (17,43,158,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (18,201,158,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (19,194,158,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (20,41,194,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (21,80,171,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (22,172,171,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (23,80,178,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (24,172,178,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (25,172,80,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (26,178,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (27,80,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (28,172,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (29,171,167,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (30,178,171,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (31,165,152,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (32,14,152,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (33,165,116,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (34,14,116,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (35,14,165,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (36,116,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (37,165,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (38,14,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (39,152,10,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (40,116,152,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (41,21,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (42,195,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (43,21,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (44,195,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (45,195,21,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (46,58,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (47,21,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (48,195,177,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (49,133,177,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (50,58,133,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (51,90,187,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (52,113,187,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (53,90,192,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (54,113,192,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (55,113,90,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (56,192,129,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (57,90,129,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (58,113,129,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (59,187,129,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (60,192,187,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (61,114,147,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (62,155,147,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (63,114,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (64,155,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (65,155,114,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (66,118,174,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (67,114,174,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (68,155,174,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (69,147,174,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (70,118,147,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (71,68,161,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (72,45,161,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (73,68,125,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (74,45,125,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (75,45,68,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (76,125,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (77,68,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (78,45,65,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (79,161,65,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (80,125,161,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (81,64,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (82,199,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (83,64,159,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (84,199,159,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (85,199,64,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (86,159,179,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (87,64,179,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (88,199,179,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (89,69,179,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (90,159,69,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (91,77,20,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (92,191,20,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (93,77,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (94,191,181,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (95,191,77,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (96,181,50,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (97,77,50,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (98,191,50,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (99,20,50,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (100,181,20,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (101,180,156,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (102,11,156,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (103,180,26,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (104,11,26,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (105,11,180,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (106,26,103,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (107,180,103,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (108,11,103,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (109,156,103,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (110,26,156,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (111,3,99,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (112,73,99,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (113,3,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (114,73,91,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (115,73,3,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (116,91,198,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (117,3,198,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (118,73,198,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (119,99,198,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (120,91,99,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (121,189,71,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (122,62,71,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (123,189,139,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (124,62,139,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (125,62,189,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (126,139,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (127,189,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (128,62,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (129,71,52,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (130,139,71,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (131,92,87,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (132,70,87,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (133,92,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (134,70,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (135,70,92,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (136,40,188,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (137,92,188,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (138,70,188,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (139,87,188,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (140,40,87,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (141,157,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (142,75,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (143,157,57,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (144,75,57,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (145,75,157,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (146,57,144,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (147,157,144,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (148,75,144,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (149,32,144,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (150,57,32,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (151,122,104,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (152,196,104,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (153,122,51,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (154,196,51,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (155,196,122,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (156,51,182,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (157,122,182,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (158,196,182,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (159,104,182,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (160,51,104,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (161,166,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (162,89,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (163,166,44,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (164,89,44,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (165,89,166,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (166,44,127,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (167,166,127,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (168,89,127,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (169,163,127,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (170,44,163,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (171,130,97,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (172,183,97,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (173,130,107,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (174,183,107,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (175,183,130,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (176,107,197,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (177,130,197,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (178,183,197,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (179,97,197,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (180,107,97,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (181,85,55,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (182,56,55,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (183,85,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (184,56,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (185,56,85,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (186,18,19,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (187,85,19,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (188,56,19,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (189,55,19,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (190,18,55,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (191,193,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (192,168,28,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (193,193,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (194,168,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (195,168,193,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (196,22,38,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (197,193,38,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (198,168,38,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (199,28,38,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (200,22,28,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (201,183,2,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (202,168,4,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (203,48,7,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (204,137,8,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (205,175,36,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (206,110,37,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (207,145,49,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (208,83,66,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (209,141,76,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (210,100,94,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (211,40,98,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (212,138,101,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (213,154,115,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (214,181,119,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (215,126,121,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (216,185,124,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (217,96,140,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'), - (218,104,186,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:14:00','2023-09-06 22:14:00'); + (1,13,190,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (2,53,190,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (3,13,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (4,53,85,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (5,53,13,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (6,85,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (7,13,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (8,53,10,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (9,190,10,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (10,85,190,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (11,154,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (12,23,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (13,154,106,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (14,23,106,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (15,23,154,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (16,106,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (17,154,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (18,23,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (19,58,156,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (20,106,58,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (21,30,151,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (22,15,151,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (23,30,20,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (24,15,20,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (25,15,30,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (26,20,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (27,30,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (28,15,131,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (29,151,131,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (30,20,151,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (31,140,50,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (32,87,50,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (33,140,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (34,87,194,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (35,87,140,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (36,194,118,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (37,140,118,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (38,87,118,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (39,50,118,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (40,194,50,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (41,8,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (42,189,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (43,8,63,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (44,189,63,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (45,189,8,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (46,63,5,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (47,8,5,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (48,189,5,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (49,18,5,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (50,63,18,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (51,137,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (52,126,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (53,137,104,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (54,126,104,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (55,126,137,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (56,104,113,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (57,137,113,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (58,126,113,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (59,80,113,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (60,104,80,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (61,35,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (62,3,163,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (63,35,27,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (64,3,27,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (65,3,35,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (66,27,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (67,35,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (68,3,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (69,163,149,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (70,27,163,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (71,191,147,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (72,122,147,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (73,191,164,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (74,122,164,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (75,122,191,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (76,164,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (77,191,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (78,122,134,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (79,147,134,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (80,164,147,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (81,150,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (82,127,16,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (83,150,81,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (84,127,81,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (85,127,150,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (86,81,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (87,150,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (88,127,92,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (89,16,92,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (90,81,16,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (91,125,95,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (92,17,95,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (93,125,72,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (94,17,72,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (95,17,125,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (96,72,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (97,125,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (98,17,14,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (99,95,14,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (100,72,95,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (101,88,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (102,77,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (103,88,139,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (104,77,139,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (105,77,88,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (106,139,201,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (107,88,201,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (108,77,201,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (109,173,201,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (110,139,173,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (111,116,31,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (112,29,31,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (113,116,99,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (114,29,99,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (115,29,116,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (116,99,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (117,116,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (118,29,161,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (119,31,161,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (120,99,31,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (121,170,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (122,38,86,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (123,170,60,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (124,38,60,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (125,38,170,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (126,60,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (127,170,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (128,38,68,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (129,86,68,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (130,60,86,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (131,94,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (132,195,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (133,94,65,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (134,195,65,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (135,195,94,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (136,65,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (137,94,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (138,195,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (139,7,52,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (140,65,7,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (141,176,45,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (142,36,45,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (143,176,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (144,36,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (145,36,176,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (146,42,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (147,176,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (148,36,6,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (149,45,6,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (150,42,45,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (151,19,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (152,97,133,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (153,19,25,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (154,97,25,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (155,97,19,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (156,25,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (157,19,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (158,97,111,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (159,133,111,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (160,25,133,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (161,76,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (162,187,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (163,76,93,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (164,187,93,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (165,187,76,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (166,93,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (167,76,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (168,187,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (169,46,138,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (170,93,46,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (171,185,74,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (172,197,74,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (173,185,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (174,197,179,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (175,197,185,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (176,179,168,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (177,185,168,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (178,197,168,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (179,74,168,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (180,179,74,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (181,2,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (182,57,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (183,2,119,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (184,57,119,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (185,57,2,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (186,119,142,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (187,2,142,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (188,57,142,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (189,184,142,7,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (190,119,184,2,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (191,89,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (192,54,110,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (193,89,9,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (194,54,9,1,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (195,54,89,4,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (196,9,12,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:17','2023-09-06 22:52:17'), + (197,89,12,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (198,54,12,8,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (199,110,12,7,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (200,9,110,2,NULL,NULL,0,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (201,145,43,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (202,27,48,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (203,76,51,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (204,165,67,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (205,166,73,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (206,154,91,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (207,39,101,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (208,53,105,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (209,3,128,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (210,96,129,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (211,60,135,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (212,26,152,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (213,82,153,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (214,172,157,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (215,183,169,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (216,50,177,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (217,121,188,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'), + (218,28,193,5,NULL,NULL,1,NULL,0,0,NULL,'2023-09-06 22:52:18','2023-09-06 22:52:18'); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; @@ -7544,442 +7511,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',112,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (2,1,1,'b_a',67,'Parent of',112,'Child of',1,NULL,NULL,NULL), - (3,2,1,'a_b',154,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (4,2,1,'b_a',67,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (5,3,1,'a_b',112,'Child of',79,'Parent of',1,NULL,NULL,NULL), - (6,3,1,'b_a',79,'Parent of',112,'Child of',1,NULL,NULL,NULL), - (7,4,1,'a_b',154,'Child of',79,'Parent of',1,NULL,NULL,NULL), - (8,4,1,'b_a',79,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (9,5,4,'a_b',154,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL), - (10,5,4,'b_a',112,'Sibling of',154,'Sibling of',1,NULL,NULL,NULL), - (11,6,8,'a_b',79,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL), - (12,6,8,'b_a',39,'Household Member is',79,'Household Member of',1,NULL,NULL,NULL), - (13,7,8,'a_b',112,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL), - (14,7,8,'b_a',39,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL), - (15,8,8,'a_b',154,'Household Member of',39,'Household Member is',1,NULL,NULL,NULL), - (16,8,8,'b_a',39,'Household Member is',154,'Household Member of',1,NULL,NULL,NULL), - (17,9,7,'a_b',67,'Head of Household for',39,'Head of Household is',1,NULL,NULL,NULL), - (18,9,7,'b_a',39,'Head of Household is',67,'Head of Household for',1,NULL,NULL,NULL), - (19,10,2,'a_b',79,'Spouse of',67,'Spouse of',1,NULL,NULL,NULL), - (20,10,2,'b_a',67,'Spouse of',79,'Spouse of',1,NULL,NULL,NULL), - (21,11,1,'a_b',43,'Child of',194,'Parent of',1,NULL,NULL,NULL), - (22,11,1,'b_a',194,'Parent of',43,'Child of',1,NULL,NULL,NULL), - (23,12,1,'a_b',201,'Child of',194,'Parent of',1,NULL,NULL,NULL), - (24,12,1,'b_a',194,'Parent of',201,'Child of',1,NULL,NULL,NULL), - (25,13,1,'a_b',43,'Child of',41,'Parent of',1,NULL,NULL,NULL), - (26,13,1,'b_a',41,'Parent of',43,'Child of',1,NULL,NULL,NULL), - (27,14,1,'a_b',201,'Child of',41,'Parent of',1,NULL,NULL,NULL), - (28,14,1,'b_a',41,'Parent of',201,'Child of',1,NULL,NULL,NULL), - (29,15,4,'a_b',201,'Sibling of',43,'Sibling of',1,NULL,NULL,NULL), - (30,15,4,'b_a',43,'Sibling of',201,'Sibling of',1,NULL,NULL,NULL), - (31,16,8,'a_b',41,'Household Member of',158,'Household Member is',1,NULL,NULL,NULL), - (32,16,8,'b_a',158,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), - (33,17,8,'a_b',43,'Household Member of',158,'Household Member is',1,NULL,NULL,NULL), - (34,17,8,'b_a',158,'Household Member is',43,'Household Member of',1,NULL,NULL,NULL), - (35,18,8,'a_b',201,'Household Member of',158,'Household Member is',1,NULL,NULL,NULL), - (36,18,8,'b_a',158,'Household Member is',201,'Household Member of',1,NULL,NULL,NULL), - (37,19,7,'a_b',194,'Head of Household for',158,'Head of Household is',0,NULL,NULL,NULL), - (38,19,7,'b_a',158,'Head of Household is',194,'Head of Household for',0,NULL,NULL,NULL), - (39,20,2,'a_b',41,'Spouse of',194,'Spouse of',0,NULL,NULL,NULL), - (40,20,2,'b_a',194,'Spouse of',41,'Spouse of',0,NULL,NULL,NULL), - (41,21,1,'a_b',80,'Child of',171,'Parent of',1,NULL,NULL,NULL), - (42,21,1,'b_a',171,'Parent of',80,'Child of',1,NULL,NULL,NULL), - (43,22,1,'a_b',172,'Child of',171,'Parent of',1,NULL,NULL,NULL), - (44,22,1,'b_a',171,'Parent of',172,'Child of',1,NULL,NULL,NULL), - (45,23,1,'a_b',80,'Child of',178,'Parent of',1,NULL,NULL,NULL), - (46,23,1,'b_a',178,'Parent of',80,'Child of',1,NULL,NULL,NULL), - (47,24,1,'a_b',172,'Child of',178,'Parent of',1,NULL,NULL,NULL), - (48,24,1,'b_a',178,'Parent of',172,'Child of',1,NULL,NULL,NULL), - (49,25,4,'a_b',172,'Sibling of',80,'Sibling of',1,NULL,NULL,NULL), - (50,25,4,'b_a',80,'Sibling of',172,'Sibling of',1,NULL,NULL,NULL), - (51,26,8,'a_b',178,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL), - (52,26,8,'b_a',167,'Household Member is',178,'Household Member of',1,NULL,NULL,NULL), - (53,27,8,'a_b',80,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL), - (54,27,8,'b_a',167,'Household Member is',80,'Household Member of',1,NULL,NULL,NULL), - (55,28,8,'a_b',172,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL), - (56,28,8,'b_a',167,'Household Member is',172,'Household Member of',1,NULL,NULL,NULL), - (57,29,7,'a_b',171,'Head of Household for',167,'Head of Household is',1,NULL,NULL,NULL), - (58,29,7,'b_a',167,'Head of Household is',171,'Head of Household for',1,NULL,NULL,NULL), - (59,30,2,'a_b',178,'Spouse of',171,'Spouse of',1,NULL,NULL,NULL), - (60,30,2,'b_a',171,'Spouse of',178,'Spouse of',1,NULL,NULL,NULL), - (61,31,1,'a_b',165,'Child of',152,'Parent of',1,NULL,NULL,NULL), - (62,31,1,'b_a',152,'Parent of',165,'Child of',1,NULL,NULL,NULL), - (63,32,1,'a_b',14,'Child of',152,'Parent of',1,NULL,NULL,NULL), - (64,32,1,'b_a',152,'Parent of',14,'Child of',1,NULL,NULL,NULL), - (65,33,1,'a_b',165,'Child of',116,'Parent of',1,NULL,NULL,NULL), - (66,33,1,'b_a',116,'Parent of',165,'Child of',1,NULL,NULL,NULL), - (67,34,1,'a_b',14,'Child of',116,'Parent of',1,NULL,NULL,NULL), - (68,34,1,'b_a',116,'Parent of',14,'Child of',1,NULL,NULL,NULL), - (69,35,4,'a_b',14,'Sibling of',165,'Sibling of',1,NULL,NULL,NULL), - (70,35,4,'b_a',165,'Sibling of',14,'Sibling of',1,NULL,NULL,NULL), - (71,36,8,'a_b',116,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), - (72,36,8,'b_a',10,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL), - (73,37,8,'a_b',165,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), - (74,37,8,'b_a',10,'Household Member is',165,'Household Member of',1,NULL,NULL,NULL), - (75,38,8,'a_b',14,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), - (76,38,8,'b_a',10,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL), - (77,39,7,'a_b',152,'Head of Household for',10,'Head of Household is',1,NULL,NULL,NULL), - (78,39,7,'b_a',10,'Head of Household is',152,'Head of Household for',1,NULL,NULL,NULL), - (79,40,2,'a_b',116,'Spouse of',152,'Spouse of',1,NULL,NULL,NULL), - (80,40,2,'b_a',152,'Spouse of',116,'Spouse of',1,NULL,NULL,NULL), - (81,41,1,'a_b',21,'Child of',133,'Parent of',1,NULL,NULL,NULL), - (82,41,1,'b_a',133,'Parent of',21,'Child of',1,NULL,NULL,NULL), - (83,42,1,'a_b',195,'Child of',133,'Parent of',1,NULL,NULL,NULL), - (84,42,1,'b_a',133,'Parent of',195,'Child of',1,NULL,NULL,NULL), - (85,43,1,'a_b',21,'Child of',58,'Parent of',1,NULL,NULL,NULL), - (86,43,1,'b_a',58,'Parent of',21,'Child of',1,NULL,NULL,NULL), - (87,44,1,'a_b',195,'Child of',58,'Parent of',1,NULL,NULL,NULL), - (88,44,1,'b_a',58,'Parent of',195,'Child of',1,NULL,NULL,NULL), - (89,45,4,'a_b',195,'Sibling of',21,'Sibling of',1,NULL,NULL,NULL), - (90,45,4,'b_a',21,'Sibling of',195,'Sibling of',1,NULL,NULL,NULL), - (91,46,8,'a_b',58,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), - (92,46,8,'b_a',177,'Household Member is',58,'Household Member of',1,NULL,NULL,NULL), - (93,47,8,'a_b',21,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), - (94,47,8,'b_a',177,'Household Member is',21,'Household Member of',1,NULL,NULL,NULL), - (95,48,8,'a_b',195,'Household Member of',177,'Household Member is',1,NULL,NULL,NULL), - (96,48,8,'b_a',177,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL), - (97,49,7,'a_b',133,'Head of Household for',177,'Head of Household is',0,NULL,NULL,NULL), - (98,49,7,'b_a',177,'Head of Household is',133,'Head of Household for',0,NULL,NULL,NULL), - (99,50,2,'a_b',58,'Spouse of',133,'Spouse of',0,NULL,NULL,NULL), - (100,50,2,'b_a',133,'Spouse of',58,'Spouse of',0,NULL,NULL,NULL), - (101,51,1,'a_b',90,'Child of',187,'Parent of',1,NULL,NULL,NULL), - (102,51,1,'b_a',187,'Parent of',90,'Child of',1,NULL,NULL,NULL), - (103,52,1,'a_b',113,'Child of',187,'Parent of',1,NULL,NULL,NULL), - (104,52,1,'b_a',187,'Parent of',113,'Child of',1,NULL,NULL,NULL), - (105,53,1,'a_b',90,'Child of',192,'Parent of',1,NULL,NULL,NULL), - (106,53,1,'b_a',192,'Parent of',90,'Child of',1,NULL,NULL,NULL), - (107,54,1,'a_b',113,'Child of',192,'Parent of',1,NULL,NULL,NULL), - (108,54,1,'b_a',192,'Parent of',113,'Child of',1,NULL,NULL,NULL), - (109,55,4,'a_b',113,'Sibling of',90,'Sibling of',1,NULL,NULL,NULL), - (110,55,4,'b_a',90,'Sibling of',113,'Sibling of',1,NULL,NULL,NULL), - (111,56,8,'a_b',192,'Household Member of',129,'Household Member is',1,NULL,NULL,NULL), - (112,56,8,'b_a',129,'Household Member is',192,'Household Member of',1,NULL,NULL,NULL), - (113,57,8,'a_b',90,'Household Member of',129,'Household Member is',1,NULL,NULL,NULL), - (114,57,8,'b_a',129,'Household Member is',90,'Household Member of',1,NULL,NULL,NULL), - (115,58,8,'a_b',113,'Household Member of',129,'Household Member is',1,NULL,NULL,NULL), - (116,58,8,'b_a',129,'Household Member is',113,'Household Member of',1,NULL,NULL,NULL), - (117,59,7,'a_b',187,'Head of Household for',129,'Head of Household is',1,NULL,NULL,NULL), - (118,59,7,'b_a',129,'Head of Household is',187,'Head of Household for',1,NULL,NULL,NULL), - (119,60,2,'a_b',192,'Spouse of',187,'Spouse of',1,NULL,NULL,NULL), - (120,60,2,'b_a',187,'Spouse of',192,'Spouse of',1,NULL,NULL,NULL), - (121,61,1,'a_b',114,'Child of',147,'Parent of',1,NULL,NULL,NULL), - (122,61,1,'b_a',147,'Parent of',114,'Child of',1,NULL,NULL,NULL), - (123,62,1,'a_b',155,'Child of',147,'Parent of',1,NULL,NULL,NULL), - (124,62,1,'b_a',147,'Parent of',155,'Child of',1,NULL,NULL,NULL), - (125,63,1,'a_b',114,'Child of',118,'Parent of',1,NULL,NULL,NULL), - (126,63,1,'b_a',118,'Parent of',114,'Child of',1,NULL,NULL,NULL), - (127,64,1,'a_b',155,'Child of',118,'Parent of',1,NULL,NULL,NULL), - (128,64,1,'b_a',118,'Parent of',155,'Child of',1,NULL,NULL,NULL), - (129,65,4,'a_b',155,'Sibling of',114,'Sibling of',1,NULL,NULL,NULL), - (130,65,4,'b_a',114,'Sibling of',155,'Sibling of',1,NULL,NULL,NULL), - (131,66,8,'a_b',118,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL), - (132,66,8,'b_a',174,'Household Member is',118,'Household Member of',1,NULL,NULL,NULL), - (133,67,8,'a_b',114,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL), - (134,67,8,'b_a',174,'Household Member is',114,'Household Member of',1,NULL,NULL,NULL), - (135,68,8,'a_b',155,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL), - (136,68,8,'b_a',174,'Household Member is',155,'Household Member of',1,NULL,NULL,NULL), - (137,69,7,'a_b',147,'Head of Household for',174,'Head of Household is',1,NULL,NULL,NULL), - (138,69,7,'b_a',174,'Head of Household is',147,'Head of Household for',1,NULL,NULL,NULL), - (139,70,2,'a_b',118,'Spouse of',147,'Spouse of',1,NULL,NULL,NULL), - (140,70,2,'b_a',147,'Spouse of',118,'Spouse of',1,NULL,NULL,NULL), - (141,71,1,'a_b',68,'Child of',161,'Parent of',1,NULL,NULL,NULL), - (142,71,1,'b_a',161,'Parent of',68,'Child of',1,NULL,NULL,NULL), - (143,72,1,'a_b',45,'Child of',161,'Parent of',1,NULL,NULL,NULL), - (144,72,1,'b_a',161,'Parent of',45,'Child of',1,NULL,NULL,NULL), - (145,73,1,'a_b',68,'Child of',125,'Parent of',1,NULL,NULL,NULL), - (146,73,1,'b_a',125,'Parent of',68,'Child of',1,NULL,NULL,NULL), - (147,74,1,'a_b',45,'Child of',125,'Parent of',1,NULL,NULL,NULL), - (148,74,1,'b_a',125,'Parent of',45,'Child of',1,NULL,NULL,NULL), - (149,75,4,'a_b',45,'Sibling of',68,'Sibling of',1,NULL,NULL,NULL), - (150,75,4,'b_a',68,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL), - (151,76,8,'a_b',125,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), - (152,76,8,'b_a',65,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL), - (153,77,8,'a_b',68,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), - (154,77,8,'b_a',65,'Household Member is',68,'Household Member of',1,NULL,NULL,NULL), - (155,78,8,'a_b',45,'Household Member of',65,'Household Member is',1,NULL,NULL,NULL), - (156,78,8,'b_a',65,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL), - (157,79,7,'a_b',161,'Head of Household for',65,'Head of Household is',1,NULL,NULL,NULL), - (158,79,7,'b_a',65,'Head of Household is',161,'Head of Household for',1,NULL,NULL,NULL), - (159,80,2,'a_b',125,'Spouse of',161,'Spouse of',1,NULL,NULL,NULL), - (160,80,2,'b_a',161,'Spouse of',125,'Spouse of',1,NULL,NULL,NULL), - (161,81,1,'a_b',64,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (162,81,1,'b_a',69,'Parent of',64,'Child of',1,NULL,NULL,NULL), - (163,82,1,'a_b',199,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (164,82,1,'b_a',69,'Parent of',199,'Child of',1,NULL,NULL,NULL), - (165,83,1,'a_b',64,'Child of',159,'Parent of',1,NULL,NULL,NULL), - (166,83,1,'b_a',159,'Parent of',64,'Child of',1,NULL,NULL,NULL), - (167,84,1,'a_b',199,'Child of',159,'Parent of',1,NULL,NULL,NULL), - (168,84,1,'b_a',159,'Parent of',199,'Child of',1,NULL,NULL,NULL), - (169,85,4,'a_b',199,'Sibling of',64,'Sibling of',1,NULL,NULL,NULL), - (170,85,4,'b_a',64,'Sibling of',199,'Sibling of',1,NULL,NULL,NULL), - (171,86,8,'a_b',159,'Household Member of',179,'Household Member is',1,NULL,NULL,NULL), - (172,86,8,'b_a',179,'Household Member is',159,'Household Member of',1,NULL,NULL,NULL), - (173,87,8,'a_b',64,'Household Member of',179,'Household Member is',1,NULL,NULL,NULL), - (174,87,8,'b_a',179,'Household Member is',64,'Household Member of',1,NULL,NULL,NULL), - (175,88,8,'a_b',199,'Household Member of',179,'Household Member is',1,NULL,NULL,NULL), - (176,88,8,'b_a',179,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL), - (177,89,7,'a_b',69,'Head of Household for',179,'Head of Household is',1,NULL,NULL,NULL), - (178,89,7,'b_a',179,'Head of Household is',69,'Head of Household for',1,NULL,NULL,NULL), - (179,90,2,'a_b',159,'Spouse of',69,'Spouse of',1,NULL,NULL,NULL), - (180,90,2,'b_a',69,'Spouse of',159,'Spouse of',1,NULL,NULL,NULL), - (181,91,1,'a_b',77,'Child of',20,'Parent of',1,NULL,NULL,NULL), - (182,91,1,'b_a',20,'Parent of',77,'Child of',1,NULL,NULL,NULL), - (183,92,1,'a_b',191,'Child of',20,'Parent of',1,NULL,NULL,NULL), - (184,92,1,'b_a',20,'Parent of',191,'Child of',1,NULL,NULL,NULL), - (185,93,1,'a_b',77,'Child of',181,'Parent of',1,NULL,NULL,NULL), - (186,93,1,'b_a',181,'Parent of',77,'Child of',1,NULL,NULL,NULL), - (187,94,1,'a_b',191,'Child of',181,'Parent of',1,NULL,NULL,NULL), - (188,94,1,'b_a',181,'Parent of',191,'Child of',1,NULL,NULL,NULL), - (189,95,4,'a_b',191,'Sibling of',77,'Sibling of',1,NULL,NULL,NULL), - (190,95,4,'b_a',77,'Sibling of',191,'Sibling of',1,NULL,NULL,NULL), - (191,96,8,'a_b',181,'Household Member of',50,'Household Member is',1,NULL,NULL,NULL), - (192,96,8,'b_a',50,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL), - (193,97,8,'a_b',77,'Household Member of',50,'Household Member is',1,NULL,NULL,NULL), - (194,97,8,'b_a',50,'Household Member is',77,'Household Member of',1,NULL,NULL,NULL), - (195,98,8,'a_b',191,'Household Member of',50,'Household Member is',1,NULL,NULL,NULL), - (196,98,8,'b_a',50,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL), - (197,99,7,'a_b',20,'Head of Household for',50,'Head of Household is',0,NULL,NULL,NULL), - (198,99,7,'b_a',50,'Head of Household is',20,'Head of Household for',0,NULL,NULL,NULL), - (199,100,2,'a_b',181,'Spouse of',20,'Spouse of',0,NULL,NULL,NULL), - (200,100,2,'b_a',20,'Spouse of',181,'Spouse of',0,NULL,NULL,NULL), - (201,101,1,'a_b',180,'Child of',156,'Parent of',1,NULL,NULL,NULL), - (202,101,1,'b_a',156,'Parent of',180,'Child of',1,NULL,NULL,NULL), - (203,102,1,'a_b',11,'Child of',156,'Parent of',1,NULL,NULL,NULL), - (204,102,1,'b_a',156,'Parent of',11,'Child of',1,NULL,NULL,NULL), - (205,103,1,'a_b',180,'Child of',26,'Parent of',1,NULL,NULL,NULL), - (206,103,1,'b_a',26,'Parent of',180,'Child of',1,NULL,NULL,NULL), - (207,104,1,'a_b',11,'Child of',26,'Parent of',1,NULL,NULL,NULL), - (208,104,1,'b_a',26,'Parent of',11,'Child of',1,NULL,NULL,NULL), - (209,105,4,'a_b',11,'Sibling of',180,'Sibling of',1,NULL,NULL,NULL), - (210,105,4,'b_a',180,'Sibling of',11,'Sibling of',1,NULL,NULL,NULL), - (211,106,8,'a_b',26,'Household Member of',103,'Household Member is',1,NULL,NULL,NULL), - (212,106,8,'b_a',103,'Household Member is',26,'Household Member of',1,NULL,NULL,NULL), - (213,107,8,'a_b',180,'Household Member of',103,'Household Member is',1,NULL,NULL,NULL), - (214,107,8,'b_a',103,'Household Member is',180,'Household Member of',1,NULL,NULL,NULL), - (215,108,8,'a_b',11,'Household Member of',103,'Household Member is',1,NULL,NULL,NULL), - (216,108,8,'b_a',103,'Household Member is',11,'Household Member of',1,NULL,NULL,NULL), - (217,109,7,'a_b',156,'Head of Household for',103,'Head of Household is',0,NULL,NULL,NULL), - (218,109,7,'b_a',103,'Head of Household is',156,'Head of Household for',0,NULL,NULL,NULL), - (219,110,2,'a_b',26,'Spouse of',156,'Spouse of',0,NULL,NULL,NULL), - (220,110,2,'b_a',156,'Spouse of',26,'Spouse of',0,NULL,NULL,NULL), - (221,111,1,'a_b',3,'Child of',99,'Parent of',1,NULL,NULL,NULL), - (222,111,1,'b_a',99,'Parent of',3,'Child of',1,NULL,NULL,NULL), - (223,112,1,'a_b',73,'Child of',99,'Parent of',1,NULL,NULL,NULL), - (224,112,1,'b_a',99,'Parent of',73,'Child of',1,NULL,NULL,NULL), - (225,113,1,'a_b',3,'Child of',91,'Parent of',1,NULL,NULL,NULL), - (226,113,1,'b_a',91,'Parent of',3,'Child of',1,NULL,NULL,NULL), - (227,114,1,'a_b',73,'Child of',91,'Parent of',1,NULL,NULL,NULL), - (228,114,1,'b_a',91,'Parent of',73,'Child of',1,NULL,NULL,NULL), - (229,115,4,'a_b',73,'Sibling of',3,'Sibling of',1,NULL,NULL,NULL), - (230,115,4,'b_a',3,'Sibling of',73,'Sibling of',1,NULL,NULL,NULL), - (231,116,8,'a_b',91,'Household Member of',198,'Household Member is',1,NULL,NULL,NULL), - (232,116,8,'b_a',198,'Household Member is',91,'Household Member of',1,NULL,NULL,NULL), - (233,117,8,'a_b',3,'Household Member of',198,'Household Member is',1,NULL,NULL,NULL), - (234,117,8,'b_a',198,'Household Member is',3,'Household Member of',1,NULL,NULL,NULL), - (235,118,8,'a_b',73,'Household Member of',198,'Household Member is',1,NULL,NULL,NULL), - (236,118,8,'b_a',198,'Household Member is',73,'Household Member of',1,NULL,NULL,NULL), - (237,119,7,'a_b',99,'Head of Household for',198,'Head of Household is',0,NULL,NULL,NULL), - (238,119,7,'b_a',198,'Head of Household is',99,'Head of Household for',0,NULL,NULL,NULL), - (239,120,2,'a_b',91,'Spouse of',99,'Spouse of',0,NULL,NULL,NULL), - (240,120,2,'b_a',99,'Spouse of',91,'Spouse of',0,NULL,NULL,NULL), - (241,121,1,'a_b',189,'Child of',71,'Parent of',1,NULL,NULL,NULL), - (242,121,1,'b_a',71,'Parent of',189,'Child of',1,NULL,NULL,NULL), - (243,122,1,'a_b',62,'Child of',71,'Parent of',1,NULL,NULL,NULL), - (244,122,1,'b_a',71,'Parent of',62,'Child of',1,NULL,NULL,NULL), - (245,123,1,'a_b',189,'Child of',139,'Parent of',1,NULL,NULL,NULL), - (246,123,1,'b_a',139,'Parent of',189,'Child of',1,NULL,NULL,NULL), - (247,124,1,'a_b',62,'Child of',139,'Parent of',1,NULL,NULL,NULL), - (248,124,1,'b_a',139,'Parent of',62,'Child of',1,NULL,NULL,NULL), - (249,125,4,'a_b',62,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL), - (250,125,4,'b_a',189,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL), - (251,126,8,'a_b',139,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (252,126,8,'b_a',52,'Household Member is',139,'Household Member of',1,NULL,NULL,NULL), - (253,127,8,'a_b',189,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (254,127,8,'b_a',52,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL), - (255,128,8,'a_b',62,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), - (256,128,8,'b_a',52,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL), - (257,129,7,'a_b',71,'Head of Household for',52,'Head of Household is',1,NULL,NULL,NULL), - (258,129,7,'b_a',52,'Head of Household is',71,'Head of Household for',1,NULL,NULL,NULL), - (259,130,2,'a_b',139,'Spouse of',71,'Spouse of',1,NULL,NULL,NULL), - (260,130,2,'b_a',71,'Spouse of',139,'Spouse of',1,NULL,NULL,NULL), - (261,131,1,'a_b',92,'Child of',87,'Parent of',1,NULL,NULL,NULL), - (262,131,1,'b_a',87,'Parent of',92,'Child of',1,NULL,NULL,NULL), - (263,132,1,'a_b',70,'Child of',87,'Parent of',1,NULL,NULL,NULL), - (264,132,1,'b_a',87,'Parent of',70,'Child of',1,NULL,NULL,NULL), - (265,133,1,'a_b',92,'Child of',40,'Parent of',1,NULL,NULL,NULL), - (266,133,1,'b_a',40,'Parent of',92,'Child of',1,NULL,NULL,NULL), - (267,134,1,'a_b',70,'Child of',40,'Parent of',1,NULL,NULL,NULL), - (268,134,1,'b_a',40,'Parent of',70,'Child of',1,NULL,NULL,NULL), - (269,135,4,'a_b',70,'Sibling of',92,'Sibling of',1,NULL,NULL,NULL), - (270,135,4,'b_a',92,'Sibling of',70,'Sibling of',1,NULL,NULL,NULL), - (271,136,8,'a_b',40,'Household Member of',188,'Household Member is',1,NULL,NULL,NULL), - (272,136,8,'b_a',188,'Household Member is',40,'Household Member of',1,NULL,NULL,NULL), - (273,137,8,'a_b',92,'Household Member of',188,'Household Member is',1,NULL,NULL,NULL), - (274,137,8,'b_a',188,'Household Member is',92,'Household Member of',1,NULL,NULL,NULL), - (275,138,8,'a_b',70,'Household Member of',188,'Household Member is',1,NULL,NULL,NULL), - (276,138,8,'b_a',188,'Household Member is',70,'Household Member of',1,NULL,NULL,NULL), - (277,139,7,'a_b',87,'Head of Household for',188,'Head of Household is',1,NULL,NULL,NULL), - (278,139,7,'b_a',188,'Head of Household is',87,'Head of Household for',1,NULL,NULL,NULL), - (279,140,2,'a_b',40,'Spouse of',87,'Spouse of',1,NULL,NULL,NULL), - (280,140,2,'b_a',87,'Spouse of',40,'Spouse of',1,NULL,NULL,NULL), - (281,141,1,'a_b',157,'Child of',32,'Parent of',1,NULL,NULL,NULL), - (282,141,1,'b_a',32,'Parent of',157,'Child of',1,NULL,NULL,NULL), - (283,142,1,'a_b',75,'Child of',32,'Parent of',1,NULL,NULL,NULL), - (284,142,1,'b_a',32,'Parent of',75,'Child of',1,NULL,NULL,NULL), - (285,143,1,'a_b',157,'Child of',57,'Parent of',1,NULL,NULL,NULL), - (286,143,1,'b_a',57,'Parent of',157,'Child of',1,NULL,NULL,NULL), - (287,144,1,'a_b',75,'Child of',57,'Parent of',1,NULL,NULL,NULL), - (288,144,1,'b_a',57,'Parent of',75,'Child of',1,NULL,NULL,NULL), - (289,145,4,'a_b',75,'Sibling of',157,'Sibling of',1,NULL,NULL,NULL), - (290,145,4,'b_a',157,'Sibling of',75,'Sibling of',1,NULL,NULL,NULL), - (291,146,8,'a_b',57,'Household Member of',144,'Household Member is',1,NULL,NULL,NULL), - (292,146,8,'b_a',144,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL), - (293,147,8,'a_b',157,'Household Member of',144,'Household Member is',1,NULL,NULL,NULL), - (294,147,8,'b_a',144,'Household Member is',157,'Household Member of',1,NULL,NULL,NULL), - (295,148,8,'a_b',75,'Household Member of',144,'Household Member is',1,NULL,NULL,NULL), - (296,148,8,'b_a',144,'Household Member is',75,'Household Member of',1,NULL,NULL,NULL), - (297,149,7,'a_b',32,'Head of Household for',144,'Head of Household is',1,NULL,NULL,NULL), - (298,149,7,'b_a',144,'Head of Household is',32,'Head of Household for',1,NULL,NULL,NULL), - (299,150,2,'a_b',57,'Spouse of',32,'Spouse of',1,NULL,NULL,NULL), - (300,150,2,'b_a',32,'Spouse of',57,'Spouse of',1,NULL,NULL,NULL), - (301,151,1,'a_b',122,'Child of',104,'Parent of',1,NULL,NULL,NULL), - (302,151,1,'b_a',104,'Parent of',122,'Child of',1,NULL,NULL,NULL), - (303,152,1,'a_b',196,'Child of',104,'Parent of',1,NULL,NULL,NULL), - (304,152,1,'b_a',104,'Parent of',196,'Child of',1,NULL,NULL,NULL), - (305,153,1,'a_b',122,'Child of',51,'Parent of',1,NULL,NULL,NULL), - (306,153,1,'b_a',51,'Parent of',122,'Child of',1,NULL,NULL,NULL), - (307,154,1,'a_b',196,'Child of',51,'Parent of',1,NULL,NULL,NULL), - (308,154,1,'b_a',51,'Parent of',196,'Child of',1,NULL,NULL,NULL), - (309,155,4,'a_b',196,'Sibling of',122,'Sibling of',1,NULL,NULL,NULL), - (310,155,4,'b_a',122,'Sibling of',196,'Sibling of',1,NULL,NULL,NULL), - (311,156,8,'a_b',51,'Household Member of',182,'Household Member is',1,NULL,NULL,NULL), - (312,156,8,'b_a',182,'Household Member is',51,'Household Member of',1,NULL,NULL,NULL), - (313,157,8,'a_b',122,'Household Member of',182,'Household Member is',1,NULL,NULL,NULL), - (314,157,8,'b_a',182,'Household Member is',122,'Household Member of',1,NULL,NULL,NULL), - (315,158,8,'a_b',196,'Household Member of',182,'Household Member is',1,NULL,NULL,NULL), - (316,158,8,'b_a',182,'Household Member is',196,'Household Member of',1,NULL,NULL,NULL), - (317,159,7,'a_b',104,'Head of Household for',182,'Head of Household is',1,NULL,NULL,NULL), - (318,159,7,'b_a',182,'Head of Household is',104,'Head of Household for',1,NULL,NULL,NULL), - (319,160,2,'a_b',51,'Spouse of',104,'Spouse of',1,NULL,NULL,NULL), - (320,160,2,'b_a',104,'Spouse of',51,'Spouse of',1,NULL,NULL,NULL), - (321,161,1,'a_b',166,'Child of',163,'Parent of',1,NULL,NULL,NULL), - (322,161,1,'b_a',163,'Parent of',166,'Child of',1,NULL,NULL,NULL), - (323,162,1,'a_b',89,'Child of',163,'Parent of',1,NULL,NULL,NULL), - (324,162,1,'b_a',163,'Parent of',89,'Child of',1,NULL,NULL,NULL), - (325,163,1,'a_b',166,'Child of',44,'Parent of',1,NULL,NULL,NULL), - (326,163,1,'b_a',44,'Parent of',166,'Child of',1,NULL,NULL,NULL), - (327,164,1,'a_b',89,'Child of',44,'Parent of',1,NULL,NULL,NULL), - (328,164,1,'b_a',44,'Parent of',89,'Child of',1,NULL,NULL,NULL), - (329,165,4,'a_b',89,'Sibling of',166,'Sibling of',1,NULL,NULL,NULL), - (330,165,4,'b_a',166,'Sibling of',89,'Sibling of',1,NULL,NULL,NULL), - (331,166,8,'a_b',44,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL), - (332,166,8,'b_a',127,'Household Member is',44,'Household Member of',1,NULL,NULL,NULL), - (333,167,8,'a_b',166,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL), - (334,167,8,'b_a',127,'Household Member is',166,'Household Member of',1,NULL,NULL,NULL), - (335,168,8,'a_b',89,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL), - (336,168,8,'b_a',127,'Household Member is',89,'Household Member of',1,NULL,NULL,NULL), - (337,169,7,'a_b',163,'Head of Household for',127,'Head of Household is',0,NULL,NULL,NULL), - (338,169,7,'b_a',127,'Head of Household is',163,'Head of Household for',0,NULL,NULL,NULL), - (339,170,2,'a_b',44,'Spouse of',163,'Spouse of',0,NULL,NULL,NULL), - (340,170,2,'b_a',163,'Spouse of',44,'Spouse of',0,NULL,NULL,NULL), - (341,171,1,'a_b',130,'Child of',97,'Parent of',1,NULL,NULL,NULL), - (342,171,1,'b_a',97,'Parent of',130,'Child of',1,NULL,NULL,NULL), - (343,172,1,'a_b',183,'Child of',97,'Parent of',1,NULL,NULL,NULL), - (344,172,1,'b_a',97,'Parent of',183,'Child of',1,NULL,NULL,NULL), - (345,173,1,'a_b',130,'Child of',107,'Parent of',1,NULL,NULL,NULL), - (346,173,1,'b_a',107,'Parent of',130,'Child of',1,NULL,NULL,NULL), - (347,174,1,'a_b',183,'Child of',107,'Parent of',1,NULL,NULL,NULL), - (348,174,1,'b_a',107,'Parent of',183,'Child of',1,NULL,NULL,NULL), - (349,175,4,'a_b',183,'Sibling of',130,'Sibling of',1,NULL,NULL,NULL), - (350,175,4,'b_a',130,'Sibling of',183,'Sibling of',1,NULL,NULL,NULL), - (351,176,8,'a_b',107,'Household Member of',197,'Household Member is',1,NULL,NULL,NULL), - (352,176,8,'b_a',197,'Household Member is',107,'Household Member of',1,NULL,NULL,NULL), - (353,177,8,'a_b',130,'Household Member of',197,'Household Member is',1,NULL,NULL,NULL), - (354,177,8,'b_a',197,'Household Member is',130,'Household Member of',1,NULL,NULL,NULL), - (355,178,8,'a_b',183,'Household Member of',197,'Household Member is',1,NULL,NULL,NULL), - (356,178,8,'b_a',197,'Household Member is',183,'Household Member of',1,NULL,NULL,NULL), - (357,179,7,'a_b',97,'Head of Household for',197,'Head of Household is',1,NULL,NULL,NULL), - (358,179,7,'b_a',197,'Head of Household is',97,'Head of Household for',1,NULL,NULL,NULL), - (359,180,2,'a_b',107,'Spouse of',97,'Spouse of',1,NULL,NULL,NULL), - (360,180,2,'b_a',97,'Spouse of',107,'Spouse of',1,NULL,NULL,NULL), - (361,181,1,'a_b',85,'Child of',55,'Parent of',1,NULL,NULL,NULL), - (362,181,1,'b_a',55,'Parent of',85,'Child of',1,NULL,NULL,NULL), - (363,182,1,'a_b',56,'Child of',55,'Parent of',1,NULL,NULL,NULL), - (364,182,1,'b_a',55,'Parent of',56,'Child of',1,NULL,NULL,NULL), - (365,183,1,'a_b',85,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (366,183,1,'b_a',18,'Parent of',85,'Child of',1,NULL,NULL,NULL), - (367,184,1,'a_b',56,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (368,184,1,'b_a',18,'Parent of',56,'Child of',1,NULL,NULL,NULL), - (369,185,4,'a_b',56,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL), - (370,185,4,'b_a',85,'Sibling of',56,'Sibling of',1,NULL,NULL,NULL), - (371,186,8,'a_b',18,'Household Member of',19,'Household Member is',1,NULL,NULL,NULL), - (372,186,8,'b_a',19,'Household Member is',18,'Household Member of',1,NULL,NULL,NULL), - (373,187,8,'a_b',85,'Household Member of',19,'Household Member is',1,NULL,NULL,NULL), - (374,187,8,'b_a',19,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL), - (375,188,8,'a_b',56,'Household Member of',19,'Household Member is',1,NULL,NULL,NULL), - (376,188,8,'b_a',19,'Household Member is',56,'Household Member of',1,NULL,NULL,NULL), - (377,189,7,'a_b',55,'Head of Household for',19,'Head of Household is',1,NULL,NULL,NULL), - (378,189,7,'b_a',19,'Head of Household is',55,'Head of Household for',1,NULL,NULL,NULL), - (379,190,2,'a_b',18,'Spouse of',55,'Spouse of',1,NULL,NULL,NULL), - (380,190,2,'b_a',55,'Spouse of',18,'Spouse of',1,NULL,NULL,NULL), - (381,191,1,'a_b',193,'Child of',28,'Parent of',1,NULL,NULL,NULL), - (382,191,1,'b_a',28,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (383,192,1,'a_b',168,'Child of',28,'Parent of',1,NULL,NULL,NULL), - (384,192,1,'b_a',28,'Parent of',168,'Child of',1,NULL,NULL,NULL), - (385,193,1,'a_b',193,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (386,193,1,'b_a',22,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (387,194,1,'a_b',168,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (388,194,1,'b_a',22,'Parent of',168,'Child of',1,NULL,NULL,NULL), - (389,195,4,'a_b',168,'Sibling of',193,'Sibling of',1,NULL,NULL,NULL), - (390,195,4,'b_a',193,'Sibling of',168,'Sibling of',1,NULL,NULL,NULL), - (391,196,8,'a_b',22,'Household Member of',38,'Household Member is',1,NULL,NULL,NULL), - (392,196,8,'b_a',38,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL), - (393,197,8,'a_b',193,'Household Member of',38,'Household Member is',1,NULL,NULL,NULL), - (394,197,8,'b_a',38,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), - (395,198,8,'a_b',168,'Household Member of',38,'Household Member is',1,NULL,NULL,NULL), - (396,198,8,'b_a',38,'Household Member is',168,'Household Member of',1,NULL,NULL,NULL), - (397,199,7,'a_b',28,'Head of Household for',38,'Head of Household is',1,NULL,NULL,NULL), - (398,199,7,'b_a',38,'Head of Household is',28,'Head of Household for',1,NULL,NULL,NULL), - (399,200,2,'a_b',22,'Spouse of',28,'Spouse of',1,NULL,NULL,NULL), - (400,200,2,'b_a',28,'Spouse of',22,'Spouse of',1,NULL,NULL,NULL), - (401,201,5,'a_b',183,'Employee of',2,'Employer of',1,NULL,NULL,NULL), - (402,201,5,'b_a',2,'Employer of',183,'Employee of',1,NULL,NULL,NULL), - (403,202,5,'a_b',168,'Employee of',4,'Employer of',1,NULL,NULL,NULL), - (404,202,5,'b_a',4,'Employer of',168,'Employee of',1,NULL,NULL,NULL), - (405,203,5,'a_b',48,'Employee of',7,'Employer of',1,NULL,NULL,NULL), - (406,203,5,'b_a',7,'Employer of',48,'Employee of',1,NULL,NULL,NULL), - (407,204,5,'a_b',137,'Employee of',8,'Employer of',1,NULL,NULL,NULL), - (408,204,5,'b_a',8,'Employer of',137,'Employee of',1,NULL,NULL,NULL), - (409,205,5,'a_b',175,'Employee of',36,'Employer of',1,NULL,NULL,NULL), - (410,205,5,'b_a',36,'Employer of',175,'Employee of',1,NULL,NULL,NULL), - (411,206,5,'a_b',110,'Employee of',37,'Employer of',1,NULL,NULL,NULL), - (412,206,5,'b_a',37,'Employer of',110,'Employee of',1,NULL,NULL,NULL), - (413,207,5,'a_b',145,'Employee of',49,'Employer of',1,NULL,NULL,NULL), - (414,207,5,'b_a',49,'Employer of',145,'Employee of',1,NULL,NULL,NULL), - (415,208,5,'a_b',83,'Employee of',66,'Employer of',1,NULL,NULL,NULL), - (416,208,5,'b_a',66,'Employer of',83,'Employee of',1,NULL,NULL,NULL), - (417,209,5,'a_b',141,'Employee of',76,'Employer of',1,NULL,NULL,NULL), - (418,209,5,'b_a',76,'Employer of',141,'Employee of',1,NULL,NULL,NULL), - (419,210,5,'a_b',100,'Employee of',94,'Employer of',1,NULL,NULL,NULL), - (420,210,5,'b_a',94,'Employer of',100,'Employee of',1,NULL,NULL,NULL), - (421,211,5,'a_b',40,'Employee of',98,'Employer of',1,NULL,NULL,NULL), - (422,211,5,'b_a',98,'Employer of',40,'Employee of',1,NULL,NULL,NULL), - (423,212,5,'a_b',138,'Employee of',101,'Employer of',1,NULL,NULL,NULL), - (424,212,5,'b_a',101,'Employer of',138,'Employee of',1,NULL,NULL,NULL), - (425,213,5,'a_b',154,'Employee of',115,'Employer of',1,NULL,NULL,NULL), - (426,213,5,'b_a',115,'Employer of',154,'Employee of',1,NULL,NULL,NULL), - (427,214,5,'a_b',181,'Employee of',119,'Employer of',1,NULL,NULL,NULL), - (428,214,5,'b_a',119,'Employer of',181,'Employee of',1,NULL,NULL,NULL), - (429,215,5,'a_b',126,'Employee of',121,'Employer of',1,NULL,NULL,NULL), - (430,215,5,'b_a',121,'Employer of',126,'Employee of',1,NULL,NULL,NULL), - (431,216,5,'a_b',185,'Employee of',124,'Employer of',1,NULL,NULL,NULL), - (432,216,5,'b_a',124,'Employer of',185,'Employee of',1,NULL,NULL,NULL), - (433,217,5,'a_b',96,'Employee of',140,'Employer of',1,NULL,NULL,NULL), - (434,217,5,'b_a',140,'Employer of',96,'Employee of',1,NULL,NULL,NULL), - (435,218,5,'a_b',104,'Employee of',186,'Employer of',1,NULL,NULL,NULL), - (436,218,5,'b_a',186,'Employer of',104,'Employee of',1,NULL,NULL,NULL); + (1,1,1,'a_b',13,'Child of',190,'Parent of',1,NULL,NULL,NULL), + (2,1,1,'b_a',190,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (3,2,1,'a_b',53,'Child of',190,'Parent of',1,NULL,NULL,NULL), + (4,2,1,'b_a',190,'Parent of',53,'Child of',1,NULL,NULL,NULL), + (5,3,1,'a_b',13,'Child of',85,'Parent of',1,NULL,NULL,NULL), + (6,3,1,'b_a',85,'Parent of',13,'Child of',1,NULL,NULL,NULL), + (7,4,1,'a_b',53,'Child of',85,'Parent of',1,NULL,NULL,NULL), + (8,4,1,'b_a',85,'Parent of',53,'Child of',1,NULL,NULL,NULL), + (9,5,4,'a_b',53,'Sibling of',13,'Sibling of',1,NULL,NULL,NULL), + (10,5,4,'b_a',13,'Sibling of',53,'Sibling of',1,NULL,NULL,NULL), + (11,6,8,'a_b',85,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (12,6,8,'b_a',10,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL), + (13,7,8,'a_b',13,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (14,7,8,'b_a',10,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), + (15,8,8,'a_b',53,'Household Member of',10,'Household Member is',1,NULL,NULL,NULL), + (16,8,8,'b_a',10,'Household Member is',53,'Household Member of',1,NULL,NULL,NULL), + (17,9,7,'a_b',190,'Head of Household for',10,'Head of Household is',0,NULL,NULL,NULL), + (18,9,7,'b_a',10,'Head of Household is',190,'Head of Household for',0,NULL,NULL,NULL), + (19,10,2,'a_b',85,'Spouse of',190,'Spouse of',0,NULL,NULL,NULL), + (20,10,2,'b_a',190,'Spouse of',85,'Spouse of',0,NULL,NULL,NULL), + (21,11,1,'a_b',154,'Child of',58,'Parent of',1,NULL,NULL,NULL), + (22,11,1,'b_a',58,'Parent of',154,'Child of',1,NULL,NULL,NULL), + (23,12,1,'a_b',23,'Child of',58,'Parent of',1,NULL,NULL,NULL), + (24,12,1,'b_a',58,'Parent of',23,'Child of',1,NULL,NULL,NULL), + (25,13,1,'a_b',154,'Child of',106,'Parent of',1,NULL,NULL,NULL), + (26,13,1,'b_a',106,'Parent of',154,'Child of',1,NULL,NULL,NULL), + (27,14,1,'a_b',23,'Child of',106,'Parent of',1,NULL,NULL,NULL), + (28,14,1,'b_a',106,'Parent of',23,'Child of',1,NULL,NULL,NULL), + (29,15,4,'a_b',23,'Sibling of',154,'Sibling of',1,NULL,NULL,NULL), + (30,15,4,'b_a',154,'Sibling of',23,'Sibling of',1,NULL,NULL,NULL), + (31,16,8,'a_b',106,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (32,16,8,'b_a',156,'Household Member is',106,'Household Member of',1,NULL,NULL,NULL), + (33,17,8,'a_b',154,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (34,17,8,'b_a',156,'Household Member is',154,'Household Member of',1,NULL,NULL,NULL), + (35,18,8,'a_b',23,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (36,18,8,'b_a',156,'Household Member is',23,'Household Member of',1,NULL,NULL,NULL), + (37,19,7,'a_b',58,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL), + (38,19,7,'b_a',156,'Head of Household is',58,'Head of Household for',1,NULL,NULL,NULL), + (39,20,2,'a_b',106,'Spouse of',58,'Spouse of',1,NULL,NULL,NULL), + (40,20,2,'b_a',58,'Spouse of',106,'Spouse of',1,NULL,NULL,NULL), + (41,21,1,'a_b',30,'Child of',151,'Parent of',1,NULL,NULL,NULL), + (42,21,1,'b_a',151,'Parent of',30,'Child of',1,NULL,NULL,NULL), + (43,22,1,'a_b',15,'Child of',151,'Parent of',1,NULL,NULL,NULL), + (44,22,1,'b_a',151,'Parent of',15,'Child of',1,NULL,NULL,NULL), + (45,23,1,'a_b',30,'Child of',20,'Parent of',1,NULL,NULL,NULL), + (46,23,1,'b_a',20,'Parent of',30,'Child of',1,NULL,NULL,NULL), + (47,24,1,'a_b',15,'Child of',20,'Parent of',1,NULL,NULL,NULL), + (48,24,1,'b_a',20,'Parent of',15,'Child of',1,NULL,NULL,NULL), + (49,25,4,'a_b',15,'Sibling of',30,'Sibling of',1,NULL,NULL,NULL), + (50,25,4,'b_a',30,'Sibling of',15,'Sibling of',1,NULL,NULL,NULL), + (51,26,8,'a_b',20,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (52,26,8,'b_a',131,'Household Member is',20,'Household Member of',1,NULL,NULL,NULL), + (53,27,8,'a_b',30,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (54,27,8,'b_a',131,'Household Member is',30,'Household Member of',1,NULL,NULL,NULL), + (55,28,8,'a_b',15,'Household Member of',131,'Household Member is',1,NULL,NULL,NULL), + (56,28,8,'b_a',131,'Household Member is',15,'Household Member of',1,NULL,NULL,NULL), + (57,29,7,'a_b',151,'Head of Household for',131,'Head of Household is',0,NULL,NULL,NULL), + (58,29,7,'b_a',131,'Head of Household is',151,'Head of Household for',0,NULL,NULL,NULL), + (59,30,2,'a_b',20,'Spouse of',151,'Spouse of',0,NULL,NULL,NULL), + (60,30,2,'b_a',151,'Spouse of',20,'Spouse of',0,NULL,NULL,NULL), + (61,31,1,'a_b',140,'Child of',50,'Parent of',1,NULL,NULL,NULL), + (62,31,1,'b_a',50,'Parent of',140,'Child of',1,NULL,NULL,NULL), + (63,32,1,'a_b',87,'Child of',50,'Parent of',1,NULL,NULL,NULL), + (64,32,1,'b_a',50,'Parent of',87,'Child of',1,NULL,NULL,NULL), + (65,33,1,'a_b',140,'Child of',194,'Parent of',1,NULL,NULL,NULL), + (66,33,1,'b_a',194,'Parent of',140,'Child of',1,NULL,NULL,NULL), + (67,34,1,'a_b',87,'Child of',194,'Parent of',1,NULL,NULL,NULL), + (68,34,1,'b_a',194,'Parent of',87,'Child of',1,NULL,NULL,NULL), + (69,35,4,'a_b',87,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL), + (70,35,4,'b_a',140,'Sibling of',87,'Sibling of',1,NULL,NULL,NULL), + (71,36,8,'a_b',194,'Household Member of',118,'Household Member is',1,NULL,NULL,NULL), + (72,36,8,'b_a',118,'Household Member is',194,'Household Member of',1,NULL,NULL,NULL), + (73,37,8,'a_b',140,'Household Member of',118,'Household Member is',1,NULL,NULL,NULL), + (74,37,8,'b_a',118,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL), + (75,38,8,'a_b',87,'Household Member of',118,'Household Member is',1,NULL,NULL,NULL), + (76,38,8,'b_a',118,'Household Member is',87,'Household Member of',1,NULL,NULL,NULL), + (77,39,7,'a_b',50,'Head of Household for',118,'Head of Household is',0,NULL,NULL,NULL), + (78,39,7,'b_a',118,'Head of Household is',50,'Head of Household for',0,NULL,NULL,NULL), + (79,40,2,'a_b',194,'Spouse of',50,'Spouse of',0,NULL,NULL,NULL), + (80,40,2,'b_a',50,'Spouse of',194,'Spouse of',0,NULL,NULL,NULL), + (81,41,1,'a_b',8,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (82,41,1,'b_a',18,'Parent of',8,'Child of',1,NULL,NULL,NULL), + (83,42,1,'a_b',189,'Child of',18,'Parent of',1,NULL,NULL,NULL), + (84,42,1,'b_a',18,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (85,43,1,'a_b',8,'Child of',63,'Parent of',1,NULL,NULL,NULL), + (86,43,1,'b_a',63,'Parent of',8,'Child of',1,NULL,NULL,NULL), + (87,44,1,'a_b',189,'Child of',63,'Parent of',1,NULL,NULL,NULL), + (88,44,1,'b_a',63,'Parent of',189,'Child of',1,NULL,NULL,NULL), + (89,45,4,'a_b',189,'Sibling of',8,'Sibling of',1,NULL,NULL,NULL), + (90,45,4,'b_a',8,'Sibling of',189,'Sibling of',1,NULL,NULL,NULL), + (91,46,8,'a_b',63,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL), + (92,46,8,'b_a',5,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL), + (93,47,8,'a_b',8,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL), + (94,47,8,'b_a',5,'Household Member is',8,'Household Member of',1,NULL,NULL,NULL), + (95,48,8,'a_b',189,'Household Member of',5,'Household Member is',1,NULL,NULL,NULL), + (96,48,8,'b_a',5,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL), + (97,49,7,'a_b',18,'Head of Household for',5,'Head of Household is',0,NULL,NULL,NULL), + (98,49,7,'b_a',5,'Head of Household is',18,'Head of Household for',0,NULL,NULL,NULL), + (99,50,2,'a_b',63,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL), + (100,50,2,'b_a',18,'Spouse of',63,'Spouse of',0,NULL,NULL,NULL), + (101,51,1,'a_b',137,'Child of',80,'Parent of',1,NULL,NULL,NULL), + (102,51,1,'b_a',80,'Parent of',137,'Child of',1,NULL,NULL,NULL), + (103,52,1,'a_b',126,'Child of',80,'Parent of',1,NULL,NULL,NULL), + (104,52,1,'b_a',80,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (105,53,1,'a_b',137,'Child of',104,'Parent of',1,NULL,NULL,NULL), + (106,53,1,'b_a',104,'Parent of',137,'Child of',1,NULL,NULL,NULL), + (107,54,1,'a_b',126,'Child of',104,'Parent of',1,NULL,NULL,NULL), + (108,54,1,'b_a',104,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (109,55,4,'a_b',126,'Sibling of',137,'Sibling of',1,NULL,NULL,NULL), + (110,55,4,'b_a',137,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL), + (111,56,8,'a_b',104,'Household Member of',113,'Household Member is',1,NULL,NULL,NULL), + (112,56,8,'b_a',113,'Household Member is',104,'Household Member of',1,NULL,NULL,NULL), + (113,57,8,'a_b',137,'Household Member of',113,'Household Member is',1,NULL,NULL,NULL), + (114,57,8,'b_a',113,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL), + (115,58,8,'a_b',126,'Household Member of',113,'Household Member is',1,NULL,NULL,NULL), + (116,58,8,'b_a',113,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL), + (117,59,7,'a_b',80,'Head of Household for',113,'Head of Household is',0,NULL,NULL,NULL), + (118,59,7,'b_a',113,'Head of Household is',80,'Head of Household for',0,NULL,NULL,NULL), + (119,60,2,'a_b',104,'Spouse of',80,'Spouse of',0,NULL,NULL,NULL), + (120,60,2,'b_a',80,'Spouse of',104,'Spouse of',0,NULL,NULL,NULL), + (121,61,1,'a_b',35,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (122,61,1,'b_a',163,'Parent of',35,'Child of',1,NULL,NULL,NULL), + (123,62,1,'a_b',3,'Child of',163,'Parent of',1,NULL,NULL,NULL), + (124,62,1,'b_a',163,'Parent of',3,'Child of',1,NULL,NULL,NULL), + (125,63,1,'a_b',35,'Child of',27,'Parent of',1,NULL,NULL,NULL), + (126,63,1,'b_a',27,'Parent of',35,'Child of',1,NULL,NULL,NULL), + (127,64,1,'a_b',3,'Child of',27,'Parent of',1,NULL,NULL,NULL), + (128,64,1,'b_a',27,'Parent of',3,'Child of',1,NULL,NULL,NULL), + (129,65,4,'a_b',3,'Sibling of',35,'Sibling of',1,NULL,NULL,NULL), + (130,65,4,'b_a',35,'Sibling of',3,'Sibling of',1,NULL,NULL,NULL), + (131,66,8,'a_b',27,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), + (132,66,8,'b_a',149,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL), + (133,67,8,'a_b',35,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), + (134,67,8,'b_a',149,'Household Member is',35,'Household Member of',1,NULL,NULL,NULL), + (135,68,8,'a_b',3,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), + (136,68,8,'b_a',149,'Household Member is',3,'Household Member of',1,NULL,NULL,NULL), + (137,69,7,'a_b',163,'Head of Household for',149,'Head of Household is',0,NULL,NULL,NULL), + (138,69,7,'b_a',149,'Head of Household is',163,'Head of Household for',0,NULL,NULL,NULL), + (139,70,2,'a_b',27,'Spouse of',163,'Spouse of',0,NULL,NULL,NULL), + (140,70,2,'b_a',163,'Spouse of',27,'Spouse of',0,NULL,NULL,NULL), + (141,71,1,'a_b',191,'Child of',147,'Parent of',1,NULL,NULL,NULL), + (142,71,1,'b_a',147,'Parent of',191,'Child of',1,NULL,NULL,NULL), + (143,72,1,'a_b',122,'Child of',147,'Parent of',1,NULL,NULL,NULL), + (144,72,1,'b_a',147,'Parent of',122,'Child of',1,NULL,NULL,NULL), + (145,73,1,'a_b',191,'Child of',164,'Parent of',1,NULL,NULL,NULL), + (146,73,1,'b_a',164,'Parent of',191,'Child of',1,NULL,NULL,NULL), + (147,74,1,'a_b',122,'Child of',164,'Parent of',1,NULL,NULL,NULL), + (148,74,1,'b_a',164,'Parent of',122,'Child of',1,NULL,NULL,NULL), + (149,75,4,'a_b',122,'Sibling of',191,'Sibling of',1,NULL,NULL,NULL), + (150,75,4,'b_a',191,'Sibling of',122,'Sibling of',1,NULL,NULL,NULL), + (151,76,8,'a_b',164,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (152,76,8,'b_a',134,'Household Member is',164,'Household Member of',1,NULL,NULL,NULL), + (153,77,8,'a_b',191,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (154,77,8,'b_a',134,'Household Member is',191,'Household Member of',1,NULL,NULL,NULL), + (155,78,8,'a_b',122,'Household Member of',134,'Household Member is',1,NULL,NULL,NULL), + (156,78,8,'b_a',134,'Household Member is',122,'Household Member of',1,NULL,NULL,NULL), + (157,79,7,'a_b',147,'Head of Household for',134,'Head of Household is',1,NULL,NULL,NULL), + (158,79,7,'b_a',134,'Head of Household is',147,'Head of Household for',1,NULL,NULL,NULL), + (159,80,2,'a_b',164,'Spouse of',147,'Spouse of',1,NULL,NULL,NULL), + (160,80,2,'b_a',147,'Spouse of',164,'Spouse of',1,NULL,NULL,NULL), + (161,81,1,'a_b',150,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (162,81,1,'b_a',16,'Parent of',150,'Child of',1,NULL,NULL,NULL), + (163,82,1,'a_b',127,'Child of',16,'Parent of',1,NULL,NULL,NULL), + (164,82,1,'b_a',16,'Parent of',127,'Child of',1,NULL,NULL,NULL), + (165,83,1,'a_b',150,'Child of',81,'Parent of',1,NULL,NULL,NULL), + (166,83,1,'b_a',81,'Parent of',150,'Child of',1,NULL,NULL,NULL), + (167,84,1,'a_b',127,'Child of',81,'Parent of',1,NULL,NULL,NULL), + (168,84,1,'b_a',81,'Parent of',127,'Child of',1,NULL,NULL,NULL), + (169,85,4,'a_b',127,'Sibling of',150,'Sibling of',1,NULL,NULL,NULL), + (170,85,4,'b_a',150,'Sibling of',127,'Sibling of',1,NULL,NULL,NULL), + (171,86,8,'a_b',81,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL), + (172,86,8,'b_a',92,'Household Member is',81,'Household Member of',1,NULL,NULL,NULL), + (173,87,8,'a_b',150,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL), + (174,87,8,'b_a',92,'Household Member is',150,'Household Member of',1,NULL,NULL,NULL), + (175,88,8,'a_b',127,'Household Member of',92,'Household Member is',1,NULL,NULL,NULL), + (176,88,8,'b_a',92,'Household Member is',127,'Household Member of',1,NULL,NULL,NULL), + (177,89,7,'a_b',16,'Head of Household for',92,'Head of Household is',1,NULL,NULL,NULL), + (178,89,7,'b_a',92,'Head of Household is',16,'Head of Household for',1,NULL,NULL,NULL), + (179,90,2,'a_b',81,'Spouse of',16,'Spouse of',1,NULL,NULL,NULL), + (180,90,2,'b_a',16,'Spouse of',81,'Spouse of',1,NULL,NULL,NULL), + (181,91,1,'a_b',125,'Child of',95,'Parent of',1,NULL,NULL,NULL), + (182,91,1,'b_a',95,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (183,92,1,'a_b',17,'Child of',95,'Parent of',1,NULL,NULL,NULL), + (184,92,1,'b_a',95,'Parent of',17,'Child of',1,NULL,NULL,NULL), + (185,93,1,'a_b',125,'Child of',72,'Parent of',1,NULL,NULL,NULL), + (186,93,1,'b_a',72,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (187,94,1,'a_b',17,'Child of',72,'Parent of',1,NULL,NULL,NULL), + (188,94,1,'b_a',72,'Parent of',17,'Child of',1,NULL,NULL,NULL), + (189,95,4,'a_b',17,'Sibling of',125,'Sibling of',1,NULL,NULL,NULL), + (190,95,4,'b_a',125,'Sibling of',17,'Sibling of',1,NULL,NULL,NULL), + (191,96,8,'a_b',72,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), + (192,96,8,'b_a',14,'Household Member is',72,'Household Member of',1,NULL,NULL,NULL), + (193,97,8,'a_b',125,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), + (194,97,8,'b_a',14,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL), + (195,98,8,'a_b',17,'Household Member of',14,'Household Member is',1,NULL,NULL,NULL), + (196,98,8,'b_a',14,'Household Member is',17,'Household Member of',1,NULL,NULL,NULL), + (197,99,7,'a_b',95,'Head of Household for',14,'Head of Household is',0,NULL,NULL,NULL), + (198,99,7,'b_a',14,'Head of Household is',95,'Head of Household for',0,NULL,NULL,NULL), + (199,100,2,'a_b',72,'Spouse of',95,'Spouse of',0,NULL,NULL,NULL), + (200,100,2,'b_a',95,'Spouse of',72,'Spouse of',0,NULL,NULL,NULL), + (201,101,1,'a_b',88,'Child of',173,'Parent of',1,NULL,NULL,NULL), + (202,101,1,'b_a',173,'Parent of',88,'Child of',1,NULL,NULL,NULL), + (203,102,1,'a_b',77,'Child of',173,'Parent of',1,NULL,NULL,NULL), + (204,102,1,'b_a',173,'Parent of',77,'Child of',1,NULL,NULL,NULL), + (205,103,1,'a_b',88,'Child of',139,'Parent of',1,NULL,NULL,NULL), + (206,103,1,'b_a',139,'Parent of',88,'Child of',1,NULL,NULL,NULL), + (207,104,1,'a_b',77,'Child of',139,'Parent of',1,NULL,NULL,NULL), + (208,104,1,'b_a',139,'Parent of',77,'Child of',1,NULL,NULL,NULL), + (209,105,4,'a_b',77,'Sibling of',88,'Sibling of',1,NULL,NULL,NULL), + (210,105,4,'b_a',88,'Sibling of',77,'Sibling of',1,NULL,NULL,NULL), + (211,106,8,'a_b',139,'Household Member of',201,'Household Member is',1,NULL,NULL,NULL), + (212,106,8,'b_a',201,'Household Member is',139,'Household Member of',1,NULL,NULL,NULL), + (213,107,8,'a_b',88,'Household Member of',201,'Household Member is',1,NULL,NULL,NULL), + (214,107,8,'b_a',201,'Household Member is',88,'Household Member of',1,NULL,NULL,NULL), + (215,108,8,'a_b',77,'Household Member of',201,'Household Member is',1,NULL,NULL,NULL), + (216,108,8,'b_a',201,'Household Member is',77,'Household Member of',1,NULL,NULL,NULL), + (217,109,7,'a_b',173,'Head of Household for',201,'Head of Household is',1,NULL,NULL,NULL), + (218,109,7,'b_a',201,'Head of Household is',173,'Head of Household for',1,NULL,NULL,NULL), + (219,110,2,'a_b',139,'Spouse of',173,'Spouse of',1,NULL,NULL,NULL), + (220,110,2,'b_a',173,'Spouse of',139,'Spouse of',1,NULL,NULL,NULL), + (221,111,1,'a_b',116,'Child of',31,'Parent of',1,NULL,NULL,NULL), + (222,111,1,'b_a',31,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (223,112,1,'a_b',29,'Child of',31,'Parent of',1,NULL,NULL,NULL), + (224,112,1,'b_a',31,'Parent of',29,'Child of',1,NULL,NULL,NULL), + (225,113,1,'a_b',116,'Child of',99,'Parent of',1,NULL,NULL,NULL), + (226,113,1,'b_a',99,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (227,114,1,'a_b',29,'Child of',99,'Parent of',1,NULL,NULL,NULL), + (228,114,1,'b_a',99,'Parent of',29,'Child of',1,NULL,NULL,NULL), + (229,115,4,'a_b',29,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL), + (230,115,4,'b_a',116,'Sibling of',29,'Sibling of',1,NULL,NULL,NULL), + (231,116,8,'a_b',99,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), + (232,116,8,'b_a',161,'Household Member is',99,'Household Member of',1,NULL,NULL,NULL), + (233,117,8,'a_b',116,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), + (234,117,8,'b_a',161,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL), + (235,118,8,'a_b',29,'Household Member of',161,'Household Member is',1,NULL,NULL,NULL), + (236,118,8,'b_a',161,'Household Member is',29,'Household Member of',1,NULL,NULL,NULL), + (237,119,7,'a_b',31,'Head of Household for',161,'Head of Household is',0,NULL,NULL,NULL), + (238,119,7,'b_a',161,'Head of Household is',31,'Head of Household for',0,NULL,NULL,NULL), + (239,120,2,'a_b',99,'Spouse of',31,'Spouse of',0,NULL,NULL,NULL), + (240,120,2,'b_a',31,'Spouse of',99,'Spouse of',0,NULL,NULL,NULL), + (241,121,1,'a_b',170,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (242,121,1,'b_a',86,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (243,122,1,'a_b',38,'Child of',86,'Parent of',1,NULL,NULL,NULL), + (244,122,1,'b_a',86,'Parent of',38,'Child of',1,NULL,NULL,NULL), + (245,123,1,'a_b',170,'Child of',60,'Parent of',1,NULL,NULL,NULL), + (246,123,1,'b_a',60,'Parent of',170,'Child of',1,NULL,NULL,NULL), + (247,124,1,'a_b',38,'Child of',60,'Parent of',1,NULL,NULL,NULL), + (248,124,1,'b_a',60,'Parent of',38,'Child of',1,NULL,NULL,NULL), + (249,125,4,'a_b',38,'Sibling of',170,'Sibling of',1,NULL,NULL,NULL), + (250,125,4,'b_a',170,'Sibling of',38,'Sibling of',1,NULL,NULL,NULL), + (251,126,8,'a_b',60,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL), + (252,126,8,'b_a',68,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), + (253,127,8,'a_b',170,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL), + (254,127,8,'b_a',68,'Household Member is',170,'Household Member of',1,NULL,NULL,NULL), + (255,128,8,'a_b',38,'Household Member of',68,'Household Member is',1,NULL,NULL,NULL), + (256,128,8,'b_a',68,'Household Member is',38,'Household Member of',1,NULL,NULL,NULL), + (257,129,7,'a_b',86,'Head of Household for',68,'Head of Household is',1,NULL,NULL,NULL), + (258,129,7,'b_a',68,'Head of Household is',86,'Head of Household for',1,NULL,NULL,NULL), + (259,130,2,'a_b',60,'Spouse of',86,'Spouse of',1,NULL,NULL,NULL), + (260,130,2,'b_a',86,'Spouse of',60,'Spouse of',1,NULL,NULL,NULL), + (261,131,1,'a_b',94,'Child of',7,'Parent of',1,NULL,NULL,NULL), + (262,131,1,'b_a',7,'Parent of',94,'Child of',1,NULL,NULL,NULL), + (263,132,1,'a_b',195,'Child of',7,'Parent of',1,NULL,NULL,NULL), + (264,132,1,'b_a',7,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (265,133,1,'a_b',94,'Child of',65,'Parent of',1,NULL,NULL,NULL), + (266,133,1,'b_a',65,'Parent of',94,'Child of',1,NULL,NULL,NULL), + (267,134,1,'a_b',195,'Child of',65,'Parent of',1,NULL,NULL,NULL), + (268,134,1,'b_a',65,'Parent of',195,'Child of',1,NULL,NULL,NULL), + (269,135,4,'a_b',195,'Sibling of',94,'Sibling of',1,NULL,NULL,NULL), + (270,135,4,'b_a',94,'Sibling of',195,'Sibling of',1,NULL,NULL,NULL), + (271,136,8,'a_b',65,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), + (272,136,8,'b_a',52,'Household Member is',65,'Household Member of',1,NULL,NULL,NULL), + (273,137,8,'a_b',94,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), + (274,137,8,'b_a',52,'Household Member is',94,'Household Member of',1,NULL,NULL,NULL), + (275,138,8,'a_b',195,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), + (276,138,8,'b_a',52,'Household Member is',195,'Household Member of',1,NULL,NULL,NULL), + (277,139,7,'a_b',7,'Head of Household for',52,'Head of Household is',0,NULL,NULL,NULL), + (278,139,7,'b_a',52,'Head of Household is',7,'Head of Household for',0,NULL,NULL,NULL), + (279,140,2,'a_b',65,'Spouse of',7,'Spouse of',0,NULL,NULL,NULL), + (280,140,2,'b_a',7,'Spouse of',65,'Spouse of',0,NULL,NULL,NULL), + (281,141,1,'a_b',176,'Child of',45,'Parent of',1,NULL,NULL,NULL), + (282,141,1,'b_a',45,'Parent of',176,'Child of',1,NULL,NULL,NULL), + (283,142,1,'a_b',36,'Child of',45,'Parent of',1,NULL,NULL,NULL), + (284,142,1,'b_a',45,'Parent of',36,'Child of',1,NULL,NULL,NULL), + (285,143,1,'a_b',176,'Child of',42,'Parent of',1,NULL,NULL,NULL), + (286,143,1,'b_a',42,'Parent of',176,'Child of',1,NULL,NULL,NULL), + (287,144,1,'a_b',36,'Child of',42,'Parent of',1,NULL,NULL,NULL), + (288,144,1,'b_a',42,'Parent of',36,'Child of',1,NULL,NULL,NULL), + (289,145,4,'a_b',36,'Sibling of',176,'Sibling of',1,NULL,NULL,NULL), + (290,145,4,'b_a',176,'Sibling of',36,'Sibling of',1,NULL,NULL,NULL), + (291,146,8,'a_b',42,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), + (292,146,8,'b_a',6,'Household Member is',42,'Household Member of',1,NULL,NULL,NULL), + (293,147,8,'a_b',176,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), + (294,147,8,'b_a',6,'Household Member is',176,'Household Member of',1,NULL,NULL,NULL), + (295,148,8,'a_b',36,'Household Member of',6,'Household Member is',1,NULL,NULL,NULL), + (296,148,8,'b_a',6,'Household Member is',36,'Household Member of',1,NULL,NULL,NULL), + (297,149,7,'a_b',45,'Head of Household for',6,'Head of Household is',1,NULL,NULL,NULL), + (298,149,7,'b_a',6,'Head of Household is',45,'Head of Household for',1,NULL,NULL,NULL), + (299,150,2,'a_b',42,'Spouse of',45,'Spouse of',1,NULL,NULL,NULL), + (300,150,2,'b_a',45,'Spouse of',42,'Spouse of',1,NULL,NULL,NULL), + (301,151,1,'a_b',19,'Child of',133,'Parent of',1,NULL,NULL,NULL), + (302,151,1,'b_a',133,'Parent of',19,'Child of',1,NULL,NULL,NULL), + (303,152,1,'a_b',97,'Child of',133,'Parent of',1,NULL,NULL,NULL), + (304,152,1,'b_a',133,'Parent of',97,'Child of',1,NULL,NULL,NULL), + (305,153,1,'a_b',19,'Child of',25,'Parent of',1,NULL,NULL,NULL), + (306,153,1,'b_a',25,'Parent of',19,'Child of',1,NULL,NULL,NULL), + (307,154,1,'a_b',97,'Child of',25,'Parent of',1,NULL,NULL,NULL), + (308,154,1,'b_a',25,'Parent of',97,'Child of',1,NULL,NULL,NULL), + (309,155,4,'a_b',97,'Sibling of',19,'Sibling of',1,NULL,NULL,NULL), + (310,155,4,'b_a',19,'Sibling of',97,'Sibling of',1,NULL,NULL,NULL), + (311,156,8,'a_b',25,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL), + (312,156,8,'b_a',111,'Household Member is',25,'Household Member of',1,NULL,NULL,NULL), + (313,157,8,'a_b',19,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL), + (314,157,8,'b_a',111,'Household Member is',19,'Household Member of',1,NULL,NULL,NULL), + (315,158,8,'a_b',97,'Household Member of',111,'Household Member is',1,NULL,NULL,NULL), + (316,158,8,'b_a',111,'Household Member is',97,'Household Member of',1,NULL,NULL,NULL), + (317,159,7,'a_b',133,'Head of Household for',111,'Head of Household is',1,NULL,NULL,NULL), + (318,159,7,'b_a',111,'Head of Household is',133,'Head of Household for',1,NULL,NULL,NULL), + (319,160,2,'a_b',25,'Spouse of',133,'Spouse of',1,NULL,NULL,NULL), + (320,160,2,'b_a',133,'Spouse of',25,'Spouse of',1,NULL,NULL,NULL), + (321,161,1,'a_b',76,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (322,161,1,'b_a',46,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (323,162,1,'a_b',187,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (324,162,1,'b_a',46,'Parent of',187,'Child of',1,NULL,NULL,NULL), + (325,163,1,'a_b',76,'Child of',93,'Parent of',1,NULL,NULL,NULL), + (326,163,1,'b_a',93,'Parent of',76,'Child of',1,NULL,NULL,NULL), + (327,164,1,'a_b',187,'Child of',93,'Parent of',1,NULL,NULL,NULL), + (328,164,1,'b_a',93,'Parent of',187,'Child of',1,NULL,NULL,NULL), + (329,165,4,'a_b',187,'Sibling of',76,'Sibling of',1,NULL,NULL,NULL), + (330,165,4,'b_a',76,'Sibling of',187,'Sibling of',1,NULL,NULL,NULL), + (331,166,8,'a_b',93,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL), + (332,166,8,'b_a',138,'Household Member is',93,'Household Member of',1,NULL,NULL,NULL), + (333,167,8,'a_b',76,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL), + (334,167,8,'b_a',138,'Household Member is',76,'Household Member of',1,NULL,NULL,NULL), + (335,168,8,'a_b',187,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL), + (336,168,8,'b_a',138,'Household Member is',187,'Household Member of',1,NULL,NULL,NULL), + (337,169,7,'a_b',46,'Head of Household for',138,'Head of Household is',1,NULL,NULL,NULL), + (338,169,7,'b_a',138,'Head of Household is',46,'Head of Household for',1,NULL,NULL,NULL), + (339,170,2,'a_b',93,'Spouse of',46,'Spouse of',1,NULL,NULL,NULL), + (340,170,2,'b_a',46,'Spouse of',93,'Spouse of',1,NULL,NULL,NULL), + (341,171,1,'a_b',185,'Child of',74,'Parent of',1,NULL,NULL,NULL), + (342,171,1,'b_a',74,'Parent of',185,'Child of',1,NULL,NULL,NULL), + (343,172,1,'a_b',197,'Child of',74,'Parent of',1,NULL,NULL,NULL), + (344,172,1,'b_a',74,'Parent of',197,'Child of',1,NULL,NULL,NULL), + (345,173,1,'a_b',185,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (346,173,1,'b_a',179,'Parent of',185,'Child of',1,NULL,NULL,NULL), + (347,174,1,'a_b',197,'Child of',179,'Parent of',1,NULL,NULL,NULL), + (348,174,1,'b_a',179,'Parent of',197,'Child of',1,NULL,NULL,NULL), + (349,175,4,'a_b',197,'Sibling of',185,'Sibling of',1,NULL,NULL,NULL), + (350,175,4,'b_a',185,'Sibling of',197,'Sibling of',1,NULL,NULL,NULL), + (351,176,8,'a_b',179,'Household Member of',168,'Household Member is',1,NULL,NULL,NULL), + (352,176,8,'b_a',168,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL), + (353,177,8,'a_b',185,'Household Member of',168,'Household Member is',1,NULL,NULL,NULL), + (354,177,8,'b_a',168,'Household Member is',185,'Household Member of',1,NULL,NULL,NULL), + (355,178,8,'a_b',197,'Household Member of',168,'Household Member is',1,NULL,NULL,NULL), + (356,178,8,'b_a',168,'Household Member is',197,'Household Member of',1,NULL,NULL,NULL), + (357,179,7,'a_b',74,'Head of Household for',168,'Head of Household is',0,NULL,NULL,NULL), + (358,179,7,'b_a',168,'Head of Household is',74,'Head of Household for',0,NULL,NULL,NULL), + (359,180,2,'a_b',179,'Spouse of',74,'Spouse of',0,NULL,NULL,NULL), + (360,180,2,'b_a',74,'Spouse of',179,'Spouse of',0,NULL,NULL,NULL), + (361,181,1,'a_b',2,'Child of',184,'Parent of',1,NULL,NULL,NULL), + (362,181,1,'b_a',184,'Parent of',2,'Child of',1,NULL,NULL,NULL), + (363,182,1,'a_b',57,'Child of',184,'Parent of',1,NULL,NULL,NULL), + (364,182,1,'b_a',184,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (365,183,1,'a_b',2,'Child of',119,'Parent of',1,NULL,NULL,NULL), + (366,183,1,'b_a',119,'Parent of',2,'Child of',1,NULL,NULL,NULL), + (367,184,1,'a_b',57,'Child of',119,'Parent of',1,NULL,NULL,NULL), + (368,184,1,'b_a',119,'Parent of',57,'Child of',1,NULL,NULL,NULL), + (369,185,4,'a_b',57,'Sibling of',2,'Sibling of',1,NULL,NULL,NULL), + (370,185,4,'b_a',2,'Sibling of',57,'Sibling of',1,NULL,NULL,NULL), + (371,186,8,'a_b',119,'Household Member of',142,'Household Member is',1,NULL,NULL,NULL), + (372,186,8,'b_a',142,'Household Member is',119,'Household Member of',1,NULL,NULL,NULL), + (373,187,8,'a_b',2,'Household Member of',142,'Household Member is',1,NULL,NULL,NULL), + (374,187,8,'b_a',142,'Household Member is',2,'Household Member of',1,NULL,NULL,NULL), + (375,188,8,'a_b',57,'Household Member of',142,'Household Member is',1,NULL,NULL,NULL), + (376,188,8,'b_a',142,'Household Member is',57,'Household Member of',1,NULL,NULL,NULL), + (377,189,7,'a_b',184,'Head of Household for',142,'Head of Household is',1,NULL,NULL,NULL), + (378,189,7,'b_a',142,'Head of Household is',184,'Head of Household for',1,NULL,NULL,NULL), + (379,190,2,'a_b',119,'Spouse of',184,'Spouse of',1,NULL,NULL,NULL), + (380,190,2,'b_a',184,'Spouse of',119,'Spouse of',1,NULL,NULL,NULL), + (381,191,1,'a_b',89,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (382,191,1,'b_a',110,'Parent of',89,'Child of',1,NULL,NULL,NULL), + (383,192,1,'a_b',54,'Child of',110,'Parent of',1,NULL,NULL,NULL), + (384,192,1,'b_a',110,'Parent of',54,'Child of',1,NULL,NULL,NULL), + (385,193,1,'a_b',89,'Child of',9,'Parent of',1,NULL,NULL,NULL), + (386,193,1,'b_a',9,'Parent of',89,'Child of',1,NULL,NULL,NULL), + (387,194,1,'a_b',54,'Child of',9,'Parent of',1,NULL,NULL,NULL), + (388,194,1,'b_a',9,'Parent of',54,'Child of',1,NULL,NULL,NULL), + (389,195,4,'a_b',54,'Sibling of',89,'Sibling of',1,NULL,NULL,NULL), + (390,195,4,'b_a',89,'Sibling of',54,'Sibling of',1,NULL,NULL,NULL), + (391,196,8,'a_b',9,'Household Member of',12,'Household Member is',1,NULL,NULL,NULL), + (392,196,8,'b_a',12,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL), + (393,197,8,'a_b',89,'Household Member of',12,'Household Member is',1,NULL,NULL,NULL), + (394,197,8,'b_a',12,'Household Member is',89,'Household Member of',1,NULL,NULL,NULL), + (395,198,8,'a_b',54,'Household Member of',12,'Household Member is',1,NULL,NULL,NULL), + (396,198,8,'b_a',12,'Household Member is',54,'Household Member of',1,NULL,NULL,NULL), + (397,199,7,'a_b',110,'Head of Household for',12,'Head of Household is',0,NULL,NULL,NULL), + (398,199,7,'b_a',12,'Head of Household is',110,'Head of Household for',0,NULL,NULL,NULL), + (399,200,2,'a_b',9,'Spouse of',110,'Spouse of',0,NULL,NULL,NULL), + (400,200,2,'b_a',110,'Spouse of',9,'Spouse of',0,NULL,NULL,NULL), + (401,201,5,'a_b',145,'Employee of',43,'Employer of',1,NULL,NULL,NULL), + (402,201,5,'b_a',43,'Employer of',145,'Employee of',1,NULL,NULL,NULL), + (403,202,5,'a_b',27,'Employee of',48,'Employer of',1,NULL,NULL,NULL), + (404,202,5,'b_a',48,'Employer of',27,'Employee of',1,NULL,NULL,NULL), + (405,203,5,'a_b',76,'Employee of',51,'Employer of',1,NULL,NULL,NULL), + (406,203,5,'b_a',51,'Employer of',76,'Employee of',1,NULL,NULL,NULL), + (407,204,5,'a_b',165,'Employee of',67,'Employer of',1,NULL,NULL,NULL), + (408,204,5,'b_a',67,'Employer of',165,'Employee of',1,NULL,NULL,NULL), + (409,205,5,'a_b',166,'Employee of',73,'Employer of',1,NULL,NULL,NULL), + (410,205,5,'b_a',73,'Employer of',166,'Employee of',1,NULL,NULL,NULL), + (411,206,5,'a_b',154,'Employee of',91,'Employer of',1,NULL,NULL,NULL), + (412,206,5,'b_a',91,'Employer of',154,'Employee of',1,NULL,NULL,NULL), + (413,207,5,'a_b',39,'Employee of',101,'Employer of',1,NULL,NULL,NULL), + (414,207,5,'b_a',101,'Employer of',39,'Employee of',1,NULL,NULL,NULL), + (415,208,5,'a_b',53,'Employee of',105,'Employer of',1,NULL,NULL,NULL), + (416,208,5,'b_a',105,'Employer of',53,'Employee of',1,NULL,NULL,NULL), + (417,209,5,'a_b',3,'Employee of',128,'Employer of',1,NULL,NULL,NULL), + (418,209,5,'b_a',128,'Employer of',3,'Employee of',1,NULL,NULL,NULL), + (419,210,5,'a_b',96,'Employee of',129,'Employer of',1,NULL,NULL,NULL), + (420,210,5,'b_a',129,'Employer of',96,'Employee of',1,NULL,NULL,NULL), + (421,211,5,'a_b',60,'Employee of',135,'Employer of',1,NULL,NULL,NULL), + (422,211,5,'b_a',135,'Employer of',60,'Employee of',1,NULL,NULL,NULL), + (423,212,5,'a_b',26,'Employee of',152,'Employer of',1,NULL,NULL,NULL), + (424,212,5,'b_a',152,'Employer of',26,'Employee of',1,NULL,NULL,NULL), + (425,213,5,'a_b',82,'Employee of',153,'Employer of',1,NULL,NULL,NULL), + (426,213,5,'b_a',153,'Employer of',82,'Employee of',1,NULL,NULL,NULL), + (427,214,5,'a_b',172,'Employee of',157,'Employer of',1,NULL,NULL,NULL), + (428,214,5,'b_a',157,'Employer of',172,'Employee of',1,NULL,NULL,NULL), + (429,215,5,'a_b',183,'Employee of',169,'Employer of',1,NULL,NULL,NULL), + (430,215,5,'b_a',169,'Employer of',183,'Employee of',1,NULL,NULL,NULL), + (431,216,5,'a_b',50,'Employee of',177,'Employer of',1,NULL,NULL,NULL), + (432,216,5,'b_a',177,'Employer of',50,'Employee of',1,NULL,NULL,NULL), + (433,217,5,'a_b',121,'Employee of',188,'Employer of',1,NULL,NULL,NULL), + (434,217,5,'b_a',188,'Employer of',121,'Employee of',1,NULL,NULL,NULL), + (435,218,5,'a_b',28,'Employee of',193,'Employer of',1,NULL,NULL,NULL), + (436,218,5,'b_a',193,'Employer of',28,'Employee of',1,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */; UNLOCK TABLES; @@ -8055,7 +8022,7 @@ 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-09-06 22:13:56','2023-09-06 22:13:56',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-09-06 22:52:12','2023-09-06 22:52:12',NULL); /*!40000 ALTER TABLE `civicrm_saved_search` ENABLE KEYS */; UNLOCK TABLES; @@ -12158,90 +12125,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,24,2,'2023-06-23 19:28:24','Email','Added',NULL), - (2,134,2,'2023-03-20 19:42:18','Admin','Added',NULL), - (3,88,2,'2023-07-20 08:37:26','Admin','Added',NULL), - (4,117,2,'2023-01-10 04:42:03','Email','Added',NULL), - (5,82,2,'2022-11-03 07:04:46','Admin','Added',NULL), - (6,72,2,'2022-11-01 05:38:19','Admin','Added',NULL), - (7,135,2,'2023-07-30 23:26:12','Admin','Added',NULL), - (8,151,2,'2022-09-11 06:15:05','Admin','Added',NULL), - (9,143,2,'2022-10-15 20:01:13','Admin','Added',NULL), - (10,13,2,'2023-04-21 19:05:04','Admin','Added',NULL), - (11,93,2,'2023-08-11 07:34:11','Email','Added',NULL), - (12,141,2,'2023-03-17 16:18:43','Email','Added',NULL), - (13,78,2,'2023-04-02 22:35:54','Email','Added',NULL), - (14,25,2,'2023-01-21 14:12:11','Admin','Added',NULL), - (15,128,2,'2023-08-28 21:49:32','Email','Added',NULL), - (16,132,2,'2023-02-08 01:01:35','Email','Added',NULL), - (17,63,2,'2023-04-08 19:48:17','Admin','Added',NULL), - (18,170,2,'2023-03-26 05:16:01','Admin','Added',NULL), - (19,86,2,'2022-12-30 20:24:00','Admin','Added',NULL), - (20,15,2,'2023-09-06 13:13:10','Admin','Added',NULL), - (21,60,2,'2023-07-03 13:32:21','Admin','Added',NULL), - (22,146,2,'2023-04-06 23:48:06','Admin','Added',NULL), - (23,108,2,'2023-05-14 05:50:14','Admin','Added',NULL), - (24,95,2,'2023-08-09 16:38:09','Admin','Added',NULL), - (25,131,2,'2023-07-25 12:35:48','Email','Added',NULL), - (26,46,2,'2022-09-24 03:12:10','Admin','Added',NULL), - (27,110,2,'2022-11-21 02:43:01','Admin','Added',NULL), - (28,54,2,'2023-06-11 22:02:58','Admin','Added',NULL), - (29,12,2,'2022-11-18 13:43:24','Email','Added',NULL), - (30,23,2,'2022-12-26 21:46:32','Admin','Added',NULL), - (31,96,2,'2022-09-25 11:39:09','Email','Added',NULL), - (32,176,2,'2023-08-07 01:58:54','Email','Added',NULL), - (33,123,2,'2023-04-17 02:44:32','Admin','Added',NULL), - (34,160,2,'2023-07-22 12:15:44','Email','Added',NULL), - (35,190,2,'2023-04-05 01:24:22','Email','Added',NULL), - (36,100,2,'2022-12-30 02:03:41','Email','Added',NULL), - (37,111,2,'2023-06-20 23:44:33','Email','Added',NULL), - (38,9,2,'2023-04-11 19:21:03','Admin','Added',NULL), - (39,162,2,'2023-07-29 16:52:56','Admin','Added',NULL), - (40,148,2,'2023-04-27 20:54:00','Email','Added',NULL), - (41,105,2,'2023-02-04 19:15:10','Admin','Added',NULL), - (42,31,2,'2022-11-03 06:18:03','Admin','Added',NULL), - (43,184,2,'2022-10-03 22:53:59','Admin','Added',NULL), - (44,102,2,'2022-10-25 05:51:54','Admin','Added',NULL), - (45,29,2,'2023-05-19 03:04:11','Email','Added',NULL), - (46,126,2,'2023-07-30 08:21:39','Email','Added',NULL), - (47,138,2,'2023-08-28 19:06:14','Email','Added',NULL), - (48,150,2,'2023-08-16 10:22:32','Admin','Added',NULL), - (49,48,2,'2023-03-21 19:49:58','Email','Added',NULL), - (50,137,2,'2023-06-11 09:16:32','Email','Added',NULL), - (51,200,2,'2023-09-06 21:31:28','Admin','Added',NULL), - (52,164,2,'2023-08-13 07:38:08','Email','Added',NULL), - (53,136,2,'2023-03-06 05:32:24','Admin','Added',NULL), - (54,5,2,'2023-09-04 10:14:32','Email','Added',NULL), - (55,17,2,'2022-11-11 07:29:14','Admin','Added',NULL), - (56,61,2,'2023-08-04 21:07:32','Admin','Added',NULL), - (57,145,2,'2023-09-02 03:13:55','Email','Added',NULL), - (58,185,2,'2023-09-01 17:14:12','Email','Added',NULL), - (59,34,2,'2023-03-08 03:36:16','Admin','Added',NULL), - (60,169,2,'2023-08-21 00:32:14','Admin','Added',NULL), - (61,173,3,'2023-06-14 11:46:28','Email','Added',NULL), - (62,84,3,'2023-02-27 00:26:13','Admin','Added',NULL), - (63,59,3,'2022-10-18 13:14:29','Email','Added',NULL), - (64,142,3,'2023-04-18 03:12:51','Email','Added',NULL), - (65,120,3,'2023-06-01 06:56:21','Email','Added',NULL), - (66,81,3,'2023-05-16 10:55:45','Email','Added',NULL), - (67,83,3,'2022-11-07 14:12:29','Email','Added',NULL), - (68,153,3,'2023-02-15 10:13:06','Admin','Added',NULL), - (69,74,3,'2023-05-30 11:25:41','Admin','Added',NULL), - (70,42,3,'2022-10-14 19:03:55','Email','Added',NULL), - (71,109,3,'2023-01-10 18:46:27','Email','Added',NULL), - (72,30,3,'2022-09-09 08:49:52','Email','Added',NULL), - (73,149,3,'2023-07-09 00:02:24','Email','Added',NULL), - (74,106,3,'2022-12-11 00:22:27','Admin','Added',NULL), - (75,175,3,'2023-01-09 08:50:26','Email','Added',NULL), - (76,24,4,'2023-04-14 07:24:03','Admin','Added',NULL), - (77,151,4,'2023-02-18 07:35:17','Admin','Added',NULL), - (78,128,4,'2022-10-11 07:44:47','Email','Added',NULL), - (79,146,4,'2023-08-13 18:42:28','Admin','Added',NULL), - (80,12,4,'2023-03-11 12:17:18','Admin','Added',NULL), - (81,100,4,'2023-07-16 11:40:25','Admin','Added',NULL), - (82,184,4,'2022-09-11 07:49:30','Email','Added',NULL), - (83,137,4,'2023-03-21 21:44:23','Email','Added',NULL), - (84,202,4,'2023-03-15 12:35:00','Admin','Added',NULL); + (1,55,2,'2023-03-27 23:40:27','Admin','Added',NULL), + (2,41,2,'2023-05-15 09:36:15','Email','Added',NULL), + (3,34,2,'2022-10-17 14:49:10','Admin','Added',NULL), + (4,171,2,'2022-10-05 06:08:36','Email','Added',NULL), + (5,123,2,'2023-02-01 04:35:13','Email','Added',NULL), + (6,64,2,'2023-04-16 11:45:51','Email','Added',NULL), + (7,178,2,'2023-06-20 02:29:30','Email','Added',NULL), + (8,24,2,'2023-07-15 16:43:53','Admin','Added',NULL), + (9,146,2,'2023-07-06 13:22:30','Email','Added',NULL), + (10,4,2,'2023-02-20 05:44:43','Email','Added',NULL), + (11,37,2,'2022-12-25 01:43:33','Email','Added',NULL), + (12,181,2,'2023-05-08 04:49:33','Admin','Added',NULL), + (13,98,2,'2022-10-14 15:02:15','Admin','Added',NULL), + (14,33,2,'2023-01-03 06:58:10','Admin','Added',NULL), + (15,160,2,'2023-04-03 22:01:32','Admin','Added',NULL), + (16,148,2,'2022-11-09 02:24:10','Email','Added',NULL), + (17,79,2,'2023-06-08 21:47:46','Admin','Added',NULL), + (18,158,2,'2023-03-13 19:12:00','Email','Added',NULL), + (19,145,2,'2023-01-23 01:27:48','Admin','Added',NULL), + (20,82,2,'2023-03-06 19:32:57','Admin','Added',NULL), + (21,175,2,'2022-11-19 01:46:26','Email','Added',NULL), + (22,102,2,'2023-03-15 02:57:34','Email','Added',NULL), + (23,117,2,'2022-09-29 19:40:08','Admin','Added',NULL), + (24,124,2,'2022-09-09 14:13:27','Admin','Added',NULL), + (25,28,2,'2022-12-25 05:55:31','Admin','Added',NULL), + (26,40,2,'2022-11-03 19:06:20','Admin','Added',NULL), + (27,66,2,'2023-07-09 09:37:48','Email','Added',NULL), + (28,32,2,'2023-03-29 14:54:55','Admin','Added',NULL), + (29,162,2,'2023-03-03 18:41:30','Admin','Added',NULL), + (30,199,2,'2022-12-28 05:45:09','Email','Added',NULL), + (31,26,2,'2023-07-08 00:55:20','Admin','Added',NULL), + (32,180,2,'2023-08-20 13:20:08','Email','Added',NULL), + (33,192,2,'2022-10-02 20:42:51','Email','Added',NULL), + (34,141,2,'2023-06-14 09:31:05','Email','Added',NULL), + (35,59,2,'2023-05-05 00:54:37','Email','Added',NULL), + (36,100,2,'2023-03-27 10:10:05','Email','Added',NULL), + (37,11,2,'2023-05-06 09:39:47','Admin','Added',NULL), + (38,144,2,'2023-08-29 11:33:58','Admin','Added',NULL), + (39,200,2,'2023-02-21 23:16:00','Email','Added',NULL), + (40,47,2,'2023-06-24 19:14:47','Admin','Added',NULL), + (41,22,2,'2023-06-20 00:05:08','Admin','Added',NULL), + (42,75,2,'2023-08-19 08:57:17','Email','Added',NULL), + (43,112,2,'2023-07-18 18:08:14','Email','Added',NULL), + (44,182,2,'2023-08-28 06:45:21','Admin','Added',NULL), + (45,165,2,'2023-02-13 18:23:38','Email','Added',NULL), + (46,132,2,'2022-11-15 12:34:22','Email','Added',NULL), + (47,136,2,'2022-09-13 11:59:10','Admin','Added',NULL), + (48,172,2,'2022-12-19 20:03:57','Admin','Added',NULL), + (49,186,2,'2022-12-17 05:35:36','Admin','Added',NULL), + (50,90,2,'2023-06-24 01:31:38','Email','Added',NULL), + (51,83,2,'2022-10-06 23:17:30','Email','Added',NULL), + (52,120,2,'2022-10-18 15:48:03','Email','Added',NULL), + (53,174,2,'2023-05-31 06:57:30','Email','Added',NULL), + (54,109,2,'2023-02-09 21:58:02','Admin','Added',NULL), + (55,69,2,'2022-09-24 11:41:10','Email','Added',NULL), + (56,155,2,'2023-01-02 02:47:45','Email','Added',NULL), + (57,167,2,'2023-01-19 03:01:51','Admin','Added',NULL), + (58,96,2,'2023-03-16 07:14:58','Admin','Added',NULL), + (59,159,2,'2023-03-26 19:36:00','Admin','Added',NULL), + (60,108,2,'2023-01-24 16:22:18','Admin','Added',NULL), + (61,78,3,'2023-07-08 00:20:30','Admin','Added',NULL), + (62,70,3,'2023-08-19 22:28:12','Email','Added',NULL), + (63,103,3,'2023-05-07 22:42:56','Email','Added',NULL), + (64,107,3,'2022-11-22 03:40:46','Admin','Added',NULL), + (65,44,3,'2023-07-12 13:14:30','Email','Added',NULL), + (66,21,3,'2022-11-04 06:22:15','Admin','Added',NULL), + (67,84,3,'2022-09-25 22:10:00','Email','Added',NULL), + (68,71,3,'2023-07-29 07:00:25','Email','Added',NULL), + (69,115,3,'2023-04-06 02:33:36','Email','Added',NULL), + (70,56,3,'2022-10-19 01:13:53','Admin','Added',NULL), + (71,196,3,'2023-06-17 03:42:21','Email','Added',NULL), + (72,183,3,'2023-07-18 05:12:56','Admin','Added',NULL), + (73,62,3,'2023-07-05 09:29:36','Email','Added',NULL), + (74,121,3,'2022-11-17 00:46:36','Admin','Added',NULL), + (75,166,3,'2023-07-06 01:44:02','Admin','Added',NULL), + (76,55,4,'2023-09-03 13:34:26','Email','Added',NULL), + (77,24,4,'2023-05-01 19:09:28','Admin','Added',NULL), + (78,160,4,'2022-09-19 10:43:27','Email','Added',NULL), + (79,102,4,'2023-05-19 07:25:46','Email','Added',NULL), + (80,162,4,'2023-03-04 22:54:14','Admin','Added',NULL), + (81,100,4,'2022-10-29 22:57:36','Admin','Added',NULL), + (82,112,4,'2023-02-03 13:11:50','Admin','Added',NULL), + (83,90,4,'2022-10-20 14:02:49','Admin','Added',NULL), + (84,202,4,'2023-08-16 01:44:57','Email','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -12467,22 +12434,22 @@ 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,76,'http://mlkinglegal.org',1), - (2,98,'http://sierraartsalliance.org',1), - (3,37,'http://statesartspartnership.org',1), - (4,115,'http://urbanadvocacyacademy.org',1), - (5,94,'http://minnesotaadvocacy.org',1), - (6,140,'http://unitedagriculture.org',1), - (7,124,'http://mapleagriculturetrust.org',1), - (8,119,'http://secondinitiative.org',1), - (9,36,'http://providenceempowermentfund.org',1), - (10,53,'http://californiaeducationsystems.org',1), - (11,6,'http://sierratrust.org',1), - (12,4,'http://unitedhealthassociation.org',1), - (13,121,'http://collegepeacesolutions.org',1), - (14,186,'http://caulderpeace.org',1), - (15,2,'http://localadvocacy.org',1), - (16,7,'http://progressivewellness.org',1); + (1,48,'http://urbansustainability.org',1), + (2,43,'http://starenvironmental.org',1), + (3,169,'http://communityeducation.org',1), + (4,177,'http://localpoetryassociation.org',1), + (5,101,'http://mississippifood.org',1), + (6,153,'http://friendshealth.org',1), + (7,91,'http://arkansasliteracy.org',1), + (8,157,'http://creativeschool.org',1), + (9,129,'http://californiacollective.org',1), + (10,188,'http://dowleneducationcollective.org',1), + (11,193,'http://beechactionsystems.org',1), + (12,73,'http://surveyordevelopmentservices.org',1), + (13,61,'http://globaladvocacyinitiative.org',1), + (14,152,'http://thactioncollective.org',1), + (15,51,'http://dowlenpartnership.org',1), + (16,135,'http://delandactionsystems.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -12520,7 +12487,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2023-09-07 8:14:06 +-- Dump completed on 2023-09-07 8:52:22 -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | diff --git a/civicrm/sql/civicrm_navigation.mysql b/civicrm/sql/civicrm_navigation.mysql index e4009f9fc7..f3077165d7 100644 --- a/civicrm/sql/civicrm_navigation.mysql +++ b/civicrm/sql/civicrm_navigation.mysql @@ -344,8 +344,8 @@ SET @usersPermslastID:=LAST_INSERT_ID(); INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) VALUES - ( @domainID, 'civicrm/admin/access?reset=1', 'Permissions (Access Control)', 'Permissions (Access Control)', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 1 ), - ( @domainID, 'civicrm/admin/synchUser?reset=1', 'Synchronize Users to Contacts', 'Synchronize Users to Contacts', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 2 ); + ( @domainID, 'civicrm/admin/access?reset=1', 'Access Control Lists', 'Permissions (Access Control)', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 5 ), + ( @domainID, 'civicrm/admin/synchUser?reset=1', 'Synchronize Users to Contacts', 'Synchronize Users to Contacts', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 10 ); INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) diff --git a/civicrm/templates/CRM/Admin/Form/Job.tpl b/civicrm/templates/CRM/Admin/Form/Job.tpl index f3e14eed70..d2c0582808 100644 --- a/civicrm/templates/CRM/Admin/Form/Job.tpl +++ b/civicrm/templates/CRM/Admin/Form/Job.tpl @@ -18,7 +18,7 @@ {elseif $action eq 4} <div class="messages status no-popup"> {icon icon="fa-info-circle"}{/icon} - {ts 1=$jobName}Are you sure you would like to execute %1 job?{/ts} + {ts 1=$jobName|escape:html}Are you sure you would like to execute %1 job?{/ts} </div> {else} <div class="help"> diff --git a/civicrm/templates/CRM/Admin/Form/MailSettings.hlp b/civicrm/templates/CRM/Admin/Form/MailSettings.hlp index fac9cf4bc6..c28a53feb2 100644 --- a/civicrm/templates/CRM/Admin/Form/MailSettings.hlp +++ b/civicrm/templates/CRM/Admin/Form/MailSettings.hlp @@ -8,10 +8,6 @@ +--------------------------------------------------------------------+ *} -{htxt id="is_non_case_email_skipped-title"} - {ts}Skip emails which do not have a Case ID or Case hash{/ts} -{/htxt} - {htxt id="is_non_case_email_skipped"} <p>{ts}CiviCRM has functionality to file emails which contain the Case ID or Case Hash in the subject line in the format [case #1234] against a case record.{/ts}</p> <p>{ts}Where the Case ID or Case Hash is not included CiviCRM will file the email against the contact record, by matching the email addresses on the email with any email addresses of Contact records in CiviCRM.{/ts}</p> @@ -20,11 +16,15 @@ <p>{ts}If email is skipped, no activities or contacts ("from"/"to"/"cc"/"bcc") will be created.{/ts}</p> {/htxt} -{htxt id="is_contact_creation_disabled_if_no_match-title"} - {ts}Do not create new contacts when filing emails{/ts} -{/htxt} - {htxt id="is_contact_creation_disabled_if_no_match"} <p>{ts}If this option is enabled, CiviCRM will not create new contacts ("from"/"to"/"cc"/"bcc") when filing emails.{/ts}</p> <p>{ts}If the email subject contains a valid Case ID or Case hash, the email will be filed against the case.{/ts}</p> {/htxt} + +{htxt id="id-activity_type_id"} + {ts}The default activity type is Inbound Email, a special type that can only be edited by users with a specific permission to help prevent details of inbound emails from being changed, but you can also use your own activity type as well, bearing in mind that these activities can be edited as usual.{/ts} +{/htxt} + +{htxt id="id-activity_source"} + {ts}An activity can only have one source contact, so if you choose a field that can have more than one email (To, CC or BCC), only the first email will be used.{/ts} +{/htxt} diff --git a/civicrm/templates/CRM/Admin/Form/MailSettings.tpl b/civicrm/templates/CRM/Admin/Form/MailSettings.tpl index 27218a6fb7..896ce07000 100644 --- a/civicrm/templates/CRM/Admin/Form/MailSettings.tpl +++ b/civicrm/templates/CRM/Admin/Form/MailSettings.tpl @@ -55,7 +55,17 @@ <tr class="crm-mail-settings-form-block-is_contact_creation_disabled_if_no_match"><td class="label"> </td><td>{$form.is_contact_creation_disabled_if_no_match.html}{$form.is_contact_creation_disabled_if_no_match.label} {help id='is_contact_creation_disabled_if_no_match'}</td></tr> - <tr class="crm-mail-settings-form-block-activity_status"><td class="label"> </td><td>{$form.activity_status.label}<div>{$form.activity_status.html}</div></td></tr> + <tr class="crm-mail-settings-form-block-activity_type_id"><td class="label">{$form.activity_type_id.label} {help id='id-activity_type_id'}</td><td>{$form.activity_type_id.html}</td></tr> + + <tr class="crm-mail-settings-form-block-activity_status"><td class="label">{$form.activity_status.label}</td><td>{$form.activity_status.html}</td></tr> + + {include file="CRM/Campaign/Form/addCampaignToComponent.tpl" campaignTrClass="crm-mail-settings-form-block-campaign_id"} + + <tr class="crm-mail-settings-form-block-activity_source"><td class="label">{$form.activity_source.label} {help id='id-activity_source'}</td><td>{$form.activity_source.html}</td></tr> + <tr class="crm-mail-settings-form-block-activity_targets"><td class="label">{$form.activity_targets.label}</td><td>{$form.activity_targets.html}</td></tr> + <tr class="crm-mail-settings-form-block-activity_assignees"><td class="label">{$form.activity_assignees.label}</td><td>{$form.activity_assignees.html}</td></tr> + + <tr class="crm-mail-settings-form-block-is_active"><td class="label">{$form.is_active.label}</td><td>{$form.is_active.html}</td></tr> </table> <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> @@ -71,6 +81,12 @@ '.crm-mail-settings-form-block-activity_status', '.crm-mail-settings-form-block-is_non_case_email_skipped', '.crm-mail-settings-form-block-is_contact_creation_disabled_if_no_match', + '.crm-mail-settings-form-block-activity_type_id', + '.crm-mail-settings-form-block-campaign_id', + '.crm-mail-settings-form-block-activity_source', + '.crm-mail-settings-form-block-activity_targets', + '.crm-mail-settings-form-block-activity_assignees', + '.crm-mail-settings-form-block-is_active', ]; $(fields.join(', '), $form).toggle($(this).val() === '0'); } diff --git a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl index ec8a9d2fe0..f9db4a0f72 100644 --- a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl +++ b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl @@ -9,300 +9,337 @@ *} {* This template is used for adding/scheduling reminders. *} <div class="crm-block crm-form-block crm-scheduleReminder-form-block"> + {if $action eq 8} + <div class="messages status no-popup"> + {icon icon="fa-info-circle"}{/icon} + {ts 1=$reminderName}WARNING: You are about to delete the Reminder titled <strong>%1</strong>.{/ts} {ts}Do you want to continue?{/ts} + </div> + {else} + <table class="form-layout-compressed"> + <tr class="crm-scheduleReminder-form-block-title"> + <td class="label">{$form.title.label}</td> + <td>{$form.title.html}</td> + </tr> + <tr {if $mappingId}style="display:none"{/if}> + <td class="label">{$form.mapping_id.label}</td> + <td>{$form.mapping_id.html}</td> + </tr> + <tr> + <td class="label">{$form.entity_value.label}</td> + <td>{$form.entity_value.html}</td> + </tr> + <tr> + <td class="label">{$form.entity_status.label}</td> + <td>{$form.entity_status.html}</td> + </tr> -{if $action eq 8} - <div class="messages status no-popup"> - {icon icon="fa-info-circle"}{/icon} - {ts 1=$reminderName}WARNING: You are about to delete the Reminder titled <strong>%1</strong>.{/ts} {ts}Do you want to continue?{/ts} - </div> -{else} - <table class="form-layout-compressed"> - <tr class="crm-scheduleReminder-form-block-title"> - <td class="right">{$form.title.label}</td><td colspan="3">{$form.title.html}</td> - </tr> - <tr> - <td class="label">{$form.entity.label}</td> - <td>{$form.entity.html}</td> - </tr> + <tr class="crm-scheduleReminder-form-block-when"> + <td class="label">{$form.absolute_or_relative_date.label}</td> + <td> + {$form.absolute_or_relative_date.html} + {help id="relative_absolute_schedule_dates"} + {$form.absolute_date.html} + </td> + </tr> - <tr class="crm-scheduleReminder-form-block-when"> - <td class="right">{$form.start_action_offset.label}</td> - <td colspan="3">{$form.absolute_date.html} <strong id='OR'>{ts}OR{/ts}</strong><br /></td> - </tr> + <tr class="crm-scheduleReminder-form-block-description"> + <td class="label"></td> + <td> + {$form.start_action_offset.html} + {$form.start_action_unit.html} + {$form.start_action_condition.html} + {$form.start_action_date.html} + </td> + </tr> + <tr class="crm-scheduleReminder-effective_start_date"> + <td class="label">{$form.effective_start_date.label}</td> + <td> + {$form.effective_start_date.html} + {$form.effective_end_date.label} + {$form.effective_end_date.html} + <div class="description">{ts}Earliest and latest trigger dates to include.{/ts}</div> + </td> + <tr id="relativeDateRepeat" class="crm-scheduleReminder-form-block-is_repeat"><td class="label">{$form.is_repeat.label}</td> + <td>{$form.is_repeat.html}</td> + </tr> + <tr class="crm-scheduleReminder-form-block-repetition_frequency_interval"> + <td class="label">{$form.repetition_frequency_interval.label} <span class="crm-marker">*</span></td> + <td>{$form.repetition_frequency_interval.html} {$form.repetition_frequency_unit.html}</td> + </tr> + <tr class="crm-scheduleReminder-form-block-repetition_frequency_interval"> + <td class="label">{$form.end_frequency_interval.label} <span class="crm-marker">*</span></td> + <td>{$form.end_frequency_interval.html} {$form.end_frequency_unit.html} {$form.end_action.html} {$form.end_date.html}</td> + </tr> + <tr id="recordActivity" class="crm-scheduleReminder-form-block-record_activity"><td class="label">{$form.record_activity.label}</td> + <td>{$form.record_activity.html}</td> + </tr> + <tr class="crm-scheduleReminder-form-block-recipient"> + <td id="recipientLabel" class="label">{$form.recipient.label}</td> + <td> + <span> + {$form.limit_to.html} {help id="limit_to" class="limit_to" title=$form.recipient.label} + </span> + <span> + {$form.recipient.html} + </span> + </td> + </tr> + <tr class="crm-scheduleReminder-form-block-recipientListing recipient"> + <td class="label">{$form.recipient_listing.label}</td><td>{$form.recipient_listing.html}</td> + </tr> + <tr class="crm-scheduleReminder-form-block-recipient_manual recipient"> + <td class="label">{$form.recipient_manual.label} <span class="crm-marker">*</span></td> + <td>{$form.recipient_manual.html}</td> + </tr> - <tr id="relativeDate" class="crm-scheduleReminder-form-block-description"> - <td class="right"></td> - <td colspan="3"> - {$form.start_action_offset.html} {$form.start_action_unit.html} {$form.start_action_condition.html} {$form.start_action_date.html} - {if $context === "event"} {help id="relative_absolute_schedule_dates"}{/if} - </td> - </tr> - <tr id="recordActivity" class="crm-scheduleReminder-form-block-record_activity"><td class="label" width="20%">{$form.record_activity.label}</td> - <td>{$form.record_activity.html}</td> - </tr> - <tr id="relativeDateRepeat" class="crm-scheduleReminder-form-block-is_repeat"><td class="label" width="20%">{$form.is_repeat.label}</td> - <td>{$form.is_repeat.html}</td> - </tr> - <tr id="repeatFields" class="crm-scheduleReminder-form-block-repeatFields"><td></td><td> - <table class="form-layout-compressed"> - <tr class="crm-scheduleReminder-form-block-repetition_frequency_interval"> - <td class="label">{$form.repetition_frequency_interval.label} <span class="crm-marker">*</span> {$form.repetition_frequency_interval.html}</td> - <td>{$form.repetition_frequency_unit.html}</td> + <tr class="crm-scheduleReminder-form-block-recipient_group_id recipient"> + <td class="label">{$form.group_id.label} <span class="crm-marker">*</span></td> + <td>{$form.group_id.html}</td> + </tr> + {if $sms} + <tr id="msgMode" class="crm-scheduleReminder-form-block-mode"> + <td class="label">{$form.mode.label}</td> + <td>{$form.mode.html}</td> </tr> - <tr class="crm-scheduleReminder-form-block-repetition_frequency_interval"> - <td class="label">{$form.end_frequency_interval.label} <span class="crm-marker">*</span> {$form.end_frequency_interval.html} - <td>{$form.end_frequency_unit.html} {$form.end_action.html} {$form.end_date.html}</td> + {/if} + {if $multilingual} + <tr class="crm-scheduleReminder-form-block-filter-contact-language"> + <td class="label">{$form.filter_contact_language.label}</td> + <td>{$form.filter_contact_language.html} {help id="filter_contact_language"}</td> </tr> - </table> - </td> - </tr> - <tr class="crm-scheduleReminder-effective_start_date"> - <td class="right">{$form.effective_start_date.label}</td> - <td colspan="3">{$form.effective_start_date.html} <div class="description">{ts}Earliest trigger date to <em>include</em>.{/ts}</div></td> - </tr> - <tr class="crm-scheduleReminder-effective_end_date"> - <td class="right">{$form.effective_end_date.label}</td> - <td colspan="3">{$form.effective_end_date.html} <div class="description">{ts}Earliest trigger date to <em>exclude</em>.{/ts}</div></td> - </tr> - <tr> - <td class="label" width="20%">{$form.from_name.label}</td> - <td>{$form.from_name.html} {help id="id-from_name_email"}</td> - </tr> - <tr> - <td class="label" width="20%">{$form.from_email.label}</td> - <td>{$form.from_email.html} </td> - </tr> - <tr class="crm-scheduleReminder-form-block-recipient"> - <td id="recipientLabel" class="right">{$form.recipient.label}</td><td colspan="3">{$form.limit_to.html} {help id="limit_to" class="limit_to" title=$form.recipient.label}{$form.recipient.html} {help id="recipient" class="recipient" title=$recipientLabels.activity}</td> - </tr> - <tr id="recipientList" class="crm-scheduleReminder-form-block-recipientListing recipient"> - <td class="right">{$form.recipient_listing.label}</td><td colspan="3">{$form.recipient_listing.html}</td> - </tr> - <tr id="recipientManual" class="crm-scheduleReminder-form-block-recipient_manual_id recipient"> - <td class="label">{$form.recipient_manual_id.label}</td> - <td>{$form.recipient_manual_id.html}</td> - </tr> - - <tr id="recipientGroup" class="crm-scheduleReminder-form-block-recipient_group_id recipient"> - <td class="label">{$form.group_id.label}</td> - <td>{$form.group_id.html}</td> - </tr> - {if !empty($form.mode)} - <tr id="msgMode" class="crm-scheduleReminder-form-block-mode"> - <td class="label">{$form.mode.label}</td> - <td>{$form.mode.html}</td> - </tr> - {/if} - {if !empty($multilingual)} - <tr class="crm-scheduleReminder-form-block-filter-contact-language"> - <td class="label">{$form.filter_contact_language.label}</td> - <td>{$form.filter_contact_language.html} {help id="filter_contact_language"}</td> - </tr> - <tr class="crm-scheduleReminder-form-block-communication-language"> - <td class="label">{$form.communication_language.label}</td> - <td>{$form.communication_language.html} {help id="communication_language"}</td> - </tr> - {/if} - <tr class="crm-scheduleReminder-form-block-active"> - <td class="label">{$form.is_active.label}</td> - <td>{$form.is_active.html}</td> - </tr> - </table> - <fieldset id="email" class="crm-collapsible" style="display: block;"> - <legend class="collapsible-title">{ts}Email Screen{/ts}</legend> - <div> - <table id="email-field-table" class="form-layout-compressed"> - <tr class="crm-scheduleReminder-form-block-template"> - <td class="label">{$form.template.label}</td> - <td>{$form.template.html}</td> - </tr> - <tr class="crm-scheduleReminder-form-block-subject"> - <td class="label">{$form.subject.label}</td> - <td> - {$form.subject.html|crmAddClass:huge} - <input class="crm-token-selector big" data-field="subject" /> - {help id="id-token-subject" file="CRM/Contact/Form/Task/Email.hlp"} - </td> - </tr> - </table> - {include file="CRM/Contact/Form/Task/EmailCommon.tpl" upload=1 noAttach=1} - </div> - </fieldset> - {if !empty($sms)} - <fieldset id="sms" class="crm-collapsible"><legend class="collapsible-title">{ts}SMS Screen{/ts}</legend> - <div> - <table id="sms-field-table" class="form-layout-compressed"> - <tr id="smsProvider" class="crm-scheduleReminder-form-block-sms_provider_id"> - <td class="label">{$form.sms_provider_id.label}</td> - <td>{$form.sms_provider_id.html}</td> + <tr class="crm-scheduleReminder-form-block-communication-language"> + <td class="label">{$form.communication_language.label}</td> + <td>{$form.communication_language.html} {help id="communication_language"}</td> </tr> - <tr class="crm-scheduleReminder-form-block-sms-template"> - <td class="label">{$form.SMStemplate.label}</td> - <td>{$form.SMStemplate.html}</td> - </tr> - </table> - {include file="CRM/Contact/Form/Task/SMSCommon.tpl" upload=1 noAttach=1} - <div> - </fieldset> - {/if} - -{include file="CRM/common/showHideByFieldValue.tpl" - trigger_field_id = "is_repeat" - trigger_value = "true" - target_element_id = "repeatFields" - target_element_type = "table-row" - field_type = "radio" - invert = "false" -} - -{include file="CRM/common/showHideByFieldValue.tpl" - trigger_field_id ="recipient" - trigger_value = 'manual' - target_element_id ="recipientManual" - target_element_type ="table-row" - field_type ="select" - invert = 0 -} - -{include file="CRM/common/showHideByFieldValue.tpl" - trigger_field_id ="recipient" - trigger_value = 'group' - target_element_id ="recipientGroup" - target_element_type ="table-row" - field_type ="select" - invert = 0 -} + {/if} + <tr class="crm-scheduleReminder-form-block-active"> + <td class="label">{$form.is_active.label}</td> + <td>{$form.is_active.html}</td> + </tr> + </table> + <fieldset id="email-section" class="crm-collapsible" style="display: block;"> + <legend class="collapsible-title">{ts}Email{/ts}</legend> + <div> + <table id="email-field-table" class="form-layout-compressed"> + <tr> + <td class="label">{$form.from_name.label}</td> + <td> + {$form.from_name.html} + {$form.from_email.label} + {$form.from_email.html} + {help id="id-from_name_email"} + </td> + </tr> + <tr class="crm-scheduleReminder-form-block-template"> + <td class="label">{$form.template.label}</td> + <td>{$form.template.html}</td> + </tr> + <tr class="crm-scheduleReminder-form-block-subject"> + <td class="label">{$form.subject.label}</td> + <td> + {$form.subject.html|crmAddClass:huge} + <input class="crm-token-selector big" data-field="subject" /> + {help id="id-token-subject" file="CRM/Contact/Form/Task/Email.hlp"} + </td> + </tr> + </table> + {include file="CRM/Contact/Form/Task/EmailCommon.tpl" upload=1 noAttach=1} + </div> + </fieldset> + {if $sms} + <fieldset id="sms-section" class="crm-collapsible"><legend class="collapsible-title">{ts}SMS{/ts}</legend> + <div> + <table id="sms-field-table" class="form-layout-compressed"> + <tr class="crm-scheduleReminder-form-block-sms_provider_id"> + <td class="label">{$form.sms_provider_id.label} <span class="crm-marker">*</span></td> + <td>{$form.sms_provider_id.html}</td> + </tr> + <tr class="crm-scheduleReminder-form-block-sms-template"> + <td class="label">{$form.SMStemplate.label}</td> + <td>{$form.SMStemplate.html}</td> + </tr> + </table> + {include file="CRM/Contact/Form/Task/SMSCommon.tpl" upload=1 noAttach=1} + <div> + </fieldset> + {/if} -{literal} - <script type='text/javascript'> - CRM.$(function($) { - var $form = $('form.{/literal}{$form.formClass}{literal}'), - recipientMapping = eval({/literal}{$recipientMapping}{literal}); + {literal} + <script type='text/javascript'> + (function($, _) { + $(function($) { + const $form = $('form.{/literal}{$form.formClass}{literal}'), + controlFields = {/literal}{$controlFields|@json_encode}{literal}, + recurringFrequencyOptions = {/literal}{$recurringFrequencyOptions|@json_encode}{literal}; - $('#absolute_date', $form).change(function() { - $('.crm-scheduleReminder-effective_start_date, .crm-scheduleReminder-effective_end_date').toggle(($(this).val() === null)); - }); - $('#start_action_offset', $form).change(function() { - $('.crm-scheduleReminder-effective_start_date, .crm-scheduleReminder-effective_end_date').toggle(($(this).val() !== null)); - }); + // Reload metadata when a controlField is changed + $form.on('change', 'input', function() { + if (controlFields.includes(this.name)) { + const values = {} + controlFields.forEach(function(fieldName) { + const $input = $('[name=' + fieldName + ']', $form); + values[fieldName] = $input.data('select2') ? $input.select2('val') : $input.val(); + }); + // Get directly dependent fields + let $dependentFields = $('[controlField=' + this.name + ']', $form); + // Get sub-dependencies (fortunately the dependency depth doesn't go deeper) + $('[controlField=' + this.name + ']').each(function() { + $dependentFields = $dependentFields.add($('[controlField=' + this.name + ']', $form).not($dependentFields)); + }) + $dependentFields.addClass('loading').prop('disabled', true).val(''); + toggleRecipientManualGroup(); + const dependentFieldNames = $dependentFields.map((i, element) => $(element).attr('name')).get(); + CRM.api4('ActionSchedule', 'getFields', { + select: ['name', 'label', 'options', 'input_attrs', 'required'], + action: 'create', + loadOptions: ['id', 'label'], + values: values, + where: [['name', 'IN', dependentFieldNames]] + }).then(function(fieldSpecs) { + fieldSpecs.forEach(function(fieldSpec) { + const $field = $('input[name=' + fieldSpec.name + ']', $form), + $label = $('label[for=' + fieldSpec.name + ']', $form); + $label.text(fieldSpec.label); + if (fieldSpec.required) { + $label.append(' <span class="crm-marker">*</span>') + } + $field.removeClass('loading'); + // Show field and update option list if applicable + if (fieldSpec.options) { + fieldSpec.options.forEach(function(option) { + option.text = option.label; + delete(option.label); + option.id = '' + option.id; + }); + // Only one option. Select it. + if (fieldSpec.options.length === 1) { + $field.val(fieldSpec.options[0].id); + } + $field.prop('disabled', false).closest('tr').show(); + $field.crmSelect2('destroy'); + $field.crmSelect2({ + multiple: !!fieldSpec.input_attrs.multiple, + data: fieldSpec.options + }); + } else { + // No options - hide field + $field.closest('tr').hide(); + } + }); + toggleLimitTo(); + toggleAbsoluteRelativeDate(); + toggleRepeatSection(); + toggleRecipient(); + }); + } + }); - $('#absolute_date_display', $form).change(function() { - if($(this).val()) { - $('#relativeDate, #relativeDateRepeat, #repeatFields, #OR', $form).hide(); - } else { - $('#relativeDate, #relativeDateRepeat, #OR', $form).show(); - } - }); - if ($('#absolute_date_display', $form).val()) { - $('#relativeDate, #relativeDateRepeat, #repeatFields, #OR', $form).hide(); - } + // Hide dependent fields with no options + $('input[controlField]', $form).each(function() { + if (!getSelect2Options($(this)).length) { + $(this).closest('tr').hide(); + } + }); - loadMsgBox(); - $('#mode', $form).change(loadMsgBox); + // Pluralize frequency options + function pluralizeUnits() { + CRM.utils.setOptions($('[controlField=' + $(this).attr('name') + ']', $form), + $(this).val() === '1' ? recurringFrequencyOptions.single : recurringFrequencyOptions.plural); + } + $('[name=start_action_offset],[name=repetition_frequency_interval],[name=end_frequency_interval]', $form).each(pluralizeUnits).change(pluralizeUnits); - function populateRecipient() { - var mappingID = $('#entity_0', $form).val() || $('[name^=mappingID]', $form).val(); - var recipient = $("#recipient", $form).val(); - $("#recipientList", $form).hide(); - if ($('#limit_to').val() != '' ) { - $.getJSON(CRM.url('civicrm/ajax/recipientListing'), {mappingID: mappingID, recipientType: recipient}, - function (result) { - if (!CRM._.isEmpty(result.recipients)) { - CRM.utils.setOptions($('#recipient_listing', $form), result.recipients); - $("#recipientList", $form).show(); + // If limit_to field has only one option, select it and hide it + function toggleLimitTo() { + const $limitTo = $('[name=limit_to]', $form), + limitToOptions = getSelect2Options($limitTo); + if (limitToOptions.length < 2) { + $limitTo.val(limitToOptions[0].id).closest('span').hide(); + } else { + $limitTo.closest('span').show(); } } - ); - } - - showHideLimitTo(); - } - // CRM-14070 Hide limit-to when entity is activity - function showHideLimitTo() { - // '1' is the value of "Activity" in the entity select box. - $('#limit_to', $form).toggle(!($('#entity_0', $form).val() == '1')); - if ($('#entity_0', $form).val() != '1' || !($('#entity_0').length)) { - // Some Event entity is selected. - if (['2', '3', '5'].includes($('#entity_0', $form).val()) || {/literal}'{$context}'{literal} === 'event') { - $('#limit_to option[value="2"]', $form).attr('disabled','disabled').removeAttr('selected'); - } - else { - $('#limit_to option[value="2"]', $form).removeAttr('disabled'); - } - // Anything but Activity is selected. - if ($('#limit_to', $form).val() == '') { - $('tr.recipient:visible, #recipientList, #recipient, a.recipient').hide(); - $('a.limit_to').show(); - } - else { - $('a.limit_to, a.recipient').show(); - $('#recipient').css("margin-left", "12px"); - } - $("label[for='recipient']").text('{/literal}{$recipientLabels.other}{literal}'); - } - else { - // Activity is selected. - $('#recipient, a.recipient').show() - $('#recipient').css("margin-left", "-2px"); - $('a.limit_to').hide(); - $("label[for='recipient']").text('{/literal}{$recipientLabels.activity}{literal}'); - } - } + function toggleRecipientManualGroup() { + toggleElementBySelection('recipient', {manual: 'recipient_manual', group: 'group_id'}); + } - $('#recipient', $form).change(populateRecipient); + function toggleAbsoluteRelativeDate() { + toggleElementBySelection('absolute_or_relative_date', {absolute: 'absolute_date', relative: 'start_action_offset'}); + $('.crm-scheduleReminder-effective_start_date, .crm-scheduleReminder-effective_end_date', $form).toggle(($('[name=absolute_or_relative_date]', $form).val() === 'relative')); + } - {/literal}{if !$context}{literal} - var entity = $('#entity_0', $form).val(); - if (!(entity === '2' || entity === '3')) { - $('#recipientList', $form).hide(); - } + function toggleRepeatSection() { + toggleElementBySelection('is_repeat', {'true': 'repetition_frequency_interval,end_frequency_interval'}); + } - $('#entity_0, #limit_to', $form).change(buildSelects); + function toggleRecipient() { + if ($('[name=limit_to]', $form).val()) { + $('[name=recipient]', $form).closest('span').show(); + } else { + $('[name=recipient]', $form).val('').closest('span').hide(); + } + } - buildSelects(); + function toggleEmailOrSms() { + const mode = $('[name=mode]', $form).val(), + showSMS = (mode === 'SMS' || mode === 'User_Preference'); + $('#email-section', $form).toggle(mode !== 'SMS'); + $('#sms-section', $form).toggle(showSMS); + if (showSMS) { + showSaveUpdateChkBox('SMS'); + } + } - function buildSelects() { - var mappingID = $('#entity_0', $form).val(); - var isLimit = $('#limit_to', $form).val(); + // Given an input and a set of {optionVal: 'field1,field2'} pairs, show the field(s) that correspond + // to the selected option, while hiding and clearing the others. + function toggleElementBySelection(controlFieldName, options) { + const $controlField = $('[name=' + controlFieldName + ']', $form), + selectedOption = $controlField.is(':checkbox') ? $controlField.is(':checked').toString() : $controlField.val(); + Object.keys(options).forEach(targetValue => { + const targetFieldNames = options[targetValue].split(','); + targetFieldNames.forEach(function(fieldName) { + const $field = $('[name=' + fieldName + ']', $form); + $field.closest('span,tr').toggle(selectedOption === targetValue); + if (selectedOption !== targetValue && $field.val()) { + $field.val('').change(); + } + }); + }); + } - $.getJSON(CRM.url('civicrm/ajax/mapping'), {mappingID: mappingID, isLimit: isLimit}, - function (result) { - CRM.utils.setOptions($('#start_action_date', $form), result.sel4); - CRM.utils.setOptions($('#end_date', $form), result.sel4); - CRM.utils.setOptions($('#recipient', $form), result.sel5); - recipientMapping = result.recipientMapping; - populateRecipient(); + function getSelect2Options($input) { + const data = $input.data(); + // Use raw data.selectParams if select2 widget hasn't been initialized yet + return data.select2 ? data.select2.opts.data : data.selectParams.data; } - ); - } - {/literal}{else}{literal} - populateRecipient(); - $('#limit_to', $form).change(populateRecipient); - {/literal}{/if}{literal} - function loadMsgBox() { - if (cj('#mode').val() == 'Email' || cj('#mode').val() == 0){ - cj('#sms').hide(); - cj('#email').show(); - } - else if (cj('#mode').val() == 'SMS'){ - cj('#email').hide(); - cj('#sms').show(); - showSaveUpdateChkBox('SMS'); - } - else if (cj('#mode').val() == 'User_Preference'){ - cj('#email').show(); - cj('#sms').show(); - showSaveUpdateChkBox('SMS'); - } - } + $('[name=absolute_or_relative_date]', $form) + .change(toggleAbsoluteRelativeDate) + .change(function() { + if ($(this).val() === 'absolute') { + $('[name=absolute_date]', $form).next().datepicker('show'); + } + }); + + $('[name=is_repeat]', $form).click(toggleRepeatSection); + $('[name=mode]', $form).change(toggleEmailOrSms); + $('[name=limit_to]', $form).change(toggleRecipient); - }); - </script> -{/literal} + // Wait for widgets (select2, datepicker) to be initialized + window.setTimeout(function() { + toggleLimitTo(); + toggleRecipientManualGroup(); + toggleAbsoluteRelativeDate(); + toggleRepeatSection(); + toggleEmailOrSms(); + toggleRecipient(); + }); + }); + })(CRM.$, CRM._); + </script> + {/literal} -{/if} + {/if} - <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> + <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> </div> diff --git a/civicrm/templates/CRM/Admin/Form/Setting/SettingField.tpl b/civicrm/templates/CRM/Admin/Form/Setting/SettingField.tpl index 0ebecbbe7c..7b8ce8101f 100644 --- a/civicrm/templates/CRM/Admin/Form/Setting/SettingField.tpl +++ b/civicrm/templates/CRM/Admin/Form/Setting/SettingField.tpl @@ -2,7 +2,7 @@ <tr class="crm-setting-form-block-{$setting_name}"> <td class="label">{$form.$setting_name.label}</td> <td> - {if !empty($fieldSpec.wrapper_element)} + {if array_key_exists('wrapper_element', $fieldSpec) && !empty($fieldSpec.wrapper_element)} {$fieldSpec.wrapper_element.0|smarty:nodefaults}{$form.$setting_name.html}{$fieldSpec.wrapper_element.1|smarty:nodefaults} {else} {$form.$setting_name.html} diff --git a/civicrm/templates/CRM/Admin/Page/APIExplorer.js b/civicrm/templates/CRM/Admin/Page/APIExplorer.js index 6ef22537bf..e54d6bcd80 100644 --- a/civicrm/templates/CRM/Admin/Page/APIExplorer.js +++ b/civicrm/templates/CRM/Admin/Page/APIExplorer.js @@ -808,36 +808,6 @@ }); } - /** - * Fetch list of example files for a given entity - */ - function getExamples() { - CRM.utils.setOptions($('#example-action').prop('disabled', true).addClass('loading'), []); - $.getJSON(CRM.url('civicrm/ajax/apiexample', {entity: $(this).val()})) - .then(function(result) { - CRM.utils.setOptions($('#example-action').prop('disabled', false).removeClass('loading'), result); - }); - } - - /** - * Fetch and display an example file - */ - function getExample() { - var - entity = $('#example-entity').val(), - action = $('#example-action').val(); - if (entity && action) { - $('#example-result').block(); - $.get(CRM.url('civicrm/ajax/apiexample', {file: entity + '/' + action})) - .then(function(result) { - $('#example-result').unblock().text(result); - prettyPrint('#example-result'); - }); - } else { - $('#example-result').text($('#example-result').attr('placeholder')); - } - } - /** * Fetch entity docs & actions */ @@ -1002,7 +972,7 @@ }); // Initialize widgets - $('#api-entity, #example-entity, #doc-entity').crmSelect2({ + $('#api-entity, #doc-entity').crmSelect2({ // Add strikethough class to selection to indicate deprecated apis formatSelection: function(option) { return $(option.element).hasClass('strikethrough') ? '<span class="strikethrough">' + option.text + '</span>' : option.text; @@ -1051,8 +1021,6 @@ items: '.api-chain-row, .api-param-row' }); $('#api-join').on('change', 'input', onSelectJoin); - $('#example-entity').on('change', getExamples); - $('#example-action').on('change', getExample); $('#doc-entity').on('change', getDocEntity); $('#doc-action').on('change', getDocAction); $('#api-params-add').on('click', function(e) { diff --git a/civicrm/templates/CRM/Admin/Page/APIExplorer.tpl b/civicrm/templates/CRM/Admin/Page/APIExplorer.tpl index 6e97653060..f541fcb568 100644 --- a/civicrm/templates/CRM/Admin/Page/APIExplorer.tpl +++ b/civicrm/templates/CRM/Admin/Page/APIExplorer.tpl @@ -23,8 +23,7 @@ max-height: 50em; } pre#api-result, - div#doc-result, - pre#example-result { + div#doc-result { padding:1em; border: 1px solid lightgrey; margin-top: 1em; @@ -234,9 +233,6 @@ <li class="ui-corner-all" title="GUI to build and execute API calls"> <a href="#explorer-tab"><i class="crm-i fa-search" aria-hidden="true"></i> {ts}Explorer{/ts}</a> </li> - <li class="ui-corner-all" title="Auto-generated examples from the test suite"> - <a href="#examples-tab"><i class="crm-i fa-book" aria-hidden="true"></i> {ts}Examples{/ts}</a> - </li> <li class="ui-corner-all" title="API source-code and code-level documentation"> <a href="#docs-tab"><i class="crm-i fa-code" aria-hidden="true"></i> {ts}Code Docs{/ts}</a> </li> @@ -320,30 +316,6 @@ </div> </div> - <div id="examples-tab"> - <div class="crm-block crm-form-block"> - <form id="api-examples"> - <label for="example-entity">{ts}Entity{/ts}:</label> - <select class="crm-form-select big required" id="example-entity" name="entity"> - <option value="" selected="selected">{ts}Choose{/ts}...</option> - {foreach from=$examples item=entity} - <option value="{$entity}" {if !empty($entities.deprecated) && in_array($entity, $entities.deprecated)}class="strikethrough"{/if}> - {$entity} - </option> - {/foreach} - </select> - - <label for="example-action">{ts}Example{/ts}:</label> - <select class="crm-form-select big crm-select2" id="example-action" name="action"> - <option value="" selected="selected">{ts}Choose{/ts}...</option> - </select> -<pre id="example-result" class="linenums lang-php" placeholder="{ts escape='html'}Results are displayed here.{/ts}"> -{ts}Results are displayed here.{/ts} -</pre> - </form> - </div> - </div> - <div id="docs-tab"> <div class="crm-block crm-form-block"> <form id="api-docs"> diff --git a/civicrm/templates/CRM/Admin/Page/Access.tpl b/civicrm/templates/CRM/Admin/Page/Access.tpl index db04f7f1c3..dd63c63f47 100644 --- a/civicrm/templates/CRM/Admin/Page/Access.tpl +++ b/civicrm/templates/CRM/Admin/Page/Access.tpl @@ -10,29 +10,36 @@ {capture assign=docUrlText}{ts}Access Control Documentation{/ts}{/capture} {capture assign=docLink}{docURL page="user/initial-set-up/permissions-and-access-control/" text=$docUrlText}{/capture} <div class="help"> - <p>{ts 1=$docLink}ACLs (Access Control Lists) allow you control access to CiviCRM data. An ACL consists of an <strong>Operation</strong> (e.g. 'View' or 'Edit'), a <strong>set of Data</strong> that the operation can be performed on (e.g. a group of contacts), and a <strong>Role</strong> that has permission to do this operation. Refer to the %1 for more info.{/ts} - {if $config->userSystem->is_drupal EQ '1'}{ts}Note that a CiviCRM ACL Role is not related to the Drupal Role.{/ts}{/if}</p> - <p>{ts}<strong>EXAMPLE:</strong> 'Team Leaders' (<em>ACL Role</em>) can 'Edit' (<em>Operation</em>) all contacts in the 'Active Volunteers Group' (<em>Data</em>).{/ts}</p> - <p>{ts 1=$ufAccessURL|smarty:nodefaults 2=$jAccessParams 3=$config->userFramework}Use <a href='%1' %2>%3 Access Control</a> to manage basic access to CiviCRM components and menu items. Use CiviCRM ACLs to control access to specific CiviCRM contact groups. You can also configure ACLs to grant or deny access to specific Events, Profiles, and/or Custom Data Fields.{/ts}</p> - <p>{ts 1=$config->userFramework}Note that %1 Access Control permissions take precedence over CiviCRM ACLs. If you wish to use CiviCRM ACLs, first disable the related permission in %1 Access control for a user role, and then gradually add ACLs to replace that permission for certain groups of contacts.{/ts} + <p>{ts 1=$docLink}ACLs (Access Control Lists) allow you control access to CiviCRM data. An ACL consists of an <strong>Operation</strong> (e.g. 'View' or 'Edit'), a <strong>set of Data</strong> that the operation can be performed on (e.g. a group of contacts), and a <strong>Role</strong> that has permission to do this operation. Refer to the %1 for more info.{/ts} + {if $config->userSystem->is_drupal EQ '1'}{ts}Note that a CiviCRM ACL Role is not related to the Drupal Role.{/ts}{/if}</p> + <p>{ts}<strong>EXAMPLE:</strong> 'Team Leaders' (<em>ACL Role</em>) can 'Edit' (<em>Operation</em>) all contacts in the 'Active Volunteers Group' (<em>Data</em>).{/ts}</p> + <p>{ts}CiviCRM ACLs can control access to specific CiviCRM contact groups. You can also configure ACLs to grant or deny access to specific Events, Profiles or Custom Data Fields.{/ts}</p> + {if $config->userFramework == 'Standalone'} + <p>{ts 1=$ufAccessURL|smarty:nodefaults}Note that <a href="%1">User Role</a> permissions take precedence over CiviCRM ACLs. If you wish to use CiviCRM ACLs, first disable the related permission in User Roles, and then gradually add ACLs to replace that permission for certain groups of contacts.{/ts} + {else} + <p>{ts 1=$ufAccessURL|smarty:nodefaults 2=$jAccessParams 3=$config->userFramework}Note that <a href='%1' %2>%3 permissions</a> take precedence over CiviCRM ACLs. If you wish to use CiviCRM ACLs, first disable the related permission in %3 for a user role, and then gradually add ACLs to replace that permission for certain groups of contacts.{/ts} + {/if} </div> - - <table class="report"> - <tr> - <td class="nowrap"><a href="{$ufAccessURL|smarty:nodefaults}" {$jAccessParams} id="adminAccess"><i class="crm-i fa-chevron-right fa-fw" aria-hidden="true"></i> {ts 1=$config->userFramework}%1 Access Control{/ts}</a></td> - <td>{ts}Grant access to CiviCRM components and other CiviCRM permissions.{/ts}</td> - </tr> - <tr><td colspan="2" class="separator"><strong>{ts}Use following steps if you need to control View and/or Edit permissions for specific contact groups, specific profiles or specific custom data fields.{/ts}</strong></td></tr> - <tr> - <td class="nowrap"><a href="{crmURL p='civicrm/admin/options/acl_role' q="reset=1"}" id="editACLRoles"><i class="crm-i fa-users fa-fw" aria-hidden="true"></i> {ts}1. Manage Roles{/ts}</a></td> - <td>{ts}Each CiviCRM ACL Role is assigned a set of permissions. Use this link to create or edit the different roles needed for your site.{/ts}</td> - </tr> - <tr> - <td class="nowrap"><a href="{crmURL p='civicrm/acl/entityrole' q="reset=1"}" id="editRoleAssignments"><i class="crm-i fa-user-plus fa-fw" aria-hidden="true"></i> {ts}2. Assign Users to CiviCRM ACL Roles{/ts}</a></td> - <td>{ts}Once you have defined CiviCRM ACL Roles and granted ACLs to those Roles, use this link to assign users to role(s).{/ts}</td> - </tr> - <tr> - <td class="nowrap"><a href="{crmURL p='civicrm/acl' q="reset=1"}" id="editACLs"><i class="crm-i fa-id-card-o fa-fw" aria-hidden="true"></i> {ts}3. Manage ACLs{/ts}</a></td> - <td>{ts}ACLs define permission to do an operation on a set of data, and grant that permission to a CiviCRM ACL Role. Use this link to create or edit the ACLs for your site.{/ts}</td> - </tr> - </table> +<table class="report"> + <tr> + {if $config->userFramework == 'Standalone'} + <td class="nowrap"><a href="{$ufAccessURL|smarty:nodefaults}" id="adminAccess"><i class="crm-i fa-chevron-right fa-fw" aria-hidden="true"></i>{ts}User Roles{/ts}</a></td> + {else} + <td class="nowrap"><a href="{$ufAccessURL|smarty:nodefaults}" {$jAccessParams} id="adminAccess"><i class="crm-i fa-chevron-right fa-fw" aria-hidden="true"></i> {ts 1=$config->userFramework}%1 Permissions{/ts}</a></td> + {/if} + <td>{ts}Grant access to CiviCRM components and other CiviCRM permissions.{/ts}</td> + </tr> + <tr><td colspan="2" class="separator"><strong>{ts}Use following steps if you need to control View and/or Edit permissions for specific contact groups, specific profiles or specific custom data fields.{/ts}</strong></td></tr> + <tr> + <td class="nowrap"><a href="{crmURL p='civicrm/admin/options/acl_role' q="reset=1"}" id="editACLRoles"><i class="crm-i fa-users fa-fw" aria-hidden="true"></i> {ts}1. Manage Roles{/ts}</a></td> + <td>{ts}Each CiviCRM ACL Role is assigned a set of permissions. Use this link to create or edit the different roles needed for your site.{/ts}</td> + </tr> + <tr> + <td class="nowrap"><a href="{crmURL p='civicrm/acl/entityrole' q="reset=1"}" id="editRoleAssignments"><i class="crm-i fa-user-plus fa-fw" aria-hidden="true"></i> {ts}2. Assign Users to CiviCRM ACL Roles{/ts}</a></td> + <td>{ts}Once you have defined CiviCRM ACL Roles and granted ACLs to those Roles, use this link to assign users to role(s).{/ts}</td> + </tr> + <tr> + <td class="nowrap"><a href="{crmURL p='civicrm/acl' q="reset=1"}" id="editACLs"><i class="crm-i fa-id-card-o fa-fw" aria-hidden="true"></i> {ts}3. Manage ACLs{/ts}</a></td> + <td>{ts}ACLs define permission to do an operation on a set of data, and grant that permission to a CiviCRM ACL Role. Use this link to create or edit the ACLs for your site.{/ts}</td> + </tr> +</table> diff --git a/civicrm/templates/CRM/Admin/Page/ContactType.tpl b/civicrm/templates/CRM/Admin/Page/ContactType.tpl index 8428faa6f5..d50a4c97b3 100644 --- a/civicrm/templates/CRM/Admin/Page/ContactType.tpl +++ b/civicrm/templates/CRM/Admin/Page/ContactType.tpl @@ -32,7 +32,7 @@ </tr> </thead> {foreach from=$rows item=row} - <tr id="contact_type-{$row.id}" data-action="create" class="{cycle values="odd-row,even-row"} {if !empty($row.class)}{$row.class}{/if} crm-contactType crm-entity {if NOT $row.is_active} disabled{/if}"> + <tr id="contact_type-{$row.id}" data-action="create" class="{cycle values="odd-row,even-row"} {$row.class} crm-contactType crm-entity {if NOT $row.is_active} disabled{/if}"> <td class="crm-contactType-label crm-editable" data-field="label">{ts}{$row.label}{/ts}</td> <td class="crm-contactType-parent">{if $row.parent}{ts}{$row.parent_label}{/ts}{else}{ts}(built-in){/ts}{/if}</td> <td class="crm-contactType-description crm-editable" data-field="description" data-type="textarea">{$row.description}</td> diff --git a/civicrm/templates/CRM/Admin/Page/MailSettings.tpl b/civicrm/templates/CRM/Admin/Page/MailSettings.tpl index 35aa2cd59b..7fce4665dd 100644 --- a/civicrm/templates/CRM/Admin/Page/MailSettings.tpl +++ b/civicrm/templates/CRM/Admin/Page/MailSettings.tpl @@ -13,7 +13,8 @@ <div id="mSettings"> <div class="form-item"> {strip} - <table cellpadding="0" cellspacing="0" border="0" class="row-highlight"> + {include file="CRM/common/enableDisableApi.tpl"} + <table cellpadding="0" cellspacing="0" border="0" class="selector row-highlight"> <thead class="sticky"> <th>{ts}Name{/ts}</th> <th>{ts}Server{/ts}</th> @@ -29,7 +30,7 @@ <th></th> </thead> {foreach from=$rows item=row} - <tr id='rowid{$row.id}' class="crm-mailSettings {cycle values="odd-row,even-row"}"> + <tr id='mail_settings-{$row.id}' class="crm-entity {cycle values="odd-row,even-row"} {if NOT $row.is_active} disabled{/if}"> <td class="crm-mailSettings-name">{$row.name}</td> <td class="crm-mailSettings-server">{$row.server}</td> <td class="crm-mailSettings-username">{$row.username}</td> diff --git a/civicrm/templates/CRM/Admin/Page/Reminders.tpl b/civicrm/templates/CRM/Admin/Page/Reminders.tpl index f4e225f4ef..0418fd99e4 100644 --- a/civicrm/templates/CRM/Admin/Page/Reminders.tpl +++ b/civicrm/templates/CRM/Admin/Page/Reminders.tpl @@ -28,7 +28,7 @@ </thead> {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"}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}"> + <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-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> diff --git a/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl index c5ed999c95..a37ec7e0db 100644 --- a/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl +++ b/civicrm/templates/CRM/Admin/Page/ScheduleReminders.tpl @@ -8,20 +8,13 @@ +--------------------------------------------------------------------+ *} {* this template is for configuring Scheduled Reminders *} -{if !empty($setTab) and $setTab eq 1} - {if !empty($component) and $component eq 'event'} - {include file="CRM/Event/Form/ManageEvent/Tab.tpl"} - {/if} -{else} {if $action eq 1 or $action eq 2 or $action eq 8 or $action eq 16384} {include file="CRM/Admin/Form/ScheduleReminders.tpl"} {else} - {if empty($component)} - {capture assign=schedRemindersDocLink}{docURL page="user/email/scheduled-reminders/"}{/capture} - <div class="help"> - {ts}Scheduled reminders allow you to automatically send messages to contacts regarding their memberships, participation in events, or other activities.{/ts} {$schedRemindersDocLink} - </div> - {/if} + {capture assign=schedRemindersDocLink}{docURL page="user/email/scheduled-reminders/"}{/capture} + <div class="help"> + {ts}Scheduled reminders allow you to automatically send messages to contacts regarding their memberships, participation in events, or other activities.{/ts} {$schedRemindersDocLink} + </div> <div class="crm-content-block crm-block"> {if $rows} <div id="reminder"> @@ -34,14 +27,7 @@ </div> {/if} <div class="action-link"> - {assign var='link' value="civicrm/admin/scheduleReminders/edit"} - {if !empty($component)} - {assign var='urlParams' value="action=add&context=$component&compId=$id&reset=1"} - {else} - {assign var='urlParams' value="action=add&reset=1"} - {/if} - {crmButton p=$link q=$urlParams id="newScheduleReminder" icon="plus-circle"}{ts}Add Reminder{/ts}{/crmButton} + {crmButton p=$addNewLink id="newScheduleReminder" icon="plus-circle"}{ts}Add Reminder{/ts}{/crmButton} </div> </div> {/if} -{/if} diff --git a/civicrm/templates/CRM/Batch/Form/Search.tpl b/civicrm/templates/CRM/Batch/Form/Search.tpl index 66054c2c9c..45b13212f4 100644 --- a/civicrm/templates/CRM/Batch/Form/Search.tpl +++ b/civicrm/templates/CRM/Batch/Form/Search.tpl @@ -11,12 +11,7 @@ <h3>{ts}Data Entry Batches{/ts}</h3> <table class="form-layout-compressed"> <tr> - <td> - {$form.title.html}<br /> - <span class="description font-italic"> - {ts}Complete OR partial batch name.{/ts} - </span> - </td> + <td>{$form.title.html}</td> <td>{include file="CRM/common/formButtons.tpl" location=''}</td> </tr> </table> diff --git a/civicrm/templates/CRM/Case/Form/CaseView.tpl b/civicrm/templates/CRM/Case/Form/CaseView.tpl index 0c2422ba03..fba20e624d 100644 --- a/civicrm/templates/CRM/Case/Form/CaseView.tpl +++ b/civicrm/templates/CRM/Case/Form/CaseView.tpl @@ -24,7 +24,7 @@ <td colspan="5" class="label"> {ts}Clients:{/ts} {foreach from=$caseRoles.client item=client name=clients} - <a href="{crmURL p='civicrm/contact/view' q="action=view&reset=1&cid=`$client.contact_id`"}" title="{ts}View contact record{/ts}">{$client.display_name}</a>{if not $smarty.foreach.clients.last}, {/if} + <a href="{crmURL p='civicrm/contact/view' q="action=view&reset=1&cid=`$client.contact_id`"}" title="{ts}View contact record{/ts}">{$client.display_name}</a>{if count($caseRoles.client) gt 1}<a class="crm-popup crm-hover-button" href="{crmURL p='civicrm/contact/view/case/deleteClient' q="action=delete&reset=1&cid=`$client.contact_id`&id=`$caseId`&rcid=`$contactID`"}" title="{ts}Remove Client{/ts}"><i class="crm-i fa-times" aria-hidden="true"></i></a>{/if}{if not $smarty.foreach.clients.last}, {/if} {/foreach} <a href="#addClientDialog" class="crm-hover-button case-miniform" title="{ts}Add Client{/ts}" data-key="{crmKey name='civicrm/case/ajax/addclient'}"> <i class="crm-i fa-user-plus" aria-hidden="true"></i> diff --git a/civicrm/templates/CRM/Case/Form/DeleteClient.tpl b/civicrm/templates/CRM/Case/Form/DeleteClient.tpl new file mode 100644 index 0000000000..c25999b745 --- /dev/null +++ b/civicrm/templates/CRM/Case/Form/DeleteClient.tpl @@ -0,0 +1,18 @@ +{* + +--------------------------------------------------------------------+ + | 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 | + +--------------------------------------------------------------------+ +*} +{* template for assigning the current case to another client*} +<div class="crm-block crm-form-block crm-case-editclient-form-block"> + <div class="messages status no-popup"> + {icon icon="fa-info-circle"}{/icon} {ts 1=$currentClientName|escape 2=$id}Remove Client %1 from case %2{/ts} + </div> + <div class="crm-form-block"> + <div class="crm-submit-buttons">{include file="CRM/common/formButtons.tpl" location="bottom"}</div> + </div> +</div> diff --git a/civicrm/templates/CRM/Contact/Form/Domain.tpl b/civicrm/templates/CRM/Contact/Form/Domain.tpl index d3d9547eff..d1328bff1c 100644 --- a/civicrm/templates/CRM/Contact/Form/Domain.tpl +++ b/civicrm/templates/CRM/Contact/Form/Domain.tpl @@ -28,15 +28,20 @@ <h3>{ts}Default Organization Address{/ts}</h3> <div class="description">{ts 1={domain.address}}CiviMail mailings must include the sending organization's address. This is done by putting the %1 token in either the body or footer of the mailing. This token may also be used in regular 'Email - send now' messages and in other Message Templates. The token is replaced by the address entered below when the message is sent.{/ts}</div> - {include file="CRM/Contact/Form/Edit/Address.tpl" blockId=1 masterAddress='' parseStreetAddress=''} + {include file="CRM/Contact/Form/Edit/Address.tpl" blockId=1 masterAddress='' parseStreetAddress='' className=''} <h3>{ts}Organization Contact Information{/ts}</h3> <div class="description">{ts}You can also include general email and/or phone contact information in mailings.{/ts} {help id="additional-contact"}</div> <table class="form-layout-compressed"> {* Display the email block *} - {include file="CRM/Contact/Form/Edit/Email.tpl" blockId=1} - - {* Display the phone block *} - {include file="CRM/Contact/Form/Edit/Phone.tpl" blockId=1} + <tr> + <td>{ts}Email{/ts}</td> + <td>{$form.email.1.email.html|crmAddClass:email}</td> + </tr> + <tr> + <td>{ts}Phone{/ts}</td> + <td>{$form.phone.1.phone.html}<span class="crm-phone-ext">{ts context="phone_ext"}ext.{/ts} {$form.phone.1.phone_ext.html|crmAddClass:four} </span></td> + <td colspan="2">{$form.phone.1.phone_type_id.html}</td> + </tr> </table> <div class="spacer"></div> diff --git a/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl b/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl index 42699f2f36..d89db16ae8 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/Address.tpl @@ -69,7 +69,7 @@ </div> {/if} -{if $title and $className eq 'CRM_Contact_Form_Contact'} +{if $className eq 'CRM_Contact_Form_Contact' && $title} </div> </div><!-- /.crm-accordion-body --> </div><!-- /.crm-accordion-wrapper --> diff --git a/civicrm/templates/CRM/Contact/Form/Edit/Email.tpl b/civicrm/templates/CRM/Contact/Form/Edit/Email.tpl index b840175155..80d6008cb2 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/Email.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/Email.tpl @@ -11,6 +11,7 @@ {* @var $form Contains the array for the form elements and other form associated information assigned to the template by the controller*} {* @var $blockId Contains the current email block id in evaluation, and assigned in the CRM/Contact/Form/Location.php file *} +{* note this is only called from CRM_Contact_Form_Contact in core so the className if clauses are not needed & should be phased out *} {if !$addBlock} <tr> <td>{ts}Email{/ts} diff --git a/civicrm/templates/CRM/Contact/Form/Edit/Phone.tpl b/civicrm/templates/CRM/Contact/Form/Edit/Phone.tpl index ff649fc4ba..7e6001697d 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/Phone.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/Phone.tpl @@ -11,6 +11,7 @@ {* @var $form Contains the array for the form elements and other form associated information assigned to the template by the controller*} {* @var blockId Contains the current block id, and assigned in the CRM/Contact/Form/Location.php file *} +{* note this is only called from CRM_Contact_Form_Contact in core so the className if clauses are not needed & should be phased out *} {if !$addBlock} <tr> <td>{ts}Phone{/ts}</td> diff --git a/civicrm/templates/CRM/Contact/Form/Search/Intro.tpl b/civicrm/templates/CRM/Contact/Form/Search/Intro.tpl index 9b95ef688b..1f193c1757 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/Intro.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/Intro.tpl @@ -24,7 +24,7 @@ {if $ssID}{help id="id-add-to-smartGroup"}{/if} {/if} {if $permissionEditSmartGroup} - {capture assign=groupSettingsURL}{crmURL p='civicrm/group' q="action=update&id=`$group.id`&reset=1"}{/capture} + {capture assign=groupSettingsURL}{crmURL p='civicrm/group/edit' q="action=update&id=`$group.id`&reset=1"}{/capture} <a href="{$groupSettingsURL}" class="action-item button"><span><i class="crm-i fa-wrench" aria-hidden="true"></i> {ts}Edit Group Settings{/ts}</span></a> {/if} </div> diff --git a/civicrm/templates/CRM/Contact/Form/Task/SMS.tpl b/civicrm/templates/CRM/Contact/Form/Task/SMS.tpl index b3862f88c4..cde90ede96 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/SMS.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/SMS.tpl @@ -10,7 +10,7 @@ <div class="crm-block crm-form-block crm-contactSMS-form-block"> {if $suppressedSms > 0} <div class="status"> - <p>{ts count=$suppressedSms plural='SMS will NOT be sent to %count contacts - (no phone number on file, or communication preferences specify DO NOT SMS, or contact is deceased).'}SMS will NOT be sent to %count contact - (no phone number on file, or communication preferences specify DO NOT SMS, or contact is deceased).{/ts}</p> + <p>{ts count=$suppressedSms plural='SMS will NOT be sent to %count contacts who have no mobile phone number, who are set to Do not SMS, or who are deceased.'}SMS will NOT be sent to %count contact who has no mobile phone number, who is set to Do not SMS, or who is deceased.{/ts}</p> </div> {/if} {if $extendTargetContacts > 0} diff --git a/civicrm/templates/CRM/Contact/Form/Task/SaveSearch.tpl b/civicrm/templates/CRM/Contact/Form/Task/SaveSearch.tpl index dbbd2477dd..8f52167de0 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/SaveSearch.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/SaveSearch.tpl @@ -39,6 +39,9 @@ <td class="label">{$form.group_type.label}</td> <td>{$form.group_type.html}</td> </tr> + <tr> + <td colspan=2>{include file="CRM/Custom/Form/CustomData.tpl"}</td> + </tr> {/if} </table> diff --git a/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl b/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl index 9c248f2b65..7c18e02018 100644 --- a/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl +++ b/civicrm/templates/CRM/Contact/Page/Inline/Address.tpl @@ -36,7 +36,7 @@ {/if} </div> <div class="crm-content"> - {if !empty($sharedAddresses.$locationIndex.shared_address_display.name)} + {if array_key_exists($locationIndex, $sharedAddresses) && !empty($sharedAddresses.$locationIndex.shared_address_display.name)} <strong>{ts 1=$sharedAddresses.$locationIndex.shared_address_display.name}Address belongs to %1{/ts}</strong><br /> {/if} {$add.display|smarty:nodefaults|purify|nl2br} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/AuthorizeNetARB.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/AuthorizeNetARB.tpl index 970eb4d6cd..55a0a51db4 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/AuthorizeNetARB.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/AuthorizeNetARB.tpl @@ -42,7 +42,7 @@ </billTo> </subscription> </ARBUpdateSubscriptionRequest> -{elseif isset($subscriptionType) && $subscriptionType eq 'update'} +{elseif $subscriptionType eq 'update'} <?xml version="1.0" encoding="utf-8"?> <ARBUpdateSubscriptionRequest xmlns="AnetApi/xml/v1/schema/AnetApiSchema.xsd"> <merchantAuthentication> diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl index 3bd4ebf4fd..d0de9b5044 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl @@ -11,8 +11,6 @@ {include file="CRM/Contribute/Form/Contribution/PreviewHeader.tpl"} {/if} -{include file="CRM/common/TrackingFields.tpl"} - <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-confirm-form-block" data-page-id="{$contributionPageID}" data-page-template="confirm"> <div class="help"> <p>{ts}Please verify the information below carefully. Click <strong>Go Back</strong> if you need to make changes.{/ts} @@ -30,52 +28,49 @@ {if $amount GTE 0 OR $minimum_fee GTE 0 OR ( $isDisplayLineItems and $lineItem ) } <div class="crm-group amount_display-group"> - {if !$useForMember} - <div class="header-dark"> - {if !$membershipBlock AND $amount OR ( $isDisplayLineItems and $lineItem ) }{ts}Contribution Amount{/ts}{else}{ts}Membership Fee{/ts} {/if} - </div> - {/if} + <div class="header-dark"> + {if !$membershipBlock AND $amount OR ( $isDisplayLineItems and $lineItem ) }{ts}Contribution Amount{/ts}{else}{ts}Membership Fee{/ts} {/if} + </div> + <div class="display-block"> - {if !$useForMember} - {if $lineItem and $isDisplayLineItems} - {if !$amount}{assign var="amount" value=0}{/if} - {assign var="totalAmount" value=$amount} - {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"} - {elseif $is_separate_payment } - {if $amount AND $minimum_fee} - {$membership_name} {ts}Membership{/ts}: - <strong>{$minimum_fee|crmMoney}</strong> - <br/> - {ts}Additional Contribution{/ts}: - <strong>{$amount|crmMoney}</strong> - <br/> - <strong> -------------------------------------------</strong> - <br/> - {ts}Total{/ts}: - <strong>{$amount+$minimum_fee|crmMoney}</strong> - <br/> - {elseif $amount } - {ts}Amount{/ts}: - <strong>{$amount|crmMoney} {if $amount_level }<span class='crm-price-amount-label'> - – {$amount_level}</span>{/if}</strong> - {else} - {$membership_name} {ts}Membership{/ts}: - <strong>{$minimum_fee|crmMoney}</strong> - {/if} + {if $lineItem and $isDisplayLineItems} + {if !$amount}{assign var="amount" value=0}{/if} + {assign var="totalAmount" value=$amount} + {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"} + {elseif $is_separate_payment } + {if $amount AND $minimum_fee} + {$membership_name} {ts}Membership{/ts}: + <strong>{$minimum_fee|crmMoney}</strong> + <br/> + {ts}Additional Contribution{/ts}: + <strong>{$amount|crmMoney}</strong> + <br/> + <strong> -------------------------------------------</strong> + <br/> + {ts}Total{/ts}: + <strong>{$amount+$minimum_fee|crmMoney}</strong> + <br/> + {elseif $amount } + {ts}Amount{/ts}: + <strong>{$amount|crmMoney} {if $amount_level }<span class='crm-price-amount-label'> + – {$amount_level}</span>{/if}</strong> {else} - {if $totalTaxAmount } - {ts 1=$taxTerm}Total %1 Amount{/ts}: - <strong>{$totalTaxAmount|crmMoney} </strong> - <br/> - {/if} - {if $amount} - {if $installments}{ts}Installment Amount{/ts}{else}{ts}Total Amount{/ts}{/if}: - <strong>{$amount|crmMoney:$currency}{if $amount_level }<span class='crm-price-amount-label'> - – {$amount_level}</span>{/if}</strong> - {else} - {$membership_name} {ts}Membership{/ts}: - <strong>{$minimum_fee|crmMoney}</strong> - {/if} + {$membership_name} {ts}Membership{/ts}: + <strong>{$minimum_fee|crmMoney}</strong> + {/if} + {else} + {if $totalTaxAmount } + {ts 1=$taxTerm}Total %1 Amount{/ts}: + <strong>{$totalTaxAmount|crmMoney} </strong> + <br/> + {/if} + {if $amount} + {if $installments}{ts}Installment Amount{/ts}{else}{ts}Total Amount{/ts}{/if}: + <strong>{$amount|crmMoney:$currency}{if $amount_level }<span class='crm-price-amount-label'> + – {$amount_level}</span>{/if}</strong> + {else} + {$membership_name} {ts}Membership{/ts}: + <strong>{$minimum_fee|crmMoney}</strong> {/if} {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl index c847f4ea8e..b7f75bb871 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -55,7 +55,6 @@ {crmButton target="_blank" p="civicrm/admin/contribute/settings" q="reset=1&action=update&id=`$contributionPageID`" fb=1 title="$buttonTitle" icon="fa-wrench"}{ts}Configure{/ts}{/crmButton} <div class='clear'></div> {/if} - {include file="CRM/common/TrackingFields.tpl"} <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-main-form-block" data-page-id="{$contributionPageID}" data-page-template="main"> diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl index 8502f4f293..0027c64cdf 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl @@ -11,8 +11,6 @@ {include file="CRM/Contribute/Form/Contribution/PreviewHeader.tpl"} {/if} -{include file="CRM/common/TrackingFields.tpl"} - <div class="crm-contribution-page-id-{$contributionPageID} crm-block crm-contribution-thankyou-form-block" data-page-id="{$contributionPageID}" data-page-template="thankyou"> {if $thankyou_text} <div id="thankyou_text" class="crm-section thankyou_text-section"> @@ -76,35 +74,33 @@ {if $amount GTE 0 OR $minimum_fee GTE 0 OR ( $priceSetID and $lineItem ) } <div class="crm-group amount_display-group"> - {if !$useForMember} - <div class="header-dark"> - {if !$membershipBlock AND $amount OR ( $priceSetID and $lineItem )}{ts}Contribution Information{/ts}{else}{ts}Membership Fee{/ts}{/if} - </div> - {/if} + <div class="header-dark"> + {if !$membershipBlock AND $amount OR ( $priceSetID and $lineItem )}{ts}Contribution Information{/ts}{else}{ts}Membership Fee{/ts}{/if} + </div> + <div class="display-block"> - {if !$useForMember} - {if $lineItem and $priceSetID} - {if !$amount}{assign var="amount" value=0}{/if} - {assign var="totalAmount" value=$amount} - {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"} - {elseif $membership_amount} - {$membership_name} {ts}Membership{/ts}: <strong>{$membership_amount|crmMoney}</strong><br /> - {if $amount} - {if !$is_separate_payment} - {ts}Contribution Amount{/ts}: <strong>{$amount|crmMoney}</strong><br /> - {else} - {ts}Additional Contribution{/ts}: <strong>{$amount|crmMoney}</strong><br /> - {/if} - {/if} - <strong> -------------------------------------------</strong><br /> - {ts}Total{/ts}: <strong>{$amount+$membership_amount|crmMoney}</strong><br /> - {else} - {if $totalTaxAmount} - {ts}Tax Amount{/ts}: <strong>{$totalTaxAmount|crmMoney}</strong><br /> + {if $lineItem and $priceSetID} + {if !$amount}{assign var="amount" value=0}{/if} + {assign var="totalAmount" value=$amount} + {include file="CRM/Price/Page/LineItem.tpl" context="Contribution"} + {elseif $membership_amount} + {$membership_name} {ts}Membership{/ts}: <strong>{$membership_amount|crmMoney}</strong><br /> + {if $amount} + {if !$is_separate_payment} + {ts}Contribution Amount{/ts}: <strong>{$amount|crmMoney}</strong><br /> + {else} + {ts}Additional Contribution{/ts}: <strong>{$amount|crmMoney}</strong><br /> {/if} - {if $installments}{ts}Installment Amount{/ts}{else}{ts}Amount{/ts}{/if}: <strong>{$amount|crmMoney:$currency}{if $amount_level } – {$amount_level}{/if}</strong> {/if} + <strong> -------------------------------------------</strong><br /> + {ts}Total{/ts}: <strong>{$amount+$membership_amount|crmMoney}</strong><br /> + {else} + {if $totalTaxAmount} + {ts}Tax Amount{/ts}: <strong>{$totalTaxAmount|crmMoney}</strong><br /> + {/if} + {if $installments}{ts}Installment Amount{/ts}{else}{ts}Amount{/ts}{/if}: <strong>{$amount|crmMoney:$currency}{if $amount_level } – {$amount_level}{/if}</strong> {/if} + {if $receive_date} {ts}Date{/ts}: <strong>{$receive_date|crmDate}</strong><br /> {/if} diff --git a/civicrm/templates/CRM/Contribute/Form/SearchContribution.tpl b/civicrm/templates/CRM/Contribute/Form/SearchContribution.tpl index a282a719b5..5e154aa135 100644 --- a/civicrm/templates/CRM/Contribute/Form/SearchContribution.tpl +++ b/civicrm/templates/CRM/Contribute/Form/SearchContribution.tpl @@ -11,12 +11,7 @@ <h3>{ts}Find Contribution Pages{/ts}</h3> <table class="form-layout-compressed"> <tr> - <td>{$form.title.html} - <div class="description font-italic"> - {ts}Complete OR partial Contribution Page title.{/ts} - </div> - </td> - + <td>{$form.title.html}</td> <td> <label>{ts}Financial Type{/ts}</label> <div class="listing-box"> diff --git a/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl b/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl index 9a95351e40..3415737f7a 100644 --- a/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl +++ b/civicrm/templates/CRM/Event/Form/ManageEvent/EventInfo.tpl @@ -10,7 +10,6 @@ {* Step 1 of New Event Wizard, and Edit Event Info form. *} <div class="crm-block crm-form-block crm-event-manage-eventinfo-form-block"> - {assign var=eventID value=$id} <div class="crm-submit-buttons"> {include file="CRM/common/formButtons.tpl" location="top"} </div> @@ -42,7 +41,7 @@ </td> </tr> <tr class="crm-event-manage-eventinfo-form-block-participant_listing_id"> - <td class="label">{$form.participant_listing_id.label} {help id="id-listing" isTemplate=$isTemplate action=$action entityId=$entityId}</td> + <td class="label">{$form.participant_listing_id.label} {help id="id-listing" isTemplate=$isTemplate action=$action entityId=$eventID}</td> <td>{$form.participant_listing_id.html}</td> </tr> <tr class="crm-event-manage-eventinfo-form-block-title"> diff --git a/civicrm/templates/CRM/Event/Form/ParticipantView.tpl b/civicrm/templates/CRM/Event/Form/ParticipantView.tpl index c5b2af5bf9..e0b7d5b42b 100644 --- a/civicrm/templates/CRM/Event/Form/ParticipantView.tpl +++ b/civicrm/templates/CRM/Event/Form/ParticipantView.tpl @@ -12,18 +12,18 @@ <div class="action-link"> <div class="crm-submit-buttons"> {if call_user_func(array('CRM_Core_Permission','check'), 'edit event participants')} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context&selectedChild=event"} + {assign var='editUrlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context&selectedChild=event"} {if ( $context eq 'fulltext' || $context eq 'search' ) && $searchKey} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context&selectedChild=event&key=$searchKey"} + {assign var='editUrlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context&selectedChild=event&key=$searchKey"} {/if} - <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$urlParams}" accesskey="e"><span><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit{/ts}</span></a> + <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$editUrlParams}" accesskey="e"><span><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit{/ts}</span></a> {/if} {if call_user_func(array('CRM_Core_Permission','check'), 'delete in CiviEvent')} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context&selectedChild=event"} + {assign var='deleteUrlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context&selectedChild=event"} {if ( $context eq 'fulltext' || $context eq 'search' ) && $searchKey} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context&selectedChild=event&key=$searchKey"} + {assign var='deleteUrlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context&selectedChild=event&key=$searchKey"} {/if} - <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$urlParams}"><span><i class="crm-i fa-trash" aria-hidden="true"></i> {ts}Delete{/ts}</span></a> + <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$deleteUrlParams}"><span><i class="crm-i fa-trash" aria-hidden="true"></i> {ts}Delete{/ts}</span></a> {/if} {include file="CRM/common/formButtons.tpl" location="top"} </div> @@ -99,7 +99,9 @@ <td>{include file="CRM/Price/Page/LineItem.tpl" context="Event"} {if call_user_func(array('CRM_Core_Permission','check'), 'edit event participants')} {if $hasPayment or $parentHasPayment} - <a class="action-item crm-hover-button" href='{crmURL p="civicrm/event/participant/feeselection" q="reset=1&id=`$participantId`&cid=`$contactId`&action=update"}'><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Change Selections{/ts}</a> + <a class="action-item crm-hover-button" href='{crmURL p="civicrm/event/participant/feeselection" q="reset=1&id=`$participantId`&cid=`$contactId`&action=update"}'><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Change Selections{/ts}</a> + {else} + <a class="action-item crm-hover-button" href='{crmURL p="civicrm/contact/view/participant" q=$editUrlParams}'><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Change Selections{/ts}</a> {/if} {if $transferOrCancelLink} <a class="action-item crm-hover-button" href={$transferOrCancelLink}><i class="crm-i fa-times" aria-hidden="true"></i> {ts}Transfer or Cancel{/ts}</a> @@ -126,21 +128,12 @@ {include file="CRM/Contribute/Form/Selector.tpl" context="Search"} {/if} <div class="crm-submit-buttons"> - {if call_user_func(array('CRM_Core_Permission','check'), 'edit event participants')} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context&selectedChild=event"} - {if ( $context eq 'fulltext' || $context eq 'search' ) && $searchKey} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=update&context=$context&selectedChild=event&key=$searchKey"} - {/if} - - <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$urlParams}" accesskey="e"><span><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit{/ts}</span></a> - {/if} - {if call_user_func(array('CRM_Core_Permission','check'), 'delete in CiviEvent')} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context&selectedChild=event"} - {if ( $context eq 'fulltext' || $context eq 'search' ) && $searchKey} - {assign var='urlParams' value="reset=1&id=$id&cid=$contact_id&action=delete&context=$context&selectedChild=event&key=$searchKey"} - {/if} - <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$urlParams}"><span><i class="crm-i fa-trash" aria-hidden="true"></i> {ts}Delete{/ts}</span></a> - {/if} - {include file="CRM/common/formButtons.tpl" location="bottom"} + {if call_user_func(array('CRM_Core_Permission','check'), 'edit event participants')} + <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$editUrlParams}" accesskey="e"><span><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit{/ts}</span></a> + {/if} + {if call_user_func(array('CRM_Core_Permission','check'), 'delete in CiviEvent')} + <a class="button" href="{crmURL p='civicrm/contact/view/participant' q=$deleteUrlParams}"><span><i class="crm-i fa-trash" aria-hidden="true"></i> {ts}Delete{/ts}</span></a> + {/if} + {include file="CRM/common/formButtons.tpl" location="bottom"} </div> </div> diff --git a/civicrm/templates/CRM/Event/Form/Registration/AdditionalParticipant.tpl b/civicrm/templates/CRM/Event/Form/Registration/AdditionalParticipant.tpl index 1c00dbfcc6..3a6523f621 100644 --- a/civicrm/templates/CRM/Event/Form/Registration/AdditionalParticipant.tpl +++ b/civicrm/templates/CRM/Event/Form/Registration/AdditionalParticipant.tpl @@ -14,8 +14,6 @@ {include file="CRM/Event/Form/Registration/PreviewHeader.tpl"} {/if} -{include file="CRM/common/TrackingFields.tpl"} - {*CRM-4320*} {if $statusMessage} <div class="messages status no-popup"> diff --git a/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl b/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl index 07987cb835..1f10fcc25d 100644 --- a/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl +++ b/civicrm/templates/CRM/Event/Form/Registration/Confirm.tpl @@ -11,8 +11,6 @@ {include file="CRM/Event/Form/Registration/PreviewHeader.tpl"} {/if} -{include file="CRM/common/TrackingFields.tpl"} - <div class="crm-event-id-{$event.id} crm-block crm-event-confirm-form-block"> <div class="messages status section continue_message-section"><p> {if $isOnWaitlist} diff --git a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl index 660bdd0f66..769b35276d 100644 --- a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl +++ b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl @@ -17,8 +17,6 @@ {include file="CRM/Event/Form/Registration/PreviewHeader.tpl"} {/if} - {include file="CRM/common/TrackingFields.tpl"} - <div class="crm-event-id-{$event.id} crm-block crm-event-register-form-block"> {* moved to tpl since need to show only for primary participant page *} diff --git a/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl b/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl index 48822814f1..139f2f05e5 100644 --- a/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl +++ b/civicrm/templates/CRM/Event/Form/Registration/ThankYou.tpl @@ -11,8 +11,6 @@ {include file="CRM/Event/Form/Registration/PreviewHeader.tpl"} {/if} -{include file="CRM/common/TrackingFields.tpl"} - <div class="crm-event-id-{$event.id} crm-block crm-event-thankyou-form-block"> {* Don't use "normal" thank-you message for Waitlist and Approval Required registrations - since it will probably not make sense for those situations. dgg *} {if $event.thankyou_text AND (not $isOnWaitlist AND not $isRequireApproval)} @@ -99,7 +97,7 @@ {/if} {if $totalAmount} <div class="crm-section no-label total-amount-section"> - <div class="content bold">{ts}Event Total{/ts}: {$totalAmount|crmMoney}</div> + <div class="content bold">{ts}Total Amount{/ts}: {$totalAmount|crmMoney}</div> <div class="clear"></div> </div> diff --git a/civicrm/templates/CRM/Event/Form/SearchEvent.tpl b/civicrm/templates/CRM/Event/Form/SearchEvent.tpl index fc064e42b9..45c02680e1 100644 --- a/civicrm/templates/CRM/Event/Form/SearchEvent.tpl +++ b/civicrm/templates/CRM/Event/Form/SearchEvent.tpl @@ -17,9 +17,6 @@ <td> <label>{$form.title.label}</label> {$form.title.html|crmAddClass:twenty} - <div class="description font-italic"> - {ts}Complete OR partial Event name.{/ts} - </div> </td> <td><label>{ts}Event Type{/ts}</label> {$form.event_type_id.html} diff --git a/civicrm/templates/CRM/Group/Form/Search.tpl b/civicrm/templates/CRM/Group/Form/Search.tpl index 67b4815b44..cc635783a5 100644 --- a/civicrm/templates/CRM/Group/Form/Search.tpl +++ b/civicrm/templates/CRM/Group/Form/Search.tpl @@ -18,36 +18,24 @@ <tr> <td> {$form.title.label}<br /> - {$form.title.html}<br /> - <span class="description font-italic"> - {ts}Complete OR partial group name.{/ts} - </span> + {$form.title.html} </td> {if !empty($form.created_by)} <td> {$form.created_by.label}<br /> - {$form.created_by.html}<br /> - <span class="description font-italic"> - {ts}Complete OR partial creator name.{/ts} - </span> + {$form.created_by.html} </td> {/if} <td> {$form.visibility.label}<br /> - {$form.visibility.html}<br /> - <span class="description font-italic"> - {ts}Filter search by visibility.{/ts} - </span> + {$form.visibility.html} </td> </tr> <tr> {if !empty($form.group_type_search)} <td id="group_type-block"> {$form.group_type_search.label}<br /> - {$form.group_type_search.html}<br /> - <span class="description font-italic"> - {ts}Filter search by group type(s).{/ts} - </span> + {$form.group_type_search.html} </td> {/if} {if !empty($form.group_status)} diff --git a/civicrm/templates/CRM/Mailing/Form/Unsubscribe.tpl b/civicrm/templates/CRM/Mailing/Form/Unsubscribe.tpl index 8dfedfa7db..99c70f8cb2 100644 --- a/civicrm/templates/CRM/Mailing/Form/Unsubscribe.tpl +++ b/civicrm/templates/CRM/Mailing/Form/Unsubscribe.tpl @@ -10,7 +10,7 @@ <div> {if $groupExist} <div class="messages status no-popup"> - {ts}Are you sure you want to be removed from the mailing list(s) shown below:{/ts}<br/> + {ts 1=$name_masked}Are you sure you want to remove %1 from the mailing list(s) shown below:{/ts}<br/> </div> <table class="selector" style="width: auto; margin-top: 20px;"> {counter start=0 skip=1 print=false} @@ -22,8 +22,7 @@ {/foreach} </table> <div class="crm-block crm-form-block crm-miscellaneous-form-block"> - <p>{ts}You are requesting to unsubscribe this email address:{/ts}</p> - <p><strong>{$email_masked}</strong></p> + <p>{ts 1=$name_masked}You are requesting to unsubscribe <strong>all email addresses for %1</strong> from the above mailing list.{/ts}</p> <p> {ts}If this is your email address and you <strong>wish to unsubscribe</strong> please click the <strong>Unsubscribe</strong> button to confirm.{/ts} </p> diff --git a/civicrm/templates/CRM/Price/Form/LineItem.tpl b/civicrm/templates/CRM/Price/Form/LineItem.tpl index e94853330f..4829b322a6 100644 --- a/civicrm/templates/CRM/Price/Form/LineItem.tpl +++ b/civicrm/templates/CRM/Price/Form/LineItem.tpl @@ -108,7 +108,7 @@ {if $context EQ "Contribution"} {ts}Contribution Total{/ts}: {elseif $context EQ "Event"} - {ts}Event Total{/ts}: + {ts}Total Amount{/ts}: {elseif $context EQ "Membership"} {ts}Membership Fee Total{/ts}: {else} diff --git a/civicrm/templates/CRM/Price/Page/LineItem.tpl b/civicrm/templates/CRM/Price/Page/LineItem.tpl index d2c55bebcb..4e22d9780a 100644 --- a/civicrm/templates/CRM/Price/Page/LineItem.tpl +++ b/civicrm/templates/CRM/Price/Page/LineItem.tpl @@ -94,7 +94,7 @@ {if $totalTaxAmount} {ts}Event SubTotal: {$totalAmount-$totalTaxAmount|crmMoney:$currency}{/ts}<br /> {/if} - {ts}Event Total{/ts}: + {ts}Total Amount{/ts}: {elseif $context EQ "Membership"} {ts}Membership Fee Total{/ts}: {else} diff --git a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl index a0ffd69822..afbb74d372 100644 --- a/civicrm/templates/CRM/Report/Form/Layout/Table.tpl +++ b/civicrm/templates/CRM/Report/Form/Layout/Table.tpl @@ -99,7 +99,10 @@ {assign var=fieldClass value=$field|cat:"_class"} <td class="crm-report-{$field}{if $header.type eq 1024 OR $header.type eq 1 OR $header.type eq 512} report-contents-right{elseif $row.$field eq 'Subtotal'} report-label{/if}"> {if array_key_exists($fieldLink, $row) && $row.$fieldLink} - <a title="{$row.$fieldHover|escape}" href="{$row.$fieldLink}" {if array_key_exists($fieldClass, $row)} class="{$row.$fieldClass}"{/if}> + <a href="{$row.$fieldLink}" + {if array_key_exists($fieldHover, $row)}title="{$row.$fieldHover|escape}"{/if} + {if array_key_exists($fieldClass, $row)}class="{$row.$fieldClass}"{/if} + > {/if} {if is_array($row.$field)} diff --git a/civicrm/templates/CRM/common/paymentBlock.tpl b/civicrm/templates/CRM/common/paymentBlock.tpl index 4d71d21ded..37be4b7143 100644 --- a/civicrm/templates/CRM/common/paymentBlock.tpl +++ b/civicrm/templates/CRM/common/paymentBlock.tpl @@ -76,35 +76,35 @@ var $form = $('#billing-payment-block').closest('form'); {/literal} {if !$isBackOffice && $contributionPageID} - {capture assign='contributionPageID'}id={$contributionPageID}&{/capture} + {capture assign='contributionPageID'}&id={$contributionPageID}{/capture} {else} {capture assign='contributionPageID'}{/capture} {/if} {if !$isBackOffice && $custom_pre_id} - {capture assign='preProfileID'}pre_profile_id={$custom_pre_id}&{/capture} + {capture assign='preProfileID'}&pre_profile_id={$custom_pre_id}{/capture} {else} {capture assign='preProfileID'}{/capture} {/if} {if $urlPathVar} - {capture assign='urlPathVar'}{$urlPathVar}&{/capture} + {capture assign='urlPathVar'}&{$urlPathVar}{/capture} {else} {capture assign='urlPathVar'}{/capture} {/if} - // Billing profile ID is only ever set on front end forms, to force entering address for pay later. + {* Billing profile ID is only ever set on front end forms, to force entering address for pay later. *} {if !$isBackOffice && $billing_profile_id} - {capture assign='profilePathVar'}billing_profile_id={$billing_profile_id}&{/capture} + {capture assign='profilePathVar'}&billing_profile_id={$billing_profile_id}{/capture} {else} {capture assign='profilePathVar'}{/capture} {/if} - {capture assign='isBackOfficePathVar'}&is_back_office={$isBackOffice}&{/capture} + {capture assign='isBackOfficePathVar'}&is_back_office={$isBackOffice}{/capture} var payment_instrument_id = $('#payment_instrument_id').val(); var currency = '{$currency}'; currency = currency == '' ? $('#currency').val() : currency; - var dataUrl = "{crmURL p='civicrm/payment/form' h=0 q="formName=`$form.formName``$urlPathVar``$isBackOfficePathVar``$profilePathVar``$contributionPageID``$preProfileID`processor_id="}" + type; + var dataUrl = "{crmURL p='civicrm/payment/form' h=0 q="formName=`$form.formName``$urlPathVar``$isBackOfficePathVar``$profilePathVar``$contributionPageID``$preProfileID`"}"; {literal} if (typeof(CRM.vars) != "undefined") { if (typeof(CRM.vars.coreForm) != "undefined") { @@ -117,7 +117,7 @@ } } } - dataUrl = dataUrl + "&payment_instrument_id=" + payment_instrument_id + "¤cy=" + currency; + dataUrl = dataUrl + "&processor_id=" + type + "&payment_instrument_id=" + payment_instrument_id + "¤cy=" + currency; // Processors like pp-express will hide the form submit buttons, so re-show them when switching $('.crm-submit-buttons', $form).show().find('input').prop('disabled', true); diff --git a/civicrm/templates/CRM/common/standalone.tpl b/civicrm/templates/CRM/common/standalone.tpl index 154adfa2f8..3c5b3f4627 100644 --- a/civicrm/templates/CRM/common/standalone.tpl +++ b/civicrm/templates/CRM/common/standalone.tpl @@ -38,6 +38,12 @@ </ol></nav> {/if} + {if $standaloneErrors} + <div class="standalone-errors"> + <ul>{$standaloneErrors}</ul> + </div> + {/if} + {if $pageTitle} <div class="crm-title"> <h1 class="title">{if $isDeleted}<del>{/if}{$pageTitle}{if $isDeleted}</del>{/if}</h1> diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index 66488b5821..3076282fe4 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075::getLoader(); +return ComposerAutoloaderInit16492df646fda411676597428dd1551a::getLoader(); diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index 9b7a9e93cd..c6ea224110 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 ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075 +class ComposerAutoloaderInit16492df646fda411676597428dd1551a { private static $loader; @@ -24,9 +24,9 @@ class ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075 require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit16492df646fda411676597428dd1551a', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); - spl_autoload_unregister(array('ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit16492df646fda411676597428dd1551a', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); @@ -36,7 +36,7 @@ class ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075 if ($useStaticLoader) { require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInitfe61fa497677221bb9f34e1742d40075::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit16492df646fda411676597428dd1551a::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -57,12 +57,12 @@ class ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075 $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInitfe61fa497677221bb9f34e1742d40075::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit16492df646fda411676597428dd1551a::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequirefe61fa497677221bb9f34e1742d40075($fileIdentifier, $file); + composerRequire16492df646fda411676597428dd1551a($fileIdentifier, $file); } return $loader; @@ -74,7 +74,7 @@ class ComposerAutoloaderInitfe61fa497677221bb9f34e1742d40075 * @param string $file * @return void */ -function composerRequirefe61fa497677221bb9f34e1742d40075($fileIdentifier, $file) +function composerRequire16492df646fda411676597428dd1551a($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 0f38addf3c..d50a443633 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInitfe61fa497677221bb9f34e1742d40075 +class ComposerStaticInit16492df646fda411676597428dd1551a { public static $files = array ( 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', @@ -729,11 +729,11 @@ class ComposerStaticInitfe61fa497677221bb9f34e1742d40075 public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInitfe61fa497677221bb9f34e1742d40075::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInitfe61fa497677221bb9f34e1742d40075::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInitfe61fa497677221bb9f34e1742d40075::$prefixesPsr0; - $loader->fallbackDirsPsr0 = ComposerStaticInitfe61fa497677221bb9f34e1742d40075::$fallbackDirsPsr0; - $loader->classMap = ComposerStaticInitfe61fa497677221bb9f34e1742d40075::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit16492df646fda411676597428dd1551a::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit16492df646fda411676597428dd1551a::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit16492df646fda411676597428dd1551a::$prefixesPsr0; + $loader->fallbackDirsPsr0 = ComposerStaticInit16492df646fda411676597428dd1551a::$fallbackDirsPsr0; + $loader->classMap = ComposerStaticInit16492df646fda411676597428dd1551a::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/vendor/composer/installed.json b/civicrm/vendor/composer/installed.json index fb3331db3d..f67a645c36 100644 --- a/civicrm/vendor/composer/installed.json +++ b/civicrm/vendor/composer/installed.json @@ -5368,23 +5368,23 @@ }, { "name": "totten/ca-config", - "version": "v22.11.0", - "version_normalized": "22.11.0.0", + "version": "v23.07.0", + "version_normalized": "23.07.0.0", "source": { "type": "git", "url": "https://github.com/totten/ca_config.git", - "reference": "8a78926b11f00e6a154098aeb2110df53b8a3c67" + "reference": "12571f07b994d555bf1a956e310f224da3ebbd8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/totten/ca_config/zipball/8a78926b11f00e6a154098aeb2110df53b8a3c67", - "reference": "8a78926b11f00e6a154098aeb2110df53b8a3c67", + "url": "https://api.github.com/repos/totten/ca_config/zipball/12571f07b994d555bf1a956e310f224da3ebbd8d", + "reference": "12571f07b994d555bf1a956e310f224da3ebbd8d", "shasum": "" }, "require": { "php": ">=5.2" }, - "time": "2022-11-06T02:39:19+00:00", + "time": "2023-07-14T07:20:50+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -5406,7 +5406,7 @@ "homepage": "https://github.com/totten/ca_config", "support": { "issues": "https://github.com/totten/ca_config/issues", - "source": "https://github.com/totten/ca_config/tree/v22.11.0" + "source": "https://github.com/totten/ca_config/tree/v23.07.0" }, "install-path": "../totten/ca-config" }, diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php index 237c915b42..cd561f72c7 100644 --- a/civicrm/vendor/composer/installed.php +++ b/civicrm/vendor/composer/installed.php @@ -1,11 +1,11 @@ <?php return array( 'root' => array( - 'pretty_version' => '5.65.x-dev', - 'version' => '5.65.9999999.9999999-dev', + 'pretty_version' => '5.66.x-dev', + 'version' => '5.66.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '302a4461fa1f8bffbf265e1c1ecc9b1c5e8de5ba', + 'reference' => '5159715422a59556294d10cc056b5a335a6cf9ba', 'name' => 'civicrm/civicrm-core', 'dev' => true, ), @@ -38,12 +38,12 @@ 'dev_requirement' => false, ), 'civicrm/civicrm-core' => array( - 'pretty_version' => '5.65.x-dev', - 'version' => '5.65.9999999.9999999-dev', + 'pretty_version' => '5.66.x-dev', + 'version' => '5.66.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '302a4461fa1f8bffbf265e1c1ecc9b1c5e8de5ba', + 'reference' => '5159715422a59556294d10cc056b5a335a6cf9ba', 'dev_requirement' => false, ), 'civicrm/civicrm-cxn-rpc' => array( @@ -755,12 +755,12 @@ 'dev_requirement' => false, ), 'totten/ca-config' => array( - 'pretty_version' => 'v22.11.0', - 'version' => '22.11.0.0', + 'pretty_version' => 'v23.07.0', + 'version' => '23.07.0.0', 'type' => 'library', 'install_path' => __DIR__ . '/../totten/ca-config', 'aliases' => array(), - 'reference' => '8a78926b11f00e6a154098aeb2110df53b8a3c67', + 'reference' => '12571f07b994d555bf1a956e310f224da3ebbd8d', 'dev_requirement' => false, ), 'totten/lurkerlite' => array( diff --git a/civicrm/vendor/totten/ca-config/phpunit.xml.dist b/civicrm/vendor/totten/ca-config/phpunit.xml.dist index 3267fce8f8..ff6854f7fd 100644 --- a/civicrm/vendor/totten/ca-config/phpunit.xml.dist +++ b/civicrm/vendor/totten/ca-config/phpunit.xml.dist @@ -6,7 +6,6 @@ convertWarningsToExceptions="true" processIsolation="false" stopOnFailure="false" - syntaxCheck="false" bootstrap="tests/bootstrap.php" > <testsuites> diff --git a/civicrm/vendor/totten/ca-config/src/CA/Config/Curl.php b/civicrm/vendor/totten/ca-config/src/CA/Config/Curl.php index 51861e5edb..ec09b1478e 100644 --- a/civicrm/vendor/totten/ca-config/src/CA/Config/Curl.php +++ b/civicrm/vendor/totten/ca-config/src/CA/Config/Curl.php @@ -10,6 +10,12 @@ class CA_Config_Curl { static private $_singleton; + public $enableSSL; + + public $verifyPeer; + + public $caFile; + /** * Provide a singleton instance to simplify integration. If you prefer * to manage the lifecycle of the config object, then consider using diff --git a/civicrm/vendor/totten/ca-config/src/CA/Config/Stream.php b/civicrm/vendor/totten/ca-config/src/CA/Config/Stream.php index d7b39b5595..3ab493688a 100644 --- a/civicrm/vendor/totten/ca-config/src/CA/Config/Stream.php +++ b/civicrm/vendor/totten/ca-config/src/CA/Config/Stream.php @@ -22,6 +22,12 @@ class CA_Config_Stream { static private $_singleton; + public $enableSSL; + + public $verifyPeer; + + public $caFile; + /** * Provide a singleton instance to simplify integration. If you prefer * to manage the lifecycle of the config object, then consider using diff --git a/civicrm/vendor/totten/ca-config/src/CA/Config/cacert.pem b/civicrm/vendor/totten/ca-config/src/CA/Config/cacert.pem index 0c69f9fc75..6b93dc34f8 100644 --- a/civicrm/vendor/totten/ca-config/src/CA/Config/cacert.pem +++ b/civicrm/vendor/totten/ca-config/src/CA/Config/cacert.pem @@ -1,7 +1,7 @@ ## ## Bundle of CA Root Certificates ## -## Certificate data from Mozilla as of: Tue Oct 11 03:12:05 2022 GMT +## Certificate data from Mozilla as of: Tue May 30 03:12:04 2023 GMT ## ## This is a bundle of X.509 certificates of public Certificate Authorities ## (CA). These were automatically extracted from Mozilla's root certificates @@ -14,7 +14,7 @@ ## Just configure this file as the SSLCACertificateFile. ## ## Conversion done with mk-ca-bundle.pl version 1.29. -## SHA256: 3ff8bd209b5f2e739b9f2b96eacb694a774114685b02978257824f37ff528f71 +## SHA256: c47475103fb05bb562bbadff0d1e72346b03236154e1448a6ca191b740f83507 ## @@ -489,29 +489,6 @@ IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN +8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== -----END CERTIFICATE----- -Network Solutions Certificate Authority -======================================= ------BEGIN CERTIFICATE----- -MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG -EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr -IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx -MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu -MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G -CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx -jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT -aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT -crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc -/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB -AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP -BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv -bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA -A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q -4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ -GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv -wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD -ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey ------END CERTIFICATE----- - COMODO ECC Certification Authority ================================== -----BEGIN CERTIFICATE----- @@ -626,26 +603,6 @@ NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= -----END CERTIFICATE----- -Hongkong Post Root CA 1 -======================= ------BEGIN CERTIFICATE----- -MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT -DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx -NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n -IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF -AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 -ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr -auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh -qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY -V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV -HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i -h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio -l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei -IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps -T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT -c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== ------END CERTIFICATE----- - SecureSign RootCA11 =================== -----BEGIN CERTIFICATE----- @@ -1284,40 +1241,6 @@ Y2XQ8xwOFvVrhlhNGNTkDY6lnVuR3HYkUD/GKvvZt5y11ubQ2egZixVxSK236thZiNSQvxaz2ems WWFUyBy6ysHK4bkgTI86k4mloMy/0/Z1pHWWbVY= -----END CERTIFICATE----- -E-Tugra Certification Authority -=============================== ------BEGIN CERTIFICATE----- -MIIGSzCCBDOgAwIBAgIIamg+nFGby1MwDQYJKoZIhvcNAQELBQAwgbIxCzAJBgNVBAYTAlRSMQ8w -DQYDVQQHDAZBbmthcmExQDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamls -ZXJpIHZlIEhpem1ldGxlcmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBN -ZXJrZXppMSgwJgYDVQQDDB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTEzMDMw -NTEyMDk0OFoXDTIzMDMwMzEyMDk0OFowgbIxCzAJBgNVBAYTAlRSMQ8wDQYDVQQHDAZBbmthcmEx -QDA+BgNVBAoMN0UtVHXEn3JhIEVCRyBCaWxpxZ9pbSBUZWtub2xvamlsZXJpIHZlIEhpem1ldGxl -cmkgQS7Fni4xJjAkBgNVBAsMHUUtVHVncmEgU2VydGlmaWthc3lvbiBNZXJrZXppMSgwJgYDVQQD -DB9FLVR1Z3JhIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0BAQEFAAOCAg8A -MIICCgKCAgEA4vU/kwVRHoViVF56C/UYB4Oufq9899SKa6VjQzm5S/fDxmSJPZQuVIBSOTkHS0vd -hQd2h8y/L5VMzH2nPbxHD5hw+IyFHnSOkm0bQNGZDbt1bsipa5rAhDGvykPL6ys06I+XawGb1Q5K -CKpbknSFQ9OArqGIW66z6l7LFpp3RMih9lRozt6Plyu6W0ACDGQXwLWTzeHxE2bODHnv0ZEoq1+g -ElIwcxmOj+GMB6LDu0rw6h8VqO4lzKRG+Bsi77MOQ7osJLjFLFzUHPhdZL3Dk14opz8n8Y4e0ypQ -BaNV2cvnOVPAmJ6MVGKLJrD3fY185MaeZkJVgkfnsliNZvcHfC425lAcP9tDJMW/hkd5s3kc91r0 -E+xs+D/iWR+V7kI+ua2oMoVJl0b+SzGPWsutdEcf6ZG33ygEIqDUD13ieU/qbIWGvaimzuT6w+Gz -rt48Ue7LE3wBf4QOXVGUnhMMti6lTPk5cDZvlsouDERVxcr6XQKj39ZkjFqzAQqptQpHF//vkUAq -jqFGOjGY5RH8zLtJVor8udBhmm9lbObDyz51Sf6Pp+KJxWfXnUYTTjF2OySznhFlhqt/7x3U+Lzn -rFpct1pHXFXOVbQicVtbC/DP3KBhZOqp12gKY6fgDT+gr9Oq0n7vUaDmUStVkhUXU8u3Zg5mTPj5 -dUyQ5xJwx0UCAwEAAaNjMGEwHQYDVR0OBBYEFC7j27JJ0JxUeVz6Jyr+zE7S6E5UMA8GA1UdEwEB -/wQFMAMBAf8wHwYDVR0jBBgwFoAULuPbsknQnFR5XPonKv7MTtLoTlQwDgYDVR0PAQH/BAQDAgEG -MA0GCSqGSIb3DQEBCwUAA4ICAQAFNzr0TbdF4kV1JI+2d1LoHNgQk2Xz8lkGpD4eKexd0dCrfOAK -kEh47U6YA5n+KGCRHTAduGN8qOY1tfrTYXbm1gdLymmasoR6d5NFFxWfJNCYExL/u6Au/U5Mh/jO -XKqYGwXgAEZKgoClM4so3O0409/lPun++1ndYYRP0lSWE2ETPo+Aab6TR7U1Q9Jauz1c77NCR807 -VRMGsAnb/WP2OogKmW9+4c4bU2pEZiNRCHu8W1Ki/QY3OEBhj0qWuJA3+GbHeJAAFS6LrVE1Uweo -a2iu+U48BybNCAVwzDk/dr2l02cmAYamU9JgO3xDf1WKvJUawSg5TB9D0pH0clmKuVb8P7Sd2nCc -dlqMQ1DujjByTd//SffGqWfZbawCEeI6FiWnWAjLb1NBnEg4R2gz0dfHj9R0IdTDBZB6/86WiLEV -KV0jq9BgoRJP3vQXzTLlyb/IQ639Lo7xr+L0mPoSHyDYwKcMhcWQ9DstliaxLL5Mq+ux0orJ23gT -Dx4JnW2PAJ8C2sH6H3p6CcRK5ogql5+Ji/03X186zjhZhkuvcQu02PJwT58yE+Owp1fl2tpDy4Q0 -8ijE6m30Ku/Ba3ba+367hTzSU8JNvnHhRdH9I2cNE3X7z2VnIp2usAnRCf8dNL/+I5c30jn6PQ0G -C7TbO6Orb1wdtn7os4I07QZcJA== ------END CERTIFICATE----- - T-TeleSec GlobalRoot Class 2 ============================ -----BEGIN CERTIFICATE----- @@ -1654,36 +1577,6 @@ uglB4Zf4+/2a4n0Sye18ZNPLBSWLVtmg515dTguDnFt2KaAJJiFqYgIwcdK1j1zqO+F4CYWodZI7 yFz9SO8NdCKoCOJuxUnOxwy8p2Fp8fc74SrL+SvzZpA3 -----END CERTIFICATE----- -Staat der Nederlanden EV Root CA -================================ ------BEGIN CERTIFICATE----- -MIIFcDCCA1igAwIBAgIEAJiWjTANBgkqhkiG9w0BAQsFADBYMQswCQYDVQQGEwJOTDEeMBwGA1UE -CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSkwJwYDVQQDDCBTdGFhdCBkZXIgTmVkZXJsYW5kZW4g -RVYgUm9vdCBDQTAeFw0xMDEyMDgxMTE5MjlaFw0yMjEyMDgxMTEwMjhaMFgxCzAJBgNVBAYTAk5M -MR4wHAYDVQQKDBVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xKTAnBgNVBAMMIFN0YWF0IGRlciBOZWRl -cmxhbmRlbiBFViBSb290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA48d+ifkk -SzrSM4M1LGns3Amk41GoJSt5uAg94JG6hIXGhaTK5skuU6TJJB79VWZxXSzFYGgEt9nCUiY4iKTW -O0Cmws0/zZiTs1QUWJZV1VD+hq2kY39ch/aO5ieSZxeSAgMs3NZmdO3dZ//BYY1jTw+bbRcwJu+r -0h8QoPnFfxZpgQNH7R5ojXKhTbImxrpsX23Wr9GxE46prfNeaXUmGD5BKyF/7otdBwadQ8QpCiv8 -Kj6GyzyDOvnJDdrFmeK8eEEzduG/L13lpJhQDBXd4Pqcfzho0LKmeqfRMb1+ilgnQ7O6M5HTp5gV -XJrm0w912fxBmJc+qiXbj5IusHsMX/FjqTf5m3VpTCgmJdrV8hJwRVXj33NeN/UhbJCONVrJ0yPr -08C+eKxCKFhmpUZtcALXEPlLVPxdhkqHz3/KRawRWrUgUY0viEeXOcDPusBCAUCZSCELa6fS/ZbV -0b5GnUngC6agIk440ME8MLxwjyx1zNDFjFE7PZQIZCZhfbnDZY8UnCHQqv0XcgOPvZuM5l5Tnrmd -74K74bzickFbIZTTRTeU0d8JOV3nI6qaHcptqAqGhYqCvkIH1vI4gnPah1vlPNOePqc7nvQDs/nx -fRN0Av+7oeX6AHkcpmZBiFxgV6YuCcS6/ZrPpx9Aw7vMWgpVSzs4dlG4Y4uElBbmVvMCAwEAAaNC -MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFP6rAJCYniT8qcwa -ivsnuL8wbqg7MA0GCSqGSIb3DQEBCwUAA4ICAQDPdyxuVr5Os7aEAJSrR8kN0nbHhp8dB9O2tLsI -eK9p0gtJ3jPFrK3CiAJ9Brc1AsFgyb/E6JTe1NOpEyVa/m6irn0F3H3zbPB+po3u2dfOWBfoqSmu -c0iH55vKbimhZF8ZE/euBhD/UcabTVUlT5OZEAFTdfETzsemQUHSv4ilf0X8rLiltTMMgsT7B/Zq -5SWEXwbKwYY5EdtYzXc7LMJMD16a4/CrPmEbUCTCwPTxGfARKbalGAKb12NMcIxHowNDXLldRqAN -b/9Zjr7dn3LDWyvfjFvO5QxGbJKyCqNMVEIYFRIYvdr8unRu/8G2oGTYqV9Vrp9canaW2HNnh/tN -f1zuacpzEPuKqf2evTY4SUmH9A4U8OmHuD+nT3pajnnUk+S7aFKErGzp85hwVXIy+TSrK0m1zSBi -5Dp6Z2Orltxtrpfs/J92VoguZs9btsmksNcFuuEnL5O7Jiqik7Ab846+HUCjuTaPPoIaGl6I6lD4 -WeKDRikL40Rc4ZW2aZCaFG+XroHPaO+Zmr615+F/+PoTRxZMzG0IQOeLeG9QgkRQP2YGiqtDhFZK -DyAthg710tvSeopLzaXoTvFeJiUBWSOgftL2fiFX1ye8FVdMpEbB4IMeDExNH08GGeL5qPQ6gqGy -eUN51q1veieQA6TqJIc/2b3Z6fJfUEkc7uzXLg== ------END CERTIFICATE----- - IdenTrust Commercial Root CA 1 ============================== -----BEGIN CERTIFICATE----- @@ -2135,87 +2028,6 @@ F8Io2c9Si1vIY9RCPqAzekYu9wogRlR+ak8x8YF+QnQ4ZXMn7sZ8uI7XpTrXmKGcjBBV09tL7ECQ aaApJUqlyyvdimYHFngVV3Eb7PVHhPOeMTd61X8kreS8/f3MboPoDKi3QWwH3b08hpcv0g== -----END CERTIFICATE----- -TrustCor RootCert CA-1 -====================== ------BEGIN CERTIFICATE----- -MIIEMDCCAxigAwIBAgIJANqb7HHzA7AZMA0GCSqGSIb3DQEBCwUAMIGkMQswCQYDVQQGEwJQQTEP -MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig -U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0IENBLTEwHhcNMTYwMjA0MTIzMjE2WhcNMjkx -MjMxMTcyMzE2WjCBpDELMAkGA1UEBhMCUEExDzANBgNVBAgMBlBhbmFtYTEUMBIGA1UEBwwLUGFu -YW1hIENpdHkxJDAiBgNVBAoMG1RydXN0Q29yIFN5c3RlbXMgUy4gZGUgUi5MLjEnMCUGA1UECwwe -VHJ1c3RDb3IgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MR8wHQYDVQQDDBZUcnVzdENvciBSb290Q2Vy -dCBDQS0xMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAv463leLCJhJrMxnHQFgKq1mq -jQCj/IDHUHuO1CAmujIS2CNUSSUQIpidRtLByZ5OGy4sDjjzGiVoHKZaBeYei0i/mJZ0PmnK6bV4 -pQa81QBeCQryJ3pS/C3Vseq0iWEk8xoT26nPUu0MJLq5nux+AHT6k61sKZKuUbS701e/s/OojZz0 -JEsq1pme9J7+wH5COucLlVPat2gOkEz7cD+PSiyU8ybdY2mplNgQTsVHCJCZGxdNuWxu72CVEY4h -gLW9oHPY0LJ3xEXqWib7ZnZ2+AYfYW0PVcWDtxBWcgYHpfOxGgMFZA6dWorWhnAbJN7+KIor0Gqw -/Hqi3LJ5DotlDwIDAQABo2MwYTAdBgNVHQ4EFgQU7mtJPHo/DeOxCbeKyKsZn3MzUOcwHwYDVR0j -BBgwFoAU7mtJPHo/DeOxCbeKyKsZn3MzUOcwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC -AYYwDQYJKoZIhvcNAQELBQADggEBACUY1JGPE+6PHh0RU9otRCkZoB5rMZ5NDp6tPVxBb5UrJKF5 -mDo4Nvu7Zp5I/5CQ7z3UuJu0h3U/IJvOcs+hVcFNZKIZBqEHMwwLKeXx6quj7LUKdJDHfXLy11yf -ke+Ri7fc7Waiz45mO7yfOgLgJ90WmMCV1Aqk5IGadZQ1nJBfiDcGrVmVCrDRZ9MZyonnMlo2HD6C -qFqTvsbQZJG2z9m2GM/bftJlo6bEjhcxwft+dtvTheNYsnd6djtsL1Ac59v2Z3kf9YKVmgenFK+P -3CghZwnS1k1aHBkcjndcw5QkPTJrS37UeJSDvjdNzl/HHk484IkzlQsPpTLWPFp5LBk= ------END CERTIFICATE----- - -TrustCor RootCert CA-2 -====================== ------BEGIN CERTIFICATE----- -MIIGLzCCBBegAwIBAgIIJaHfyjPLWQIwDQYJKoZIhvcNAQELBQAwgaQxCzAJBgNVBAYTAlBBMQ8w -DQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5MSQwIgYDVQQKDBtUcnVzdENvciBT -eXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29yIENlcnRpZmljYXRlIEF1dGhvcml0 -eTEfMB0GA1UEAwwWVHJ1c3RDb3IgUm9vdENlcnQgQ0EtMjAeFw0xNjAyMDQxMjMyMjNaFw0zNDEy -MzExNzI2MzlaMIGkMQswCQYDVQQGEwJQQTEPMA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5h -bWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3IgU3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5U -cnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxHzAdBgNVBAMMFlRydXN0Q29yIFJvb3RDZXJ0 -IENBLTIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCnIG7CKqJiJJWQdsg4foDSq8Gb -ZQWU9MEKENUCrO2fk8eHyLAnK0IMPQo+QVqedd2NyuCb7GgypGmSaIwLgQ5WoD4a3SwlFIIvl9Nk -RvRUqdw6VC0xK5mC8tkq1+9xALgxpL56JAfDQiDyitSSBBtlVkxs1Pu2YVpHI7TYabS3OtB0PAx1 -oYxOdqHp2yqlO/rOsP9+aij9JxzIsekp8VduZLTQwRVtDr4uDkbIXvRR/u8OYzo7cbrPb1nKDOOb -XUm4TOJXsZiKQlecdu/vvdFoqNL0Cbt3Nb4lggjEFixEIFapRBF37120Hapeaz6LMvYHL1cEksr1 -/p3C6eizjkxLAjHZ5DxIgif3GIJ2SDpxsROhOdUuxTTCHWKF3wP+TfSvPd9cW436cOGlfifHhi5q -jxLGhF5DUVCcGZt45vz27Ud+ez1m7xMTiF88oWP7+ayHNZ/zgp6kPwqcMWmLmaSISo5uZk3vFsQP -eSghYA2FFn3XVDjxklb9tTNMg9zXEJ9L/cb4Qr26fHMC4P99zVvh1Kxhe1fVSntb1IVYJ12/+Ctg -rKAmrhQhJ8Z3mjOAPF5GP/fDsaOGM8boXg25NSyqRsGFAnWAoOsk+xWq5Gd/bnc/9ASKL3x74xdh -8N0JqSDIvgmk0H5Ew7IwSjiqqewYmgeCK9u4nBit2uBGF6zPXQIDAQABo2MwYTAdBgNVHQ4EFgQU -2f4hQG6UnrybPZx9mCAZ5YwwYrIwHwYDVR0jBBgwFoAU2f4hQG6UnrybPZx9mCAZ5YwwYrIwDwYD -VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAJ5Fngw7tu/h -Osh80QA9z+LqBrWyOrsGS2h60COXdKcs8AjYeVrXWoSK2BKaG9l9XE1wxaX5q+WjiYndAfrs3fnp -kpfbsEZC89NiqpX+MWcUaViQCqoL7jcjx1BRtPV+nuN79+TMQjItSQzL/0kMmx40/W5ulop5A7Zv -2wnL/V9lFDfhOPXzYRZY5LVtDQsEGz9QLX+zx3oaFoBg+Iof6Rsqxvm6ARppv9JYx1RXCI/hOWB3 -S6xZhBqI8d3LT3jX5+EzLfzuQfogsL7L9ziUwOHQhQ+77Sxzq+3+knYaZH9bDTMJBzN7Bj8RpFxw -PIXAz+OQqIN3+tvmxYxoZxBnpVIt8MSZj3+/0WvitUfW2dCFmU2Umw9Lje4AWkcdEQOsQRivh7dv -DDqPys/cA8GiCcjl/YBeyGBCARsaU1q7N6a3vLqE6R5sGtRk2tRD/pOLS/IseRYQ1JMLiI+h2IYU -RpFHmygk71dSTlxCnKr3Sewn6EAes6aJInKc9Q0ztFijMDvd1GpUk74aTfOTlPf8hAs/hCBcNANE -xdqtvArBAs8e5ZTZ845b2EzwnexhF7sUMlQMAimTHpKG9n/v55IFDlndmQguLvqcAFLTxWYp5KeX -RKQOKIETNcX2b2TmQcTVL8w0RSXPQQCWPUouwpaYT05KnJe32x+SMsj/D1Fu1uwJ ------END CERTIFICATE----- - -TrustCor ECA-1 -============== ------BEGIN CERTIFICATE----- -MIIEIDCCAwigAwIBAgIJAISCLF8cYtBAMA0GCSqGSIb3DQEBCwUAMIGcMQswCQYDVQQGEwJQQTEP -MA0GA1UECAwGUGFuYW1hMRQwEgYDVQQHDAtQYW5hbWEgQ2l0eTEkMCIGA1UECgwbVHJ1c3RDb3Ig -U3lzdGVtcyBTLiBkZSBSLkwuMScwJQYDVQQLDB5UcnVzdENvciBDZXJ0aWZpY2F0ZSBBdXRob3Jp -dHkxFzAVBgNVBAMMDlRydXN0Q29yIEVDQS0xMB4XDTE2MDIwNDEyMzIzM1oXDTI5MTIzMTE3Mjgw -N1owgZwxCzAJBgNVBAYTAlBBMQ8wDQYDVQQIDAZQYW5hbWExFDASBgNVBAcMC1BhbmFtYSBDaXR5 -MSQwIgYDVQQKDBtUcnVzdENvciBTeXN0ZW1zIFMuIGRlIFIuTC4xJzAlBgNVBAsMHlRydXN0Q29y -IENlcnRpZmljYXRlIEF1dGhvcml0eTEXMBUGA1UEAwwOVHJ1c3RDb3IgRUNBLTEwggEiMA0GCSqG -SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDPj+ARtZ+odnbb3w9U73NjKYKtR8aja+3+XzP4Q1HpGjOR -MRegdMTUpwHmspI+ap3tDvl0mEDTPwOABoJA6LHip1GnHYMma6ve+heRK9jGrB6xnhkB1Zem6g23 -xFUfJ3zSCNV2HykVh0A53ThFEXXQmqc04L/NyFIduUd+Dbi7xgz2c1cWWn5DkR9VOsZtRASqnKmc -p0yJF4OuowReUoCLHhIlERnXDH19MURB6tuvsBzvgdAsxZohmz3tQjtQJvLsznFhBmIhVE5/wZ0+ -fyCMgMsq2JdiyIMzkX2woloPV+g7zPIlstR8L+xNxqE6FXrntl019fZISjZFZtS6mFjBAgMBAAGj -YzBhMB0GA1UdDgQWBBREnkj1zG1I1KBLf/5ZJC+Dl5mahjAfBgNVHSMEGDAWgBREnkj1zG1I1KBL -f/5ZJC+Dl5mahjAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQsF -AAOCAQEABT41XBVwm8nHc2FvcivUwo/yQ10CzsSUuZQRg2dd4mdsdXa/uwyqNsatR5Nj3B5+1t4u -/ukZMjgDfxT2AHMsWbEhBuH7rBiVDKP/mZb3Kyeb1STMHd3BOuCYRLDE5D53sXOpZCz2HAF8P11F -hcCF5yWPldwX8zyfGm6wyuMdKulMY/okYWLW2n62HGz1Ah3UKt1VkOsqEUc8Ll50soIipX1TH0Xs -J5F95yIW6MBoNtjG8U+ARDL54dHRHareqKucBK+tIA5kmE2la8BIWJZpTdwHjFGTot+fDz2LYLSC -jaoITmJF4PkL0uDgPFveXHEnJcLmA4GLEFPjx1WitJ/X5g== ------END CERTIFICATE----- - SSL.com Root Certification Authority RSA ======================================== -----BEGIN CERTIFICATE----- @@ -3504,3 +3316,48 @@ BggqhkjOPQQDAwNoADBlAjAVXUI9/Lbu9zuxNuie9sRGKEkz0FhDKmMpzE2xtHqiuQ04pV1IKv3L snNdo4gIxwwCMQDAqy0Obe0YottT6SXbVQjgUMzfRGEWgqtJsLKB7HOHeLRMsmIbEvoWTSVLY70e N9k= -----END CERTIFICATE----- + +BJCA Global Root CA1 +==================== +-----BEGIN CERTIFICATE----- +MIIFdDCCA1ygAwIBAgIQVW9l47TZkGobCdFsPsBsIDANBgkqhkiG9w0BAQsFADBUMQswCQYDVQQG +EwJDTjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJK +Q0EgR2xvYmFsIFJvb3QgQ0ExMB4XDTE5MTIxOTAzMTYxN1oXDTQ0MTIxMjAzMTYxN1owVDELMAkG +A1UEBhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQD +DBRCSkNBIEdsb2JhbCBSb290IENBMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAPFm +CL3ZxRVhy4QEQaVpN3cdwbB7+sN3SJATcmTRuHyQNZ0YeYjjlwE8R4HyDqKYDZ4/N+AZspDyRhyS +sTphzvq3Rp4Dhtczbu33RYx2N95ulpH3134rhxfVizXuhJFyV9xgw8O558dnJCNPYwpj9mZ9S1Wn +P3hkSWkSl+BMDdMJoDIwOvqfwPKcxRIqLhy1BDPapDgRat7GGPZHOiJBhyL8xIkoVNiMpTAK+BcW +yqw3/XmnkRd4OJmtWO2y3syJfQOcs4ll5+M7sSKGjwZteAf9kRJ/sGsciQ35uMt0WwfCyPQ10WRj +eulumijWML3mG90Vr4TqnMfK9Q7q8l0ph49pczm+LiRvRSGsxdRpJQaDrXpIhRMsDQa4bHlW/KNn +MoH1V6XKV0Jp6VwkYe/iMBhORJhVb3rCk9gZtt58R4oRTklH2yiUAguUSiz5EtBP6DF+bHq/pj+b +OT0CFqMYs2esWz8sgytnOYFcuX6U1WTdno9uruh8W7TXakdI136z1C2OVnZOz2nxbkRs1CTqjSSh +GL+9V/6pmTW12xB3uD1IutbB5/EjPtffhZ0nPNRAvQoMvfXnjSXWgXSHRtQpdaJCbPdzied9v3pK +H9MiyRVVz99vfFXQpIsHETdfg6YmV6YBW37+WGgHqel62bno/1Afq8K0wM7o6v0PvY1NuLxxAgMB +AAGjQjBAMB0GA1UdDgQWBBTF7+3M2I0hxkjk49cULqcWk+WYATAPBgNVHRMBAf8EBTADAQH/MA4G +A1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsFAAOCAgEAUoKsITQfI/Ki2Pm4rzc2IInRNwPWaZ+4 +YRC6ojGYWUfo0Q0lHhVBDOAqVdVXUsv45Mdpox1NcQJeXyFFYEhcCY5JEMEE3KliawLwQ8hOnThJ +dMkycFRtwUf8jrQ2ntScvd0g1lPJGKm1Vrl2i5VnZu69mP6u775u+2D2/VnGKhs/I0qUJDAnyIm8 +60Qkmss9vk/Ves6OF8tiwdneHg56/0OGNFK8YT88X7vZdrRTvJez/opMEi4r89fO4aL/3Xtw+zuh +TaRjAv04l5U/BXCga99igUOLtFkNSoxUnMW7gZ/NfaXvCyUeOiDbHPwfmGcCCtRzRBPbUYQaVQNW +4AB+dAb/OMRyHdOoP2gxXdMJxy6MW2Pg6Nwe0uxhHvLe5e/2mXZgLR6UcnHGCyoyx5JO1UbXHfmp +GQrI+pXObSOYqgs4rZpWDW+N8TEAiMEXnM0ZNjX+VVOg4DwzX5Ze4jLp3zO7Bkqp2IRzznfSxqxx +4VyjHQy7Ct9f4qNx2No3WqB4K/TUfet27fJhcKVlmtOJNBir+3I+17Q9eVzYH6Eze9mCUAyTF6ps +3MKCuwJXNq+YJyo5UOGwifUll35HaBC07HPKs5fRJNz2YqAo07WjuGS3iGJCz51TzZm+ZGiPTx4S +SPfSKcOYKMryMguTjClPPGAyzQWWYezyr/6zcCwupvI= +-----END CERTIFICATE----- + +BJCA Global Root CA2 +==================== +-----BEGIN CERTIFICATE----- +MIICJTCCAaugAwIBAgIQLBcIfWQqwP6FGFkGz7RK6zAKBggqhkjOPQQDAzBUMQswCQYDVQQGEwJD +TjEmMCQGA1UECgwdQkVJSklORyBDRVJUSUZJQ0FURSBBVVRIT1JJVFkxHTAbBgNVBAMMFEJKQ0Eg +R2xvYmFsIFJvb3QgQ0EyMB4XDTE5MTIxOTAzMTgyMVoXDTQ0MTIxMjAzMTgyMVowVDELMAkGA1UE +BhMCQ04xJjAkBgNVBAoMHUJFSUpJTkcgQ0VSVElGSUNBVEUgQVVUSE9SSVRZMR0wGwYDVQQDDBRC +SkNBIEdsb2JhbCBSb290IENBMjB2MBAGByqGSM49AgEGBSuBBAAiA2IABJ3LgJGNU2e1uVCxA/jl +SR9BIgmwUVJY1is0j8USRhTFiy8shP8sbqjV8QnjAyEUxEM9fMEsxEtqSs3ph+B99iK++kpRuDCK +/eHeGBIK9ke35xe/J4rUQUyWPGCWwf0VHKNCMEAwHQYDVR0OBBYEFNJKsVF/BvDRgh9Obl+rg/xI +1LCRMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMAoGCCqGSM49BAMDA2gAMGUCMBq8 +W9f+qdJUDkpd0m2xQNz0Q9XSSpkZElaA94M04TVOSG0ED1cxMDAtsaqdAzjbBgIxAMvMh1PLet8g +UXOQwKhbYdDFUDn9hf7B43j4ptZLvZuHjw/l1lOWqzzIQNph91Oj9w== +-----END CERTIFICATE----- diff --git a/civicrm/xml/schema/ACL/ACL.xml b/civicrm/xml/schema/ACL/ACL.xml index 8a19fab23a..1e058ab473 100644 --- a/civicrm/xml/schema/ACL/ACL.xml +++ b/civicrm/xml/schema/ACL/ACL.xml @@ -117,7 +117,7 @@ </html> <pseudoconstant> <callback>CRM_ACL_BAO_ACL::getObjectIdOptions</callback> - <prefetch>false</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <field> diff --git a/civicrm/xml/schema/Activity/Activity.xml b/civicrm/xml/schema/Activity/Activity.xml index bc55111df0..9048aa1085 100644 --- a/civicrm/xml/schema/Activity/Activity.xml +++ b/civicrm/xml/schema/Activity/Activity.xml @@ -373,7 +373,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Campaign/CampaignGroup.xml b/civicrm/xml/schema/Campaign/CampaignGroup.xml index 317c9ee506..e88fb0a430 100644 --- a/civicrm/xml/schema/Campaign/CampaignGroup.xml +++ b/civicrm/xml/schema/Campaign/CampaignGroup.xml @@ -37,7 +37,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Campaign/Survey.xml b/civicrm/xml/schema/Campaign/Survey.xml index 4ec988168e..8a2fe3627c 100644 --- a/civicrm/xml/schema/Campaign/Survey.xml +++ b/civicrm/xml/schema/Campaign/Survey.xml @@ -54,7 +54,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> @@ -91,12 +91,8 @@ <title>Follow up Interval</title> <type>text</type> <comment>Recontact intervals for each status.</comment> - <html> - <type>TextArea</type> - <rows>20</rows> - <cols>80</cols> - </html> <add>3.3</add> + <drop>5.66</drop> </field> <field> diff --git a/civicrm/xml/schema/Case/Case.xml b/civicrm/xml/schema/Case/Case.xml index 7065db62c8..d78de6fc22 100644 --- a/civicrm/xml/schema/Case/Case.xml +++ b/civicrm/xml/schema/Case/Case.xml @@ -122,6 +122,7 @@ </pseudoconstant> <html> <type>Select</type> + <controlField>case_type_id</controlField> </html> <add>1.8</add> </field> diff --git a/civicrm/xml/schema/Contact/Contact.xml b/civicrm/xml/schema/Contact/Contact.xml index 4d25e0cd87..c1d50300f6 100644 --- a/civicrm/xml/schema/Contact/Contact.xml +++ b/civicrm/xml/schema/Contact/Contact.xml @@ -137,6 +137,7 @@ <html> <type>Select</type> <multiple>1</multiple> + <controlField>contact_type</controlField> </html> <serialize>SEPARATOR_BOOKEND</serialize> <add>1.5</add> diff --git a/civicrm/xml/schema/Contact/Group.xml b/civicrm/xml/schema/Contact/Group.xml index d97b95dc56..80cfc167a6 100644 --- a/civicrm/xml/schema/Contact/Group.xml +++ b/civicrm/xml/schema/Contact/Group.xml @@ -198,7 +198,7 @@ <keyColumn>id</keyColumn> <nameColumn>name</nameColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> <html> <type>EntityRef</type> @@ -218,7 +218,7 @@ <keyColumn>id</keyColumn> <nameColumn>name</nameColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> <html> <type>EntityRef</type> diff --git a/civicrm/xml/schema/Contribute/Contribution.xml b/civicrm/xml/schema/Contribute/Contribution.xml index 3e7428a1ce..dc9ee31226 100644 --- a/civicrm/xml/schema/Contribute/Contribution.xml +++ b/civicrm/xml/schema/Contribute/Contribution.xml @@ -480,7 +480,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> <html> <type>EntityRef</type> @@ -513,6 +513,8 @@ <headerPattern>/tax(.?am(ou)?nt)?/i</headerPattern> <dataPattern>/^\d+(\.\d{2})?$/</dataPattern> <comment>Total tax amount of this contribution.</comment> + <default>0</default> + <required>true</required> <add>4.6</add> <html> <type>Text</type> diff --git a/civicrm/xml/schema/Contribute/ContributionPage.xml b/civicrm/xml/schema/Contribute/ContributionPage.xml index 025ff82477..c0e030b048 100644 --- a/civicrm/xml/schema/Contribute/ContributionPage.xml +++ b/civicrm/xml/schema/Contribute/ContributionPage.xml @@ -222,6 +222,11 @@ <title>Pay Later Receipt</title> <type>text</type> <localizable>true</localizable> + <html> + <type>RichTextEditor</type> + <rows>8</rows> + <cols>60</cols> + </html> <comment>The receipt sent to the user instead of the normal receipt text</comment> <add>2.0</add> </field> @@ -501,7 +506,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Contribute/ContributionRecur.xml b/civicrm/xml/schema/Contribute/ContributionRecur.xml index d15272ffbf..0aae506922 100644 --- a/civicrm/xml/schema/Contribute/ContributionRecur.xml +++ b/civicrm/xml/schema/Contribute/ContributionRecur.xml @@ -433,7 +433,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Core/ActionSchedule.xml b/civicrm/xml/schema/Core/ActionSchedule.xml index 78da24ff4a..9063c21e40 100644 --- a/civicrm/xml/schema/Core/ActionSchedule.xml +++ b/civicrm/xml/schema/Core/ActionSchedule.xml @@ -7,6 +7,7 @@ <comment>Table to store the reminders.</comment> <add>3.4</add> <labelField>title</labelField> + <title>Scheduled Reminder</title> <paths> <browse>civicrm/admin/scheduleReminders</browse> <add>civicrm/admin/scheduleReminders/edit?reset=1&action=add</add> @@ -31,14 +32,27 @@ <name>name</name> <title>Name</title> <type>varchar</type> + <required>true</required> + <html> + <type>Text</type> + </html> <length>64</length> <comment>Name of the action(reminder)</comment> <add>3.4</add> </field> + <index> + <name>UI_name</name> + <fieldName>name</fieldName> + <unique>true</unique> + <add>5.65</add> + </index> <field> <name>title</name> <title>Title</title> <type>varchar</type> + <html> + <type>Text</type> + </html> <length>64</length> <comment>Title of the action(reminder)</comment> <add>3.4</add> @@ -49,8 +63,13 @@ <length>64</length> <comment>Recipient</comment> <html> - <label>Recipient</label> + <label>Limit or Add Recipients</label> + <type>Select</type> + <controlField>mapping_id</controlField> </html> + <pseudoconstant> + <callback>CRM_Core_BAO_ActionSchedule::getRecipientOptions</callback> + </pseudoconstant> <add>3.4</add> </field> <field> @@ -58,10 +77,12 @@ <type>int</type> <comment>Is this the recipient criteria limited to OR in addition to?</comment> <html> - <label>Limit To</label> + <label>Limit/Add</label> + <type>Select</type> + <controlField>mapping_id</controlField> </html> <pseudoconstant> - <callback>CRM_Core_SelectValues::getLimitToValues</callback> + <callback>CRM_Core_BAO_ActionSchedule::getLimitToOptions</callback> </pseudoconstant> <add>4.4</add> </field> @@ -105,6 +126,8 @@ <comment>Reminder Interval.</comment> <default>0</default> <html> + <type>Number</type> + <min>0</min> <label>Start Action Offset</label> </html> <add>3.4</add> @@ -130,8 +153,12 @@ <length>64</length> <comment>Reminder Action</comment> <html> - <label>Start Action condition</label> + <type>Select</type> + <label>Start Condition</label> </html> + <pseudoconstant> + <callback>CRM_Core_SelectValues::beforeAfter</callback> + </pseudoconstant> <add>3.4</add> </field> <field> @@ -181,6 +208,8 @@ <default>0</default> <comment>Time interval for repeating the reminder.</comment> <html> + <type>Number</type> + <min>0</min> <label>Repetition Frequency Interval</label> </html> <add>3.4</add> @@ -205,6 +234,8 @@ <type>int unsigned</type> <comment>Time interval till repeating the reminder.</comment> <html> + <type>Number</type> + <min>0</min> <label>End Frequency Interval</label> </html> <add>3.4</add> @@ -216,8 +247,12 @@ <length>32</length> <comment>Reminder Action till repeating the reminder.</comment> <html> - <label>End Action</label> + <type>Select</type> + <label>End Condition</label> </html> + <pseudoconstant> + <callback>CRM_Core_SelectValues::beforeAfter</callback> + </pseudoconstant> <add>3.4</add> </field> <field> @@ -252,6 +287,11 @@ <name>recipient_manual</name> <title>Recipient Manual</title> <type>varchar</type> + <html> + <type>EntityRef</type> + <label>Manual Recipients</label> + <multiple>1</multiple> + </html> <length>128</length> <comment>Contact IDs to which reminder should be sent.</comment> <serialize>COMMA</serialize> @@ -262,6 +302,16 @@ <title>Recipient Listing</title> <type>varchar</type> <length>128</length> + <serialize>SEPARATOR_TRIMMED</serialize> + <html> + <label>Recipient Roles</label> + <type>Select</type> + <multiple>1</multiple> + <controlField>recipient</controlField> + </html> + <pseudoconstant> + <callback>CRM_Core_BAO_ActionSchedule::getRecipientListingOptions</callback> + </pseudoconstant> <comment>listing based on recipient field.</comment> <add>4.1</add> </field> @@ -269,6 +319,9 @@ <name>body_text</name> <title>Reminder Text</title> <type>longtext</type> + <html> + <type>TextArea</type> + </html> <comment>Body of the mailing in text format.</comment> <add>3.4</add> </field> @@ -276,6 +329,9 @@ <name>body_html</name> <title>Reminder HTML</title> <type>longtext</type> + <html> + <type>RichTextEditor</type> + </html> <comment>Body of the mailing in html format.</comment> <add>3.4</add> </field> @@ -283,6 +339,9 @@ <name>sms_body_text</name> <title>SMS Reminder Text</title> <type>longtext</type> + <html> + <type>TextArea</type> + </html> <comment>Content of the SMS text.</comment> <add>4.5</add> </field> @@ -290,14 +349,20 @@ <name>subject</name> <title>Reminder Subject</title> <type>varchar</type> + <html> + <type>Text</type> + </html> <length>128</length> <comment>Subject of mailing</comment> <add>3.4</add> </field> <field> <name>record_activity</name> - <title>Record Activity for Reminder?</title> + <title>Record Activity</title> <type>boolean</type> + <html> + <type>CheckBox</type> + </html> <default>0</default> <required>true</required> <comment>Record Activity for this reminder?</comment> @@ -314,6 +379,7 @@ </html> <pseudoconstant> <callback>CRM_Core_BAO_ActionSchedule::getMappingOptions</callback> + <suffixes>name,label,icon</suffixes> </pseudoconstant> <comment>Name/ID of the mapping to use on this table</comment> <add>3.4</add> @@ -327,7 +393,7 @@ <table>civicrm_group</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> <html> <type>EntityRef</type> @@ -375,6 +441,10 @@ <name>absolute_date</name> <title>Fixed Date for Reminder</title> <type>date</type> + <html> + <type>Select Date</type> + <formatType>activityDate</formatType> + </html> <comment>Date on which the reminder be sent.</comment> <add>4.1</add> </field> @@ -382,6 +452,10 @@ <name>from_name</name> <title>Reminder from Name</title> <type>varchar</type> + <html> + <label>From Name</label> + <type>Text</type> + </html> <length>255</length> <comment>Name in "from" field</comment> <add>4.5</add> @@ -390,6 +464,10 @@ <name>from_email</name> <title>Reminder From Email</title> <type>varchar</type> + <html> + <label>From Email</label> + <type>Email</type> + </html> <length>255</length> <comment>Email address in "from" field</comment> <add>4.5</add> @@ -418,6 +496,9 @@ <type>Select</type> <label>SMS Provider</label> </html> + <pseudoconstant> + <callback>CRM_Core_SelectValues::smsProvider</callback> + </pseudoconstant> </field> <foreignKey> <name>sms_provider_id</name> @@ -441,9 +522,15 @@ <type>varchar</type> <length>128</length> <comment>Used for multilingual installation</comment> + <serialize>SEPARATOR_TRIMMED</serialize> <html> - <label>Filter Contact Language</label> + <type>Select</type> + <multiple>1</multiple> + <label>Recipients Language</label> </html> + <pseudoconstant> + <callback>CRM_Core_BAO_ActionSchedule::getFilterContactLanguageOptions</callback> + </pseudoconstant> <add>4.7</add> </field> <field> @@ -452,8 +539,12 @@ <length>8</length> <comment>Used for multilingual installation</comment> <html> + <type>Select</type> <label>Communication Language</label> </html> + <pseudoconstant> + <callback>CRM_Core_BAO_ActionSchedule::getCommunicationLanguageOptions</callback> + </pseudoconstant> <add>4.7</add> </field> <field> @@ -484,6 +575,10 @@ <title>Effective start date</title> <uniqueName>action_schedule_effective_start_date</uniqueName> <type>timestamp</type> + <html> + <type>Select Date</type> + <formatType>activityDate</formatType> + </html> <comment>Earliest date to consider start events from.</comment> <required>false</required> <export>true</export> @@ -494,6 +589,10 @@ <title>Effective end date</title> <uniqueName>action_schedule_effective_end_date</uniqueName> <type>timestamp</type> + <html> + <type>Select Date</type> + <formatType>activityDate</formatType> + </html> <comment>Latest date to consider end events from.</comment> <required>false</required> <export>true</export> diff --git a/civicrm/xml/schema/Core/Address.xml b/civicrm/xml/schema/Core/Address.xml index f9f06ed27c..97199ff588 100644 --- a/civicrm/xml/schema/Core/Address.xml +++ b/civicrm/xml/schema/Core/Address.xml @@ -273,6 +273,8 @@ <keyColumn>id</keyColumn> <labelColumn>name</labelColumn> <abbrColumn>abbreviation</abbrColumn> + <!-- No 'name' suffix tells SearchKit to use Autocomplete. See #25053 --> + <suffixes>label,abbr</suffixes> </pseudoconstant> <html> <type>ChainSelect</type> @@ -301,6 +303,8 @@ <keyColumn>id</keyColumn> <labelColumn>name</labelColumn> <abbrColumn>abbreviation</abbrColumn> + <!-- No 'name' suffix tells SearchKit to use Autocomplete. See #25053 --> + <suffixes>label,abbr</suffixes> </pseudoconstant> <localize_context>province</localize_context> <html> @@ -372,6 +376,8 @@ <labelColumn>name</labelColumn> <nameColumn>iso_code</nameColumn> <abbrColumn>iso_code</abbrColumn> + <!-- No 'name' suffix tells SearchKit to use Autocomplete. See #25053 --> + <suffixes>label,abbr</suffixes> </pseudoconstant> <localize_context>country</localize_context> <html> diff --git a/civicrm/xml/schema/Core/CustomGroup.xml b/civicrm/xml/schema/Core/CustomGroup.xml index 186c9c60d5..95f67f66b2 100644 --- a/civicrm/xml/schema/Core/CustomGroup.xml +++ b/civicrm/xml/schema/Core/CustomGroup.xml @@ -63,6 +63,7 @@ <add>1.1</add> <pseudoconstant> <callback>CRM_Core_BAO_CustomGroup::getCustomGroupExtendsOptions</callback> + <suffixes>name,label,grouping</suffixes> </pseudoconstant> <html> <type>Select</type> @@ -76,6 +77,7 @@ <comment>FK to civicrm_option_value.id (for option group custom_data_type.)</comment> <pseudoconstant> <callback>CRM_Core_BAO_CustomGroup::getExtendsEntityColumnIdOptions</callback> + <suffixes>name,label,grouping</suffixes> </pseudoconstant> <add>2.2</add> <html> diff --git a/civicrm/xml/schema/Core/Discount.xml b/civicrm/xml/schema/Core/Discount.xml index c1113add76..8e7b921866 100644 --- a/civicrm/xml/schema/Core/Discount.xml +++ b/civicrm/xml/schema/Core/Discount.xml @@ -27,6 +27,10 @@ <title>Entity Table</title> <type>varchar</type> <length>64</length> + <pseudoconstant> + <callback>CRM_Core_BAO_Discount::entityTables</callback> + </pseudoconstant> + <required>true</required> <comment>physical tablename for entity being joined to discount, e.g. civicrm_event</comment> <add>2.1</add> </field> @@ -65,6 +69,7 @@ <html> <label>Price Set</label> <type>Select</type> + <controlField>entity_id</controlField> </html> <add>4.3</add> </field> diff --git a/civicrm/xml/schema/Core/EntityTag.xml b/civicrm/xml/schema/Core/EntityTag.xml index cccfd8314d..ab063e8a7d 100644 --- a/civicrm/xml/schema/Core/EntityTag.xml +++ b/civicrm/xml/schema/Core/EntityTag.xml @@ -62,6 +62,7 @@ <html> <type>Select</type> <label>Tag</label> + <controlField>entity_table</controlField> </html> </field> <foreignKey> diff --git a/civicrm/xml/schema/Core/MailSettings.xml b/civicrm/xml/schema/Core/MailSettings.xml index 1a94d54b05..9ef04279d1 100644 --- a/civicrm/xml/schema/Core/MailSettings.xml +++ b/civicrm/xml/schema/Core/MailSettings.xml @@ -195,4 +195,88 @@ <description>If this option is enabled, CiviCRM will not create new contacts when filing emails.</description> <add>5.31</add> </field> + <field> + <name>is_active</name> + <title>Enabled?</title> + <type>boolean</type> + <comment>Ignored for bounce processing, only for email-to-activity</comment> + <default>1</default> + <required>true</required> + <html> + <type>CheckBox</type> + </html> + <add>5.66</add> + </field> + <field> + <name>activity_type_id</name> + <title>Activity Type</title> + <type>int unsigned</type> + <comment>Implicit FK to civicrm_option_value where option_group = activity_type</comment> + <add>5.66</add> + <pseudoconstant> + <optionGroupName>activity_type</optionGroupName> + </pseudoconstant> + <html> + <type>Select</type> + </html> + </field> + <field> + <name>campaign_id</name> + <title>Campaign ID</title> + <type>int unsigned</type> + <default>NULL</default> + <comment>Foreign key to the Campaign.</comment> + <html> + <type>EntityRef</type> + <label>Campaign</label> + </html> + <add>5.66</add> + <pseudoconstant> + <table>civicrm_campaign</table> + <keyColumn>id</keyColumn> + <labelColumn>title</labelColumn> + <prefetch>FALSE</prefetch> + </pseudoconstant> + </field> + <foreignKey> + <name>campaign_id</name> + <table>civicrm_campaign</table> + <key>id</key> + <add>5.66</add> + <onDelete>SET NULL</onDelete> + </foreignKey> + <field> + <name>activity_source</name> + <title>Activity Source</title> + <type>varchar</type> + <length>4</length> + <comment>Which email recipient to add as the activity source (from, to, cc, bcc).</comment> + <html> + <type>Select</type> + </html> + <add>5.66</add> + </field> + <field> + <name>activity_targets</name> + <title>Activity Targets</title> + <type>varchar</type> + <length>16</length> + <comment>Which email recipients to add as the activity targets (from, to, cc, bcc).</comment> + <html> + <type>Select</type> + </html> + <serialize>COMMA</serialize> + <add>5.66</add> + </field> <field> + <name>activity_assignees</name> + <title>Activity Assignees</title> + <type>varchar</type> + <length>16</length> + <comment>Which email recipients to add as the activity assignees (from, to, cc, bcc).</comment> + <html> + <type>Select</type> + </html> + <serialize>COMMA</serialize> + <add>5.66</add> + </field> </table> diff --git a/civicrm/xml/schema/Core/UserJob.xml b/civicrm/xml/schema/Core/UserJob.xml index 53a66964d9..bdd196a9c9 100644 --- a/civicrm/xml/schema/Core/UserJob.xml +++ b/civicrm/xml/schema/Core/UserJob.xml @@ -132,6 +132,7 @@ </html> <pseudoconstant> <callback>CRM_Core_BAO_UserJob::getTypes</callback> + <suffixes>name,label,url</suffixes> </pseudoconstant> <add>5.50</add> </field> diff --git a/civicrm/xml/schema/Event/Event.xml b/civicrm/xml/schema/Event/Event.xml index a83492e983..987d8e01eb 100644 --- a/civicrm/xml/schema/Event/Event.xml +++ b/civicrm/xml/schema/Event/Event.xml @@ -831,7 +831,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Event/Participant.xml b/civicrm/xml/schema/Event/Participant.xml index 5d0bd26741..85e09c766c 100644 --- a/civicrm/xml/schema/Event/Participant.xml +++ b/civicrm/xml/schema/Event/Participant.xml @@ -287,7 +287,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Mailing/Mailing.xml b/civicrm/xml/schema/Mailing/Mailing.xml index d6f30e66b9..3a62f47368 100644 --- a/civicrm/xml/schema/Mailing/Mailing.xml +++ b/civicrm/xml/schema/Mailing/Mailing.xml @@ -487,7 +487,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Member/Membership.xml b/civicrm/xml/schema/Member/Membership.xml index bc838f6948..cbc921ceab 100644 --- a/civicrm/xml/schema/Member/Membership.xml +++ b/civicrm/xml/schema/Member/Membership.xml @@ -296,7 +296,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Pledge/Pledge.xml b/civicrm/xml/schema/Pledge/Pledge.xml index 779c60965e..df479d0e6c 100644 --- a/civicrm/xml/schema/Pledge/Pledge.xml +++ b/civicrm/xml/schema/Pledge/Pledge.xml @@ -310,6 +310,7 @@ <type>int unsigned</type> <html> <type>Select</type> + <label>Status</label> </html> <pseudoconstant> <optionGroupName>pledge_status</optionGroupName> @@ -351,7 +352,7 @@ <table>civicrm_campaign</table> <keyColumn>id</keyColumn> <labelColumn>title</labelColumn> - <prefetch>FALSE</prefetch> + <prefetch>disabled</prefetch> </pseudoconstant> </field> <foreignKey> diff --git a/civicrm/xml/schema/Price/LineItem.xml b/civicrm/xml/schema/Price/LineItem.xml index d34c93dfbd..96c05cb02f 100644 --- a/civicrm/xml/schema/Price/LineItem.xml +++ b/civicrm/xml/schema/Price/LineItem.xml @@ -224,6 +224,8 @@ <headerPattern>/tax(.?am(ou)?nt)?/i</headerPattern> <dataPattern>/^\d+(\.\d{2})?$/</dataPattern> <comment>tax of each item</comment> + <default>0</default> + <required>true</required> <add>4.6</add> <html> <type>Text</type> diff --git a/civicrm/xml/templates/civicrm_data.tpl b/civicrm/xml/templates/civicrm_data.tpl index 6164992821..5885d2b719 100644 --- a/civicrm/xml/templates/civicrm_data.tpl +++ b/civicrm/xml/templates/civicrm_data.tpl @@ -43,62 +43,54 @@ VALUES INSERT INTO civicrm_domain (name, version, contact_id) VALUES (@domainName, '2.2', @contactID); SELECT @domainID := id FROM civicrm_domain where name = 'Default Domain Name'; -{php}echo (include "sql/civicrm_data/civicrm_location_type.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_relationship_type.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_tag.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_component.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_financial_type.sqldata.php")->toSQL();{/php} -{php} - $optionGroups = include 'sql/civicrm_data/civicrm_option_group.php'; - $laterGroups = ['encounter_medium', 'soft_credit_type', 'recent_items_providers']; - foreach ($optionGroups as $groupName => $group) { - if (!in_array($groupName, $laterGroups)) { - echo $group->toSQL(); - } - } -{/php} +{crmSqlData file="sql/civicrm_data/civicrm_location_type.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_relationship_type.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_tag.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_component.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_financial_type.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_option_group/*.sqldata.php" exclude=';(encounter_medium|soft_credit_type|recent_items_providers).sqldata.php$;'} -- CRM-6138 {include file='languages.tpl'} -{php}echo (include "sql/civicrm_data/civicrm_option_group/encounter_medium.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_option_group/encounter_medium.sqldata.php"} -{php}echo (include "sql/civicrm_data/civicrm_membership_status.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_preferences_date.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_payment_processor_type.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_membership_status.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_preferences_date.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_payment_processor_type.sqldata.php"} -{php}echo (include "sql/civicrm_data/civicrm_dedupe_rule/IndividualSupervised.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_dedupe_rule/OrganizationSupervised.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_dedupe_rule/HouseholdSupervised.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_dedupe_rule/IndividualUnsupervised.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_dedupe_rule/OrganizationUnsupervised.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_dedupe_rule/HouseholdUnsupervised.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_dedupe_rule/IndividualGeneral.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_dedupe_rule/IndividualSupervised.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_dedupe_rule/OrganizationSupervised.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_dedupe_rule/HouseholdSupervised.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_dedupe_rule/IndividualUnsupervised.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_dedupe_rule/OrganizationUnsupervised.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_dedupe_rule/HouseholdUnsupervised.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_dedupe_rule/IndividualGeneral.sqldata.php"} -{php}echo (include "sql/civicrm_data/civicrm_county.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_county.sqldata.php"} -- Bounce classification patterns -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/AOL.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Away.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Dns.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Host.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Inactive.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Invalid.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Loop.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Quota.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Relay.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Spam.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_mailing_bounce_type/Syntax.sqldata.php")->toSQL();{/php} - -{php}echo (include "sql/civicrm_data/civicrm_uf_group.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_uf_join.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_uf_field.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_participant_status_type.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_contact_type.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/AOL.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Away.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Dns.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Host.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Inactive.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Invalid.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Loop.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Quota.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Relay.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Spam.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_mailing_bounce_type/Syntax.sqldata.php"} + +{crmSqlData file="sql/civicrm_data/civicrm_uf_group.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_uf_join.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_uf_field.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_participant_status_type.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_contact_type.sqldata.php"} {include file='civicrm_msg_template.tpl'} -{php}echo (include "sql/civicrm_data/civicrm_job.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_job.sqldata.php"} -- financial accounts SELECT @option_group_id_fat := max(id) from civicrm_option_group where name = 'financial_account_type'; @@ -107,7 +99,7 @@ SELECT @opexp := value FROM civicrm_option_value WHERE name = 'Expenses' and opt SELECT @opAsset := value FROM civicrm_option_value WHERE name = 'Asset' and option_group_id = @option_group_id_fat; SELECT @opLiability := value FROM civicrm_option_value WHERE name = 'Liability' and option_group_id = @option_group_id_fat; SELECT @opCost := value FROM civicrm_option_value WHERE name = 'Cost of Sales' and option_group_id = @option_group_id_fat; -{php}echo (include "sql/civicrm_data/civicrm_financial_account.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_financial_account.sqldata.php"} SELECT @option_group_id_arel := max(id) from civicrm_option_group where name = 'account_relationship'; SELECT @option_value_rel_id := value FROM civicrm_option_value WHERE option_group_id = @option_group_id_arel AND name = 'Income Account is'; @@ -188,6 +180,6 @@ SELECT @fieldID := max(id) FROM civicrm_price_field WHERE name = 'contribution_a INSERT INTO `civicrm_price_field_value` ( `price_field_id`, `name`, `label`, `amount`, `weight`, `is_default`, `is_active`, `financial_type_id`) VALUES ( @fieldID, 'contribution_amount', 'Contribution Amount', '1', '1', '0', '1', 1); -{php}echo (include "sql/civicrm_data/civicrm_extension.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_option_group/soft_credit_type.sqldata.php")->toSQL();{/php} -{php}echo (include "sql/civicrm_data/civicrm_option_group/recent_items_providers.sqldata.php")->toSQL();{/php} +{crmSqlData file="sql/civicrm_data/civicrm_extension.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_option_group/soft_credit_type.sqldata.php"} +{crmSqlData file="sql/civicrm_data/civicrm_option_group/recent_items_providers.sqldata.php"} diff --git a/civicrm/xml/templates/civicrm_navigation.tpl b/civicrm/xml/templates/civicrm_navigation.tpl index b628524d61..33f02e768a 100644 --- a/civicrm/xml/templates/civicrm_navigation.tpl +++ b/civicrm/xml/templates/civicrm_navigation.tpl @@ -344,8 +344,8 @@ SET @usersPermslastID:=LAST_INSERT_ID(); INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) VALUES - ( @domainID, 'civicrm/admin/access?reset=1', '{ts escape="sql" skip="true"}Permissions (Access Control){/ts}', 'Permissions (Access Control)', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 1 ), - ( @domainID, 'civicrm/admin/synchUser?reset=1', '{ts escape="sql" skip="true"}Synchronize Users to Contacts{/ts}', 'Synchronize Users to Contacts', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 2 ); + ( @domainID, 'civicrm/admin/access?reset=1', '{ts escape="sql" skip="true"}Access Control Lists{/ts}', 'Permissions (Access Control)', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 5 ), + ( @domainID, 'civicrm/admin/synchUser?reset=1', '{ts escape="sql" skip="true"}Synchronize Users to Contacts{/ts}', 'Synchronize Users to Contacts', 'administer CiviCRM', '', @usersPermslastID, '1', NULL, 10 ); INSERT INTO civicrm_navigation ( domain_id, url, label, name, permission, permission_operator, parent_id, is_active, has_separator, weight ) diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl index 654224447a..a4d76250a2 100644 --- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl @@ -21,7 +21,10 @@ <tr> <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - <p>{ts}Below you will find a receipt for this contribution.{/ts}</p> + <p> + {if {contribution.contribution_page_id.receipt_text|boolean}}{contribution.contribution_page_id.receipt_text} + {else}{ts}Below you will find a receipt for this contribution.{/ts}{/if} + </p> </td> </tr> <tr> @@ -163,7 +166,7 @@ </tr> {/if} - {if '{contribution.payment_instrument_id}' and empty($formValues.hidden_CreditCard)} + {if {contribution.payment_instrument_id|boolean}} <tr> <td {$labelStyle}> {ts}Paid By{/ts} diff --git a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl index 7f5677af35..4e48d1357c 100644 --- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl @@ -1,6 +1,9 @@ {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{ts}Below you will find a receipt for this contribution.{/ts} +{if {contribution.contribution_page_id.receipt_text|boolean}} +{contribution.contribution_page_id.receipt_text} +{else}{ts}Below you will find a receipt for this contribution.{/ts} +{/if} =========================================================== {ts}Contribution Information{/ts} @@ -46,7 +49,7 @@ {if '{contribution.receipt_date}'} {ts}Receipt Date{/ts}: {contribution.receipt_date|crmDate:"shortdate"} {/if} -{if '{contribution.payment_instrument_id}' and empty($formValues.hidden_CreditCard)} +{if {contribution.payment_instrument_id|boolean}} {ts}Paid By{/ts}: {contribution.payment_instrument_id:label} {if '{contribution.check_number}'} {ts}Check Number{/ts}: {contribution.check_number} diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl index 127b8082a7..faa9e2611f 100644 --- a/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_html.tpl @@ -151,13 +151,13 @@ </tr> {/if} - {if !empty($is_monetary) and !empty($trxn_id)} + {if {contribution.trxn_id|boolean}} <tr> <td {$labelStyle}> {ts}Transaction #{/ts} </td> <td {$valueStyle}> - {$trxn_id} + {contribution.trxn_id} </td> </tr> {/if} @@ -407,7 +407,6 @@ </th> </tr> {foreach from=$customPre item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -416,7 +415,6 @@ {$customValue} </td> </tr> - {/if} {/foreach} {/if} @@ -427,7 +425,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} @@ -436,7 +433,6 @@ {$customValue} </td> </tr> - {/if} {/foreach} {/if} diff --git a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl index fc41c039d6..eaeab5d2bd 100644 --- a/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/contribution_online_receipt_text.tpl @@ -52,8 +52,8 @@ {ts}Date{/ts}: {$receive_date|crmDate} {/if} -{if !empty($is_monetary) and !empty($trxn_id)} -{ts}Transaction #{/ts}: {$trxn_id} +{if {contribution.trxn_id|boolean}} +{ts}Transaction #{/ts}: {contribution.trxn_id} {/if} {if !empty($is_recur)} @@ -187,9 +187,7 @@ =========================================================== {foreach from=$customPre item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} @@ -200,8 +198,6 @@ =========================================================== {foreach from=$customPost item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} 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 62887a20d2..16648dbfb6 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl @@ -23,7 +23,7 @@ {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} - <p>{$event.confirm_email_text|htmlize}</p> + <p>{$event.confirm_email_text}</p> {/if} {if !empty($isOnWaitlist)} @@ -49,7 +49,7 @@ <tr> <td colspan="2" {$valueStyle}> {event.title}<br /> - {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} + {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} </td> </tr> @@ -133,7 +133,7 @@ {/if} - {if !empty($event.is_public)} + {if {event.is_public|boolean}} <tr> <td colspan="2" {$valueStyle}> {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} @@ -269,13 +269,13 @@ </tr> {/foreach} {/if} - {if $totalTaxAmount} + {if {contribution.tax_amount|boolean}} <tr> <td {$labelStyle}> {ts}Total Tax Amount{/ts} </td> <td {$valueStyle}> - {$totalTaxAmount|crmMoney:$currency} + {contribution.tax_amount} </td> </tr> {/if} @@ -284,7 +284,7 @@ <tr> <td {$labelStyle}>{ts}Total Paid{/ts}</td> <td {$valueStyle}> - {if {contribution.paid_amount|boolean}}{contribution.paid_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.paid_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> <tr> @@ -295,7 +295,7 @@ <tr> <td {$labelStyle}>{ts}Total Amount{/ts}</td> <td {$valueStyle}> - {if {contribution.total_amount|boolean}}{contribution.total_amount|crmMoney}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> {/if} @@ -329,13 +329,13 @@ </tr> {/if} - {if $register_date} + {if {participant.register_date|boolean}} <tr> <td {$labelStyle}> {ts}Registration Date{/ts} </td> <td {$valueStyle}> - {$register_date|crmDate} + {participant.register_date} </td> </tr> {/if} @@ -428,79 +428,6 @@ {/if} {* End of conditional section for Paid events *} - {if !empty($customPre)} - <tr> - <th {$headerStyle}> - {$customPre_grouptitle} - </th> - </tr> - {foreach from=$customPre item=value key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if !empty($customPost)} - <tr> - <th {$headerStyle}> - {$customPost_grouptitle} - </th> - </tr> - {foreach from=$customPost item=value key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} - <tr> - <td {$labelStyle}> - {$customName} - </td> - <td {$valueStyle}> - {$value} - </td> - </tr> - {/if} - {/foreach} - {/if} - - {if !empty($customProfile)} - {foreach from=$customProfile item=value key=customName} - <tr> - <th {$headerStyle}> - {ts 1=$customName+1}Participant Information - Participant %1{/ts} - </th> - </tr> - {foreach from=$value item=val key=field} - {if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost'} - <tr> - <td colspan="2" {$labelStyle}> - {if $field eq 'additionalCustomPre'} - {$additionalCustomPre_grouptitle} - {else} - {$additionalCustomPost_grouptitle} - {/if} - </td> - </tr> - {foreach from=$val item=v key=f} - <tr> - <td {$labelStyle}> - {$f} - </td> - <td {$valueStyle}> - {$v} - </td> - </tr> - {/foreach} - {/if} - {/foreach} - {/foreach} - {/if} - {if !empty($customGroup)} {foreach from=$customGroup item=value key=customName} <tr> 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 c6f5a8550b..f4c0805a2d 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl @@ -38,7 +38,7 @@ ==========================================================={if !empty($pricesetFieldsCount) }===================={/if} {event.title} -{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} +{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 !empty($event.participant_role) and $event.participant_role neq 'Attendee' and empty($defaultRole)} {ts}Participant Role{/ts}: {$event.participant_role} @@ -67,7 +67,7 @@ {/if} -{if !empty($event.is_public)} +{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} @@ -139,14 +139,14 @@ {/foreach} {/if} -{if $totalTaxAmount} -{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency} +{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}: {if {contribution.paid_amount|boolean}}{contribution.paid_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} +{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}: {if {contribution.total_amount|boolean}}{contribution.total_amount}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} +{else}{ts}Total Amount{/ts}: {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} {/if} {if !empty($pricesetFieldsCount) } @@ -176,8 +176,8 @@ {/if} -{if $register_date} -{ts}Registration Date{/ts}: {$register_date|crmDate} +{if {participant.register_date|boolean}} +{ts}Registration Date{/ts}: {participant.register_date} {/if} {if $receive_date} {ts}Transaction Date{/ts}: {$receive_date|crmDate} @@ -219,62 +219,6 @@ {/if} {/if} {* End of conditional section for Paid events *} -{if !empty($customPre)} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{$customPre_grouptitle} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$customPre item=value key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} -{$customName}: {$value} -{/if} -{/foreach} -{/if} - -{if !empty($customPost)} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{$customPost_grouptitle} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$customPost item=value key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} -{$customName}: {$value} -{/if} -{/foreach} -{/if} -{if !empty($customProfile)} - -{foreach from=$customProfile item=value key=customName} -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{ts 1=$customName+1}Participant Information - Participant %1{/ts} - -==========================================================={if !empty($pricesetFieldsCount) }===================={/if} - -{foreach from=$value item=val key=field} -{if $field eq 'additionalCustomPre' or $field eq 'additionalCustomPost' } -{if $field eq 'additionalCustomPre' } -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{$additionalCustomPre_grouptitle} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{else} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{$additionalCustomPost_grouptitle} -----------------------------------------------------------{if !empty($pricesetFieldsCount) }--------------------{/if} - -{/if} -{foreach from=$val item=v key=f} -{$f}: {$v} -{/foreach} -{/if} -{/foreach} -{/foreach} -{/if} {if !empty($customGroup)} {foreach from=$customGroup item=value key=customName} =========================================================={if !empty($pricesetFieldsCount) }===================={/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 ed43e2a876..e99c60aa5a 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl @@ -26,8 +26,8 @@ <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - {if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))} - <p>{$event.confirm_email_text|htmlize}</p> + {if {event.confirm_email_text|boolean} AND (empty($isOnWaitlist) AND empty($isRequireApproval))} + <p>{event.confirm_email_text}</p> {else} <p>{ts}Thank you for your registration.{/ts} @@ -64,7 +64,7 @@ <tr> <td colspan="2" {$valueStyle}> {event.title}<br /> - {event.start_date|crmDate:"%A"} {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:"%A"} {$event.event_end_date|crmDate}{/if}{/if} + {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} </td> </tr> @@ -189,12 +189,12 @@ </tr> {if $isShowLineItems} - {foreach from=$participants key=index item=participant} - {if $isPrimary || {participant.id} === $participant.id} + {foreach from=$participants key=index item=currentParticipant} + {if $isPrimary || {participant.id} === $currentParticipant.id} {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *} <tr> <td colspan="2" {$labelStyle}> - {ts 1=$participant.index}Participant %1{/ts} {$participant.contact.display_name} + {ts 1=$currentParticipant.index}Participant %1{/ts} {$currentParticipant.contact.display_name} </td> </tr> {/if} @@ -213,7 +213,7 @@ <th>{ts}Total{/ts}</th> {if !empty($pricesetFieldsCount)}<th>{ts}Total Participants{/ts}</th>{/if} </tr> - {foreach from=$participant.line_items item=line} + {foreach from=$currentParticipant.line_items item=line} <tr> <td {$tdfirstStyle}>{$line.title}</td> <td {$tdStyle} align="middle">{$line.qty}</td> @@ -234,9 +234,9 @@ {if $isShowTax} <tr {$participantTotal}> <td colspan=3>{ts}Participant Total{/ts}</td> - <td colspan=2>{$participant.totals.total_amount_exclusive|crmMoney}</td> - <td colspan=1>{$participant.totals.tax_amount|crmMoney}</td> - <td colspan=2>{$participant.totals.total_amount_inclusive|crmMoney}</td> + <td colspan=2>{$currentParticipant.totals.total_amount_exclusive|crmMoney}</td> + <td colspan=1>{$currentParticipant.totals.tax_amount|crmMoney}</td> + <td colspan=2>{$currentParticipant.totals.total_amount_inclusive|crmMoney}</td> </tr> {/if} </table> @@ -422,12 +422,10 @@ {foreach from=$customPre item=customPr key=i} <tr> <th {$headerStyle}>{$customPre_grouptitle.$i}</th></tr> {foreach from=$customPr item=customValue key=customName} - {if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} <tr> <td {$labelStyle}>{$customName}</td> <td {$valueStyle}>{$customValue}</td> </tr> - {/if} {/foreach} {/foreach} {/if} @@ -436,13 +434,11 @@ {foreach from=$customPost item=customPos key=j} <tr> <th {$headerStyle}>{$customPost_grouptitle.$j}</th></tr> {foreach from=$customPos item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} <tr> <td {$labelStyle}>{$customName}</td> <td {$valueStyle}>{$customValue}</td> </tr> -{/if} -{/foreach} + {/foreach} {/foreach} {/if} @@ -467,7 +463,7 @@ <tr> <td colspan="2" {$valueStyle}> {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 /> - {capture assign=selfService}{crmURL p='civicrm/event/selfsvcupdate' q="reset=1&pid=`{participant.id}`&{contact.checksum}" h=0 a=1 fe=1}{/capture} + {capture assign=selfService}{crmURL p='civicrm/event/selfsvcupdate' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture} <a href="{$selfService}">{ts}Click here to transfer or cancel your registration.{/ts}</a> </td> </tr> 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 dcc72e80be..b20cc11626 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl @@ -229,9 +229,7 @@ You were registered by: {$payer.name} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} {foreach from=$customPr item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/foreach} {/if} @@ -244,9 +242,7 @@ You were registered by: {$payer.name} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} {foreach from=$customPos item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/foreach} {/if} @@ -276,6 +272,6 @@ You were registered by: {$payer.name} {if !empty($event.allow_selfcancelxfer) } {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} - {capture assign=selfService}{crmURL p='civicrm/event/selfsvcupdate' q="reset=1&pid=`$participant.id`&{contact.checksum}" h=0 a=1 fe=1}{/capture} + {capture assign=selfService}{crmURL p='civicrm/event/selfsvcupdate' q="reset=1&pid={participant.id}&{contact.checksum}" h=0 a=1 fe=1}{/capture} {ts}Transfer or cancel your registration:{/ts} {$selfService} {/if} 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 e995bbc2b0..61dc61912d 100644 --- a/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/membership_online_receipt_html.tpl @@ -512,7 +512,6 @@ </th> </tr> {foreach from=$customPre item=customValue key=customName} - {if (!empty($trackingFields) and ! in_array($customName, $trackingFields)) or empty($trackingFields)} <tr> <td {$labelStyle}> {$customName} @@ -521,7 +520,6 @@ {$customValue} </td> </tr> - {/if} {/foreach} {/if} diff --git a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl index 1d4b977232..50c8c03663 100644 --- a/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/membership_online_receipt_text.tpl @@ -221,9 +221,7 @@ =========================================================== {foreach from=$customPre item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} @@ -234,8 +232,6 @@ =========================================================== {foreach from=$customPost item=customValue key=customName} -{if ( !empty($trackingFields) and ! in_array( $customName, $trackingFields ) ) or empty($trackingFields)} {$customName}: {$customValue} -{/if} {/foreach} {/if} diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index 9eb58bc4bc..1e590fb8c7 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.65.2</version_no> + <version_no>5.66.0</version_no> </version> diff --git a/includes/civicrm.basepage.php b/includes/civicrm.basepage.php index 29d333db54..0e5eabbd92 100644 --- a/includes/civicrm.basepage.php +++ b/includes/civicrm.basepage.php @@ -36,6 +36,30 @@ class CiviCRM_For_WordPress_Basepage { */ public $civi; + /** + * @var bool + * Base Page parsed flag. + * @since 4.6 + * @access public + */ + public $basepage_parsed = FALSE; + + /** + * @var string + * Base Page title. + * @since 4.6 + * @access public + */ + public $basepage_title = ''; + + /** + * @var string + * Base Page markup. + * @since 4.6 + * @access public + */ + public $basepage_markup = ''; + /** * Instance constructor. * @@ -326,9 +350,14 @@ class CiviCRM_For_WordPress_Basepage { return; } - // Do not proceed without the presence of the CiviCRM query var. - $civicrm_in_wordpress = $this->civi->civicrm_in_wordpress(); - if (!$civicrm_in_wordpress) { + // Check for the Base Page query conditions. + $is_basepage_query = FALSE; + if ($this->civi->civicrm_in_wordpress() && $this->civi->is_page_request()) { + $is_basepage_query = TRUE; + } + + // Do not proceed without them. + if (!$is_basepage_query) { return; } @@ -337,8 +366,14 @@ class CiviCRM_For_WordPress_Basepage { return; } - // Get the current Base Page and set a "found" flag. - $basepage = $this->basepage_get(); + /** + * Fires before the Base Page is processed. + * + * @since 5.66 + */ + do_action('civicrm/basepage/handler/pre'); + + // Set a "found" flag. $basepage_found = FALSE; // Get the Shortcode Mode setting. @@ -368,8 +403,11 @@ class CiviCRM_For_WordPress_Basepage { */ $basepage_mode = (bool) apply_filters('civicrm_force_basepage_mode', FALSE, $post); + // Determine if the current Post is the Base Page. + $is_basepage = $this->is_match($post->ID); + // Skip when this is not the Base Page or when "Base Page mode" is not forced or not in "legacy mode". - if ($basepage->ID === $post->ID || $basepage_mode || $shortcode_mode === 'legacy') { + if ($is_basepage || $basepage_mode || $shortcode_mode === 'legacy') { // Set context. $this->civi->civicrm_context_set('basepage'); @@ -417,6 +455,15 @@ class CiviCRM_For_WordPress_Basepage { // Reset loop. rewind_posts(); + /** + * Fires after the Base Page may have been processed. + * + * @since 5.66 + * + * @param bool $basepage_found TRUE if the CiviCRM Base Page was found, FALSE otherwise. + */ + do_action('civicrm/basepage/handler/post', $basepage_found); + // Bail if the Base Page has not been processed. if (!$basepage_found) { return; @@ -444,15 +491,6 @@ class CiviCRM_For_WordPress_Basepage { add_filter('wp_title', [$this, 'wp_page_title'], 100, 3); add_filter('document_title_parts', [$this, 'wp_page_title_parts'], 100, 1); - // Add compatibility with Yoast SEO plugin's Open Graph title. - add_filter('wpseo_opengraph_title', [$this, 'wpseo_page_title'], 100, 1); - - // Don't let the Yoast SEO plugin parse the Base Page title. - if (class_exists('WPSEO_Frontend')) { - $frontend = WPSEO_Frontend::get_instance(); - remove_filter('pre_get_document_title', [$frontend, 'title'], 15); - } - // Regardless of URL, load page template. add_filter('template_include', [$this, 'basepage_template'], 999); @@ -555,24 +593,6 @@ class CiviCRM_For_WordPress_Basepage { } - /** - * Get CiviCRM Base Page title for Open Graph elements. - * - * Callback method for 'wpseo_opengraph_title' hook, to provide compatibility - * with the WordPress SEO plugin. - * - * @since 4.6.4 - * - * @param string $post_title The title of the WordPress page or post. - * @return string $basepage_title The title of the CiviCRM entity. - */ - public function wpseo_page_title($post_title) { - - // Hand back our Base Page title. - return $this->basepage_title; - - } - /** * Get CiviCRM Base Page content. * @@ -818,40 +838,153 @@ class CiviCRM_For_WordPress_Basepage { */ public function basepage_get() { - // Kick out if not CiviCRM. + // Bail if CiviCRM not bootstrapped. + if (!$this->civi->initialize()) { + return FALSE; + } + + // Get config. + $config = CRM_Core_Config::singleton(); + + // Get Base Page object. + $basepage = get_page_by_path($config->wpBasePage); + if (is_null($basepage) || !($basepage instanceof WP_Post)) { + return FALSE; + } + + /** + * Filters the CiviCRM Base Page object. + * + * @since 5.66 + * + * @param WP_Post $basepage The CiviCRM Base Page object. + */ + return apply_filters('civicrm/basepage', $basepage); + + } + + /** + * Gets the current Base Page ID. + * + * @since 5.66 + * + * @return int|bool The Base Page ID or FALSE on failure. + */ + public function id_get() { + + // Get the Base Page object. + $basepage = $this->basepage_get(); + if (!($basepage instanceof WP_Post)) { + return FALSE; + } + + return $basepage->ID; + + } + + /** + * Gets the current Base Page URL. + * + * @since 5.66 + * + * @return str The Base Page URL or empty on failure. + */ + public function url_get() { + + // Get the Base Page object. + $basepage = $this->basepage_get(); + if (!($basepage instanceof WP_Post)) { + return ''; + } + + return get_permalink($basepage->ID); + + } + + /** + * Gets the Base Page title. + * + * @since 5.66 + * + * @return string $basepage_title The title of the CiviCRM entity. + */ + public function title_get() { + return $this->basepage_title; + } + + /** + * Checks a Post ID against the Base Page ID. + * + * @since 5.66 + * + * @param int $post_id The Post ID to check. + * @return bool TRUE if the Post ID matches the Base Page ID, or FALSE otherwise. + */ + public function is_match($post_id) { + + // Get the Base Page ID. + $basepage_id = $this->id_get(); + if ($basepage_id === FALSE) { + return FALSE; + } + + // Determine if the given Post is the Base Page. + $is_basepage = $basepage_id === $post_id ? TRUE : FALSE; + + /** + * Filters the CiviCRM Base Page match. + * + * @since 5.66 + * + * @param bool $is_basepage TRUE if the Post ID matches the Base Page ID, FALSE otherwise. + * @param int $post_id The WordPress Post ID to check. + */ + return apply_filters('civicrm/basepage/match', $is_basepage, $post_id); + + } + + /** + * Gets the current Base Page setting. + * + * @since 5.66 + * + * @return string|bool $setting The Base Page setting, or FALSE on failure. + */ + public function setting_get() { + + // Bail if CiviCRM not bootstrapped. if (!$this->civi->initialize()) { return FALSE; } // Get the setting. - $basepage_slug = civicrm_api3('Setting', 'getvalue', [ + $setting = civicrm_api3('Setting', 'getvalue', [ 'name' => 'wpBasePage', 'group' => 'CiviCRM Preferences', ]); - // Did we get a value? - if (!empty($basepage_slug)) { - - // Define the query for our Base Page. - $args = [ - 'post_type' => 'page', - 'name' => strtolower($basepage_slug), - 'post_status' => 'publish', - 'posts_per_page' => 1, - ]; + return $setting; - // Do the query. - $pages = get_posts($args); + } - } + /** + * Sets the current Base Page setting. + * + * @since 5.66 + * + * @param string $slug The Base Page setting. + */ + public function setting_set($slug) { - // Find the Base Page object. - $basepage = FALSE; - if (!empty($pages) && is_array($pages)) { - $basepage = array_pop($pages); + // Bail if CiviCRM not bootstrapped. + if (!$this->civi->initialize()) { + return; } - return $basepage; + // Set the setting. + civicrm_api3('Setting', 'create', [ + 'wpBasePage' => $slug, + ]); } diff --git a/includes/civicrm.compat.php b/includes/civicrm.compat.php index 063525d1fb..94aadfa925 100644 --- a/includes/civicrm.compat.php +++ b/includes/civicrm.compat.php @@ -22,7 +22,7 @@ if (!defined('ABSPATH')) { } /** - * Define CiviCRM_For_WordPress_Compat Class. + * Compatibility class. * * @since 5.24 */ @@ -36,6 +36,30 @@ class CiviCRM_For_WordPress_Compat { */ public $civi; + /** + * @var object + * Miscellaneous plugin compatibility object. + * @since 5.66 + * @access public + */ + public $misc; + + /** + * @var object + * Polylang compatibility object. + * @since 5.66 + * @access public + */ + public $polylang; + + /** + * @var object + * WPML compatibility object. + * @since 5.66 + * @access public + */ + public $wpml; + /** * Instance constructor. * @@ -46,123 +70,38 @@ class CiviCRM_For_WordPress_Compat { // Store reference to CiviCRM plugin object. $this->civi = civi_wp(); - // Register plugin compatibility hooks. - $this->register_hooks(); + // Includes and setup. + $this->include_files(); + $this->setup_objects(); } /** - * Register plugin compatibility hooks. - * - * This is called via the constructor during the "plugins_loaded" action which - * is much earlier that CiviCRM's own internal hooks. The reason for this is - * that compability may need callbacks for events that fire well before "init" - * which is when CiviCRM begins to load. + * Include files. * - * @since 5.24 + * @since 5.66 */ - public function register_hooks() { - - // Bail if CiviCRM not installed yet. - if (!CIVICRM_INSTALLED) { - return; - } + public function include_files() { - // Support Clean URLs when Polylang is active. - add_action('civicrm_after_rewrite_rules', [$this, 'rewrite_rules_polylang'], 10, 2); - - // Prevent AIOSEO from stomping on CiviCRM Shortcodes. - add_filter('aioseo_conflicting_shortcodes', [$this, 'aioseo_resolve_conflict']); + // Include plugin compatibility files. + include_once CIVICRM_PLUGIN_DIR . 'includes/compatibility/civicrm.misc.php'; + include_once CIVICRM_PLUGIN_DIR . 'includes/compatibility/civicrm.polylang.php'; + include_once CIVICRM_PLUGIN_DIR . 'includes/compatibility/civicrm.wpml.php'; } /** - * Support Polylang. - * - * @since 5.24 + * Instantiate objects. * - * @param bool $flush_rewrite_rules True if rules flushed, false otherwise. - * @param WP_Post $basepage The Base Page post object. + * @since 5.66 */ - public function rewrite_rules_polylang($flush_rewrite_rules, $basepage) { - - // Bail if Polylang is not present. - if (!function_exists('pll_languages_list')) { - return; - } - - /* - * Collect all rewrite rules into an array. - * - * Because the array of specific Post IDs is added *after* the array of - * paths for the Base Page ID, those specific rewrite rules will "win" over - * the more general Base Page rules. - */ - $collected_rewrites = []; - - // Support prefixes for a single Base Page. - $basepage_url = get_permalink($basepage->ID); - $basepage_raw_url = PLL()->links_model->remove_language_from_link($basepage_url); - $language_slugs = pll_languages_list(); - foreach ($language_slugs as $slug) { - $language = PLL()->model->get_language($slug); - $language_url = PLL()->links_model->add_language_to_link($basepage_raw_url, $language); - $parsed_url = wp_parse_url($language_url, PHP_URL_PATH); - $regex_path = substr($parsed_url, 1); - $collected_rewrites[$basepage->ID][] = $regex_path; - $post_id = pll_get_post($basepage->ID, $slug); - if (!empty($post_id)) { - $collected_rewrites[$post_id][] = $regex_path; - } - }; - - // Support prefixes for Base Pages in multiple languages. - foreach ($language_slugs as $slug) { - $post_id = pll_get_post($basepage->ID, $slug); - if (empty($post_id)) { - continue; - } - $url = get_permalink($post_id); - $parsed_url = wp_parse_url($url, PHP_URL_PATH); - $regex_path = substr($parsed_url, 1); - $collected_rewrites[$basepage->ID][] = $regex_path; - $collected_rewrites[$post_id][] = $regex_path; - }; - - // Make collection unique and add remaining rewrite rules. - $rewrites = array_map('array_unique', $collected_rewrites); - if (!empty($rewrites)) { - foreach ($rewrites as $post_id => $rewrite) { - foreach ($rewrite as $path) { - add_rewrite_rule( - '^' . $path . '([^?]*)?', - 'index.php?page_id=' . $post_id . '&civiwp=CiviCRM&q=civicrm%2F$matches[1]', - 'top' - ); - } - } - } - - // Maybe force flush. - if ($flush_rewrite_rules) { - flush_rewrite_rules(); - } + public function setup_objects() { - } + // Instantiate plugin compatibility objects. + $this->misc = new CiviCRM_For_WordPress_Compat_Misc(); + $this->polylang = new CiviCRM_For_WordPress_Compat_Polylang(); + $this->wpml = new CiviCRM_For_WordPress_Compat_WPML(); - /** - * Fixes AIOSEO's attempt to modify Shortcodes. - * - * @see https://civicrm.stackexchange.com/questions/40765/wp-all-in-one-seo-plugin-conflict - * - * @since 5.45 - * - * @param array $conflicting_shortcodes The existing AIOSEO Conflicting Shortcodes array. - * @return array $conflicting_shortcodes The modified AIOSEO Conflicting Shortcodes array. - */ - public function aioseo_resolve_conflict($conflicting_shortcodes) { - $conflicting_shortcodes['CiviCRM'] = 'civicrm'; - return $conflicting_shortcodes; } } diff --git a/includes/compatibility/civicrm.misc.php b/includes/compatibility/civicrm.misc.php new file mode 100644 index 0000000000..627af6ee74 --- /dev/null +++ b/includes/compatibility/civicrm.misc.php @@ -0,0 +1,130 @@ +<?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 | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + * + */ + +// This file must not accessed directly. +if (!defined('ABSPATH')) { + exit; +} + +/** + * Miscellaneous plugin compatibility class. + * + * @since 5.24 + */ +class CiviCRM_For_WordPress_Compat_Misc { + + /** + * @var object + * Plugin object reference. + * @since 5.24 + * @access public + */ + public $civi; + + /** + * Instance constructor. + * + * @since 5.24 + */ + public function __construct() { + + // Store reference to CiviCRM plugin object. + $this->civi = civi_wp(); + + // Register plugin compatibility hooks. + $this->register_hooks(); + + } + + /** + * Register plugin compatibility hooks. + * + * This is called via the constructor during the "plugins_loaded" action which + * is much earlier that CiviCRM's own internal hooks. The reason for this is + * that compability may need callbacks for events that fire well before "init" + * which is when CiviCRM begins to load. + * + * @since 5.24 + */ + public function register_hooks() { + + // Bail if CiviCRM not installed yet. + if (!CIVICRM_INSTALLED) { + return; + } + + // Register Base Page callbacks. + add_action('civicrm_basepage_parsed', [$this, 'register_basepage_hooks']); + + // Prevent AIOSEO from stomping on CiviCRM Shortcodes. + add_filter('aioseo_conflicting_shortcodes', [$this, 'aioseo_resolve_conflict']); + + } + + /** + * Register Base Page compatibility hooks. + * + * @since 5.66 + */ + public function register_basepage_hooks() { + + // Add compatibility with Yoast SEO plugin's Open Graph title. + add_filter('wpseo_opengraph_title', [$this, 'wpseo_page_title'], 100, 1); + + // Don't let the Yoast SEO plugin parse the Base Page title. + if (class_exists('WPSEO_Frontend')) { + $frontend = WPSEO_Frontend::get_instance(); + remove_filter('pre_get_document_title', [$frontend, 'title'], 15); + } + + } + + /** + * Get CiviCRM Base Page title for Open Graph elements. + * + * Callback method for 'wpseo_opengraph_title' hook, to provide compatibility + * with the WordPress SEO plugin. + * + * @since 4.6.4 + * + * @param string $post_title The title of the WordPress page or post. + * @return string $basepage_title The title of the CiviCRM entity. + */ + public function wpseo_page_title($post_title) { + + // Hand back our Base Page title. + return $this->civi->basepage->title_get(); + + } + + /** + * Fixes AIOSEO's attempt to modify Shortcodes. + * + * @see https://civicrm.stackexchange.com/questions/40765/wp-all-in-one-seo-plugin-conflict + * + * @since 5.45 + * + * @param array $conflicting_shortcodes The existing AIOSEO Conflicting Shortcodes array. + * @return array $conflicting_shortcodes The modified AIOSEO Conflicting Shortcodes array. + */ + public function aioseo_resolve_conflict($conflicting_shortcodes) { + $conflicting_shortcodes['CiviCRM'] = 'civicrm'; + return $conflicting_shortcodes; + } + +} diff --git a/includes/compatibility/civicrm.polylang.php b/includes/compatibility/civicrm.polylang.php new file mode 100644 index 0000000000..53261d50da --- /dev/null +++ b/includes/compatibility/civicrm.polylang.php @@ -0,0 +1,285 @@ +<?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 | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + * + */ + +// This file must not accessed directly. +if (!defined('ABSPATH')) { + exit; +} + +/** + * Polylang plugin compatatibility class. + * + * @since 5.66 + */ +class CiviCRM_For_WordPress_Compat_Polylang { + + /** + * @var object + * Plugin object reference. + * @since 5.66 + * @access public + */ + public $civi; + + /** + * @var array + * Base Page data. + * @since 5.66 + * @access private + */ + private $basepages = []; + + /** + * @var array + * Collected rewrites. + * @since 5.66 + * @access private + */ + private $rewrites = []; + + /** + * Instance constructor. + * + * @since 5.66 + */ + public function __construct() { + + // Store reference to CiviCRM plugin object. + $this->civi = civi_wp(); + + // Register plugin compatibility hooks. + $this->register_hooks(); + + } + + /** + * Register hooks. + * + * This is called via the constructor during the "plugins_loaded" action which + * is much earlier that CiviCRM's own internal hooks. The reason for this is + * that compability may need callbacks for events that fire well before "init" + * which is when CiviCRM begins to load. + * + * @since 5.66 + */ + public function register_hooks() { + + // Bail if CiviCRM not installed yet. + if (!CIVICRM_INSTALLED) { + return; + } + + // Bail if Polylang is not present. + if (!function_exists('pll_languages_list')) { + return; + } + + // Register Polylang compatibility callbacks. + add_action('civicrm_after_rewrite_rules', [$this, 'rewrite_rules'], 10, 2); + add_filter('pll_check_canonical_url', [$this, 'canonical_url'], 10, 2); + add_filter('civicrm/basepage/match', [$this, 'basepage_match'], 10, 2); + add_filter('civicrm/core/url/base', [$this, 'base_url_filter'], 10, 2); + add_filter('civicrm/core/locale', [$this, 'locale_filter'], 10, 2); + + } + + /** + * Support Polylang. + * + * @since 5.24 + * @since 5.66 Moved to this class. + * + * @param bool $flush_rewrite_rules True if rules flushed, false otherwise. + * @param WP_Post $basepage The Base Page post object. + */ + public function rewrite_rules($flush_rewrite_rules, $basepage) { + + /* + * Collect all rewrite rules into an array. + * + * Because the array of specific Post IDs is added *after* the array of + * paths for the Base Page ID, those specific rewrite rules will "win" over + * the more general Base Page rules. + */ + $collected_rewrites = []; + + // Support prefixes for a single Base Page. + $basepage_url = get_permalink($basepage->ID); + $basepage_raw_url = PLL()->links_model->remove_language_from_link($basepage_url); + $language_slugs = pll_languages_list(); + foreach ($language_slugs as $slug) { + $language = PLL()->model->get_language($slug); + $language_url = PLL()->links_model->add_language_to_link($basepage_raw_url, $language); + $parsed_url = wp_parse_url($language_url, PHP_URL_PATH); + $regex_path = substr($parsed_url, 1); + $collected_rewrites[$basepage->ID][] = $regex_path; + $post_id = pll_get_post($basepage->ID, $slug); + if (!empty($post_id)) { + $collected_rewrites[$post_id][] = $regex_path; + } + }; + + // Support prefixes for Base Pages in multiple languages. + foreach ($language_slugs as $slug) { + $post_id = pll_get_post($basepage->ID, $slug); + if (empty($post_id)) { + continue; + } + $url = get_permalink($post_id); + $parsed_url = wp_parse_url($url, PHP_URL_PATH); + $regex_path = substr($parsed_url, 1); + $collected_rewrites[$basepage->ID][] = $regex_path; + $collected_rewrites[$post_id][] = $regex_path; + }; + + // Make collection unique and add remaining rewrite rules. + $this->rewrites = array_map('array_unique', $collected_rewrites); + if (!empty($this->rewrites)) { + foreach ($this->rewrites as $post_id => $rewrite) { + foreach ($rewrite as $path) { + add_rewrite_rule( + '^' . $path . '([^?]*)?', + 'index.php?page_id=' . $post_id . '&civiwp=CiviCRM&q=civicrm%2F$matches[1]', + 'top' + ); + } + } + } + + // Maybe force flush. + if ($flush_rewrite_rules) { + flush_rewrite_rules(); + } + + } + + /** + * Prevents Polylang from redirecting CiviCRM URLs. + * + * @since 5.66 + * + * @param string|false $redirect_url False or the URL to redirect to. + * @param PLL_Language $language The language detected. + * @return string|false $redirect_url False or the URL to redirect to. + */ + public function canonical_url($redirect_url, $language) { + + // Bail if this is not a Page. + if (!is_page()) { + return $redirect_url; + } + + // Bail if this is not a Base Page. + $post = get_post(); + if (!empty($this->rewrites)) { + foreach ($this->rewrites as $post_id => $rewrite) { + if ($post_id === $post->ID) { + return FALSE; + } + } + } + + return $redirect_url; + + } + + /** + * Checks Polylang for CiviCRM Base Page matches. + * + * @since 5.66 + * + * @param bool $is_basepage TRUE if the Post ID matches the Base Page ID, FALSE otherwise. + * @param int $post_id The WordPress Post ID to check. + * @return bool $is_basepage TRUE if the Post ID matches the Base Page ID, FALSE otherwise. + */ + public function basepage_match($is_basepage, $post_id) { + + // Bail if this is already the Base Page. + if ($is_basepage) { + return $is_basepage; + } + + // Bail if there are no rewrites. + if (empty($this->rewrites)) { + return $is_basepage; + } + + foreach ($this->rewrites as $page_id => $rewrite) { + if ($post_id === $page_id) { + $is_basepage = TRUE; + } + } + + return $is_basepage; + + } + + /** + * Filters the CiviCRM Base URL for the current language reported by Polylang. + * + * Only filters URLs that point to the front-end, since WordPress admin URLs are not + * rewritten by Polylang. + * + * @since 5.66 + * + * @param str $url The URL as built by CiviCRM. + * @param bool $admin_request True if building an admin URL, false otherwise. + * @return str $url The URL as modified by Polylang. + */ + public function base_url_filter($url, $admin_request) { + + // Skip when not defined. + if (empty($url) || $admin_request) { + return $url; + } + + // Find the language slug. + $slug = pll_current_language(); + if (empty($slug)) { + return $url; + } + + // Build the modified URL. + $raw_url = PLL()->links_model->remove_language_from_link($url); + $language = PLL()->model->get_language($slug); + $language_url = PLL()->links_model->add_language_to_link($raw_url, $language); + + return $language_url; + + } + + /** + * Filters the CiviCRM locale for the current language as set by Polylang. + * + * @since 5.66 + * + * @param str $locale The locale as reported by WordPress. + * @return str $locale The locale as modified by Polylang. + */ + public function locale_filter($locale) { + + $pll_locale = pll_current_language('locale'); + if (!empty($pll_locale)) { + $locale = $pll_locale; + } + + return $locale; + + } + +} diff --git a/includes/compatibility/civicrm.wpml.php b/includes/compatibility/civicrm.wpml.php new file mode 100644 index 0000000000..32decf64a0 --- /dev/null +++ b/includes/compatibility/civicrm.wpml.php @@ -0,0 +1,103 @@ +<?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 | + +--------------------------------------------------------------------+ + */ + +/** + * + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + * + */ + +// This file must not accessed directly. +if (!defined('ABSPATH')) { + exit; +} + +/** + * WPML plugin compatatibility class. + * + * @since 5.66 + */ +class CiviCRM_For_WordPress_Compat_WPML { + + /** + * @var object + * Plugin object reference. + * @since 5.66 + * @access public + */ + public $civi; + + /** + * Instance constructor. + * + * @since 5.66 + */ + public function __construct() { + + // Store reference to CiviCRM plugin object. + $this->civi = civi_wp(); + + // Register plugin compatibility hooks. + $this->register_hooks(); + + } + + /** + * Register hooks. + * + * This is called via the constructor during the "plugins_loaded" action which + * is much earlier that CiviCRM's own internal hooks. The reason for this is + * that compability may need callbacks for events that fire well before "init" + * which is when CiviCRM begins to load. + * + * @since 5.66 + */ + public function register_hooks() { + + // Bail if CiviCRM not installed yet. + if (!CIVICRM_INSTALLED) { + return; + } + + // Bail if WPML is not present. + if (!defined('ICL_SITEPRESS_VERSION')) { + return; + } + + // Register WPML compatibility callbacks. + add_filter('civicrm/core/locale', [$this, 'locale_filter'], 10, 2); + + } + + /** + * Filters the CiviCRM locale for the current language as set by WPML. + * + * @since 5.66 + * + * @param str $locale The locale as reported by WordPress. + * @return str $locale The locale as modified by Polylang. + */ + public function locale_filter($locale) { + + $languages = apply_filters('wpml_active_languages', NULL); + foreach ($languages as $language) { + if ($language['active']) { + $locale = $language['default_locale']; + break; + } + } + + return $locale; + + } + +} -- GitLab