From a11b37fc886037b85da7977ff7dc62c1ca8ba125 Mon Sep 17 00:00:00 2001 From: Kevin Cristiano <kcristiano@kcristiano.com> Date: Thu, 3 Aug 2023 08:11:19 -0400 Subject: [PATCH] civicrm release-5.64.0 --- civicrm.php | 65 +- civicrm/CRM/ACL/API.php | 4 +- civicrm/CRM/ACL/BAO/ACL.php | 176 +- civicrm/CRM/ACL/DAO/ACL.php | 70 +- civicrm/CRM/ACL/DAO/ACLEntityRole.php | 15 +- civicrm/CRM/ACL/Form/ACL.php | 21 +- civicrm/CRM/ACL/Form/ACLBasic.php | 140 - civicrm/CRM/ACL/Page/ACL.php | 57 +- civicrm/CRM/ACL/Page/ACLBasic.php | 180 - civicrm/CRM/ACL/Page/EntityRole.php | 44 - civicrm/CRM/Activity/ActionMapping.php | 7 +- civicrm/CRM/Activity/BAO/Activity.php | 7 +- civicrm/CRM/Activity/DAO/Activity.php | 2 +- civicrm/CRM/Activity/Form/Search.php | 5 - civicrm/CRM/Activity/Selector/Activity.php | 2 +- civicrm/CRM/Activity/Tokens.php | 11 - civicrm/CRM/Admin/Form/Generic.php | 1 - civicrm/CRM/Admin/Form/Job.php | 2 +- civicrm/CRM/Admin/Form/Navigation.php | 6 +- civicrm/CRM/Admin/Form/OptionGroup.php | 2 +- civicrm/CRM/Admin/Form/ScheduleReminders.php | 6 +- .../CRM/Admin/Form/Setting/Localization.php | 2 +- civicrm/CRM/Admin/Form/Setting/Mapping.php | 4 - civicrm/CRM/Admin/Form/Setting/Search.php | 5 - civicrm/CRM/Admin/Form/Setting/Smtp.php | 8 +- civicrm/CRM/Admin/Page/AJAX.php | 2 +- civicrm/CRM/Admin/Page/ContactType.php | 43 - civicrm/CRM/Admin/Page/JobLog.php | 2 +- civicrm/CRM/Admin/Page/LocationType.php | 43 - civicrm/CRM/Admin/Page/MailSettings.php | 35 - civicrm/CRM/Admin/Page/Navigation.php | 9 +- civicrm/CRM/Admin/Page/Options.php | 2 +- .../CRM/Admin/Page/ParticipantStatusType.php | 34 - civicrm/CRM/Admin/Page/PaymentProcessor.php | 43 - .../CRM/Admin/Page/PaymentProcessorType.php | 45 +- civicrm/CRM/Admin/Page/PreferencesDate.php | 29 +- civicrm/CRM/Admin/Page/RelationshipType.php | 54 - civicrm/CRM/Api4/Page/AJAX.php | 161 +- civicrm/CRM/Api4/Permission.php | 53 - civicrm/CRM/Bridge/OG/Drupal.php | 2 +- civicrm/CRM/Campaign/BAO/Survey.php | 10 +- civicrm/CRM/Campaign/Form/Search.php | 28 +- civicrm/CRM/Campaign/Form/Survey/Results.php | 2 +- civicrm/CRM/Campaign/Page/DashBoard.php | 2 +- civicrm/CRM/Campaign/Page/SurveyType.php | 4 +- civicrm/CRM/Campaign/SurveyTokens.php | 34 + .../PetitionConfirmationNeeded.php | 59 + .../Campaign/WorkflowMessage/PetitionSign.php | 48 + .../WorkflowMessage/Survey/Survey.php | 59 + civicrm/CRM/Case/Audit/AuditConfig.php | 2 +- civicrm/CRM/Case/BAO/Case.php | 41 +- civicrm/CRM/Case/Form/Activity.php | 2 +- .../Case/Form/Activity/ChangeCaseStatus.php | 2 +- civicrm/CRM/Case/Form/CaseView.php | 2 +- civicrm/CRM/Case/Page/AJAX.php | 2 +- civicrm/CRM/Case/XMLProcessor/Report.php | 159 +- .../case_sample.mysql.tpl | 2 +- civicrm/CRM/Contact/BAO/Contact.php | 13 +- civicrm/CRM/Contact/BAO/Group.php | 84 +- civicrm/CRM/Contact/BAO/GroupContact.php | 22 +- civicrm/CRM/Contact/BAO/GroupContactCache.php | 57 +- civicrm/CRM/Contact/BAO/Individual.php | 2 +- civicrm/CRM/Contact/BAO/ProximityQuery.php | 2 +- civicrm/CRM/Contact/BAO/Query.php | 8 +- civicrm/CRM/Contact/BAO/Relationship.php | 2 +- civicrm/CRM/Contact/BAO/SavedSearch.php | 33 - civicrm/CRM/Contact/Form/Contact.php | 6 +- .../Form/Edit/CommunicationPreferences.php | 2 +- .../CRM/Contact/Form/Edit/TagsAndGroups.php | 2 +- civicrm/CRM/Contact/Form/Search.php | 4 +- civicrm/CRM/Contact/Form/Search/Basic.php | 2 +- civicrm/CRM/Contact/Form/Search/Builder.php | 2 +- civicrm/CRM/Contact/Form/Task.php | 2 +- civicrm/CRM/Contact/Form/Task/Delete.php | 6 +- civicrm/CRM/Contact/Form/Task/Label.php | 2 +- civicrm/CRM/Contact/Form/Task/LabelCommon.php | 2 +- civicrm/CRM/Contact/Form/Task/PDFTrait.php | 12 +- civicrm/CRM/Contact/Form/Task/SMSCommon.php | 2 +- civicrm/CRM/Contact/Import/Parser/Contact.php | 49 +- .../CRM/Contact/Page/Inline/ContactInfo.php | 2 +- civicrm/CRM/Contact/Selector.php | 35 +- civicrm/CRM/Contribute/BAO/Contribution.php | 72 +- .../CRM/Contribute/BAO/ContributionRecur.php | 1 + civicrm/CRM/Contribute/DAO/Contribution.php | 3 +- .../Contribute/Form/AbstractEditPayment.php | 4 +- .../CRM/Contribute/Form/AdditionalInfo.php | 7 +- .../CRM/Contribute/Form/AdditionalPayment.php | 6 +- .../Contribute/Form/CancelSubscription.php | 2 +- civicrm/CRM/Contribute/Form/Contribution.php | 21 +- .../CRM/Contribute/Form/Contribution/Main.php | 23 +- .../CRM/Contribute/Form/ContributionBase.php | 4 +- .../CRM/Contribute/Form/ContributionPage.php | 6 +- .../Form/ContributionPage/Amount.php | 2 +- .../Form/ContributionPage/Settings.php | 4 +- .../CRM/Contribute/Form/ManagePremiums.php | 4 +- civicrm/CRM/Contribute/Form/Search.php | 5 - civicrm/CRM/Contribute/Form/Task/Invoice.php | 7 +- civicrm/CRM/Contribute/Form/UpdateBilling.php | 42 +- .../CRM/Contribute/Page/ContributionPage.php | 116 +- .../Page/ContributionRecurPayments.php | 6 +- civicrm/CRM/Contribute/Selector/Search.php | 4 +- .../WorkflowMessage/ContributionTrait.php | 26 +- civicrm/CRM/Core/Action.php | 230 +- civicrm/CRM/Core/BAO/Address.php | 2 +- civicrm/CRM/Core/BAO/CustomField.php | 33 +- civicrm/CRM/Core/BAO/CustomGroup.php | 22 +- civicrm/CRM/Core/BAO/CustomQuery.php | 6 +- civicrm/CRM/Core/BAO/CustomValueTable.php | 2 +- civicrm/CRM/Core/BAO/MessageTemplate.php | 135 +- civicrm/CRM/Core/BAO/Navigation.php | 9 +- civicrm/CRM/Core/BAO/Note.php | 8 +- civicrm/CRM/Core/BAO/RecurringEntity.php | 2 +- civicrm/CRM/Core/BAO/SchemaHandler.php | 37 +- civicrm/CRM/Core/BAO/Setting.php | 2 +- civicrm/CRM/Core/BAO/Tag.php | 4 +- civicrm/CRM/Core/BAO/TranslateGetWrapper.php | 2 +- civicrm/CRM/Core/BAO/Translation.php | 89 +- civicrm/CRM/Core/BAO/UFField.php | 4 +- civicrm/CRM/Core/BAO/UFGroup.php | 22 +- civicrm/CRM/Core/BAO/UFMatch.php | 8 +- civicrm/CRM/Core/Block.php | 112 +- civicrm/CRM/Core/CodeGen/GenerateData.php | 6 +- civicrm/CRM/Core/Config.php | 14 +- civicrm/CRM/Core/DAO.php | 24 +- civicrm/CRM/Core/DAO/ActionMapping.php | 393 - civicrm/CRM/Core/DAO/AllCoreTables.data.php | 5 - civicrm/CRM/Core/DAO/AllCoreTables.php | 6 +- civicrm/CRM/Core/DAO/CustomField.php | 4 +- civicrm/CRM/Core/DAO/CustomGroup.php | 5 +- civicrm/CRM/Core/DAO/Email.php | 4 +- civicrm/CRM/Core/DAO/MailSettings.php | 15 +- civicrm/CRM/Core/DAO/PreferencesDate.php | 13 +- civicrm/CRM/Core/DAO/UFGroup.php | 29 +- civicrm/CRM/Core/Error.php | 4 +- civicrm/CRM/Core/Error/Log.php | 12 +- civicrm/CRM/Core/Form.php | 24 +- civicrm/CRM/Core/Form/EntityFormTrait.php | 2 +- civicrm/CRM/Core/Form/RecurringEntity.php | 4 +- civicrm/CRM/Core/I18n.php | 38 +- civicrm/CRM/Core/Invoke.php | 2 +- civicrm/CRM/Core/ManagedEntities.php | 95 +- civicrm/CRM/Core/OptionGroup.php | 2 +- civicrm/CRM/Core/Page.php | 2 +- civicrm/CRM/Core/Page/AJAX/Location.php | 4 +- civicrm/CRM/Core/Page/Basic.php | 48 +- civicrm/CRM/Core/Page/QUnit.php | 2 +- civicrm/CRM/Core/Payment.php | 6 +- civicrm/CRM/Core/Payment/AuthorizeNetIPN.php | 259 +- civicrm/CRM/Core/Payment/PayPalIPN.php | 148 +- civicrm/CRM/Core/Payment/PayPalImpl.php | 4 +- civicrm/CRM/Core/Permission.php | 2 +- civicrm/CRM/Core/Permission/Base.php | 4 +- civicrm/CRM/Core/Permission/Joomla.php | 18 +- civicrm/CRM/Core/Permission/Standalone.php | 22 +- civicrm/CRM/Core/PseudoConstant.php | 2 +- civicrm/CRM/Core/Region.php | 2 +- .../Core/Resources/CollectionAdderTrait.php | 2 +- civicrm/CRM/Core/Resources/Common.php | 2 +- civicrm/CRM/Core/SelectValues.php | 19 + civicrm/CRM/Core/Smarty.php | 22 +- civicrm/CRM/Core/Smarty/plugins/block.ts.php | 2 +- .../CRM/Core/Smarty/plugins/function.help.php | 21 +- civicrm/CRM/Core/xml/Menu/Api4.xml | 2 +- civicrm/CRM/Core/xml/Menu/Misc.xml | 18 +- civicrm/CRM/Custom/Form/DeleteField.php | 6 + civicrm/CRM/Custom/Form/Field.php | 4 +- civicrm/CRM/Custom/Form/Group.php | 4 +- civicrm/CRM/Custom/Form/MoveField.php | 10 +- civicrm/CRM/Custom/Form/Option.php | 2 +- civicrm/CRM/Custom/Import/Parser/Api.php | 2 +- civicrm/CRM/Dedupe/Merger.php | 5 +- civicrm/CRM/Event/BAO/Event.php | 15 +- .../CRM/Event/DAO/ParticipantStatusType.php | 13 +- civicrm/CRM/Event/Form/ManageEvent/Fee.php | 2 +- .../CRM/Event/Form/ManageEvent/Location.php | 6 +- .../Event/Form/ManageEvent/Registration.php | 6 +- .../CRM/Event/Form/ManageEvent/TabHeader.php | 4 +- civicrm/CRM/Event/Form/Participant.php | 24 +- .../Event/Form/ParticipantFeeSelection.php | 5 +- civicrm/CRM/Event/Form/Registration.php | 7 +- .../Registration/AdditionalParticipant.php | 2 +- .../CRM/Event/Form/Registration/Register.php | 17 +- .../CRM/Event/Form/Registration/ThankYou.php | 2 +- civicrm/CRM/Event/Form/Search.php | 7 +- civicrm/CRM/Event/Form/Task/Delete.php | 4 +- civicrm/CRM/Event/Import/Form/MapField.php | 8 +- civicrm/CRM/Event/Page/EventInfo.php | 4 +- civicrm/CRM/Event/Page/ParticipantListing.php | 4 +- civicrm/CRM/Event/Tokens.php | 7 +- .../Event/WorkflowMessage/EventExamples.php | 124 +- .../WorkflowMessage/ParticipantTrait.php | 232 +- civicrm/CRM/Export/Form/Select.php | 12 +- civicrm/CRM/Extension/Browser.php | 2 +- civicrm/CRM/Extension/Container/Default.php | 16 +- civicrm/CRM/Extension/Downloader.php | 20 +- .../Financial/BAO/EntityFinancialAccount.php | 7 +- civicrm/CRM/Financial/BAO/Order.php | 32 + civicrm/CRM/Financial/BAO/Payment.php | 3 +- .../CRM/Financial/BAO/PaymentProcessor.php | 1 - .../Financial/DAO/PaymentProcessorType.php | 13 +- .../CRM/Financial/Form/FinancialAccount.php | 2 +- civicrm/CRM/Financial/Form/FinancialType.php | 2 +- .../Financial/Form/FinancialTypeAccount.php | 6 +- .../CRM/Financial/Page/FinancialAccount.php | 2 +- civicrm/CRM/Financial/Page/FinancialBatch.php | 2 +- civicrm/CRM/Group/Form/Edit.php | 53 +- civicrm/CRM/Group/Form/Search.php | 2 +- civicrm/CRM/Import/Form/MapField.php | 4 +- civicrm/CRM/Import/Parser.php | 2 +- civicrm/CRM/Logging/Differ.php | 2 +- civicrm/CRM/Logging/ReportSummary.php | 4 +- civicrm/CRM/Logging/Schema.php | 6 +- civicrm/CRM/Mailing/BAO/Mailing.php | 19 + civicrm/CRM/Mailing/DAO/MailingComponent.php | 12 +- .../Mailing/Event/BAO/MailingEventBounce.php | 4 +- .../Event/BAO/MailingEventDelivered.php | 19 +- .../Mailing/Event/BAO/MailingEventForward.php | 4 +- .../Event/BAO/MailingEventSubscribe.php | 2 +- civicrm/CRM/Mailing/Form/Optout.php | 8 +- civicrm/CRM/Mailing/Form/Unsubscribe.php | 8 +- civicrm/CRM/Mailing/Page/Browse.php | 23 +- civicrm/CRM/Mailing/Page/Component.php | 37 - civicrm/CRM/Mailing/Page/View.php | 2 +- civicrm/CRM/Mailing/xml/Menu/Mailing.xml | 16 +- civicrm/CRM/Member/BAO/Membership.php | 2 +- civicrm/CRM/Member/BAO/MembershipType.php | 4 +- civicrm/CRM/Member/DAO/MembershipStatus.php | 13 +- civicrm/CRM/Member/Form/Membership.php | 42 +- civicrm/CRM/Member/Form/Search.php | 5 - civicrm/CRM/Member/Form/Task/PDFLetter.php | 4 +- civicrm/CRM/Member/Import/Form/MapField.php | 16 +- civicrm/CRM/Member/Page/DashBoard.php | 136 +- civicrm/CRM/Member/Page/MembershipStatus.php | 45 +- civicrm/CRM/Note/Form/Note.php | 12 +- civicrm/CRM/PCP/BAO/PCP.php | 7 +- civicrm/CRM/PCP/Form/Campaign.php | 2 +- civicrm/CRM/PCP/Page/PCP.php | 2 +- civicrm/CRM/PCP/Page/PCPInfo.php | 2 +- civicrm/CRM/Pledge/BAO/PledgeBlock.php | 32 +- civicrm/CRM/Pledge/Form/Payment.php | 2 +- civicrm/CRM/Pledge/Form/Pledge.php | 14 +- civicrm/CRM/Pledge/Form/Search.php | 5 - civicrm/CRM/Pledge/Selector/Search.php | 6 + civicrm/CRM/Price/BAO/LineItem.php | 10 +- civicrm/CRM/Price/BAO/PriceField.php | 2 +- civicrm/CRM/Price/BAO/PriceSet.php | 6 +- civicrm/CRM/Price/Form/Field.php | 2 +- civicrm/CRM/Price/Form/Option.php | 24 +- civicrm/CRM/Profile/Form.php | 10 +- civicrm/CRM/Profile/Form/Edit.php | 4 +- civicrm/CRM/Profile/Page/Dynamic.php | 4 +- civicrm/CRM/Profile/Page/Listings.php | 4 +- civicrm/CRM/Report/Form.php | 20 +- civicrm/CRM/Report/Form/Activity.php | 8 +- .../Report/Form/Campaign/SurveyDetails.php | 178 +- .../CRM/Report/Form/Contact/Relationship.php | 10 +- civicrm/CRM/Report/Form/Contact/Summary.php | 82 +- civicrm/CRM/Report/Form/Contribute/Detail.php | 24 +- .../CRM/Report/Form/Contribute/History.php | 6 +- civicrm/CRM/Report/Form/Contribute/Repeat.php | 252 +- .../Report/Form/Event/ParticipantListing.php | 352 +- civicrm/CRM/Report/Form/Instance.php | 4 +- civicrm/CRM/Report/Form/Mailing/Detail.php | 12 +- civicrm/CRM/Report/Form/Member/Detail.php | 13 +- civicrm/CRM/Report/Page/Options.php | 2 +- civicrm/CRM/Report/Page/TemplateList.php | 4 +- civicrm/CRM/Report/Utils/Get.php | 2 +- civicrm/CRM/Report/Utils/Report.php | 8 +- civicrm/CRM/SMS/DAO/Provider.php | 15 +- civicrm/CRM/SMS/Form/Schedule.php | 2 +- civicrm/CRM/SMS/Page/Provider.php | 53 +- civicrm/CRM/SMS/Provider.php | 42 +- civicrm/CRM/UF/Form/AdvanceSetting.php | 4 +- civicrm/CRM/UF/Form/Field.php | 11 +- civicrm/CRM/UF/Form/Group.php | 6 +- civicrm/CRM/Upgrade/Incremental/Base.php | 12 + .../Upgrade/Incremental/php/FiveFiftyOne.php | 6 +- .../Upgrade/Incremental/php/FiveSixteen.php | 2 +- .../Upgrade/Incremental/php/FiveSixtyFour.php | 117 + .../Incremental/php/FiveSixtyThree.php | 31 - .../Incremental/php/TimezoneRevertTrait.php | 2 +- .../Incremental/sql/5.64.alpha1.mysql.tpl | 17 + .../Incremental/sql/5.64.beta1.mysql.tpl | 1 + civicrm/CRM/Utils/Address.php | 22 +- civicrm/CRM/Utils/Cache/Redis.php | 3 + civicrm/CRM/Utils/Check/Component.php | 4 +- .../Utils/Check/Component/AddressParsing.php | 11 +- civicrm/CRM/Utils/Check/Component/Case.php | 18 +- .../CRM/Utils/Check/Component/PriceFields.php | 14 +- civicrm/CRM/Utils/Check/Component/Schema.php | 12 +- .../CRM/Utils/Check/Component/Security.php | 8 +- civicrm/CRM/Utils/Date.php | 14 +- civicrm/CRM/Utils/Hook.php | 82 +- civicrm/CRM/Utils/Hook/Joomla.php | 2 +- civicrm/CRM/Utils/Hook/UnitTests.php | 2 +- civicrm/CRM/Utils/Hook/WordPress.php | 2 +- civicrm/CRM/Utils/Pager.php | 2 +- civicrm/CRM/Utils/PagerAToZ.php | 2 +- civicrm/CRM/Utils/SQL/Select.php | 79 + civicrm/CRM/Utils/System.php | 2 +- civicrm/CRM/Utils/System/Drupal8.php | 4 +- civicrm/CRM/Utils/System/Standalone.php | 444 +- civicrm/CRM/Utils/System/WordPress.php | 56 +- civicrm/CRM/Utils/Token.php | 2 +- civicrm/CRM/Utils/Type.php | 2 +- civicrm/Civi/API/Request.php | 7 +- civicrm/Civi/ActionSchedule/Mapping.php | 1 + civicrm/Civi/Angular/Manager.php | 2 +- civicrm/Civi/Api4/ACL.php | 5 +- civicrm/Civi/Api4/Action/Entity/Get.php | 8 +- civicrm/Civi/Api4/Action/EntitySet/Get.php | 62 + civicrm/Civi/Api4/CustomValue.php | 3 +- civicrm/Civi/Api4/EntitySet.php | 62 + .../Civi/Api4/Event/PostSelectQueryEvent.php | 61 +- civicrm/Civi/Api4/Generic/AbstractAction.php | 13 +- .../Civi/Api4/Generic/AutocompleteAction.php | 43 +- .../Civi/Api4/Generic/BasicBatchAction.php | 3 + civicrm/Civi/Api4/Generic/BasicGetAction.php | 4 +- .../Api4/Generic/BasicGetFieldsAction.php | 3 +- civicrm/Civi/Api4/Generic/DAOGetAction.php | 59 +- .../Generic/Traits/CustomValueActionTrait.php | 4 +- .../Api4/Generic/Traits/DAOActionTrait.php | 4 +- .../Traits/GroupAndHavingParamTrait.php | 66 + .../Traits/SavedSearchInspectorTrait.php | 5 + .../Api4/Generic/Traits/SelectParamTrait.php | 2 +- .../Api4/Provider/CustomEntityProvider.php | 17 +- .../Civi/Api4/Query/Api4EntitySetQuery.php | 196 + civicrm/Civi/Api4/Query/Api4Query.php | 501 + civicrm/Civi/Api4/Query/Api4SelectQuery.php | 538 +- civicrm/Civi/Api4/Query/SqlBool.php | 32 + civicrm/Civi/Api4/Query/SqlEquation.php | 4 +- civicrm/Civi/Api4/Query/SqlExpression.php | 12 +- civicrm/Civi/Api4/Query/SqlField.php | 4 +- civicrm/Civi/Api4/Query/SqlFunction.php | 8 +- civicrm/Civi/Api4/Query/SqlFunctionIF.php | 6 +- civicrm/Civi/Api4/Query/SqlFunctionLEFT.php | 52 + civicrm/Civi/Api4/Query/SqlFunctionRIGHT.php | 52 + .../Civi/Api4/Query/SqlFunctionSUBSTRING.php | 57 + civicrm/Civi/Api4/Query/SqlNull.php | 2 +- civicrm/Civi/Api4/Query/SqlNumber.php | 2 +- civicrm/Civi/Api4/Query/SqlString.php | 9 +- civicrm/Civi/Api4/Query/SqlWild.php | 2 +- .../MailingRecipientsAutocompleteProvider.php | 165 + .../Spec/Provider/MailingGetSpecProvider.php | 268 + civicrm/Civi/Api4/Survey.php | 4 +- civicrm/Civi/Api4/Utils/CoreUtil.php | 27 + civicrm/Civi/Api4/Utils/FormattingUtil.php | 98 +- civicrm/Civi/Core/CiviEventDispatcher.php | 3 + civicrm/Civi/Core/Container.php | 9 +- civicrm/Civi/Core/Themes.php | 36 +- civicrm/Civi/Core/Themes/Resolvers.php | 4 +- civicrm/Civi/Test.php | 1 + civicrm/Civi/Test/ACLPermissionTrait.php | 67 +- civicrm/Civi/Test/Api4TestTrait.php | 28 + civicrm/Civi/Test/ContactTestTrait.php | 11 +- civicrm/Civi/Test/EntityTrait.php | 92 + civicrm/Civi/Test/EventTestTrait.php | 56 +- civicrm/Civi/Test/MailingTestTrait.php | 8 +- civicrm/Civi/Test/TAP7.php | 8 +- civicrm/Civi/Test/TAP9.php | 8 +- civicrm/Civi/Test/TAPLegacy.php | 8 +- .../Civi/Test/WorkflowMessageTestTrait.php | 1 + civicrm/Civi/Token/StandardFilters.php | 34 + civicrm/Civi/Token/TokenProcessor.php | 2 +- .../GenericWorkflowMessage.php | 4 + civicrm/Civi/WorkflowMessage/TestBanner.php | 56 + .../Traits/LocalizationTrait.php | 46 + .../Traits/ReflectiveWorkflowTrait.php | 14 + .../WorkflowMessage/Traits/TemplateTrait.php | 139 + .../Civi/WorkflowMessage/WorkflowMessage.php | 5 + .../WorkflowMessageInterface.php | 12 + civicrm/ang/api4Explorer.ang.php | 2 +- civicrm/ang/api4Explorer/Explorer.html | 12 +- civicrm/ang/api4Explorer/Explorer.js | 40 +- civicrm/ang/api4Explorer/Set.html | 7 + civicrm/ang/crmCaseType/list.html | 2 +- civicrm/ang/crmMailing.css | 20 +- civicrm/ang/crmMailing/BlockMailing.html | 4 +- civicrm/ang/crmMailing/BlockRecipients.html | 12 +- .../crmMailing/BlockRecipientsMultiline.html | 13 + .../crmMailing/BlockRecipientsMultiline.js | 5 + civicrm/ang/crmMailing/EditRecipCtrl.js | 7 +- civicrm/ang/crmMailing/Recipients.js | 345 - ...MailingRecipientsAutocomplete.component.js | 61 + civicrm/ang/crmUi.js | 10 +- civicrm/api/Exception.php | 6 + civicrm/api/v3/Contribution.php | 9 +- civicrm/api/v3/System/setting-whitelist.txt | 2 - civicrm/api/v3/UFGroup.php | 2 + .../api/v3/examples/Setting/GetFields.ex.php | 18 - civicrm/api/v3/examples/UFGroup/Create.ex.php | 8 +- civicrm/api/v3/examples/UFGroup/Get.ex.php | 2 +- civicrm/civicrm-version.php | 2 +- civicrm/css/api4-explorer.css | 3 + civicrm/css/civicrm.css | 2 + .../Civi/AfformAdmin/AfformAdminMeta.php | 3 +- .../ang/afGuiEditor/afGuiEditor.component.js | 4 +- .../afGuiEditor/elements/afGuiField-menu.html | 14 +- .../elements/afGuiField.component.js | 42 +- .../ang/afGuiEditor/inputType/Email.html | 6 + civicrm/ext/afform/admin/info.xml | 4 +- .../managed/FormSubmissionSavedSearch.mgd.php | 7 + .../ext/afform/core/CRM/Afform/ArrayHtml.php | 2 +- .../Civi/Afform/AfformMetadataInjector.php | 13 + .../afform/core/Civi/Afform/FormDataModel.php | 6 +- civicrm/ext/afform/core/Civi/Afform/Utils.php | 27 + .../core/Civi/Api4/Action/Afform/Submit.php | 4 +- civicrm/ext/afform/core/afform.php | 20 - .../afform/core/ang/af/afField.component.js | 24 +- civicrm/ext/afform/core/ang/af/afField.html | 3 +- .../ang/af/afFieldWithSearchOperator.html | 4 + .../afform/core/ang/af/afForm.component.js | 4 +- .../ext/afform/core/ang/af/fields/Email.html | 6 + civicrm/ext/afform/core/ang/afCore.css | 4 + civicrm/ext/afform/core/info.xml | 4 +- civicrm/ext/afform/html/info.xml | 4 +- civicrm/ext/afform/mock/info.xml | 4 +- civicrm/ext/authx/info.xml | 4 +- .../Civi/Api4/Action/Campaign/Get.php | 0 .../civi_campaign}/Civi/Api4/Campaign.php | 0 .../Provider/CampaignCreationSpecProvider.php | 0 .../ext/civi_campaign/Civi/Api4/Survey.php | 23 + civicrm/ext/civi_campaign/info.xml | 7 +- .../Action/CiviCase/CiviCaseSaveTrait.php | 0 .../Civi/Api4/Action/CiviCase/Create.php | 0 .../Civi/Api4/Action/CiviCase/Save.php | 0 .../Civi/Api4/Action/CiviCase/Update.php | 0 .../civi_case}/Civi/Api4/CaseActivity.php | 0 .../civi_case}/Civi/Api4/CaseContact.php | 0 .../civi_case}/Civi/Api4/CaseType.php | 0 .../civi_case}/Civi/Api4/CiviCase.php | 0 .../Provider/CaseCreationSpecProvider.php | 4 + .../Spec/Provider/CaseTypeGetSpecProvider.php | 0 civicrm/ext/civi_case/info.xml | 7 +- .../Contribution/ContributionSaveTrait.php | 0 .../Civi/Api4/Action/Contribution/Create.php | 0 .../Civi/Api4/Action/Contribution/Save.php | 0 .../Civi/Api4/Action/Contribution/Update.php | 0 .../Civi/Api4/Contribution.php | 0 .../Civi/Api4/ContributionPage.php | 0 .../Civi/Api4/ContributionProduct.php | 0 .../Civi/Api4/ContributionRecur.php | 0 .../Civi/Api4/ContributionSoft.php | 0 .../Civi/Api4/EntityFinancialAccount.php | 0 .../Civi/Api4/EntityFinancialTrxn.php | 0 .../Civi/Api4/FinancialAccount.php | 0 .../Civi/Api4/FinancialItem.php | 0 .../Civi/Api4/FinancialTrxn.php | 0 .../Civi/Api4/FinancialType.php | 0 .../civi_contribute}/Civi/Api4/LineItem.php | 0 .../civi_contribute}/Civi/Api4/PCP.php | 0 .../civi_contribute}/Civi/Api4/PCPBlock.php | 0 .../Civi/Api4/PaymentProcessor.php | 0 .../Civi/Api4/PaymentProcessorType.php | 0 .../Civi/Api4/PaymentToken.php | 0 .../civi_contribute}/Civi/Api4/PriceField.php | 0 .../Civi/Api4/PriceFieldValue.php | 0 .../civi_contribute}/Civi/Api4/PriceSet.php | 0 .../Civi/Api4/PriceSetEntity.php | 0 .../civi_contribute}/Civi/Api4/Product.php | 0 .../ContributionCreationSpecProvider.php | 0 .../Provider/ContributionGetSpecProvider.php | 0 .../ContributionRecurCreationSpecProvider.php | 0 .../FinancialItemCreationSpecProvider.php | 0 .../FinancialTrxnCreationSpecProvider.php | 0 .../PaymentProcessorCreationSpecProvider.php | 0 ...ymentProcessorTypeCreationSpecProvider.php | 0 .../PriceFieldValueCreationSpecProvider.php | 0 civicrm/ext/civi_contribute/info.xml | 7 +- .../Civi/Api4/Action/Event/Get.php | 0 .../{ => ext/civi_event}/Civi/Api4/Event.php | 0 .../civi_event}/Civi/Api4/Participant.php | 0 .../Civi/Api4/ParticipantStatusType.php | 0 .../Provider/EventCreationSpecProvider.php | 0 civicrm/ext/civi_event/info.xml | 7 +- .../Action/MailSettings/TestConnection.php | 15 +- .../civi_mail}/Civi/Api4/MailSettings.php | 2 +- .../{ => ext/civi_mail}/Civi/Api4/Mailing.php | 0 .../Civi/Api4/MailingEventBounce.php | 0 .../Civi/Api4/MailingEventConfirm.php | 0 .../Civi/Api4/MailingEventDelivered.php | 23 + .../Civi/Api4/MailingEventForward.php | 23 + .../Civi/Api4/MailingEventOpened.php | 0 .../Civi/Api4/MailingEventQueue.php | 0 .../civi_mail/Civi/Api4/MailingEventReply.php | 23 + .../Civi/Api4/MailingEventSubscribe.php | 0 .../Api4/MailingEventTrackableURLOpen.php | 0 .../Civi/Api4/MailingEventUnsubscribe.php | 0 .../civi_mail}/Civi/Api4/MailingGroup.php | 0 .../civi_mail}/Civi/Api4/MailingJob.php | 0 .../Civi/Api4/MailingTrackableURL.php | 0 civicrm/ext/civi_mail/info.xml | 7 +- .../civi_member}/Civi/Api4/Membership.php | 0 .../Civi/Api4/MembershipBlock.php | 0 .../Civi/Api4/MembershipStatus.php | 0 .../civi_member}/Civi/Api4/MembershipType.php | 0 .../MembershipCreationSpecProvider.php | 0 .../MembershipTypeCreationSpecProvider.php | 0 civicrm/ext/civi_member/info.xml | 7 +- .../civi_pledge}/Civi/Api4/Pledge.php | 0 .../civi_pledge}/Civi/Api4/PledgePayment.php | 0 civicrm/ext/civi_pledge/info.xml | 7 +- .../civi_report}/Civi/Api4/ReportInstance.php | 0 civicrm/ext/civi_report/info.xml | 7 +- .../CRM/CivicrmAdminUi/Upgrader.php | 44 + .../ang/afsearchAdminCustomGroups.aff.html | 6 - .../ang/afsearchContactSearch.aff.html | 12 + .../ang/afsearchContactSearch.aff.json | 19 + .../ang/afsearchMailAccounts.aff.html | 3 + .../ang/afsearchMailAccounts.aff.json | 19 + .../ang/afsearchManageACLs.aff.html | 8 + .../ang/afsearchManageACLs.aff.json | 8 + .../ang/afsearchScheduledJobsLog.aff.html | 13 + .../ang/afsearchScheduledJobsLog.aff.json | 19 + .../civicrm_admin_ui.civix.php | 4 +- .../ext/civicrm_admin_ui/civicrm_admin_ui.php | 47 + civicrm/ext/civicrm_admin_ui/info.xml | 7 +- ...nister_Assigned_Financial_Accounts.mgd.php | 7 + ...vedSearch_Administer_Contact_Types.mgd.php | 7 + ...vedSearch_Administer_Custom_Fields.mgd.php | 5 +- ...vedSearch_Administer_Custom_Groups.mgd.php | 9 +- ...arch_Administer_Financial_Accounts.mgd.php | 7 + ...dSearch_Administer_Financial_Types.mgd.php | 7 + ...edSearch_Administer_Location_Types.mgd.php | 7 + ...arch_Administer_Payment_Processors.mgd.php | 7 + ...vedSearch_Administer_ProfileFields.mgd.php | 8 + .../SavedSearch_Administer_Profiles.mgd.php | 7 + ...arch_Administer_Relationship_Types.mgd.php | 7 + .../SavedSearch_Contact_Search.mgd.php | 245 + .../managed/SavedSearch_Manage_ACLs.mgd.php | 179 + ...edSearch_Manage_Contribution_Pages.mgd.php | 7 + .../SavedSearch_Manage_Mail_Accounts.mgd.php | 194 + .../SavedSearch_Manage_Scheduled_Jobs.mgd.php | 1 + .../SavedSearch_Scheduled_Jobs_Log.mgd.php | 105 + .../GrantAutocompleteProvider.php | 83 + civicrm/ext/civigrant/info.xml | 5 +- ..._items_providers_OptionValue_Grant.mgd.php | 4 + ...tionValue_cg_extends_objects_grant.mgd.php | 4 + .../SavedSearch_CiviGrant_Summary.mgd.php | 7 + .../civiimport/Managed/ImportSearches.mgd.php | 14 + .../Managed/UserJobSearches.mgd.php | 136 + .../ang/afsearchAllImports.aff.html | 3 + .../ang/afsearchAllImports.aff.json | 23 + civicrm/ext/civiimport/civiimport.php | 4 +- civicrm/ext/civiimport/info.xml | 4 +- civicrm/ext/ckeditor4/info.xml | 4 +- .../ext/contributioncancelactions/info.xml | 4 +- civicrm/ext/elavon/info.xml | 4 +- civicrm/ext/eventcart/info.xml | 4 +- .../ewaysingle/CRM/Core/Payment/eWAY.mgd.php | 12 +- civicrm/ext/ewaysingle/info.xml | 4 +- civicrm/ext/financialacls/info.xml | 4 +- civicrm/ext/flexmailer/info.xml | 4 +- .../ext/flexmailer/src/Listener/Abdicator.php | 11 +- .../flexmailer/src/Listener/OpenTracker.php | 10 +- civicrm/ext/greenwich/dist/bootstrap3.css | 4 +- civicrm/ext/greenwich/dist/bootstrap3.min.css | 2 +- civicrm/ext/greenwich/info.xml | 4 +- civicrm/ext/greenwich/scss/_greenwich.scss | 2 +- .../CRM/Contact/BAO/SearchCustom.php | 0 .../CRM/Contact/Form/Search/Custom.php | 12 +- .../Contact/Form/Search/Custom/DateAdded.php | 4 +- .../CRM/Contact/Form/Search/Custom/Group.php | 12 +- .../Form/Search/Custom/RandomSegment.php | 4 +- .../CRM/Contact/Page/CustomSearch.php | 0 .../CRM/Contact/Selector/Custom.php | 2 +- .../CRM/Core/InnoDBIndexer.php | 0 .../CRM/Utils/QueryFormatter.php | 0 civicrm/ext/legacycustomsearches/info.xml | 10 +- .../legacycustomsearches.php | 42 + .../settings/LegacyCustomSearch.setting.php | 39 + .../CRM/Contact/Page/CustomSearch.hlp | 0 .../CRM/Contact/Page/CustomSearch.tpl | 0 .../phpunit/CRM/Core/InnoDBIndexerTest.php | 122 + .../phpunit/CRM/Utils/QueryFormatterTest.php | 220 + .../phpunit/Civi/Searches/FullTextTest.php | 8 +- .../tests/phpunit/Civi/Searches/GroupTest.php | 470 + .../phpunit/Civi/Searches/SampleTest.php | 8 +- .../message_admin/ang/crmMsgadm/ListCtrl.js | 18 +- .../message_admin/ang/crmMsgadm/Workflow.js | 4 +- .../ang/crmMsgadm/WorkflowTranslated.html | 4 +- civicrm/ext/message_admin/info.xml | 4 +- .../ext/oauth-client/CRM/OAuth/MailSetup.php | 3 +- civicrm/ext/oauth-client/info.xml | 4 +- .../oauth-client/providers/gmail.dist.json | 5 +- .../tests/phpunit/CRM/OAuth/MailSetupTest.php | 4 +- civicrm/ext/payflowpro/info.xml | 4 +- civicrm/ext/recaptcha/info.xml | 4 +- .../SearchDisplay/AbstractRunAction.php | 37 +- .../Api4/Action/SearchDisplay/GetDefault.php | 53 +- .../Action/SearchDisplay/GetSearchTasks.php | 3 +- .../Subscriber/DefaultDisplaySubscriber.php | 2 +- .../ext/search_kit/Civi/Search/Display.php | 74 +- .../ext/search_kit/ang/crmSearchAdmin.ang.php | 1 + .../search_kit/ang/crmSearchAdmin.module.js | 4 +- .../crmSearchAdmin.component.js | 2 +- .../crmSearchAdminLinkGroup.html | 8 +- .../crmSearchDisplayEntity.component.js | 4 +- .../crmSearchAdminResultsTable.component.js | 7 +- .../crmSearchAdmin/resultsTable/debug.html | 8 +- .../crmSearchAdmin/searchListing/buttons.html | 18 +- .../crmSearchAdminSearchListing.component.js | 11 +- .../crmSearchAdminSegmentListing.component.js | 2 +- .../search_kit/ang/crmSearchAdmin/tabs.html | 11 + .../ang/crmSearchDisplay/colType/field.html | 2 +- .../ang/crmSearchDisplay/colType/menu.html | 4 +- .../traits/searchDisplayBaseTrait.service.js | 8 + .../ang/crmSearchDisplayGrid.ang.php | 2 +- .../crmSearchDisplayGrid.component.js | 4 +- .../ang/crmSearchDisplayList.ang.php | 2 +- .../crmSearchDisplayList.component.js | 4 +- .../crmSearchDisplayTable.component.js | 4 +- .../crmSearchDisplayTable.html | 4 +- .../crmSearchInputVal.component.js | 4 + .../crmSearchTasks/crmSearchInput/email.html | 6 + .../crmSearchTasks.component.js | 12 + civicrm/ext/search_kit/css/crmSearchAdmin.css | 14 + .../search_kit/css/crmSearchDisplayTable.css | 15 + civicrm/ext/search_kit/css/crmSearchTasks.css | 6 +- civicrm/ext/search_kit/info.xml | 4 +- civicrm/ext/search_kit/search_kit.php | 19 - .../SearchDisplay/AbstractRunActionTest.php | 199 +- .../api/v4/SearchDisplay/SearchRunTest.php | 47 +- civicrm/ext/sequentialcreditnotes/info.xml | 4 +- .../CRM/Standaloneusers/BAO/Role.php | 30 + .../CRM/Standaloneusers/DAO/Role.php | 304 + .../CRM/Standaloneusers/DAO/User.php | 539 + .../CRM/Standaloneusers/Page/Login.php | 27 + .../CRM/Standaloneusers/Upgrader.php | 160 + .../ext/standaloneusers/Civi/Api4/Role.php | 13 + .../ext/standaloneusers/Civi/Api4/User.php | 13 + .../standaloneusers/Civi/Authx/Standalone.php | 61 + .../Civi/Standalone/Security.php | 450 + civicrm/ext/standaloneusers/LICENSE.txt | 667 + civicrm/ext/standaloneusers/README.md | 52 + .../standaloneusers/afformEntities/Role.php | 9 + .../standaloneusers/afformEntities/User.php | 17 + .../ang/afformEditUserAccount.aff.html | 12 + .../ang/afformEditUserAccount.aff.json | 19 + .../ext/standaloneusers/ang/afformX.aff.html | 10 + .../ext/standaloneusers/ang/afformX.aff.json | 19 + .../afsearchAdministerUserAccounts.aff.html | 17 + .../afsearchAdministerUserAccounts.aff.json | 23 + .../ang/afsearchUserRoles.aff.html | 10 + .../ang/afsearchUserRoles.aff.json | 23 + .../standaloneusers/images/civicrm-logo.png | Bin 0 -> 28835 bytes civicrm/ext/standaloneusers/info.xml | 50 + .../SavedSearch_Administer_Roles.mgd.php | 97 + .../SavedSearch_Administer_Users.mgd.php | 137 + civicrm/ext/standaloneusers/phpunit.xml.dist | 18 + .../standaloneusers/standaloneusers.civix.php | 200 + .../ext/standaloneusers/standaloneusers.php | 66 + .../CRM/Standaloneusers/Page/Login.tpl | 339 + .../phpunit/Civi/Standalone/SecurityTest.php | 148 + .../tests/phpunit/bootstrap.php | 65 + .../xml/Menu/standaloneusers.xml | 14 + .../CRM/Standaloneusers/Role.entityType.php | 10 + .../xml/schema/CRM/Standaloneusers/Role.xml | 71 + .../CRM/Standaloneusers/User.entityType.php | 10 + .../xml/schema/CRM/Standaloneusers/User.xml | 149 + civicrm/install/civicrm.php | 4 +- civicrm/install/index.php | 298 +- civicrm/js/model/crm.uf.js | 13 +- civicrm/js/view/crm.profile-selector.js | 8 +- civicrm/packages/IDS/Caching/Apc.php | 4 +- civicrm/packages/IDS/Caching/Memcached.php | 2 +- civicrm/packages/IDS/Filter.php | 6 + civicrm/packages/IDS/Log/Database.php | 9 +- civicrm/packages/IDS/Log/Email.php | 8 +- civicrm/packages/IDS/Monitor.php | 7 + civicrm/release-notes.md | 102 + civicrm/release-notes/5.58.1.md | 53 + civicrm/release-notes/5.59.1.md | 41 + civicrm/release-notes/5.59.2.md | 39 + civicrm/release-notes/5.59.3.md | 38 + civicrm/release-notes/5.59.4.md | 43 + civicrm/release-notes/5.61.1.md | 39 + civicrm/release-notes/5.61.2.md | 38 + civicrm/release-notes/5.61.3.md | 38 + civicrm/release-notes/5.61.4.md | 41 + civicrm/release-notes/5.62.1.md | 42 + civicrm/release-notes/5.63.2.md | 4 +- civicrm/release-notes/5.64.0.md | 1077 ++ civicrm/settings/Core.setting.php | 2 + civicrm/settings/Search.setting.php | 36 +- .../plugins/init/Standalone.civi-setup.php | 52 - .../init/StandaloneUsers.civi-setup.php | 91 + .../GenerateCredKey.civi-setup.php | 4 + .../InstallJoomlaSettingsFile.civi-setup.php | 53 + .../InstallSettingsFile.civi-setup.php | 67 +- civicrm/setup/src/Setup.php | 3 +- civicrm/setup/src/Setup/Model.php | 2 + civicrm/setup/src/Setup/SettingsUtil.php | 88 + civicrm/sql/case_sample.mysql | 2 +- civicrm/sql/civicrm.mysql | 32 +- civicrm/sql/civicrm_acl.mysql | 71 +- civicrm/sql/civicrm_data.mysql | 561 +- .../civicrm_action_mapping.sqldata.php | 65 - .../civicrm_contact_type.sqldata.php | 18 +- .../HouseholdSupervised.sqldata.php | 2 +- .../HouseholdUnsupervised.sqldata.php | 2 +- .../OrganizationSupervised.sqldata.php | 2 +- .../OrganizationUnsupervised.sqldata.php | 2 +- .../sql/civicrm_data/civicrm_job.sqldata.php | 29 +- .../civicrm_location_type.sqldata.php | 5 +- .../civicrm_membership_status.sqldata.php | 24 +- .../civicrm_option_group/acl_role.sqldata.php | 6 + .../sql/civicrm_data/civicrm_tag.sqldata.php | 14 +- civicrm/sql/civicrm_drop.mysql | 1 - civicrm/sql/civicrm_generated.mysql | 10737 ++++++++-------- civicrm/sql/civicrm_sample.mysql | 71 +- civicrm/templates/CRM/ACL/Form/ACL.tpl | 12 +- civicrm/templates/CRM/ACL/Form/ACLBasic.tpl | 44 - civicrm/templates/CRM/ACL/Page/ACL.tpl | 8 +- civicrm/templates/CRM/ACL/Page/ACLBasic.tpl | 56 - .../CRM/Admin/Form/ScheduleReminders.tpl | 2 +- .../Form/Edit/CommunicationPreferences.tpl | 76 +- .../CRM/Contact/Form/Search/ResultTasks.tpl | 10 +- .../CRM/Contact/Form/Task/EmailCommon.tpl | 2 +- .../CRM/Contact/Import/Form/DataSource.hlp | 3 + .../CRM/Contribute/Form/Contribution.tpl | 15 +- .../Contribute/Form/Contribution/Confirm.tpl | 2 +- .../CRM/Contribute/Form/Contribution/Main.tpl | 2 +- .../Form/Contribution/MainMembershipBlock.tpl | 245 + .../Form/Contribution/MembershipBlock.tpl | 233 +- .../Contribute/Form/Contribution/ThankYou.tpl | 2 +- .../CRM/Contribute/Form/Task/Invoice.hlp | 4 + .../CRM/Contribute/Form/Task/Invoice.tpl | 5 +- .../Page/ContributionRecurSelector.tpl | 21 +- civicrm/templates/CRM/Core/BillingBlock.tpl | 2 +- .../CRM/Core/Form/RecurringEntity.hlp | 2 +- .../CRM/Core/Page/RecurringEntityPreview.tpl | 1 + .../templates/CRM/Event/Form/Participant.tpl | 2 +- .../CRM/Event/Form/Registration/Register.tpl | 8 +- civicrm/templates/CRM/Group/Form/Delete.tpl | 2 +- .../Member/Page/RecurringContributions.tpl | 2 +- .../templates/CRM/UF/Form/AdvanceSetting.tpl | 12 +- civicrm/templates/CRM/UF/Form/Group.hlp | 8 +- .../CRM/common/civicrm.settings.php.template | 6 + .../templates/CRM/common/navigation.js.tpl | 182 - civicrm/templates/CRM/common/paymentBlock.tpl | 8 +- civicrm/templates/CRM/common/standalone.tpl | 4 +- civicrm/vendor/autoload.php | 2 +- civicrm/vendor/composer/autoload_real.php | 14 +- civicrm/vendor/composer/autoload_static.php | 12 +- civicrm/vendor/composer/installed.php | 12 +- civicrm/xml/schema/ACL/ACL.xml | 38 + civicrm/xml/schema/ACL/ACLEntityRole.xml | 7 + civicrm/xml/schema/Activity/Activity.xml | 2 +- .../xml/schema/Contribute/Contribution.xml | 1 + civicrm/xml/schema/Core/ActionMapping.xml | 1 + civicrm/xml/schema/Core/CustomField.xml | 2 +- civicrm/xml/schema/Core/CustomGroup.xml | 2 +- civicrm/xml/schema/Core/Email.xml | 2 +- civicrm/xml/schema/Core/MailSettings.xml | 6 + civicrm/xml/schema/Core/PreferencesDate.xml | 4 + civicrm/xml/schema/Core/UFGroup.xml | 11 +- .../schema/Event/ParticipantStatusType.xml | 5 + .../schema/Financial/PaymentProcessorType.xml | 5 + .../xml/schema/Mailing/MailingComponent.xml | 4 + .../xml/schema/Member/MembershipStatus.xml | 5 + civicrm/xml/schema/SMS/Provider.xml | 6 + civicrm/xml/templates/case_sample.tpl | 2 +- civicrm/xml/templates/civicrm_acl.tpl | 71 +- civicrm/xml/templates/civicrm_data.tpl | 1 - .../contribution_invoice_receipt_html.tpl | 5 + .../contribution_offline_receipt_html.tpl | 6 +- .../contribution_offline_receipt_text.tpl | 6 +- .../event_offline_receipt_html.tpl | 3 - .../event_offline_receipt_text.tpl | 2 - .../event_online_receipt_html.tpl | 201 +- .../event_online_receipt_text.tpl | 46 +- civicrm/xml/version.xml | 2 +- wp-cli/civicrm.php | 67 +- wp-rest/Plugin.php | 90 +- 775 files changed, 21654 insertions(+), 12901 deletions(-) delete mode 100644 civicrm/CRM/ACL/Form/ACLBasic.php delete mode 100644 civicrm/CRM/ACL/Page/ACLBasic.php delete mode 100644 civicrm/CRM/Api4/Permission.php create mode 100644 civicrm/CRM/Campaign/SurveyTokens.php create mode 100644 civicrm/CRM/Campaign/WorkflowMessage/PetitionConfirmationNeeded.php create mode 100644 civicrm/CRM/Campaign/WorkflowMessage/PetitionSign.php create mode 100644 civicrm/CRM/Campaign/WorkflowMessage/Survey/Survey.php delete mode 100644 civicrm/CRM/Core/DAO/ActionMapping.php create mode 100644 civicrm/CRM/Upgrade/Incremental/php/FiveSixtyFour.php create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.64.alpha1.mysql.tpl create mode 100644 civicrm/CRM/Upgrade/Incremental/sql/5.64.beta1.mysql.tpl create mode 100644 civicrm/Civi/Api4/Action/EntitySet/Get.php create mode 100644 civicrm/Civi/Api4/EntitySet.php create mode 100644 civicrm/Civi/Api4/Generic/Traits/GroupAndHavingParamTrait.php create mode 100644 civicrm/Civi/Api4/Query/Api4EntitySetQuery.php create mode 100644 civicrm/Civi/Api4/Query/Api4Query.php create mode 100644 civicrm/Civi/Api4/Query/SqlBool.php create mode 100644 civicrm/Civi/Api4/Query/SqlFunctionLEFT.php create mode 100644 civicrm/Civi/Api4/Query/SqlFunctionRIGHT.php create mode 100644 civicrm/Civi/Api4/Query/SqlFunctionSUBSTRING.php create mode 100644 civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php create mode 100644 civicrm/Civi/Api4/Service/Spec/Provider/MailingGetSpecProvider.php create mode 100644 civicrm/Civi/Test/EntityTrait.php create mode 100644 civicrm/Civi/WorkflowMessage/TestBanner.php create mode 100644 civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php create mode 100644 civicrm/ang/api4Explorer/Set.html create mode 100644 civicrm/ang/crmMailing/BlockRecipientsMultiline.html create mode 100644 civicrm/ang/crmMailing/BlockRecipientsMultiline.js delete mode 100644 civicrm/ang/crmMailing/Recipients.js create mode 100644 civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js create mode 100644 civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Email.html create mode 100644 civicrm/ext/afform/core/ang/af/afFieldWithSearchOperator.html create mode 100644 civicrm/ext/afform/core/ang/af/fields/Email.html rename civicrm/{ => ext/civi_campaign}/Civi/Api4/Action/Campaign/Get.php (100%) rename civicrm/{ => ext/civi_campaign}/Civi/Api4/Campaign.php (100%) rename civicrm/{ => ext/civi_campaign}/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php (100%) create mode 100644 civicrm/ext/civi_campaign/Civi/Api4/Survey.php rename civicrm/{ => ext/civi_case}/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/Action/CiviCase/Create.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/Action/CiviCase/Save.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/Action/CiviCase/Update.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/CaseActivity.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/CaseContact.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/CaseType.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/CiviCase.php (100%) rename civicrm/{ => ext/civi_case}/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php (92%) rename civicrm/{ => ext/civi_case}/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Action/Contribution/ContributionSaveTrait.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Action/Contribution/Create.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Action/Contribution/Save.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Action/Contribution/Update.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Contribution.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/ContributionPage.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/ContributionProduct.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/ContributionRecur.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/ContributionSoft.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/EntityFinancialAccount.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/EntityFinancialTrxn.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/FinancialAccount.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/FinancialItem.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/FinancialTrxn.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/FinancialType.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/LineItem.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PCP.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PCPBlock.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PaymentProcessor.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PaymentProcessorType.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PaymentToken.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PriceField.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PriceFieldValue.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PriceSet.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/PriceSetEntity.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Product.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_contribute}/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_event}/Civi/Api4/Action/Event/Get.php (100%) rename civicrm/{ => ext/civi_event}/Civi/Api4/Event.php (100%) rename civicrm/{ => ext/civi_event}/Civi/Api4/Participant.php (100%) rename civicrm/{ => ext/civi_event}/Civi/Api4/ParticipantStatusType.php (100%) rename civicrm/{ => ext/civi_event}/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/Action/MailSettings/TestConnection.php (85%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailSettings.php (97%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/Mailing.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingEventBounce.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingEventConfirm.php (100%) create mode 100644 civicrm/ext/civi_mail/Civi/Api4/MailingEventDelivered.php create mode 100644 civicrm/ext/civi_mail/Civi/Api4/MailingEventForward.php rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingEventOpened.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingEventQueue.php (100%) create mode 100644 civicrm/ext/civi_mail/Civi/Api4/MailingEventReply.php rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingEventSubscribe.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingEventTrackableURLOpen.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingEventUnsubscribe.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingGroup.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingJob.php (100%) rename civicrm/{ => ext/civi_mail}/Civi/Api4/MailingTrackableURL.php (100%) rename civicrm/{ => ext/civi_member}/Civi/Api4/Membership.php (100%) rename civicrm/{ => ext/civi_member}/Civi/Api4/MembershipBlock.php (100%) rename civicrm/{ => ext/civi_member}/Civi/Api4/MembershipStatus.php (100%) rename civicrm/{ => ext/civi_member}/Civi/Api4/MembershipType.php (100%) rename civicrm/{ => ext/civi_member}/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_member}/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php (100%) rename civicrm/{ => ext/civi_pledge}/Civi/Api4/Pledge.php (100%) rename civicrm/{ => ext/civi_pledge}/Civi/Api4/PledgePayment.php (100%) rename civicrm/{ => ext/civi_report}/Civi/Api4/ReportInstance.php (100%) create mode 100644 civicrm/ext/civicrm_admin_ui/CRM/CivicrmAdminUi/Upgrader.php create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.html create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.json create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.html create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.json create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.html create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.json create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.html create mode 100644 civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.json create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Contact_Search.mgd.php create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php create mode 100644 civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php create mode 100644 civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php create mode 100644 civicrm/ext/civiimport/ang/afsearchAllImports.aff.html create mode 100644 civicrm/ext/civiimport/ang/afsearchAllImports.aff.json rename civicrm/{ => ext/legacycustomsearches}/CRM/Contact/BAO/SearchCustom.php (100%) rename civicrm/{ => ext/legacycustomsearches}/CRM/Contact/Page/CustomSearch.php (100%) rename civicrm/{ => ext/legacycustomsearches}/CRM/Core/InnoDBIndexer.php (100%) rename civicrm/{ => ext/legacycustomsearches}/CRM/Utils/QueryFormatter.php (100%) create mode 100644 civicrm/ext/legacycustomsearches/settings/LegacyCustomSearch.setting.php rename civicrm/{ => ext/legacycustomsearches}/templates/CRM/Contact/Page/CustomSearch.hlp (100%) rename civicrm/{ => ext/legacycustomsearches}/templates/CRM/Contact/Page/CustomSearch.tpl (100%) create mode 100644 civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Core/InnoDBIndexerTest.php create mode 100644 civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Utils/QueryFormatterTest.php create mode 100644 civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php create mode 100644 civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/email.html create mode 100644 civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php create mode 100644 civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php create mode 100644 civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php create mode 100644 civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php create mode 100644 civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php create mode 100644 civicrm/ext/standaloneusers/Civi/Api4/Role.php create mode 100644 civicrm/ext/standaloneusers/Civi/Api4/User.php create mode 100644 civicrm/ext/standaloneusers/Civi/Authx/Standalone.php create mode 100644 civicrm/ext/standaloneusers/Civi/Standalone/Security.php create mode 100644 civicrm/ext/standaloneusers/LICENSE.txt create mode 100644 civicrm/ext/standaloneusers/README.md create mode 100644 civicrm/ext/standaloneusers/afformEntities/Role.php create mode 100644 civicrm/ext/standaloneusers/afformEntities/User.php create mode 100644 civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html create mode 100644 civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.json create mode 100644 civicrm/ext/standaloneusers/ang/afformX.aff.html create mode 100644 civicrm/ext/standaloneusers/ang/afformX.aff.json create mode 100644 civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html create mode 100644 civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json create mode 100644 civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.html create mode 100644 civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json create mode 100644 civicrm/ext/standaloneusers/images/civicrm-logo.png create mode 100644 civicrm/ext/standaloneusers/info.xml create mode 100644 civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php create mode 100644 civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php create mode 100644 civicrm/ext/standaloneusers/phpunit.xml.dist create mode 100644 civicrm/ext/standaloneusers/standaloneusers.civix.php create mode 100644 civicrm/ext/standaloneusers/standaloneusers.php create mode 100644 civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl create mode 100644 civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php create mode 100644 civicrm/ext/standaloneusers/tests/phpunit/bootstrap.php create mode 100644 civicrm/ext/standaloneusers/xml/Menu/standaloneusers.xml create mode 100644 civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.entityType.php create mode 100644 civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml create mode 100644 civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php create mode 100644 civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml create mode 100644 civicrm/release-notes/5.58.1.md create mode 100644 civicrm/release-notes/5.59.1.md create mode 100644 civicrm/release-notes/5.59.2.md create mode 100644 civicrm/release-notes/5.59.3.md create mode 100644 civicrm/release-notes/5.59.4.md create mode 100644 civicrm/release-notes/5.61.1.md create mode 100644 civicrm/release-notes/5.61.2.md create mode 100644 civicrm/release-notes/5.61.3.md create mode 100644 civicrm/release-notes/5.61.4.md create mode 100644 civicrm/release-notes/5.62.1.md create mode 100644 civicrm/release-notes/5.64.0.md delete mode 100644 civicrm/setup/plugins/init/Standalone.civi-setup.php create mode 100644 civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php create mode 100644 civicrm/setup/plugins/installFiles/InstallJoomlaSettingsFile.civi-setup.php create mode 100644 civicrm/setup/src/Setup/SettingsUtil.php delete mode 100644 civicrm/sql/civicrm_data/civicrm_action_mapping.sqldata.php delete mode 100644 civicrm/templates/CRM/ACL/Form/ACLBasic.tpl delete mode 100644 civicrm/templates/CRM/ACL/Page/ACLBasic.tpl create mode 100644 civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl delete mode 100644 civicrm/templates/CRM/common/navigation.js.tpl diff --git a/civicrm.php b/civicrm.php index 5ce81b2fc7..7f7ab897da 100644 --- a/civicrm.php +++ b/civicrm.php @@ -2,7 +2,7 @@ /** * Plugin Name: CiviCRM * Description: CiviCRM - Growing and Sustaining Relationships - * Version: 5.63.2 + * Version: 5.64.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.63.2'); +define('CIVICRM_PLUGIN_VERSION', '5.64.0'); // Store reference to this file. if (!defined('CIVICRM_PLUGIN_FILE')) { @@ -1152,10 +1152,10 @@ class CiviCRM_For_WordPress { * WordPress has it's own timezone calculations. CiviCRM relies on the PHP * default timezone which WordPress overrides with UTC in wp-settings.php */ - $wpBaseTimezone = date_default_timezone_get(); - $wpUserTimezone = get_option('timezone_string'); - if ($wpUserTimezone) { - date_default_timezone_set($wpUserTimezone); + $original_timezone = date_default_timezone_get(); + $wp_site_timezone = $this->get_timezone_string(); + if ($wp_site_timezone) { + date_default_timezone_set($wp_site_timezone); CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone(); } @@ -1198,9 +1198,9 @@ class CiviCRM_For_WordPress { // Do the business. CRM_Core_Invoke::invoke($argdata['args']); - // Restore WordPress's timezone. - if ($wpBaseTimezone) { - date_default_timezone_set($wpBaseTimezone); + // Restore original timezone. + if ($original_timezone) { + date_default_timezone_set($original_timezone); } // Restore WordPress's arrays. @@ -1215,6 +1215,53 @@ class CiviCRM_For_WordPress { } + /** + * Returns the timezone string for the current WordPress site. + * + * If a timezone identifier is used, return that. + * If an offset is used, try to build a suitable timezone. + * If all else fails, uses UTC. + * + * @since 5.64 + * + * @return string $tzstring The site timezone string. + */ + private function get_timezone_string() { + + // Return the timezone string when set. + $tzstring = get_option('timezone_string'); + if (!empty($tzstring)) { + return $tzstring; + } + + /* + * Try and build a deprecated (but currently valid) timezone string + * from the GMT offset value. + * + * Note: manual offsets should be discouraged. WordPress works more + * reliably when setting an actual timezone (e.g. "Europe/London") + * because of support for Daylight Saving changes. + * + * Note: the IANA timezone database that provides PHP's timezone + * support uses (reversed) POSIX style signs. + * + * @see https://www.php.net/manual/en/timezones.others.php + */ + $offset = get_option('gmt_offset'); + if (0 != $offset && floor($offset) == $offset) { + $offset_string = $offset > 0 ? "-$offset" : '+' . abs((int) $offset); + $tzstring = 'Etc/GMT' . $offset_string; + } + + // Default to "UTC" if the timezone string is still empty. + if (empty($tzstring)) { + $tzstring = 'UTC'; + } + + return $tzstring; + + } + /** * Non-destructively override WordPress magic quotes. * diff --git a/civicrm/CRM/ACL/API.php b/civicrm/CRM/ACL/API.php index d9739d48d7..ce2fc6ae7f 100644 --- a/civicrm/CRM/ACL/API.php +++ b/civicrm/CRM/ACL/API.php @@ -148,7 +148,7 @@ class CRM_ACL_API { public static function group( $type, $contactID = NULL, - $tableName = 'civicrm_saved_search', + $tableName = 'civicrm_group', $allGroups = NULL, $includedGroups = [] ) { @@ -181,7 +181,7 @@ class CRM_ACL_API { $type, $groupID, $contactID = NULL, - $tableName = 'civicrm_saved_search', + $tableName = 'civicrm_group', $allGroups = NULL, $includedGroups = NULL ) { diff --git a/civicrm/CRM/ACL/BAO/ACL.php b/civicrm/CRM/ACL/BAO/ACL.php index 6668ff4e33..d8b84cec67 100644 --- a/civicrm/CRM/ACL/BAO/ACL.php +++ b/civicrm/CRM/ACL/BAO/ACL.php @@ -9,6 +9,8 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Utils\CoreUtil; + /** * * @package CRM @@ -223,70 +225,61 @@ SELECT count( a.id ) $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 +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_saved_search' + AND a.object_table = 'civicrm_group' AND a.id IN ( $aclKeys ) -ORDER BY a.object_id +ORDER BY {$orderBy} "; $dao = CRM_Core_DAO::executeQuery($query); // do an or of all the where clauses u see - $ids = []; + $ids = $excludeIds = []; while ($dao->fetch()) { // make sure operation matches the type TODO if (self::matchType($type, $dao->operation)) { - if (!$dao->object_id) { - $ids = []; - $whereClause = ' ( 1 ) '; - break; + if (!$dao->deny) { + if (empty($dao->object_id)) { + $allInclude = TRUE; + } + else { + $ids[] = $dao->object_id; + } } - $ids[] = $dao->object_id; - } - } - - if (!empty($ids)) { - $ids = implode(',', $ids); - $query = " -SELECT g.* - FROM civicrm_group g - WHERE g.id IN ( $ids ) - AND g.is_active = 1 -"; - $dao = CRM_Core_DAO::executeQuery($query); - $groupIDs = []; - $groupContactCacheClause = FALSE; - while ($dao->fetch()) { - $groupIDs[] = $dao->id; - - if (($dao->saved_search_id || $dao->children || $dao->parents)) { - if ($dao->cache_date == NULL) { - CRM_Contact_BAO_GroupContactCache::load($dao); + else { + if (empty($dao->object_id)) { + $allExclude = TRUE; + } + else { + $excludeIds[] = $dao->object_id; } - $groupContactCacheClause = " UNION SELECT contact_id FROM civicrm_group_contact_cache WHERE group_id IN (" . implode(', ', $groupIDs) . ")"; } - - } - - if ($groupIDs) { - $clauses[] = "( - `contact_a`.id IN ( - SELECT contact_id FROM civicrm_group_contact WHERE group_id IN (" . implode(', ', $groupIDs) . ") AND status = 'Added' - $groupContactCacheClause - ) - )"; } } + if (!empty($excludeIds) && !$allInclude) { + $ids = array_diff($ids, $excludeIds); + } + elseif (!empty($excludeIds) && $allInclude) { + $ids = []; + $clauses[] = self::getGroupClause($excludeIds, 'NOT IN'); + } + if (!empty($ids)) { + $clauses[] = self::getGroupClause($ids, 'IN'); + } } if (!empty($clauses)) { @@ -315,7 +308,7 @@ SELECT g.* public static function group( $type, $contactID = NULL, - $tableName = 'civicrm_saved_search', + $tableName = 'civicrm_group', $allGroups = NULL, $includedGroups = [] ) { @@ -461,30 +454,43 @@ SELECT g.* $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 +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 ) -GROUP BY a.operation,a.object_id -ORDER BY a.object_id +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)) { - $ids[] = $dao->object_id; + 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)) { - foreach ($allGroups as $id => $dontCare) { - $ids[] = $id; + if (!$dao->deny) { + foreach ($allGroups as $id => $dontCare) { + $ids[] = $id; + } + } + else { + $ids = array_diff($ids, array_keys($allGroups)); } } break; @@ -493,4 +499,78 @@ ORDER BY a.object_id return $ids; } + private static function getGroupClause(array $groupIDs, string $operation): string { + $ids = implode(',', $groupIDs); + $query = " +SELECT g.* + FROM civicrm_group g + WHERE g.id IN ( $ids ) + AND g.is_active = 1 +"; + $dao = CRM_Core_DAO::executeQuery($query); + $foundGroupIDs = []; + $groupContactCacheClause = FALSE; + while ($dao->fetch()) { + $foundGroupIDs[] = $dao->id; + if (($dao->saved_search_id || $dao->children || $dao->parents)) { + if ($dao->cache_date == NULL) { + CRM_Contact_BAO_GroupContactCache::load($dao); + } + $groupContactCacheClause = " UNION SELECT contact_id FROM civicrm_group_contact_cache WHERE group_id IN (" . implode(', ', $foundGroupIDs) . ")"; + } + } + + if ($groupIDs) { + return "( + `contact_a`.id $operation ( + SELECT contact_id FROM civicrm_group_contact WHERE group_id IN (" . implode(', ', $foundGroupIDs) . ") AND status = 'Added' + $groupContactCacheClause + ) + )"; + } + return ''; + } + + public static function getObjectTableOptions(): array { + return [ + 'civicrm_group' => ts('Group'), + 'civicrm_uf_group' => ts('Profile'), + 'civicrm_event' => ts('Event'), + 'civicrm_custom_group' => ts('Custom Group'), + ]; + } + + public static function getObjectIdOptions($context, $params): array { + $tableName = $params['values']['object_table'] ?? NULL; + // Look up object_table if not known + if (!$tableName && !empty($params['values']['id'])) { + $tableName = CRM_Core_DAO::getFieldValue('CRM_ACL_DAO_ACL', $params['values']['id'], 'object_table'); + } + if (!$tableName) { + return []; + } + if (!isset(Civi::$statics[__FUNCTION__][$tableName])) { + $entity = CoreUtil::getApiNameFromTableName($tableName); + $label = CoreUtil::getInfoItem($entity, 'label_field'); + $titlePlural = CoreUtil::getInfoItem($entity, 'title_plural'); + Civi::$statics[__FUNCTION__][$tableName] = []; + Civi::$statics[__FUNCTION__][$tableName][] = [ + 'label' => ts('All %1', [1 => $titlePlural]), + 'id' => 0, + 'name' => 0, + ]; + $options = civicrm_api4($entity, 'get', [ + 'select' => [$label, 'id', 'name'], + ]); + foreach ($options as $option) { + Civi::$statics[__FUNCTION__][$tableName][] = [ + 'label' => $option[$label], + 'id' => $option['id'], + 'name' => $option['name'] ?? $option['id'], + ]; + } + } + return Civi::$statics[__FUNCTION__][$tableName]; + } + } diff --git a/civicrm/CRM/ACL/DAO/ACL.php b/civicrm/CRM/ACL/DAO/ACL.php index 16e184652a..c370ec642b 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:f21ef3073d6247d130341cd182793ea6) + * (GenCodeChecksum:a77f71abc7be09b3df836ddb6e5d2990) */ /** @@ -30,6 +30,17 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { */ public static $_log = FALSE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/acl/edit?reset=1&action=add', + 'delete' => 'civicrm/acl/delete?reset=1&action=delete&id=[id]', + 'update' => 'civicrm/acl/edit?reset=1&action=edit&id=[id]', + ]; + /** * Unique table ID * @@ -129,6 +140,13 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { */ public $is_active; + /** + * @var int|string + * (SQL type: int) + * Note that values will be retrieved from the database as a string. + */ + public $priority; + /** * Class constructor. */ @@ -276,6 +294,10 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'entity' => 'ACL', 'bao' => 'CRM_ACL_BAO_ACL', 'localizable' => 0, + 'pseudoconstant' => [ + 'optionGroupName' => 'acl_role', + 'optionEditPath' => 'civicrm/admin/options/acl_role', + ], 'add' => '1.6', ], 'operation' => [ @@ -323,6 +345,13 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'entity' => 'ACL', 'bao' => 'CRM_ACL_BAO_ACL', 'localizable' => 0, + 'html' => [ + 'type' => 'Select', + 'label' => ts("Type of Data"), + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_ACL_BAO_ACL::getObjectTableOptions', + ], 'add' => '1.6', ], 'object_id' => [ @@ -341,6 +370,15 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'entity' => 'ACL', 'bao' => 'CRM_ACL_BAO_ACL', 'localizable' => 0, + 'html' => [ + 'type' => 'Select', + 'label' => ts("Which Data"), + 'controlField' => 'object_table', + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_ACL_BAO_ACL::getObjectIdOptions', + 'prefetch' => 'false', + ], 'add' => '1.6', ], 'acl_table' => [ @@ -403,6 +441,28 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { ], 'add' => '1.6', ], + 'priority' => [ + 'name' => 'priority', + 'type' => CRM_Utils_Type::T_INT, + 'title' => ts('Priority'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_acl.priority', + 'default' => '0', + 'table_name' => 'civicrm_acl', + 'entity' => 'ACL', + 'bao' => 'CRM_ACL_BAO_ACL', + 'localizable' => 0, + 'html' => [ + 'type' => 'Number', + ], + 'add' => '5.64', + ], ]; CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); } @@ -481,6 +541,14 @@ class CRM_ACL_DAO_ACL extends CRM_Core_DAO { 'localizable' => FALSE, 'sig' => 'civicrm_acl::0::acl_id', ], + 'index_priority' => [ + 'name' => 'index_priority', + 'field' => [ + 0 => 'priority', + ], + 'localizable' => FALSE, + 'sig' => 'civicrm_acl::0::priority', + ], ]; return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; } diff --git a/civicrm/CRM/ACL/DAO/ACLEntityRole.php b/civicrm/CRM/ACL/DAO/ACLEntityRole.php index bc2b657cee..55a016d36f 100644 --- a/civicrm/CRM/ACL/DAO/ACLEntityRole.php +++ b/civicrm/CRM/ACL/DAO/ACLEntityRole.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/ACL/ACLEntityRole.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:aef394216d8ee905ec5ab98cdee3209e) + * (GenCodeChecksum:e66b252f62d0fa48cb74f49b3058aae5) */ /** @@ -30,6 +30,17 @@ class CRM_ACL_DAO_ACLEntityRole extends CRM_Core_DAO { */ public static $_log = FALSE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/acl/entityrole?reset=1&action=add', + 'delete' => 'civicrm/acl/entityrole?reset=1&action=delete&id=[id]', + 'update' => 'civicrm/acl/entityrole?reset=1&action=update&id=[id]', + ]; + /** * Unique table ID * @@ -90,7 +101,7 @@ class CRM_ACL_DAO_ACLEntityRole extends CRM_Core_DAO { * Whether to return the plural version of the title. */ public static function getEntityTitle($plural = FALSE) { - return $plural ? ts('ACLEntity Roles') : ts('ACLEntity Role'); + return $plural ? ts('ACL Role Assignments') : ts('ACL Role Assignment'); } /** diff --git a/civicrm/CRM/ACL/Form/ACL.php b/civicrm/CRM/ACL/Form/ACL.php index 809793014a..7282113225 100644 --- a/civicrm/CRM/ACL/Form/ACL.php +++ b/civicrm/CRM/ACL/Form/ACL.php @@ -29,13 +29,15 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { if ($this->_action & CRM_Core_Action::ADD) { $defaults['object_type'] = 1; + $defaults['deny'] = 0; + $defaults['priority'] = 1 + CRM_Utils_Weight::getMax(CRM_ACL_DAO_ACL::class, NULL, 'priority'); } $showHide = new CRM_Core_ShowHideBlocks(); if (isset($defaults['object_table'])) { switch ($defaults['object_table']) { - case 'civicrm_saved_search': + case 'civicrm_group': $defaults['group_id'] = $defaults['object_id']; $defaults['object_type'] = 1; $showHide->addShow("id-group-acl"); @@ -130,7 +132,6 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { $label = ts('Role'); $role = [ '-1' => ts('- select role -'), - '0' => ts('Everyone'), ] + CRM_Core_OptionGroup::values('acl_role'); $this->add('select', 'entity_id', $label, $role, TRUE); @@ -160,6 +161,11 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { $this->add('select', 'event_id', ts('Event'), $event); $this->add('checkbox', 'is_active', ts('Enabled?')); + $this->addRadio('deny', ts('Mode'), [ + 0 => ts('Allow'), + 1 => ts('Deny'), + ], [], NULL, TRUE); + $this->add('number', 'priority', ts('Priority'), ['min' => 1], TRUE); $this->addFormRule(['CRM_ACL_Form_ACL', 'formRule']); } @@ -253,13 +259,12 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { else { $params = $this->controller->exportValues($this->_name); $params['is_active'] = CRM_Utils_Array::value('is_active', $params, FALSE); - $params['deny'] = 0; $params['entity_table'] = 'civicrm_acl_role'; // Figure out which type of object we're permissioning on and set object_table and object_id. switch ($params['object_type']) { case 1: - $params['object_table'] = 'civicrm_saved_search'; + $params['object_table'] = 'civicrm_group'; $params['object_id'] = $params['group_id']; break; @@ -283,8 +288,16 @@ class CRM_ACL_Form_ACL extends CRM_Admin_Form { $params['id'] = $this->_id; } + $params['priority'] = \CRM_Utils_Weight::updateOtherWeights(CRM_ACL_DAO_ACL::class, $this->_values['priority'] ?? NULL, $params['priority'], NULL, 'priority'); CRM_ACL_BAO_ACL::writeRecord($params); } } + /** + * Explicitly declare the entity api name. + */ + public function getDefaultEntity() { + return 'ACL'; + } + } diff --git a/civicrm/CRM/ACL/Form/ACLBasic.php b/civicrm/CRM/ACL/Form/ACLBasic.php deleted file mode 100644 index f6df1a4a19..0000000000 --- a/civicrm/CRM/ACL/Form/ACLBasic.php +++ /dev/null @@ -1,140 +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 - */ -class CRM_ACL_Form_ACLBasic extends CRM_Admin_Form { - - /** - * @var bool - */ - public $submitOnce = TRUE; - - /** - * Set default values for the form. - */ - public function setDefaultValues() { - $defaults = []; - - if ($this->_id || - $this->_id === '0' - ) { - $defaults['entity_id'] = $this->_id; - - $query = " -SELECT object_table - FROM civicrm_acl - WHERE entity_id = %1 - AND ( object_table NOT IN ( 'civicrm_saved_search', 'civicrm_uf_group', 'civicrm_custom_group' ) ) -"; - $params = [1 => [$this->_id, 'Integer']]; - $dao = CRM_Core_DAO::executeQuery($query, $params); - $defaults['object_table'] = []; - while ($dao->fetch()) { - $defaults['object_table'][$dao->object_table] = 1; - } - } - - return $defaults; - } - - /** - * Build the form object. - */ - public function buildQuickForm() { - parent::buildQuickForm(); - - if ($this->_action & CRM_Core_Action::DELETE) { - return; - } - - $permissions = array_flip(CRM_Core_Permission::basicPermissions()); - $this->addCheckBox('object_table', - ts('ACL Type'), - $permissions, - NULL, NULL, TRUE, NULL, - ['</td><td>', '</td></tr><tr><td>'] - ); - - $label = ts('Role'); - $role = [ - '-1' => ts('- select role -'), - '0' => ts('Everyone'), - ] + CRM_Core_OptionGroup::values('acl_role'); - $entityID = &$this->add('select', 'entity_id', $label, $role, TRUE); - - if ($this->_id) { - $entityID->freeze(); - } - $this->add('checkbox', 'is_active', ts('Enabled?')); - - $this->addFormRule(['CRM_ACL_Form_ACLBasic', 'formRule']); - } - - /** - * @param array $params - * - * @return array|bool - */ - public static function formRule($params) { - if ($params['entity_id'] == -1) { - $errors = ['entity_id' => ts('Role is a required field')]; - return $errors; - } - - return TRUE; - } - - /** - * Process the form submission. - */ - public function postProcess() { - CRM_ACL_BAO_Cache::resetCache(); - - $params = $this->controller->exportValues($this->_name); - if ($this->_id || - $this->_id === '0' - ) { - $query = " -DELETE - FROM civicrm_acl - WHERE entity_id = %1 - AND ( object_table NOT IN ( 'civicrm_saved_search', 'civicrm_uf_group', 'civicrm_custom_group' ) ) -"; - $deleteParams = [1 => [$this->_id, 'Integer']]; - CRM_Core_DAO::executeQuery($query, $deleteParams); - - if ($this->_action & CRM_Core_Action::DELETE) { - CRM_Core_Session::setStatus(ts('Selected ACL has been deleted.'), ts('Record Deleted'), 'success'); - return; - } - } - - $params['operation'] = 'All'; - $params['deny'] = 0; - $params['is_active'] = 1; - $params['entity_table'] = 'civicrm_acl_role'; - $params['name'] = 'Core ACL'; - - foreach ($params['object_table'] as $object_table => $value) { - if ($value) { - $newParams = $params; - unset($newParams['object_table']); - $newParams['object_table'] = $object_table; - CRM_ACL_BAO_ACL::writeRecord($newParams); - } - } - } - -} diff --git a/civicrm/CRM/ACL/Page/ACL.php b/civicrm/CRM/ACL/Page/ACL.php index 5e4e6e971a..da80cd79df 100644 --- a/civicrm/CRM/ACL/Page/ACL.php +++ b/civicrm/CRM/ACL/Page/ACL.php @@ -18,13 +18,6 @@ class CRM_ACL_Page_ACL extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -35,45 +28,6 @@ class CRM_ACL_Page_ACL extends CRM_Core_Page_Basic { return 'CRM_ACL_BAO_ACL'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/acl', - 'qs' => 'reset=1&action=update&id=%%id%%', - 'title' => ts('Edit ACL'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable ACL'), - 'weight' => 40, - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable ACL'), - 'weight' => 30, - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/acl', - 'qs' => 'reset=1&action=delete&id=%%id%%', - 'title' => ts('Delete ACL'), - 'weight' => 100, - ], - ]; - } - return self::$_links; - } - /** * Run the page. * @@ -99,12 +53,7 @@ class CRM_ACL_Page_ACL extends CRM_Core_Page_Basic { public function browse() { // get all acl's sorted by weight $acl = []; - $query = " - SELECT * - FROM civicrm_acl - WHERE ( object_table IN ( 'civicrm_saved_search', 'civicrm_uf_group', 'civicrm_custom_group', 'civicrm_event' ) ) -ORDER BY entity_id -"; + $query = "SELECT * FROM civicrm_acl"; $dao = CRM_Core_DAO::executeQuery($query); $roles = CRM_Core_OptionGroup::values('acl_role'); @@ -136,6 +85,8 @@ ORDER BY entity_id $acl[$dao->id]['object_table'] = $dao->object_table; $acl[$dao->id]['object_id'] = $dao->object_id; $acl[$dao->id]['is_active'] = $dao->is_active; + $acl[$dao->id]['deny'] = $dao->deny; + $acl[$dao->id]['priority'] = $dao->priority; if ($acl[$dao->id]['entity_id']) { $acl[$dao->id]['entity'] = $roles[$acl[$dao->id]['entity_id']] ?? NULL; @@ -145,7 +96,7 @@ ORDER BY entity_id } switch ($acl[$dao->id]['object_table']) { - case 'civicrm_saved_search': + case 'civicrm_group': $acl[$dao->id]['object'] = $group[$acl[$dao->id]['object_id']] ?? NULL; $acl[$dao->id]['object_name'] = ts('Group'); break; diff --git a/civicrm/CRM/ACL/Page/ACLBasic.php b/civicrm/CRM/ACL/Page/ACLBasic.php deleted file mode 100644 index ff643d0890..0000000000 --- a/civicrm/CRM/ACL/Page/ACLBasic.php +++ /dev/null @@ -1,180 +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 - */ -class CRM_ACL_Page_ACLBasic extends CRM_Core_Page_Basic { - - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - - /** - * Get BAO Name. - * - * @return string - * Classname of BAO. - */ - public function getBAOName() { - return 'CRM_ACL_BAO_ACL'; - } - - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/acl/basic', - 'qs' => 'reset=1&action=update&id=%%id%%', - 'title' => ts('Edit ACL'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/acl/basic', - 'qs' => 'reset=1&action=delete&id=%%id%%', - 'title' => ts('Delete ACL'), - ], - ]; - } - return self::$_links; - } - - /** - * Run the page. - * - * This method is called after the page is created. It checks for the - * type of action and executes that action. - * Finally it calls the parent's run method. - */ - public function run() { - $id = $this->getIdAndAction(); - - // set breadcrumb to append to admin/access - $breadCrumb = [ - [ - 'title' => ts('Access Control'), - 'url' => CRM_Utils_System::url('civicrm/admin/access', 'reset=1'), - ], - ]; - CRM_Utils_System::appendBreadCrumb($breadCrumb); - - // what action to take ? - if ($this->_action & (CRM_Core_Action::UPDATE | CRM_Core_Action::ADD | CRM_Core_Action::DELETE)) { - $this->edit($this->_action, $id); - } - - // finally browse the acl's - $this->browse(); - - // This replaces parent run, but do parent's parent run - return CRM_Core_Page::run(); - } - - /** - * Browse all acls. - */ - public function browse() { - - // get all acl's sorted by weight - $acl = []; - $query = " - SELECT * - FROM civicrm_acl - WHERE ( object_table NOT IN ( 'civicrm_saved_search', 'civicrm_uf_group', 'civicrm_custom_group' ) ) -ORDER BY entity_id -"; - $dao = CRM_Core_DAO::executeQuery($query); - - $roles = CRM_Core_OptionGroup::values('acl_role'); - - $permissions = CRM_Core_Permission::basicPermissions(); - while ($dao->fetch()) { - if (!array_key_exists($dao->entity_id, $acl)) { - $acl[$dao->entity_id] = []; - $acl[$dao->entity_id]['name'] = $dao->name; - $acl[$dao->entity_id]['entity_id'] = $dao->entity_id; - $acl[$dao->entity_id]['entity_table'] = $dao->entity_table; - $acl[$dao->entity_id]['object_table'] = $permissions[$dao->object_table] ?? NULL; - $acl[$dao->entity_id]['is_active'] = 1; - - if ($acl[$dao->entity_id]['entity_id']) { - $acl[$dao->entity_id]['entity'] = $roles[$acl[$dao->entity_id]['entity_id']]; - } - else { - $acl[$dao->entity_id]['entity'] = ts('Any Role'); - } - - // form all action links - $action = array_sum(array_keys($this->links())); - - $acl[$dao->entity_id]['action'] = CRM_Core_Action::formLink( - self::links(), - $action, - ['id' => $dao->entity_id], - ts('more'), - FALSE, - 'aclRole.manage.action', - 'ACLRole', - $dao->entity_id - ); - } - elseif (!empty($permissions[$dao->object_table])) { - $acl[$dao->entity_id]['object_table'] .= ", {$permissions[$dao->object_table]}"; - } - } - $this->assign('rows', $acl); - } - - /** - * Get name of edit form. - * - * @return string - * Classname of edit form. - */ - public function editForm() { - return 'CRM_ACL_Form_ACLBasic'; - } - - /** - * Get edit form name. - * - * @return string - * name of this page. - */ - public function editName() { - return 'Core ACLs'; - } - - /** - * Get user context. - * - * @param null $mode - * - * @return string - * user context. - */ - public function userContext($mode = NULL) { - return 'civicrm/acl/basic'; - } - -} diff --git a/civicrm/CRM/ACL/Page/EntityRole.php b/civicrm/CRM/ACL/Page/EntityRole.php index bd1c374013..0eacf0fdb5 100644 --- a/civicrm/CRM/ACL/Page/EntityRole.php +++ b/civicrm/CRM/ACL/Page/EntityRole.php @@ -18,13 +18,6 @@ class CRM_ACL_Page_EntityRole extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -35,43 +28,6 @@ class CRM_ACL_Page_EntityRole extends CRM_Core_Page_Basic { return 'CRM_ACL_BAO_ACLEntityRole'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/acl/entityrole', - 'qs' => 'action=update&id=%%id%%', - 'title' => ts('Edit ACL Role Assignment'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable ACL Role Assignment'), - 'weight' => 40, - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable ACL Role Assignment'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/acl/entityrole', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete ACL Role Assignment'), - ], - ]; - } - return self::$_links; - } - /** * Run the page. * diff --git a/civicrm/CRM/Activity/ActionMapping.php b/civicrm/CRM/Activity/ActionMapping.php index 9f73592644..5618a2eb15 100644 --- a/civicrm/CRM/Activity/ActionMapping.php +++ b/civicrm/CRM/Activity/ActionMapping.php @@ -18,10 +18,9 @@ /** * Class CRM_Activity_ActionMapping * - * This defines the scheduled-reminder functionality for contact - * entities. It is useful for, e.g., sending a reminder based on - * birth date, modification date, or other custom dates on - * the contact record. + * This defines the scheduled-reminder functionality for Activities. + * It is useful for, e.g., sending a reminder based on scheduled + * date or other custom dates on the activity record. */ class CRM_Activity_ActionMapping extends \Civi\ActionSchedule\Mapping { diff --git a/civicrm/CRM/Activity/BAO/Activity.php b/civicrm/CRM/Activity/BAO/Activity.php index 13d59afe00..d6cba12795 100644 --- a/civicrm/CRM/Activity/BAO/Activity.php +++ b/civicrm/CRM/Activity/BAO/Activity.php @@ -515,12 +515,7 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity { CRM_Contact_BAO_GroupContactCache::opportunisticCacheFlush(); - // Add to case - if (isset($params['case_id'])) { - CRM_Case_BAO_Case::updateCaseActivity($activity->id, $params['case_id']); - } - - CRM_Utils_Hook::post($action, 'Activity', $activity->id, $activity); + CRM_Utils_Hook::post($action, 'Activity', $activity->id, $activity, $params); return $result; } diff --git a/civicrm/CRM/Activity/DAO/Activity.php b/civicrm/CRM/Activity/DAO/Activity.php index bf37517561..544e93db8e 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:e1adbd9104050ebb0d274cf885a2de67) + * (GenCodeChecksum:5e64c1c4489e9c640f15d3a4877f7331) */ /** diff --git a/civicrm/CRM/Activity/Form/Search.php b/civicrm/CRM/Activity/Form/Search.php index a8d8e09893..cbefbe3853 100644 --- a/civicrm/CRM/Activity/Form/Search.php +++ b/civicrm/CRM/Activity/Form/Search.php @@ -178,11 +178,6 @@ class CRM_Activity_Form_Search extends CRM_Core_Form_Search { $this->_formValues = CRM_Contact_BAO_SavedSearch::getFormValues($this->_ssID); } - // We don't show test records in summaries or dashboards - if (empty($this->_formValues['activity_test']) && $this->_force) { - $this->_formValues['activity_test'] = 0; - } - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Activity/Selector/Activity.php b/civicrm/CRM/Activity/Selector/Activity.php index c78186f7c0..95d916d62a 100644 --- a/civicrm/CRM/Activity/Selector/Activity.php +++ b/civicrm/CRM/Activity/Selector/Activity.php @@ -399,7 +399,7 @@ class CRM_Activity_Selector_Activity extends CRM_Core_Selector_Base implements C // add class to this row if overdue if (CRM_Utils_Date::overdue(CRM_Utils_Array::value('activity_date_time', $row)) - && CRM_Utils_Array::value('status_id', $row) == 1 + && ($row['status_id'] ?? NULL) == 1 ) { $row['overdue'] = 1; $row['class'] = 'status-overdue'; diff --git a/civicrm/CRM/Activity/Tokens.php b/civicrm/CRM/Activity/Tokens.php index 40d36e8218..5f18d8f98f 100644 --- a/civicrm/CRM/Activity/Tokens.php +++ b/civicrm/CRM/Activity/Tokens.php @@ -20,18 +20,7 @@ use Civi\Token\Event\TokenValueEvent; use Civi\Token\TokenRow; /** - * Class CRM_Member_Tokens - * * Generate "activity.*" tokens. - * - * This TokenSubscriber was originally produced by refactoring the code from the - * scheduled-reminder system with the goal of making that system - * more flexible. The current implementation is still coupled to - * scheduled-reminders. It would be good to figure out a more generic - * implementation which is not tied to scheduled reminders, although - * that is outside the current scope. - * - * This has been enhanced to work with PDF/letter merge */ class CRM_Activity_Tokens extends CRM_Core_EntityTokens { diff --git a/civicrm/CRM/Admin/Form/Generic.php b/civicrm/CRM/Admin/Form/Generic.php index 10e6765c6f..8f996a2886 100644 --- a/civicrm/CRM/Admin/Form/Generic.php +++ b/civicrm/CRM/Admin/Form/Generic.php @@ -24,7 +24,6 @@ class CRM_Admin_Form_Generic extends CRM_Core_Form { use CRM_Admin_Form_SettingTrait; protected $_settings = []; - public $_defaults = []; /** * @var bool diff --git a/civicrm/CRM/Admin/Form/Job.php b/civicrm/CRM/Admin/Form/Job.php index e99f96f734..d5d099417b 100644 --- a/civicrm/CRM/Admin/Form/Job.php +++ b/civicrm/CRM/Admin/Form/Job.php @@ -261,7 +261,7 @@ class CRM_Admin_Form_Job extends CRM_Admin_Form { $dao->save(); // CRM-11143 - Give warning message if update_greetings is Enabled (is_active) since it generally should not be run automatically via execute action or runjobs url. - if ($values['api_action'] == 'update_greeting' && CRM_Utils_Array::value('is_active', $values) == 1) { + if ($values['api_action'] == 'update_greeting' && ($values['is_active'] ?? NULL) == 1) { $docLink = CRM_Utils_System::docURL2("user/initial-set-up/scheduled-jobs/#job_update_greeting"); $msg = ts('The update greeting job can be very resource intensive and is typically not necessary to run on a regular basis. If you do choose to enable the job, we recommend you do not run it with the force=1 option, which would rebuild greetings on all records. Leaving that option absent, or setting it to force=0, will only rebuild greetings for contacts that do not currently have a value stored. %1', [1 => $docLink]); CRM_Core_Session::setStatus($msg, ts('Warning: Update Greeting job enabled'), 'alert'); diff --git a/civicrm/CRM/Admin/Form/Navigation.php b/civicrm/CRM/Admin/Form/Navigation.php index e54643d164..c74f7ffb7a 100644 --- a/civicrm/CRM/Admin/Form/Navigation.php +++ b/civicrm/CRM/Admin/Form/Navigation.php @@ -77,11 +77,11 @@ class CRM_Admin_Form_Navigation extends CRM_Admin_Form { //make separator location configurable $separator = CRM_Core_SelectValues::navigationMenuSeparator(); - $this->add('select', 'has_separator', ts('Separator'), $separator); + $this->add('select', 'has_separator', ts('Separator'), $separator, FALSE, ['class' => 'crm-select2']); $active = $this->add('advcheckbox', 'is_active', ts('Enabled')); - if (CRM_Utils_Array::value('name', $this->_defaults) == 'Home') { + if (($this->_defaults['name'] ?? NULL) == 'Home') { $active->freeze(); } else { @@ -95,7 +95,7 @@ class CRM_Admin_Form_Navigation extends CRM_Admin_Form { $homeMenuId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_Navigation', 'Home', 'id', 'name'); unset($parentMenu[$homeMenuId]); - $this->add('select', 'parent_id', ts('Parent'), ['' => ts('Top level')] + $parentMenu, FALSE, ['class' => 'crm-select2']); + $this->add('select', 'parent_id', ts('Parent'), ['' => ts('Top level')] + $parentMenu, FALSE, ['class' => 'crm-select2 huge']); } } diff --git a/civicrm/CRM/Admin/Form/OptionGroup.php b/civicrm/CRM/Admin/Form/OptionGroup.php index fbf87dfb07..31876b7909 100644 --- a/civicrm/CRM/Admin/Form/OptionGroup.php +++ b/civicrm/CRM/Admin/Form/OptionGroup.php @@ -108,7 +108,7 @@ class CRM_Admin_Form_OptionGroup extends CRM_Admin_Form { $name = CRM_Utils_String::titleToVar(strtolower($fields['title'])); } if (!CRM_Core_DAO::objectExists($name, 'CRM_Core_DAO_OptionGroup', $self->_id)) { - $errors['title'] = ts('Option Group name ' . $name . ' already exists in the database. Option Group Names need to be unique'); + $errors['title'] = ts("Option Group name '%1' already exists in the database. Option Group Names must be unique.", [1 => $name]); } return empty($errors) ? TRUE : $errors; } diff --git a/civicrm/CRM/Admin/Form/ScheduleReminders.php b/civicrm/CRM/Admin/Form/ScheduleReminders.php index e042bae1d6..d673912f28 100644 --- a/civicrm/CRM/Admin/Form/ScheduleReminders.php +++ b/civicrm/CRM/Admin/Form/ScheduleReminders.php @@ -108,7 +108,7 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { ); $mappings = CRM_Core_BAO_ActionSchedule::getMappings(); - $selectedMapping = $mappings[$mappingID ? $mappingID : 1]; + $selectedMapping = $mappings[$mappingID ?: 1]; $entityRecipientLabels = $selectedMapping->getRecipientTypes() + CRM_Core_BAO_ActionSchedule::getAdditionalRecipients(); $this->assign('entityMapping', json_encode( CRM_Utils_Array::collectMethod('getEntity', $mappings) @@ -542,11 +542,11 @@ class CRM_Admin_Form_ScheduleReminders extends CRM_Admin_Form { $params['sms_body_text'] = $values['sms_text_message'] ?? NULL; $params['body_html'] = $values['html_message'] ?? NULL; - if (CRM_Utils_Array::value('recipient', $values) === 'manual') { + if (($values['recipient'] ?? NULL) === 'manual') { $params['recipient_manual'] = $values['recipient_manual_id'] ?? NULL; $params['group_id'] = $params['recipient'] = $params['recipient_listing'] = 'null'; } - elseif (CRM_Utils_Array::value('recipient', $values) === 'group') { + elseif (($values['recipient'] ?? NULL) === 'group') { $params['group_id'] = $values['group_id']; $params['recipient_manual'] = $params['recipient'] = $params['recipient_listing'] = 'null'; } diff --git a/civicrm/CRM/Admin/Form/Setting/Localization.php b/civicrm/CRM/Admin/Form/Setting/Localization.php index c71256cf44..6d4f6ac704 100644 --- a/civicrm/CRM/Admin/Form/Setting/Localization.php +++ b/civicrm/CRM/Admin/Form/Setting/Localization.php @@ -107,7 +107,7 @@ class CRM_Admin_Form_Setting_Localization extends CRM_Admin_Form_Setting { */ public static function formRule($fields) { $errors = []; - if (CRM_Utils_Array::value('monetaryThousandSeparator', $fields) == + if (($fields['monetaryThousandSeparator'] ?? NULL) == CRM_Utils_Array::value('monetaryDecimalPoint', $fields) ) { $errors['monetaryThousandSeparator'] = ts('Thousands Separator and Decimal Delimiter can not be the same.'); diff --git a/civicrm/CRM/Admin/Form/Setting/Mapping.php b/civicrm/CRM/Admin/Form/Setting/Mapping.php index b07d9f8788..69b7fb7c9f 100644 --- a/civicrm/CRM/Admin/Form/Setting/Mapping.php +++ b/civicrm/CRM/Admin/Form/Setting/Mapping.php @@ -47,10 +47,6 @@ class CRM_Admin_Form_Setting_Mapping extends CRM_Admin_Form_Setting { public static function formRule($fields) { $errors = []; - if (!CRM_Utils_System::checkPHPVersion(5, FALSE)) { - $errors['_qf_default'] = ts('Mapping features require PHP version 5 or greater'); - } - if ($fields['mapProvider'] == 'OpenStreetMaps' && $fields['geoProvider'] == '') { $errors['geoProvider'] = ts('Please select a Geocoding Provider - Open Street Maps does not provide geocoding.'); } diff --git a/civicrm/CRM/Admin/Form/Setting/Search.php b/civicrm/CRM/Admin/Form/Setting/Search.php index 8b1aaa21be..268674e0a9 100644 --- a/civicrm/CRM/Admin/Form/Setting/Search.php +++ b/civicrm/CRM/Admin/Form/Setting/Search.php @@ -31,11 +31,6 @@ class CRM_Admin_Form_Setting_Search extends CRM_Admin_Form_Setting { 'defaultSearchProfileID' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, 'smartGroupCacheTimeout' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, 'quicksearch_options' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, - 'contact_autocomplete_options' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, - 'contact_reference_options' => CRM_Core_BAO_Setting::SYSTEM_PREFERENCES_NAME, - 'search_autocomplete_count' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, - 'enable_innodb_fts' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, - 'default_pager_size' => CRM_Core_BAO_Setting::SEARCH_PREFERENCES_NAME, ]; /** diff --git a/civicrm/CRM/Admin/Form/Setting/Smtp.php b/civicrm/CRM/Admin/Form/Setting/Smtp.php index 16afa30d36..6670e4a633 100644 --- a/civicrm/CRM/Admin/Form/Setting/Smtp.php +++ b/civicrm/CRM/Admin/Form/Setting/Smtp.php @@ -256,7 +256,13 @@ class CRM_Admin_Form_Setting_Smtp extends CRM_Admin_Form_Setting { $this->_defaults = $mailingBackend; if (!empty($this->_defaults['smtpPassword'])) { - $this->_defaults['smtpPassword'] = \Civi::service('crypto.token')->decrypt($this->_defaults['smtpPassword']); + try { + $this->_defaults['smtpPassword'] = \Civi::service('crypto.token')->decrypt($this->_defaults['smtpPassword']); + } + catch (Exception $e) { + Civi::log()->error($e->getMessage()); + CRM_Core_Session::setStatus(ts('Unable to retrieve the encrypted password. Please check your configured encryption keys. The error message is: %1', [1 => $e->getMessage()]), ts("Encryption key error"), "error"); + } } } else { diff --git a/civicrm/CRM/Admin/Page/AJAX.php b/civicrm/CRM/Admin/Page/AJAX.php index e300e60add..1493c156c2 100644 --- a/civicrm/CRM/Admin/Page/AJAX.php +++ b/civicrm/CRM/Admin/Page/AJAX.php @@ -68,7 +68,7 @@ class CRM_Admin_Page_AJAX { $item['url'] = CRM_Utils_System::evalUrl(CRM_Core_BAO_Navigation::makeFullyFormedUrl($props['url'])); } if (!empty($props['label'])) { - $item['label'] = ts($props['label'], ['context' => 'menu']); + $item['label'] = _ts($props['label'], ['context' => 'menu']); } $item['name'] = !empty($props['name']) ? $props['name'] : CRM_Utils_String::munge(CRM_Utils_Array::value('label', $props)); if (!empty($item['child'])) { diff --git a/civicrm/CRM/Admin/Page/ContactType.php b/civicrm/CRM/Admin/Page/ContactType.php index 593c583f3c..526b11194c 100644 --- a/civicrm/CRM/Admin/Page/ContactType.php +++ b/civicrm/CRM/Admin/Page/ContactType.php @@ -22,13 +22,6 @@ class CRM_Admin_Page_ContactType extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -39,42 +32,6 @@ class CRM_Admin_Page_ContactType extends CRM_Core_Page_Basic { return 'CRM_Contact_BAO_ContactType'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/options/subtype/edit', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Contact Type'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Contact Type'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Contact Type'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/options/subtype/edit', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Contact Type'), - ], - ]; - } - return self::$_links; - } - /** * Run page. */ diff --git a/civicrm/CRM/Admin/Page/JobLog.php b/civicrm/CRM/Admin/Page/JobLog.php index 2bee42ccf6..0303147efd 100644 --- a/civicrm/CRM/Admin/Page/JobLog.php +++ b/civicrm/CRM/Admin/Page/JobLog.php @@ -18,7 +18,7 @@ use Civi\Api4\JobLog; /** - * Page for displaying list of jobs. + * Page for displaying log of jobs. */ class CRM_Admin_Page_JobLog extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/Admin/Page/LocationType.php b/civicrm/CRM/Admin/Page/LocationType.php index cb4ef709eb..17896dae90 100644 --- a/civicrm/CRM/Admin/Page/LocationType.php +++ b/civicrm/CRM/Admin/Page/LocationType.php @@ -22,13 +22,6 @@ class CRM_Admin_Page_LocationType extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -39,42 +32,6 @@ class CRM_Admin_Page_LocationType extends CRM_Core_Page_Basic { return 'CRM_Core_BAO_LocationType'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/locationType/edit', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Location Type'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Location Type'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Location Type'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/locationType/edit', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Location Type'), - ], - ]; - } - return self::$_links; - } - /** * Get name of edit form. * diff --git a/civicrm/CRM/Admin/Page/MailSettings.php b/civicrm/CRM/Admin/Page/MailSettings.php index 28844d6078..8495f708e5 100644 --- a/civicrm/CRM/Admin/Page/MailSettings.php +++ b/civicrm/CRM/Admin/Page/MailSettings.php @@ -22,13 +22,6 @@ class CRM_Admin_Page_MailSettings extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -39,34 +32,6 @@ class CRM_Admin_Page_MailSettings extends CRM_Core_Page_Basic { return 'CRM_Core_BAO_MailSettings'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - // helper variable for nicer formatting - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/mailSettings', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Mail Settings'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/mailSettings', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Mail Settings'), - ], - ]; - } - - return self::$_links; - } - /** * Browse all mail settings. */ diff --git a/civicrm/CRM/Admin/Page/Navigation.php b/civicrm/CRM/Admin/Page/Navigation.php index 4a51eeb541..80737ce9ef 100644 --- a/civicrm/CRM/Admin/Page/Navigation.php +++ b/civicrm/CRM/Admin/Page/Navigation.php @@ -16,17 +16,10 @@ */ /** - * Page for displaying list of location types. + * Page for editing the navigation menu. */ class CRM_Admin_Page_Navigation extends CRM_Core_Page_Basic { - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * diff --git a/civicrm/CRM/Admin/Page/Options.php b/civicrm/CRM/Admin/Page/Options.php index 84008c58ea..93f30fc18f 100644 --- a/civicrm/CRM/Admin/Page/Options.php +++ b/civicrm/CRM/Admin/Page/Options.php @@ -16,7 +16,7 @@ */ /** - * Page for displaying list of Gender. + * Page for displaying list of option groups and option values. */ class CRM_Admin_Page_Options extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/Admin/Page/ParticipantStatusType.php b/civicrm/CRM/Admin/Page/ParticipantStatusType.php index b4dba1a57d..4adbdd1679 100644 --- a/civicrm/CRM/Admin/Page/ParticipantStatusType.php +++ b/civicrm/CRM/Admin/Page/ParticipantStatusType.php @@ -27,40 +27,6 @@ class CRM_Admin_Page_ParticipantStatusType extends CRM_Core_Page_Basic { return 'CRM_Event_BAO_ParticipantStatusType'; } - /** - * @return array - */ - public function &links() { - static $links = NULL; - if ($links === NULL) { - $links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/participant_status', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Status'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/participant_status', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Status'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Status'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Status'), - ], - ]; - } - return $links; - } - public function browse() { $statusTypes = []; diff --git a/civicrm/CRM/Admin/Page/PaymentProcessor.php b/civicrm/CRM/Admin/Page/PaymentProcessor.php index febc20e15a..523262b6d3 100644 --- a/civicrm/CRM/Admin/Page/PaymentProcessor.php +++ b/civicrm/CRM/Admin/Page/PaymentProcessor.php @@ -22,13 +22,6 @@ use Civi\Api4\PaymentProcessor; */ class CRM_Admin_Page_PaymentProcessor extends CRM_Core_Page_Basic { - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -39,42 +32,6 @@ class CRM_Admin_Page_PaymentProcessor extends CRM_Core_Page_Basic { return 'CRM_Financial_BAO_PaymentProcessor'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/paymentProcessor/edit', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Payment Processor'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Payment Processor'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Payment Processor'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/paymentProcessor/edit', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Payment Processor'), - ], - ]; - } - return self::$_links; - } - /** * Run the page. * diff --git a/civicrm/CRM/Admin/Page/PaymentProcessorType.php b/civicrm/CRM/Admin/Page/PaymentProcessorType.php index 5167b45afa..6db77c50a5 100644 --- a/civicrm/CRM/Admin/Page/PaymentProcessorType.php +++ b/civicrm/CRM/Admin/Page/PaymentProcessorType.php @@ -16,17 +16,10 @@ */ /** - * Page for displaying list of payment processors. + * Page for displaying list of payment processor types. */ class CRM_Admin_Page_PaymentProcessorType extends CRM_Core_Page_Basic { - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -37,42 +30,6 @@ class CRM_Admin_Page_PaymentProcessorType extends CRM_Core_Page_Basic { return 'CRM_Financial_BAO_PaymentProcessorType'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/paymentProcessorType', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Payment ProcessorType'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Payment ProcessorType'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Payment ProcessorType'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/paymentProcessorType', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Payment ProcessorType'), - ], - ]; - } - return self::$_links; - } - /** * Get name of edit form. * diff --git a/civicrm/CRM/Admin/Page/PreferencesDate.php b/civicrm/CRM/Admin/Page/PreferencesDate.php index b9c5903887..17d0c6b5a6 100644 --- a/civicrm/CRM/Admin/Page/PreferencesDate.php +++ b/civicrm/CRM/Admin/Page/PreferencesDate.php @@ -16,17 +16,10 @@ */ /** - * Page for displaying list of location types. + * Page for displaying list of date preferences. */ class CRM_Admin_Page_PreferencesDate extends CRM_Core_Page_Basic { - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - public $useLivePageJS = TRUE; /** @@ -39,26 +32,6 @@ class CRM_Admin_Page_PreferencesDate extends CRM_Core_Page_Basic { return 'CRM_Core_BAO_PreferencesDate'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/setting/preferences/date', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Date Type'), - ], - ]; - } - return self::$_links; - } - /** * Run the page. * diff --git a/civicrm/CRM/Admin/Page/RelationshipType.php b/civicrm/CRM/Admin/Page/RelationshipType.php index e1b7f6ae53..2f6c66986e 100644 --- a/civicrm/CRM/Admin/Page/RelationshipType.php +++ b/civicrm/CRM/Admin/Page/RelationshipType.php @@ -22,13 +22,6 @@ class CRM_Admin_Page_RelationshipType extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -39,53 +32,6 @@ class CRM_Admin_Page_RelationshipType extends CRM_Core_Page_Basic { return 'CRM_Contact_BAO_RelationshipType'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::VIEW => [ - 'name' => ts('View'), - 'url' => 'civicrm/admin/reltype/edit', - 'qs' => 'action=view&id=%%id%%&reset=1', - 'title' => ts('View Relationship Type'), - 'weight' => -20, - ], - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/reltype/edit', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Relationship Type'), - 'weight' => -10, - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Relationship Type'), - 'weight' => 40, - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Relationship Type'), - 'weight' => 30, - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/reltype/edit', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Reletionship Type'), - 'weight' => 100, - ], - ]; - } - return self::$_links; - } - /** * Get name of edit form. * diff --git a/civicrm/CRM/Api4/Page/AJAX.php b/civicrm/CRM/Api4/Page/AJAX.php index 3b57e2bc2d..650641b07e 100644 --- a/civicrm/CRM/Api4/Page/AJAX.php +++ b/civicrm/CRM/Api4/Page/AJAX.php @@ -17,16 +17,53 @@ */ class CRM_Api4_Page_AJAX extends CRM_Core_Page { + private $httpResponseCode; + /** * Handler for api4 ajax requests */ public function run() { - $config = CRM_Core_Config::singleton(); - if (!$config->debug && !CRM_Utils_REST::isWebServiceRequest()) { - $response = [ - 'error_code' => 401, - 'error_message' => "SECURITY ALERT: Ajax requests can only be issued by javascript clients, eg. CRM.api4().", - ]; + $response = []; + // `$this->urlPath` contains the http request path as an exploded array. + // Path for single calls is `civicrm/ajax/api4/Entity/action` with `params` passed to $_REQUEST + // or for multiple calls the path is `civicrm/ajax/api4` with `calls` passed to $_POST + // Padding the array to avoid undefined index warnings when checking for single/multiple calls + $this->urlPath = array_pad($this->urlPath, 5, ''); + + // First check for problems with the request + $error = $this->checkRequestMethod(); + if ($error) { + $this->returnJSON($error); + } + + // Two call formats. Which one was used? Note: CRM_Api4_Permission::check() and CRM_Api4_Page_AJAX::run() should have matching conditionals. + if (empty($this->urlPath[3])) { + // Received multi-call format + $calls = CRM_Utils_Request::retrieve('calls', 'String', NULL, TRUE, NULL, 'POST'); + $calls = json_decode($calls, TRUE); + foreach ($calls as $index => $call) { + $response[$index] = call_user_func_array([$this, 'execute'], $call); + } + } + else { + // Received single-call format + $entity = $this->urlPath[3]; + $action = $this->urlPath[4]; + $params = CRM_Utils_Request::retrieve('params', 'String'); + $params = $params ? json_decode($params, TRUE) : []; + $index = CRM_Utils_Request::retrieve('index', 'String'); + $response = $this->execute($entity, $action, $params, $index); + } + + $this->returnJSON($response); + } + + /** + * @return array|null + */ + private function checkRequestMethod(): ?array { + if (!CRM_Utils_REST::isWebServiceRequest() && !Civi::settings()->get('debug_enabled')) { + $this->httpResponseCode = 400; Civi::log()->debug("SECURITY ALERT: Ajax requests can only be issued by javascript clients, eg. CRM.api4().", [ 'IP' => CRM_Utils_System::ipAddress(), @@ -35,17 +72,16 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page { 'reason' => 'CSRF suspected', ] ); - CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); - echo json_encode($response); - CRM_Utils_System::civiExit(); + return [ + 'error_code' => 400, + 'error_message' => "SECURITY ALERT: Ajax requests can only be issued by javascript clients, eg. CRM.api4().", + ]; + } if ($_SERVER['REQUEST_METHOD'] == 'GET' && ($this->urlPath[4] !== 'autocomplete' && strtolower(substr($this->urlPath[4], 0, 3)) !== 'get') ) { - $response = [ - 'error_code' => 400, - 'error_message' => "SECURITY: All requests that modify the database must be http POST, not GET.", - ]; + $this->httpResponseCode = 405; Civi::log()->debug("SECURITY: All requests that modify the database must be http POST, not GET.", [ 'IP' => CRM_Utils_System::ipAddress(), @@ -54,37 +90,52 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page { 'reason' => 'Destructive HTTP GET', ] ); - CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); - echo json_encode($response); - CRM_Utils_System::civiExit(); + return [ + 'error_code' => 405, + 'error_message' => "SECURITY: All requests that modify the database must be http POST, not GET.", + ]; } + return NULL; + } + + /** + * Run api call & prepare result for json encoding + * + * @param string $entity + * @param string $action + * @param array $params + * @param string $index + * @return array + */ + private function execute(string $entity, string $action, array $params = [], $index = NULL) { + $response = []; try { - // Two call formats. Which one was used? Note: CRM_Api4_Permission::check() and CRM_Api4_Page_AJAX::run() should have matching conditionals. - if (empty($this->urlPath[3])) { - // Received multi-call format - $calls = CRM_Utils_Request::retrieve('calls', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST'); - $calls = json_decode($calls, TRUE); - $response = []; - foreach ($calls as $index => $call) { - $response[$index] = call_user_func_array([$this, 'execute'], $call); - } + $params['checkPermissions'] = TRUE; + // Handle numeric indexes later so we can get the count + $itemAt = CRM_Utils_Type::validate($index, 'Integer', FALSE); + $result = civicrm_api4($entity, $action, $params, isset($itemAt) ? NULL : $index); + // Convert Result object into something more suitable for json + $response = ['values' => isset($itemAt) ? $result->itemAt($itemAt) : (array) $result]; + // Add metadata from Result object + foreach (get_class_vars(get_class($result)) as $key => $val) { + $response[$key] = $result->$key; } - else { - // Received single-call format - $entity = $this->urlPath[3]; - $action = $this->urlPath[4]; - $params = CRM_Utils_Request::retrieve('params', 'String'); - $params = $params ? json_decode($params, TRUE) : []; - $index = CRM_Utils_Request::retrieve('index', 'String'); - $response = $this->execute($entity, $action, $params, $index); + unset($response['rowCount']); + $response['count'] = $result->count(); + $response['countFetched'] = $result->countFetched(); + if (in_array('row_count', $params['select'] ?? [])) { + // We can only return countMatched (whose value is independent of LIMIT clauses) if row_count was in the select. + $response['countMatched'] = $result->count(); } + // If at least one call succeeded, we give a success code + $this->httpResponseCode = 200; } catch (Exception $e) { $statusMap = [ \Civi\API\Exception\UnauthorizedException::class => 403, ]; - http_response_code($statusMap[get_class($e)] ?? 500); - $response = []; + // 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); if (CRM_Core_Permission::check('view debug output')) { $response['error_code'] = $e->getCode(); $response['error_message'] = $e->getMessage(); @@ -115,42 +166,20 @@ class CRM_Api4_Page_AJAX extends CRM_Core_Page { ]); } } - CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); - echo json_encode($response); - CRM_Utils_System::civiExit(); + return $response; } /** - * Run api call & prepare result for json encoding + * Output JSON response to the client * - * @param string $entity - * @param string $action - * @param array $params - * @param string $index - * @return array + * @param array $response + * @return void */ - protected function execute($entity, $action, $params = [], $index = NULL) { - $params['checkPermissions'] = TRUE; - - // Handle numeric indexes later so we can get the count - $itemAt = CRM_Utils_Type::validate($index, 'Integer', FALSE); - - $result = civicrm_api4($entity, $action, $params, isset($itemAt) ? NULL : $index); - - // Convert arrayObject into something more suitable for json - $vals = ['values' => isset($itemAt) ? $result->itemAt($itemAt) : (array) $result]; - foreach (get_class_vars(get_class($result)) as $key => $val) { - $vals[$key] = $result->$key; - } - unset($vals['rowCount']); - $vals['count'] = $result->count(); - $vals['countFetched'] = $result->countFetched(); - if (in_array('row_count', $params['select'] ?? [])) { - // We can only return countMatched (whose value is independent of LIMIT clauses) if row_count was in the select. - $vals['countMatched'] = $result->count(); - } - - return $vals; + private function returnJSON(array $response): void { + http_response_code($this->httpResponseCode); + CRM_Utils_System::setHttpHeader('Content-Type', 'application/json'); + echo json_encode($response); + CRM_Utils_System::civiExit(); } } diff --git a/civicrm/CRM/Api4/Permission.php b/civicrm/CRM/Api4/Permission.php deleted file mode 100644 index e476627656..0000000000 --- a/civicrm/CRM/Api4/Permission.php +++ /dev/null @@ -1,53 +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 - */ - -/** - * Class to handle the permission on the api4 AJAX route - */ -class CRM_Api4_Permission { - - public static function check() { - $urlPath = explode('/', CRM_Utils_System::currentPath()); - $defaultPermissions = [ - ['access CiviCRM', 'access AJAX API'], - ]; - // Two call formats. Which one was used? Note: CRM_Api4_Permission::check() and CRM_Api4_Page_AJAX::run() should have matching conditionals. - if (!empty($urlPath[3])) { - // Received single-call format - $entity = $urlPath[3]; - $action = $urlPath[4]; - $permissions = $defaultPermissions; - CRM_Utils_Hook::alterApiRoutePermissions($permissions, $entity, $action); - return CRM_Core_Permission::check($permissions); - } - else { - // Received multi-call format - $calls = CRM_Utils_Request::retrieve('calls', 'String', CRM_Core_DAO::$_nullObject, TRUE, NULL, 'POST'); - $calls = json_decode($calls, TRUE); - foreach ($calls as $call) { - $permissions = $defaultPermissions; - CRM_Utils_Hook::alterApiRoutePermissions($permissions, $call[0], $call[1]); - if (!CRM_Core_Permission::check($permissions)) { - return FALSE; - } - } - return TRUE; - } - } - -} diff --git a/civicrm/CRM/Bridge/OG/Drupal.php b/civicrm/CRM/Bridge/OG/Drupal.php index 7a8b0be8b5..6933ac0fcc 100644 --- a/civicrm/CRM/Bridge/OG/Drupal.php +++ b/civicrm/CRM/Bridge/OG/Drupal.php @@ -175,7 +175,7 @@ SELECT v.id public static function updateCiviACL(&$params, $op) { $dao = new CRM_ACL_DAO_ACL(); - $dao->object_table = 'civicrm_saved_search'; + $dao->object_table = 'civicrm_group'; $dao->object_id = $params['civicrm_group_id']; if ($op == 'delete') { diff --git a/civicrm/CRM/Campaign/BAO/Survey.php b/civicrm/CRM/Campaign/BAO/Survey.php index ba957f8f5b..b81761be8a 100644 --- a/civicrm/CRM/Campaign/BAO/Survey.php +++ b/civicrm/CRM/Campaign/BAO/Survey.php @@ -837,8 +837,8 @@ INNER JOIN civicrm_contact contact_a ON ( activityTarget.contact_id = contact_a return NULL; } - static $ufIds = []; - if (!array_key_exists($surveyId, $ufIds)) { + static $ufIDs = []; + if (!array_key_exists($surveyId, $ufIDs)) { //get the profile id. $ufJoinParams = [ 'entity_id' => $surveyId, @@ -849,14 +849,14 @@ INNER JOIN civicrm_contact contact_a ON ( activityTarget.contact_id = contact_a list($first, $second) = CRM_Core_BAO_UFJoin::getUFGroupIds($ufJoinParams); if ($first) { - $ufIds[$surveyId] = [$first]; + $ufIDs[$surveyId] = [$first]; } if ($second) { - $ufIds[$surveyId][] = array_shift($second); + $ufIDs[$surveyId][] = array_shift($second); } } - return $ufIds[$surveyId] ?? NULL; + return $ufIDs[$surveyId] ?? NULL; } /** diff --git a/civicrm/CRM/Campaign/Form/Search.php b/civicrm/CRM/Campaign/Form/Search.php index ce473654a5..dcbf439915 100644 --- a/civicrm/CRM/Campaign/Form/Search.php +++ b/civicrm/CRM/Campaign/Form/Search.php @@ -65,11 +65,11 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search { //operation for state machine. $this->_operation = CRM_Utils_Request::retrieve('op', 'String', $this, FALSE, 'reserve'); //validate operation. - if (!in_array($this->_operation, array( + if (!in_array($this->_operation, [ 'reserve', 'release', 'interview', - )) + ]) ) { $this->_operation = 'reserve'; $this->set('op', $this->_operation); @@ -139,11 +139,11 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search { //append breadcrumb to survey dashboard. if (CRM_Campaign_BAO_Campaign::accessCampaign()) { $url = CRM_Utils_System::url('civicrm/campaign', 'reset=1&subPage=survey'); - CRM_Utils_System::appendBreadCrumb(array(array('title' => ts('Survey(s)'), 'url' => $url))); + CRM_Utils_System::appendBreadCrumb([['title' => ts('Survey(s)'), 'url' => $url]]); } //set the form title. - $this->setTitle(ts('Find Respondents To %1', array(1 => ucfirst($this->_operation)))); + $this->setTitle(ts('Find Respondents To %1', [1 => ucfirst($this->_operation)])); } /** @@ -179,14 +179,14 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search { $allTasks = CRM_Campaign_Task::permissionedTaskTitles(CRM_Core_Permission::getPermission()); //hack to serve right page to state machine. - $taskMapping = array( + $taskMapping = [ 'interview' => CRM_Campaign_Task::INTERVIEW, 'reserve' => CRM_Campaign_Task::RESERVE, 'release' => CRM_Campaign_Task::RELEASE, - ); + ]; $currentTaskValue = $taskMapping[$this->_operation] ?? NULL; - $taskValue = array($currentTaskValue => $allTasks[$currentTaskValue]); + $taskValue = [$currentTaskValue => $allTasks[$currentTaskValue]]; if ($this->_operation == 'interview' && !empty($this->_formValues['campaign_survey_id'])) { $activityTypes = CRM_Core_PseudoConstant::activityType(FALSE, TRUE, FALSE, 'label', TRUE); @@ -194,11 +194,11 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search { $this->_formValues['campaign_survey_id'], 'activity_type_id' ); - $taskValue = array( + $taskValue = [ $currentTaskValue => ts('Record %1 Responses', - array(1 => $activityTypes[$surveyTypeId]) + [1 => $activityTypes[$surveyTypeId]] ), - ); + ]; } $this->addTaskMenu($taskValue); @@ -293,7 +293,7 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search { } //format multi-select group and contact types. - foreach (array('group', 'contact_type') as $param) { + foreach (['group', 'contact_type'] as $param) { if ($this->_force) { continue; } @@ -401,12 +401,12 @@ class CRM_Campaign_Form_Search extends CRM_Core_Form_Search { * @return array */ public function voterClause() { - $params = array('campaign_search_voter_for' => $this->_operation); + $params = ['campaign_search_voter_for' => $this->_operation]; - $clauseFields = array( + $clauseFields = [ 'surveyId' => 'campaign_survey_id', 'interviewerId' => 'survey_interviewer_id', - ); + ]; foreach ($clauseFields as $param => $key) { $params[$key] = $this->_formValues[$key] ?? NULL; diff --git a/civicrm/CRM/Campaign/Form/Survey/Results.php b/civicrm/CRM/Campaign/Form/Survey/Results.php index 7f5b935419..c7054f570f 100644 --- a/civicrm/CRM/Campaign/Form/Survey/Results.php +++ b/civicrm/CRM/Campaign/Form/Survey/Results.php @@ -336,7 +336,7 @@ class CRM_Campaign_Form_Survey_Results extends CRM_Campaign_Form_Survey { $updateResultSet = FALSE; $resultSetOptGrpId = NULL; - if ((CRM_Utils_Array::value('option_type', $params) == 2) && + if ((($params['option_type'] ?? NULL) == 2) && !empty($params['option_group_id']) ) { $updateResultSet = TRUE; diff --git a/civicrm/CRM/Campaign/Page/DashBoard.php b/civicrm/CRM/Campaign/Page/DashBoard.php index 566f1dc5b4..12973f87f7 100644 --- a/civicrm/CRM/Campaign/Page/DashBoard.php +++ b/civicrm/CRM/Campaign/Page/DashBoard.php @@ -335,7 +335,7 @@ class CRM_Campaign_Page_DashBoard extends CRM_Core_Page { $sid ); - if (CRM_Utils_Array::value('activity_type', $surveysData[$sid]) != 'Petition') { + if (($surveysData[$sid]['activity_type'] ?? NULL) != 'Petition') { $surveysData[$sid]['voterLinks'] = CRM_Campaign_BAO_Survey::buildPermissionLinks($sid, TRUE, ts('more') diff --git a/civicrm/CRM/Campaign/Page/SurveyType.php b/civicrm/CRM/Campaign/Page/SurveyType.php index 9b3229ff47..d1e972df52 100644 --- a/civicrm/CRM/Campaign/Page/SurveyType.php +++ b/civicrm/CRM/Campaign/Page/SurveyType.php @@ -16,7 +16,7 @@ */ /** - * Page for displaying list of Gender. + * Page for displaying list of survey types. */ class CRM_Campaign_Page_SurveyType extends CRM_Core_Page_Basic { @@ -131,7 +131,7 @@ class CRM_Campaign_Page_SurveyType extends CRM_Core_Page_Basic { $optionValues = CRM_Core_OptionValue::getRows($groupParams, $this->links(), 'component_id,weight'); foreach ($optionValues as $key => $optionValue) { - if (CRM_Utils_Array::value('component_id', $optionValue) != $campaingCompId) { + if (($optionValue['component_id'] ?? NULL) != $campaingCompId) { unset($optionValues[$key]); } } diff --git a/civicrm/CRM/Campaign/SurveyTokens.php b/civicrm/CRM/Campaign/SurveyTokens.php new file mode 100644 index 0000000000..96e9543cf4 --- /dev/null +++ b/civicrm/CRM/Campaign/SurveyTokens.php @@ -0,0 +1,34 @@ +<?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 + */ + +/** + * Generate "survey.*" tokens. + * + * @noinspection PhpUnused + */ +class CRM_Campaign_SurveyTokens extends CRM_Core_EntityTokens { + + /** + * Get the entity name for api v4 calls. + * + * @return string + */ + protected function getApiEntityName(): string { + return 'Survey'; + } + +} diff --git a/civicrm/CRM/Campaign/WorkflowMessage/PetitionConfirmationNeeded.php b/civicrm/CRM/Campaign/WorkflowMessage/PetitionConfirmationNeeded.php new file mode 100644 index 0000000000..5a3759b696 --- /dev/null +++ b/civicrm/CRM/Campaign/WorkflowMessage/PetitionConfirmationNeeded.php @@ -0,0 +1,59 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +use Civi\WorkflowMessage\GenericWorkflowMessage; + +/** + * Invoice generated when invoicing is enabled. + * + * @method $this setSurveyID(int $surveyID) + * @method int getSurveyID() + * @method $this setSurvey(array $survey) + * @method array getSurvey() + * @method $this setActivityID(int $activityID) + * @method int getActivityID() + * + * @support template-only + * + * @see CRM_Campaign_BAO_Petition::sendEmail + */ +class CRM_Campaign_WorkflowMessage_PetitionConfirmationNeeded extends GenericWorkflowMessage { + + public const WORKFLOW = 'petition_confirmation_needed'; + + /** + * Survey ID. + * + * @var int + * + * @scope tokenContext as surveyId + */ + public $surveyID; + + /** + * Survey ID. + * + * @var int + * + * @scope tokenContext as activityId + */ + public $activityID; + + /** + * Survey. + * + * @var array + * + * @scope tokenContext as survey + */ + public $survey; + +} diff --git a/civicrm/CRM/Campaign/WorkflowMessage/PetitionSign.php b/civicrm/CRM/Campaign/WorkflowMessage/PetitionSign.php new file mode 100644 index 0000000000..b475829512 --- /dev/null +++ b/civicrm/CRM/Campaign/WorkflowMessage/PetitionSign.php @@ -0,0 +1,48 @@ +<?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\WorkflowMessage\GenericWorkflowMessage; + +/** + * Invoice generated when invoicing is enabled. + * + * @method $this setSurveyID(int $surveyID) + * @method int getSurveyID() + * @method $this setSurvey(array $survey) + * @method array getSurvey() + * + * @support template-only + * + * @see CRM_Campaign_BAO_Petition::sendEmail + */ +class CRM_Campaign_WorkflowMessage_PetitionSign extends GenericWorkflowMessage { + + public const WORKFLOW = 'petition_sign'; + + /** + * Survey ID. + * + * @var int + * + * @scope tokenContext as surveyId + */ + public $surveyID; + + /** + * Survey. + * + * @var array + * + * @scope tokenContext as survey + */ + public $survey; + +} diff --git a/civicrm/CRM/Campaign/WorkflowMessage/Survey/Survey.php b/civicrm/CRM/Campaign/WorkflowMessage/Survey/Survey.php new file mode 100644 index 0000000000..da0defe1f9 --- /dev/null +++ b/civicrm/CRM/Campaign/WorkflowMessage/Survey/Survey.php @@ -0,0 +1,59 @@ +<?php + +use Civi\Api4\WorkflowMessage; +use Civi\WorkflowMessage\GenericWorkflowMessage; +use Civi\WorkflowMessage\WorkflowMessageExample; + +/** + * Basic contribution example for contribution templates. + * + * @noinspection PhpUnused + */ +class CRM_Campaign_WorkflowMessage_Survey_Survey extends WorkflowMessageExample { + + /** + * Get the examples this class is able to deliver. + */ + public function getExamples(): iterable { + $workflows = ['petition_sign', 'petition_confirmation_needed']; + foreach ($workflows as $workflow) { + yield [ + 'name' => 'workflow/' . $workflow . '/basic_eur', + 'title' => ts('Save the whales'), + 'tags' => ['preview'], + 'workflow' => $workflow, + ]; + } + } + + /** + * Build an example to use when rendering the workflow. + * + * @param array $example + * + * @throws \CRM_Core_Exception + */ + public function build(array &$example): void { + $workFlow = WorkflowMessage::get(TRUE)->addWhere('name', '=', $example['workflow'])->execute()->first(); + $this->setWorkflowName($workFlow['name']); + $messageTemplate = new $workFlow['class'](); + $this->addExampleData($messageTemplate); + $example['data'] = $this->toArray($messageTemplate); + } + + /** + * Add relevant example data. + * + * @param \Civi\WorkflowMessage\GenericWorkflowMessage $messageTemplate + * + * @throws \CRM_Core_Exception + */ + private function addExampleData(GenericWorkflowMessage $messageTemplate): void { + $messageTemplate->setContact(\Civi\Test::example('entity/Contact/Barb')); + $messageTemplate->setSurvey([ + 'id' => 60, + 'title' => ts('Save the whales'), + ]); + } + +} diff --git a/civicrm/CRM/Case/Audit/AuditConfig.php b/civicrm/CRM/Case/Audit/AuditConfig.php index be1ee8a08d..5973879860 100644 --- a/civicrm/CRM/Case/Audit/AuditConfig.php +++ b/civicrm/CRM/Case/Audit/AuditConfig.php @@ -226,7 +226,7 @@ class CRM_Case_Audit_AuditConfig { } $this->sortRegion = $r; - uasort($f, array(&$this, "compareFields")); + uasort($f, [&$this, "compareFields"]); } /** diff --git a/civicrm/CRM/Case/BAO/Case.php b/civicrm/CRM/Case/BAO/Case.php index cad24a4b9d..9613965025 100644 --- a/civicrm/CRM/Case/BAO/Case.php +++ b/civicrm/CRM/Case/BAO/Case.php @@ -71,30 +71,30 @@ class CRM_Case_BAO_Case extends CRM_Case_DAO_Case implements \Civi\Core\HookInte if ($e->entity === 'Activity' && in_array($e->action, ['create', 'edit'])) { /** @var CRM_Activity_DAO_Activity $activity */ $activity = $e->object; + $params = $e->params; // If subject contains a ‘[case #…]’ string, file activity on the related case (CRM-5916) $matches = []; - $subjectToMatch = $activity->subject ?? ''; - if (preg_match('/\[case #([0-9a-h]{7})\]/', $subjectToMatch, $matches)) { - $key = CRM_Core_DAO::escapeString(CIVICRM_SITE_KEY); - $hash = $matches[1]; - $query = "SELECT id FROM civicrm_case WHERE SUBSTR(SHA1(CONCAT('$key', id)), 1, 7) = '" . CRM_Core_DAO::escapeString($hash) . "'"; - } - elseif (preg_match('/\[case #(\d+)\]/', $subjectToMatch, $matches)) { - $query = "SELECT id FROM civicrm_case WHERE id = '" . CRM_Core_DAO::escapeString($matches[1]) . "'"; + if (!isset($params['case_id'])) { + $subjectToMatch = $activity->subject ?? ''; + if (preg_match('/\[case #([0-9a-h]{7})\]/', $subjectToMatch, $matches)) { + $key = CRM_Core_DAO::escapeString(CIVICRM_SITE_KEY); + $query = "SELECT id FROM civicrm_case WHERE SUBSTR(SHA1(CONCAT('$key', id)), 1, 7) = %1"; + } + elseif (preg_match('/\[case #(\d+)\]/', $subjectToMatch, $matches)) { + $query = "SELECT id FROM civicrm_case WHERE id = %1"; + } } if (!empty($matches)) { - $caseParams = [ - 'activity_id' => $activity->id, - 'case_id' => CRM_Core_DAO::singleValueQuery($query), - ]; - if ($caseParams['case_id']) { - CRM_Case_BAO_Case::processCaseActivity($caseParams); - } - else { + $params['case_id'] = CRM_Core_DAO::singleValueQuery($query, [1 => [$matches[1], 'String']]) ?: NULL; + if (!$params['case_id']) { CRM_Activity_BAO_Activity::logActivityAction($activity, "Case details for {$matches[1]} not found while recording an activity on case."); } } + // Add CaseActivity record (or remove if $params['case_id'] is falsey) + if (isset($params['case_id'])) { + CRM_Case_BAO_Case::updateCaseActivity($activity->id, $params['case_id']); + } } if ($e->entity === 'RelationshipType') { CRM_Case_XMLProcessor::flushStaticCaches(); @@ -699,7 +699,8 @@ HERESQL; $casesList[$key]['manager'] = self::getCaseManagerContact($caseTypes[$case['case_type_id']], $case['case_id']); $casesList[$key]['date'] = $activityTypeLabels[$case['activity_type_id']] ?? NULL; - if ($actId = CRM_Utils_Array::value('activity_id', $case)) { + $actId = $case['activity_id'] ?? NULL; + if ($actId) { if (self::checkPermission($actId, 'view', $case['activity_type_id'], $userID)) { if ($type == 'recent') { $casesList[$key]['date'] = sprintf('<a class="action-item crm-hover-button" href="%s" title="%s">%s</a>', @@ -1360,7 +1361,7 @@ HERESQL; $tplParams['activityTypeName'] = CRM_Core_PseudoConstant::getLabel('CRM_Activity_DAO_Activity', 'activity_type_id', $activityTypeId); $tplParams['activity'] = $activityInfo; foreach ($tplParams['activity']['fields'] as $k => $val) { - if (CRM_Utils_Array::value('label', $val) == ts('Subject')) { + if (($val['label'] ?? NULL) == ts('Subject')) { $activitySubject = $val['value']; break; } @@ -1403,7 +1404,7 @@ HERESQL; $displayName = $info['display_name'] ?? NULL; - [$result[CRM_Utils_Array::value('contact_id', $info)], $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate( + [$result[$info['contact_id'] ?? NULL], $subject, $message, $html] = CRM_Core_BAO_MessageTemplate::sendTemplate( [ 'groupName' => 'msg_tpl_workflow_case', 'workflow' => 'case_activity', @@ -1434,7 +1435,7 @@ HERESQL; $recordedActivityParams['target_contact_id'][] = $info['contact_id']; } else { - unset($result[CRM_Utils_Array::value('contact_id', $info)]); + unset($result[$info['contact_id'] ?? NULL]); } } diff --git a/civicrm/CRM/Case/Form/Activity.php b/civicrm/CRM/Case/Form/Activity.php index a99e849d61..c0dfe15a80 100644 --- a/civicrm/CRM/Case/Form/Activity.php +++ b/civicrm/CRM/Case/Form/Activity.php @@ -336,7 +336,7 @@ class CRM_Case_Form_Activity extends CRM_Activity_Form_Activity { */ public static function formRule($fields, $files, $self) { // skip form rule if deleting - if (CRM_Utils_Array::value('_qf_Activity_next_', $fields) == 'Delete' || CRM_Utils_Array::value('_qf_Activity_next_', $fields) == 'Restore') { + if (($fields['_qf_Activity_next_'] ?? NULL) == 'Delete' || ($fields['_qf_Activity_next_'] ?? NULL) == 'Restore') { return TRUE; } diff --git a/civicrm/CRM/Case/Form/Activity/ChangeCaseStatus.php b/civicrm/CRM/Case/Form/Activity/ChangeCaseStatus.php index c8d416d2fa..77a30468fc 100644 --- a/civicrm/CRM/Case/Form/Activity/ChangeCaseStatus.php +++ b/civicrm/CRM/Case/Form/Activity/ChangeCaseStatus.php @@ -129,7 +129,7 @@ class CRM_Case_Form_Activity_ChangeCaseStatus { public static function beginPostProcess(&$form, &$params) { $params['id'] = $params['case_id'] ?? NULL; - if (CRM_Utils_Array::value('updateLinkedCases', $params) === '1') { + if (($params['updateLinkedCases'] ?? NULL) === '1') { $caseID = CRM_Utils_Array::first($form->_caseId); $cases = CRM_Case_BAO_Case::getRelatedCases($caseID); diff --git a/civicrm/CRM/Case/Form/CaseView.php b/civicrm/CRM/Case/Form/CaseView.php index 61a8473f87..24c0f4552c 100644 --- a/civicrm/CRM/Case/Form/CaseView.php +++ b/civicrm/CRM/Case/Form/CaseView.php @@ -552,7 +552,7 @@ class CRM_Case_Form_CaseView extends CRM_Core_Form { $form->add('datepicker', 'activity_date_high_' . $form->_caseID, ts('To'), [], FALSE, ['time' => FALSE]); if (CRM_Core_Permission::check('administer CiviCRM')) { - $form->add('checkbox', 'activity_deleted', ts('Deleted Activities'), '', FALSE, ['id' => 'activity_deleted_' . $form->_caseID]); + $form->add('checkbox', 'activity_deleted', ts('Deleted Activities'), ['id' => 'activity_deleted_' . $form->_caseID], FALSE); } } diff --git a/civicrm/CRM/Case/Page/AJAX.php b/civicrm/CRM/Case/Page/AJAX.php index a309da8b2d..106883750f 100644 --- a/civicrm/CRM/Case/Page/AJAX.php +++ b/civicrm/CRM/Case/Page/AJAX.php @@ -93,7 +93,7 @@ class CRM_Case_Page_AJAX { <tr><td>" . ts('Case Start Date') . "</td><td>" . CRM_Utils_Date::customFormat($case['start_date']) . "</td></tr> <tr><td>" . ts('Case End Date') . "</td><td>" . (isset($case['end_date']) ? CRM_Utils_Date::customFormat($case['end_date']) : '') . "</td></tr></table>"; - if (CRM_Utils_Array::value('snippet', $_GET) == 'json') { + if (($_GET['snippet'] ?? NULL) == 'json') { CRM_Core_Page_AJAX::returnJsonResponse($caseDetails); } diff --git a/civicrm/CRM/Case/XMLProcessor/Report.php b/civicrm/CRM/Case/XMLProcessor/Report.php index a6fb91e282..05b29fb534 100644 --- a/civicrm/CRM/Case/XMLProcessor/Report.php +++ b/civicrm/CRM/Case/XMLProcessor/Report.php @@ -36,10 +36,7 @@ class CRM_Case_XMLProcessor_Report extends CRM_Case_XMLProcessor { } public function getRedactionRules() { - foreach (array( - 'redactionStringRules', - 'redactionRegexRules', - ) as $key => $rule) { + foreach (['redactionStringRules', 'redactionRegexRules'] as $key => $rule) { $$rule = CRM_Case_PseudoConstant::redactionRule($key); if (!empty($$rule)) { @@ -85,7 +82,7 @@ class CRM_Case_XMLProcessor_Report extends CRM_Case_XMLProcessor { // add Client to the strings to be redacted across the case session if (!array_key_exists($client, $this->_redactionStringRules)) { $this->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($this->_redactionStringRules, - array($client => 'name_' . rand(10000, 100000)) + [$client => 'name_' . rand(10000, 100000)] ); $clientSortName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $clientID, 'sort_name'); if (!array_key_exists($clientSortName, $this->_redactionStringRules)) { @@ -179,7 +176,7 @@ AND a.id = ac.activity_id AND ac.case_id = %1 "; - $params = array(1 => array($caseID, 'Integer')); + $params = [1 => [$caseID, 'Integer']]; $dao = CRM_Core_DAO::executeQuery($query, $params); while ($dao->fetch()) { $activityTypeInfo = $map[$dao->activity_type_id]; @@ -233,7 +230,7 @@ LEFT JOIN civicrm_activity_contact at ON a.id = at.activity_id AND at.record_typ LEFT JOIN civicrm_activity_contact aa ON a.id = aa.activity_id AND aa.record_type_id = $assigneeID WHERE a.id = %1 "; - $params = array(1 => array($activityID, 'Integer')); + $params = [1 => [$activityID, 'Integer']]; $dao = CRM_Core_DAO::executeQuery($query, $params); if ($dao->fetch()) { @@ -272,11 +269,7 @@ WHERE a.id = %1 $activity['fields'] = []; if ($clientID) { $clientID = CRM_Utils_Type::escape($clientID, 'Integer'); - if (!in_array($activityTypeInfo['name'], array( - 'Email', - 'Inbound Email', - )) - ) { + if (!in_array($activityTypeInfo['name'], ['Email', 'Inbound Email'])) { $activity['editURL'] = CRM_Utils_System::url('civicrm/case/activity', "reset=1&cid={$clientID}&caseid={$activityDAO->caseID}&action=update&atype={$activityDAO->activity_type_id}&id={$activityDAO->id}" ); @@ -290,7 +283,7 @@ WHERE a.id = %1 // suffixed with a randomly generated 4-digit number if (!array_key_exists($client, $this->_redactionStringRules)) { $this->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($this->_redactionStringRules, - array($client => 'name_' . rand(10000, 100000)) + [$client => 'name_' . rand(10000, 100000)] ); $clientSortName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $clientID, 'sort_name'); @@ -299,12 +292,12 @@ WHERE a.id = %1 } } - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Client', 'label' => ts('Client'), 'value' => $this->redact($client), 'type' => 'String', - ); + ]; } $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); @@ -317,7 +310,7 @@ WHERE a.id = %1 $processTarget = FALSE; $name = 'With Contact(s)'; $label = ts('With Contact(s)'); - if (in_array($activityTypeInfo['name'], array('Email', 'Inbound Email'))) { + if (in_array($activityTypeInfo['name'], ['Email', 'Inbound Email'])) { $processTarget = TRUE; $name = 'Recipient'; $label = ts('Recipient'); @@ -338,7 +331,7 @@ WHERE a.id = %1 // suffixed with a randomly generated 4-digit number if (!array_key_exists($target, $this->_redactionStringRules)) { $this->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($this->_redactionStringRules, - array($target => 'name_' . rand(10000, 100000)) + [$target => 'name_' . rand(10000, 100000)] ); $targetSortName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $targetID, 'sort_name'); if (!array_key_exists($targetSortName, $this->_redactionStringRules)) { @@ -348,24 +341,24 @@ WHERE a.id = %1 $targetRedacted[] = $this->redact($target); } - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => $name, 'label' => $label, 'value' => implode('; ', $targetRedacted), 'type' => 'String', - ); + ]; } } // Activity Type info is a special field - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Activity Type', 'label' => ts('Activity Type'), 'value' => $activityTypeInfo['label'], 'type' => 'String', - ); + ]; - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Subject', 'label' => ts('Subject'), // TODO: Why is this being escaped at this point in the flow? Should @@ -375,21 +368,21 @@ WHERE a.id = %1 // for a few years? 'value' => htmlspecialchars($this->redact($activityDAO->subject) ?? ''), 'type' => 'Memo', - ); + ]; $creator = $this->getCreatedBy($activityDAO->id); // add Creator to the strings to be redacted across the case session if (!array_key_exists($creator, $this->_redactionStringRules)) { $this->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($this->_redactionStringRules, - array($creator => 'name_' . rand(10000, 100000)) + [$creator => 'name_' . rand(10000, 100000)] ); } - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Created By', 'label' => ts('Created By'), 'value' => $this->redact($creator), 'type' => 'String', - ); + ]; $activityContacts = CRM_Activity_BAO_ActivityContact::buildOptions('record_type_id', 'validate'); $sourceID = CRM_Utils_Array::key('Activity Source', $activityContacts); $source_contact_id = CRM_Activity_BAO_Activity::getActivityContact($activityDAO->id, $sourceID); @@ -402,7 +395,7 @@ WHERE a.id = %1 // suffixed with a randomly generated 4-digit number if (!array_key_exists($reporter, $this->_redactionStringRules)) { $this->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($this->_redactionStringRules, - array($reporter => 'name_' . rand(10000, 100000)) + [$reporter => 'name_' . rand(10000, 100000)] ); $reporterSortName = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', @@ -414,89 +407,89 @@ WHERE a.id = %1 } } - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Reported By', 'label' => ts('Reported By'), 'value' => $this->redact($reporter), 'type' => 'String', - ); + ]; if (!empty($activityDAO->assigneeID)) { //allow multiple assignee contacts.CRM-4503. - $assignee_contact_names = CRM_Activity_BAO_ActivityAssignment::getAssigneeNames(array($activityDAO->id), TRUE); + $assignee_contact_names = CRM_Activity_BAO_ActivityAssignment::getAssigneeNames([$activityDAO->id], TRUE); foreach ($assignee_contact_names as & $assignee) { // add Assignee to the strings to be redacted across the case session $this->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($this->_redactionStringRules, - array($assignee => 'name_' . rand(10000, 100000)) + [$assignee => 'name_' . rand(10000, 100000)] ); $assignee = $this->redact($assignee); } $assigneeContacts = implode(', ', $assignee_contact_names); - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Assigned to', 'label' => ts('Assigned to'), 'value' => $assigneeContacts, 'type' => 'String', - ); + ]; } if ($activityDAO->medium_id) { - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Medium', 'label' => ts('Medium'), 'value' => CRM_Core_PseudoConstant::getLabel('CRM_Activity_BAO_Activity', 'medium_id', $activityDAO->medium_id), 'type' => 'String', - ); + ]; } - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Location', 'label' => ts('Location'), 'value' => $activityDAO->location, 'type' => 'String', - ); + ]; - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Date and Time', 'label' => ts('Date and Time'), 'value' => $activityDAO->activity_date_time, 'type' => 'Date', - ); + ]; - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Details', 'label' => ts('Details'), 'value' => $this->redact(CRM_Utils_String::purifyHTML(CRM_Utils_String::stripAlternatives($activityDAO->details))), 'type' => 'Memo', - ); + ]; // Skip Duration field if empty (to avoid " minutes" output). Might want to do this for all fields at some point. dgg if ($activityDAO->duration) { - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Duration', 'label' => ts('Duration'), 'value' => $activityDAO->duration . ' ' . ts('minutes'), 'type' => 'Int', - ); + ]; } - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Status', 'label' => ts('Status'), 'value' => CRM_Core_PseudoConstant::getLabel('CRM_Activity_DAO_Activity', 'activity_status_id', $activityDAO->status_id ), 'type' => 'String', - ); + ]; - $activity['fields'][] = array( + $activity['fields'][] = [ 'name' => 'Priority', 'label' => ts('Priority'), 'value' => CRM_Core_PseudoConstant::getLabel('CRM_Activity_DAO_Activity', 'priority_id', $activityDAO->priority_id ), 'type' => 'String', - ); + ]; //for now empty custom groups $activity['customGroups'] = $this->getCustomData($clientID, @@ -517,7 +510,7 @@ WHERE a.id = %1 public function getCustomData($clientID, $activityDAO, &$activityTypeInfo) { list($typeValues, $options, $sql) = $this->getActivityTypeCustomSQL($activityTypeInfo['id'], '%Y-%m-%d'); - $params = array(1 => array($activityDAO->id, 'Integer')); + $params = [1 => [$activityDAO->id, 'Integer']]; $customGroups = []; foreach ($sql as $tableName => $sqlClause) { @@ -526,7 +519,7 @@ WHERE a.id = %1 $customGroup = []; foreach ($typeValues[$tableName] as $columnName => $typeValue) { - if (CRM_Utils_Array::value('type', $typeValue) == 'Date') { + if (($typeValue['type'] ?? NULL) == 'Date') { $value = $dao->$columnName; } else { @@ -539,19 +532,19 @@ WHERE a.id = %1 if (strstr($value, CRM_Core_DAO::VALUE_SEPARATOR)) { $value = trim($value, CRM_Core_DAO::VALUE_SEPARATOR); } - if (CRM_Utils_Array::value('type', $typeValue) == 'String' || - CRM_Utils_Array::value('type', $typeValue) == 'Memo' + if (($typeValue['type'] ?? NULL) == 'String' || + ($typeValue['type'] ?? NULL) == 'Memo' ) { $value = $this->redact($value); } } //$typeValue - $customGroup[] = array( + $customGroup[] = [ 'label' => $typeValue['label'], 'value' => $value, 'type' => $typeValue['type'], 'fieldID' => $typeValue['fieldID'], - ); + ]; } $customGroups[$dao->groupTitle] = $customGroup; } @@ -601,12 +594,12 @@ AND " . CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, 'cg.') $query .= "AND cg.extends_entity_column_value IS NULL"; } $query .= "ORDER BY cg.weight, cf.weight"; - $params = array( - 1 => array( + $params = [ + 1 => [ $activityTypeID, 'Integer', - ), - ); + ], + ]; $dao = CRM_Core_DAO::executeQuery($query, $params); $result = $options = $sql = $groupTitle = []; @@ -615,18 +608,18 @@ AND " . CRM_Core_Permission::customGroupClause(CRM_Core_Permission::VIEW, 'cg.') $result[$dao->tableName] = []; $sql[$dao->tableName] = []; } - $result[$dao->tableName][$dao->columnName] = array( + $result[$dao->tableName][$dao->columnName] = [ 'label' => $dao->label, 'type' => $dao->dataType, 'fieldID' => $dao->fieldID, - ); + ]; $options[$dao->fieldID] = []; - $options[$dao->fieldID]['attributes'] = array( + $options[$dao->fieldID]['attributes'] = [ 'label' => $dao->label, 'data_type' => $dao->dataType, 'html_type' => $dao->htmlType, - ); + ]; // since we want to add ISO date format. if ($dateFormat && $dao->htmlType == 'Select Date') { $options[$dao->fieldID]['attributes']['format'] = $dateFormat; @@ -638,7 +631,7 @@ SELECT label, value WHERE option_group_id = %1 "; - $option = CRM_Core_DAO::executeQuery($query, array(1 => array($dao->optionGroupID, 'Positive'))); + $option = CRM_Core_DAO::executeQuery($query, [1 => [$dao->optionGroupID, 'Positive']]); while ($option->fetch()) { $dataType = $dao->dataType; if ($dataType == 'Int' || $dataType == 'Float') { @@ -666,7 +659,7 @@ WHERE entity_id = %1 "; } - $cache[$activityTypeID] = array($result, $options, $sql); + $cache[$activityTypeID] = [$result, $options, $sql]; } return $cache[$activityTypeID]; } @@ -687,7 +680,7 @@ AND l.modified_id = c.id LIMIT 1 "; - $params = array(1 => array($activityID, 'Integer')); + $params = [1 => [$activityID, 'Integer']]; return CRM_Core_DAO::singleValueQuery($query, $params); } @@ -757,7 +750,7 @@ LIMIT 1 $case = $form->caseInfo($clientID, $caseID); $template->assign_by_ref('case', $case); - if (CRM_Utils_Array::value('include_activities', $params) == 1) { + if (($params['include_activities'] ?? NULL) == 1) { $template->assign('includeActivities', 'All'); } else { @@ -782,11 +775,11 @@ LIMIT 1 } // next get activity set Information - $activitySet = array( + $activitySet = [ 'label' => $form->getActivitySetLabel($xml, $activitySetName), 'includeActivities' => 'All', 'redact' => 'false', - ); + ]; $template->assign_by_ref('activitySet', $activitySet); //now collect all the information about activities @@ -828,7 +821,7 @@ LIMIT 1 if ($isRedact) { if (!array_key_exists($value['name'], $report->_redactionStringRules)) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($value['name'] => 'name_' . rand(10000, 100000)) + [$value['name'] => 'name_' . rand(10000, 100000)] ); } $value['name'] = $report->redact($value['name'], TRUE, $report->_redactionStringRules); @@ -836,7 +829,7 @@ LIMIT 1 !array_key_exists($value['email'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($value['email'] => 'email_' . rand(10000, 100000)) + [$value['email'] => 'email_' . rand(10000, 100000)] ); } @@ -846,7 +839,7 @@ LIMIT 1 !array_key_exists($value['phone'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($value['phone'] => 'phone_' . rand(10000, 100000)) + [$value['phone'] => 'phone_' . rand(10000, 100000)] ); } $value['phone'] = $report->redact($value['phone'], TRUE, $report->_redactionStringRules); @@ -859,18 +852,18 @@ LIMIT 1 if (!array_key_exists(CRM_Utils_Array::value('sort_name', $client), $report->_redactionStringRules)) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array(CRM_Utils_Array::value('sort_name', $client) => 'name_' . rand(10000, 100000)) + [($client['sort_name'] ?? NULL) => 'name_' . rand(10000, 100000)] ); } if (!array_key_exists(CRM_Utils_Array::value('display_name', $client), $report->_redactionStringRules)) { - $report->_redactionStringRules[CRM_Utils_Array::value('display_name', $client)] = $report->_redactionStringRules[CRM_Utils_Array::value('sort_name', $client)]; + $report->_redactionStringRules[$client['display_name'] ?? NULL] = $report->_redactionStringRules[$client['sort_name'] ?? NULL]; } $client['sort_name'] = $report->redact(CRM_Utils_Array::value('sort_name', $client), TRUE, $report->_redactionStringRules); if (!empty($client['email']) && !array_key_exists($client['email'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($client['email'] => 'email_' . rand(10000, 100000)) + [$client['email'] => 'email_' . rand(10000, 100000)] ); } $client['email'] = $report->redact(CRM_Utils_Array::value('email', $client), TRUE, $report->_redactionStringRules); @@ -879,7 +872,7 @@ LIMIT 1 !array_key_exists($client['phone'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($client['phone'] => 'phone_' . rand(10000, 100000)) + [$client['phone'] => 'phone_' . rand(10000, 100000)] ); } $client['phone'] = $report->redact(CRM_Utils_Array::value('phone', $client), TRUE, $report->_redactionStringRules); @@ -894,7 +887,7 @@ LIMIT 1 if ($isRedact) { if (!array_key_exists($r['name'], $report->_redactionStringRules)) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($r['name'] => 'name_' . rand(10000, 100000)) + [$r['name'] => 'name_' . rand(10000, 100000)] ); } if (!array_key_exists($r['display_name'], $report->_redactionStringRules)) { @@ -906,7 +899,7 @@ LIMIT 1 !array_key_exists($r['phone'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($r['phone'] => 'phone_' . rand(10000, 100000)) + [$r['phone'] => 'phone_' . rand(10000, 100000)] ); } $r['phone'] = $report->redact($r['phone'], TRUE, $report->_redactionStringRules); @@ -915,7 +908,7 @@ LIMIT 1 !array_key_exists($r['email'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($r['email'] => 'email_' . rand(10000, 100000)) + [$r['email'] => 'email_' . rand(10000, 100000)] ); } $r['email'] = $report->redact($r['email'], TRUE, $report->_redactionStringRules); @@ -931,7 +924,7 @@ LIMIT 1 if ($isRedact) { if (!array_key_exists($r['sort_name'], $report->_redactionStringRules)) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($r['sort_name'] => 'name_' . rand(10000, 100000)) + [$r['sort_name'] => 'name_' . rand(10000, 100000)] ); } if (!array_key_exists($r['display_name'], $report->_redactionStringRules)) { @@ -943,7 +936,7 @@ LIMIT 1 !array_key_exists($r['phone'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($r['phone'] => 'phone_' . rand(10000, 100000)) + [$r['phone'] => 'phone_' . rand(10000, 100000)] ); } $r['phone'] = $report->redact($r['phone'], TRUE, $report->_redactionStringRules); @@ -952,7 +945,7 @@ LIMIT 1 !array_key_exists($r['email'], $report->_redactionStringRules) ) { $report->_redactionStringRules = CRM_Utils_Array::crmArrayMerge($report->_redactionStringRules, - array($r['email'] => 'email_' . rand(10000, 100000)) + [$r['email'] => 'email_' . rand(10000, 100000)] ); } $r['email'] = $report->redact($r['email'], TRUE, $report->_redactionStringRules); @@ -961,17 +954,17 @@ LIMIT 1 // Retrieve custom values for cases. $customValues = CRM_Core_BAO_CustomValueTable::getEntityValues($caseID, 'Case'); - $extends = array('case'); + $extends = ['case']; $groupTree = CRM_Core_BAO_CustomGroup::getGroupDetail(NULL, NULL, $extends); $caseCustomFields = []; foreach ($groupTree as $gid => $group_values) { foreach ($group_values['fields'] as $id => $field_values) { if (array_key_exists($id, $customValues)) { $caseCustomFields[$gid]['title'] = $group_values['title']; - $caseCustomFields[$gid]['values'][$id] = array( + $caseCustomFields[$gid]['values'][$id] = [ 'label' => $field_values['label'], 'value' => $customValues[$id], - ); + ]; } } } diff --git a/civicrm/CRM/Case/xml/configuration.sample/case_sample.mysql.tpl b/civicrm/CRM/Case/xml/configuration.sample/case_sample.mysql.tpl index 023f92510d..19315e5d7f 100644 --- a/civicrm/CRM/Case/xml/configuration.sample/case_sample.mysql.tpl +++ b/civicrm/CRM/Case/xml/configuration.sample/case_sample.mysql.tpl @@ -98,4 +98,4 @@ SELECT 'Benefits Specialist is', {localize}'{ts escape="sql"}Benefits Specialist -- * -- *******************************************************/ -INSERT INTO `civicrm_group` ( `name`, {localize field='title'}`title`{/localize}, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `parents`, `children`, `is_hidden` ) (SELECT 'Case_Resources', {localize}'{ts escape="sql"}Case Resources{/ts}'{/localize}, 'Contacts in this group are listed with their phone number and email when viewing case. You also can send copies of case activities to these contacts.', NULL, NULL, 1, 'User and User Admin Only', ' ( `civicrm_group_contact-5`.group_id IN ( 5 ) AND `civicrm_group_contact-5`.status IN ("Added") ) ', '{literal}a:10:{s:15:"civicrm_contact";i:1;s:15:"civicrm_address";i:1;s:22:"civicrm_state_province";i:1;s:15:"civicrm_country";i:1;s:13:"civicrm_email";i:1;s:13:"civicrm_phone";i:1;s:10:"civicrm_im";i:1;s:19:"civicrm_worldregion";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";s:6:"gender";i:1;}{/literal}', '{literal}a:2:{s:15:"civicrm_contact";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";}{/literal}', '2', NULL, NULL, NULL, 0 FROM dual WHERE NOT EXISTS (SELECT * FROM `civicrm_group` WHERE `name` = 'Case_Resources')); +INSERT INTO `civicrm_group` ( `name`, {localize field='title'}`title`{/localize},{localize field='frontend_title'}`frontend_title`{/localize}, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `parents`, `children`, `is_hidden` ) (SELECT 'Case_Resources', {localize}'{ts escape="sql"}Case Resources{/ts}'{/localize},{localize}'{ts escape="sql"}Case Resources{/ts}'{/localize}, 'Contacts in this group are listed with their phone number and email when viewing case. You also can send copies of case activities to these contacts.', NULL, NULL, 1, 'User and User Admin Only', ' ( `civicrm_group_contact-5`.group_id IN ( 5 ) AND `civicrm_group_contact-5`.status IN ("Added") ) ', '{literal}a:10:{s:15:"civicrm_contact";i:1;s:15:"civicrm_address";i:1;s:22:"civicrm_state_province";i:1;s:15:"civicrm_country";i:1;s:13:"civicrm_email";i:1;s:13:"civicrm_phone";i:1;s:10:"civicrm_im";i:1;s:19:"civicrm_worldregion";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";s:6:"gender";i:1;}{/literal}', '{literal}a:2:{s:15:"civicrm_contact";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";}{/literal}', '2', NULL, NULL, NULL, 0 FROM dual WHERE NOT EXISTS (SELECT * FROM `civicrm_group` WHERE `name` = 'Case_Resources')); diff --git a/civicrm/CRM/Contact/BAO/Contact.php b/civicrm/CRM/Contact/BAO/Contact.php index c47485d1a4..a925762dd4 100644 --- a/civicrm/CRM/Contact/BAO/Contact.php +++ b/civicrm/CRM/Contact/BAO/Contact.php @@ -298,7 +298,7 @@ class CRM_Contact_BAO_Contact extends CRM_Contact_DAO_Contact implements Civi\Co $params['contact_id'] = $contact->id; - if (Civi::settings()->get('is_enabled')) { + if (!$isEdit && Civi::settings()->get('is_enabled')) { // Enabling multisite causes the contact to be added to the domain group. $domainGroupID = CRM_Core_BAO_Domain::getGroupId(); if (!empty($domainGroupID)) { @@ -2804,7 +2804,7 @@ LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id ) $menu = [ 'view' => [ 'title' => ts('View Contact'), - 'weight' => 0, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), 'ref' => 'view-contact', 'class' => 'no-popup', 'key' => 'view', @@ -2812,7 +2812,7 @@ LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id ) ], 'add' => [ 'title' => ts('Edit Contact'), - 'weight' => 0, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), 'ref' => 'edit-contact', 'class' => 'no-popup', 'key' => 'add', @@ -2820,7 +2820,7 @@ LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id ) ], 'delete' => [ 'title' => ts('Delete Contact'), - 'weight' => 0, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), 'ref' => 'delete-contact', 'key' => 'delete', 'permissions' => ['access deleted contacts', 'delete contacts'], @@ -2957,7 +2957,7 @@ LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id ) 'key' => 'print', 'tab' => 'print', 'href' => CRM_Utils_System::url('civicrm/contact/view/print', - "reset=1&print=1" + 'reset=1&print=1' ), 'class' => 'print', 'icon' => 'crm-i fa-print', @@ -3056,6 +3056,7 @@ LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id ) 'ref' => $values['ref'], 'class' => $values['class'] ?? NULL, 'key' => $values['key'], + 'weight' => $values['weight'], ]; continue; } @@ -3073,6 +3074,7 @@ LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id ) 'tab' => $values['tab'] ?? NULL, 'class' => $values['class'] ?? NULL, 'key' => $values['key'], + 'weight' => $values['weight'], ]; } else { @@ -3096,6 +3098,7 @@ LEFT JOIN civicrm_email ON ( civicrm_contact.id = civicrm_email.contact_id ) 'class' => $value['class'] ?? NULL, 'icon' => $value['icon'] ?? NULL, 'key' => $value['key'], + 'weight' => $value['weight'], ]; } } diff --git a/civicrm/CRM/Contact/BAO/Group.php b/civicrm/CRM/Contact/BAO/Group.php index 6563b61d57..2ab90e198d 100644 --- a/civicrm/CRM/Contact/BAO/Group.php +++ b/civicrm/CRM/Contact/BAO/Group.php @@ -285,7 +285,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $permissions = NULL; if (CRM_Core_Permission::check('edit all contacts') || CRM_ACL_API::groupPermission(CRM_ACL_API::EDIT, $id, NULL, - 'civicrm_saved_search', $allGroups + 'civicrm_group', $allGroups ) ) { $permissions[] = CRM_Core_Permission::EDIT; @@ -293,7 +293,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { if (CRM_Core_Permission::check('view all contacts') || CRM_ACL_API::groupPermission(CRM_ACL_API::VIEW, $id, NULL, - 'civicrm_saved_search', $allGroups + 'civicrm_group', $allGroups ) ) { $permissions[] = CRM_Core_Permission::VIEW; @@ -316,8 +316,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $clauses = []; if (!CRM_Core_Permission::check([['edit all contacts', 'view all contacts']])) { $allGroups = CRM_Core_PseudoConstant::allGroup(NULL, FALSE); - // FIXME: TableName 'civicrm_saved_search' seems wrong but is consistent with self::checkPermission - $allowedGroups = \CRM_ACL_API::group(CRM_ACL_API::VIEW, NULL, 'civicrm_saved_search', $allGroups); + $allowedGroups = \CRM_ACL_API::group(CRM_ACL_API::VIEW, NULL, 'civicrm_group', $allGroups); $groupsIn = $allowedGroups ? implode(',', $allowedGroups) : '0'; $clauses['id'][] = "IN ($groupsIn)"; } @@ -442,48 +441,35 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { CRM_Core_BAO_CustomValueTable::store($params['custom'], 'civicrm_group', $group->id); } - // Secret `no_parent` param is used by the multisite extension to prevent default behavior. - if (empty($params['no_parent'])) { - $domainGroupID = CRM_Core_BAO_Domain::getGroupId(); - // If multi-site is_enabled, no parent selected and the group doesn't already have any parents, - // set parent to the domain group - if (Civi::settings()->get('is_enabled') && - empty($params['parents']) && - $domainGroupID != $group->id && - !CRM_Contact_BAO_GroupNesting::hasParentGroups($group->id) - ) { - $params['parents'] = [$domainGroupID]; - } - - // first deal with removed parents - if ($parentsParamProvided && !empty($currentParentGroupIDs)) { - foreach ($currentParentGroupIDs as $parentGroupId) { - // no more parents or not in the new list, let's remove - if (empty($params['parents']) || !in_array($parentGroupId, $params['parents'])) { - CRM_Contact_BAO_GroupNesting::remove($parentGroupId, $params['id']); - } + // Process group nesting + // first deal with removed parents + if ($parentsParamProvided && !empty($currentParentGroupIDs)) { + foreach ($currentParentGroupIDs as $parentGroupId) { + // no more parents or not in the new list, let's remove + if (empty($params['parents']) || !in_array($parentGroupId, $params['parents'])) { + CRM_Contact_BAO_GroupNesting::remove($parentGroupId, $params['id']); } } + } - // then add missing parents - if (!CRM_Utils_System::isNull($params['parents'])) { - foreach ($params['parents'] as $parentId) { - if ($parentId && !CRM_Contact_BAO_GroupNesting::isParentChild($parentId, $group->id)) { - CRM_Contact_BAO_GroupNesting::add($parentId, $group->id); - } + // then add missing parents + if (!CRM_Utils_System::isNull($params['parents'])) { + foreach ($params['parents'] as $parentId) { + if ($parentId && !CRM_Contact_BAO_GroupNesting::isParentChild($parentId, $group->id)) { + CRM_Contact_BAO_GroupNesting::add($parentId, $group->id); } } + } - // refresh cache if parents param was provided - if ($parentsParamProvided || !empty($params['parents'])) { - CRM_Contact_BAO_GroupNestingCache::update(); - } + // refresh cache if parents param was provided + if ($parentsParamProvided || !empty($params['parents'])) { + CRM_Contact_BAO_GroupNestingCache::update(); + } - // update group contact cache for all parent groups - $parentIds = CRM_Contact_BAO_GroupNesting::getParentGroupIds($group->id); - foreach ($parentIds as $parentId) { - CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache($parentId); - } + // update group contact cache for all parent groups + $parentIds = CRM_Contact_BAO_GroupNesting::getParentGroupIds($group->id); + foreach ($parentIds as $parentId) { + CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache($parentId); } if (!empty($params['organization_id'])) { @@ -829,8 +815,8 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { $groupsDT = []; $groupsDT['data'] = $groupList; - $groupsDT['recordsTotal'] = !empty($params['total']) ? $params['total'] : NULL; - $groupsDT['recordsFiltered'] = !empty($params['total']) ? $params['total'] : NULL; + $groupsDT['recordsTotal'] = !empty($params['total']) ? $params['total'] : 0; + $groupsDT['recordsFiltered'] = !empty($params['total']) ? $params['total'] : 0; return $groupsDT; } @@ -868,7 +854,7 @@ class CRM_Contact_BAO_Group extends CRM_Contact_DAO_Group { if (CRM_Core_Permission::check('administer Multiple Organizations') && CRM_Core_Permission::isMultisiteEnabled() ) { - $select = ", contact.display_name as org_name, contact.id as org_id"; + $select = ', contact.display_name as org_name, contact.id as org_id'; $from = " LEFT JOIN civicrm_group_organization gOrg ON gOrg.group_id = `groups`.id LEFT JOIN civicrm_contact contact @@ -1300,47 +1286,53 @@ WHERE {$whereClause}"; /** * Define action links. * + * @param array $params + * * @return array * array of action links + * @throws \CRM_Core_Exception */ - public static function actionLinks($params) { + public static function actionLinks(array $params): array { // If component_mode is set we change the "View" link to match the requested component type if (!isset($params['component_mode'])) { $params['component_mode'] = CRM_Contact_BAO_Query::MODE_CONTACTS; } $modeValue = CRM_Contact_Form_Search::getModeValue($params['component_mode']); - $links = [ + return [ CRM_Core_Action::VIEW => [ 'name' => $modeValue['selectorLabel'], 'url' => 'civicrm/group/search', 'qs' => 'reset=1&force=1&context=smog&gid=%%id%%&component_mode=' . $params['component_mode'], 'title' => ts('Group Contacts'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Settings'), 'url' => 'civicrm/group/edit', 'qs' => 'reset=1&action=update&id=%%id%%', 'title' => ts('Edit Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'ref' => 'crm-enable-disable', 'title' => ts('Disable Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DISABLE), ], CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::ENABLE), ], CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => 'civicrm/group/edit', 'qs' => 'reset=1&action=delete&id=%%id%%', 'title' => ts('Delete Group'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::DELETE), ], ]; - - return $links; } /** diff --git a/civicrm/CRM/Contact/BAO/GroupContact.php b/civicrm/CRM/Contact/BAO/GroupContact.php index 2c2bfd50f9..114eba98e5 100644 --- a/civicrm/CRM/Contact/BAO/GroupContact.php +++ b/civicrm/CRM/Contact/BAO/GroupContact.php @@ -130,15 +130,10 @@ class CRM_Contact_BAO_GroupContact extends CRM_Contact_DAO_GroupContact implemen if (empty($contactIds) || empty($groupId)) { return []; } - - CRM_Utils_Hook::pre('create', 'GroupContact', $groupId, $contactIds); - $result = self::bulkAddContactsToGroup($contactIds, $groupId, $method, $status, $tracking); CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache($groupId); CRM_Contact_BAO_Contact_Utils::clearContactCaches(); - CRM_Utils_Hook::post('create', 'GroupContact', $groupId, $contactIds); - return [count($contactIds), $result['count_added'], $result['count_not_added']]; } @@ -711,23 +706,28 @@ AND contact_id IN ( $contactStr ) } $gcValues = $shValues = []; - foreach ($input as $cid) { + foreach ($input as $key => $cid) { if (isset($presentIDs[$cid])) { + unset($input[$key]); $numContactsNotAdded++; - continue; } - - $gcValues[] = "( $groupID, $cid, '$status' )"; - $shValues[] = "( $groupID, $cid, '$date', '$method', '$status', '$tracking' )"; - $numContactsAdded++; + else { + $gcValues[] = "( $groupID, $cid, '$status' )"; + $shValues[] = "( $groupID, $cid, '$date', '$method', '$status', '$tracking' )"; + $numContactsAdded++; + } } if (!empty($gcValues)) { + CRM_Utils_Hook::pre('create', 'GroupContact', $groupID, $input); + $cgSQL = $contactGroupSQL . implode(",\n", $gcValues); CRM_Core_DAO::executeQuery($cgSQL); $shSQL = $subscriptioHistorySQL . implode(",\n", $shValues); CRM_Core_DAO::executeQuery($shSQL); + + CRM_Utils_Hook::post('create', 'GroupContact', $groupID, $input); } } diff --git a/civicrm/CRM/Contact/BAO/GroupContactCache.php b/civicrm/CRM/Contact/BAO/GroupContactCache.php index 8fc361e64b..f29a782746 100644 --- a/civicrm/CRM/Contact/BAO/GroupContactCache.php +++ b/civicrm/CRM/Contact/BAO/GroupContactCache.php @@ -532,41 +532,6 @@ ORDER BY gc.contact_id, g.children return "SELECT $addSelect, `$idField` AS contact_id FROM ($sql) api_query"; } - /** - * Get sql from a custom search. - * - * We split it up and store custom class - * so temp tables are not destroyed if they are used - * - * @param array $savedSearch - * @param int $groupID - * - * @return string - * @throws \CRM_Core_Exception - */ - protected static function getCustomSearchSQL(array $savedSearch, int $groupID) { - $savedSearchID = $savedSearch['id']; - $excludeClause = "NOT IN ( - SELECT contact_id FROM civicrm_group_contact - WHERE civicrm_group_contact.status = 'Removed' - AND civicrm_group_contact.group_id = $groupID )"; - $addSelect = "$groupID AS group_id"; - $ssParams = CRM_Contact_BAO_SavedSearch::getFormValues($savedSearchID); - // CRM-7021 rectify params to what proximity search expects if there is a value for prox_distance - if (!empty($ssParams)) { - CRM_Contact_BAO_ProximityQuery::fixInputParams($ssParams); - } - $searchSQL = CRM_Contact_BAO_SearchCustom::customClass($ssParams['customSearchID'], $savedSearchID)->contactIDs(); - $searchSQL = str_replace('ORDER BY contact_a.id ASC', '', $searchSQL); - if (strpos($searchSQL, 'WHERE') === FALSE) { - $searchSQL .= " WHERE contact_a.id $excludeClause"; - } - else { - $searchSQL .= " AND contact_a.id $excludeClause"; - } - return preg_replace("/^\s*SELECT /", "SELECT $addSelect, ", $searchSQL); - } - /** * Get array of sql from a saved query object group. * @@ -797,14 +762,20 @@ ORDER BY gc.contact_id, g.children ->execute() ->first(); - if ($savedSearch['api_entity']) { - $sql = self::getApiSQL($savedSearch, $groupID); - } - elseif (!empty($savedSearch['search_custom_id'])) { - $sql = self::getCustomSearchSQL($savedSearch, $groupID); - } - else { - $sql = self::getQueryObjectSQL($savedSearch, $groupID); + $sql = ''; + CRM_Utils_Hook::buildGroupContactCache($savedSearch, $groupID, $sql); + if (!$sql) { + if ($savedSearch['api_entity']) { + $sql = self::getApiSQL($savedSearch, $groupID); + } + elseif (!empty($savedSearch['search_custom_id'])) { + Group::update(FALSE)->addWhere('id', '=', $groupID)->setValues(['is_active' => FALSE])->execute(); + CRM_Core_Session::setStatus(ts('Invalid group %1 found and disabled'), [1 => $groupID]); + return; + } + else { + $sql = self::getQueryObjectSQL($savedSearch, $groupID); + } } } diff --git a/civicrm/CRM/Contact/BAO/Individual.php b/civicrm/CRM/Contact/BAO/Individual.php index 9c23f97923..7d4ea9875a 100644 --- a/civicrm/CRM/Contact/BAO/Individual.php +++ b/civicrm/CRM/Contact/BAO/Individual.php @@ -44,7 +44,7 @@ class CRM_Contact_BAO_Individual extends CRM_Contact_DAO_Contact { // "null" value for example is passed by dedupe merge in order to empty. // Display name computation shouldn't consider such values. foreach (['first_name', 'middle_name', 'last_name', 'nick_name', 'formal_title', 'birth_date', 'deceased_date'] as $displayField) { - if (CRM_Utils_Array::value($displayField, $params) == "null") { + if (($params[$displayField] ?? NULL) == "null") { $params[$displayField] = ''; } } diff --git a/civicrm/CRM/Contact/BAO/ProximityQuery.php b/civicrm/CRM/Contact/BAO/ProximityQuery.php index e69fb7c11f..be583c0d21 100644 --- a/civicrm/CRM/Contact/BAO/ProximityQuery.php +++ b/civicrm/CRM/Contact/BAO/ProximityQuery.php @@ -328,7 +328,7 @@ ACOS( */ public static function fixInputParams(&$input) { foreach ($input as $param) { - if (CRM_Utils_Array::value('0', $param) == 'prox_distance') { + if (($param['0'] ?? NULL) == 'prox_distance') { // add prox_ prefix to these $param_alter = ['street_address', 'city', 'postal_code', 'state_province', 'country']; diff --git a/civicrm/CRM/Contact/BAO/Query.php b/civicrm/CRM/Contact/BAO/Query.php index d6c875142a..0b0fa9138c 100644 --- a/civicrm/CRM/Contact/BAO/Query.php +++ b/civicrm/CRM/Contact/BAO/Query.php @@ -4261,7 +4261,7 @@ WHERE $smartGroupClause // Description if (!empty($description[2]) && trim($description[2])) { - $this->_qill[$grouping][] = ts('Relationship description - ' . $description[2]); + $this->_qill[$grouping][] = ts('Relationship description - %1', [1 => $description[2]]); $description = CRM_Core_DAO::escapeString(trim($description[2])); $where[$grouping][] = "civicrm_relationship.description LIKE '%{$description}%'"; } @@ -6556,7 +6556,7 @@ AND displayRelType.is_active = 1 } $pseudoConstant = $realField['pseudoconstant']; if (empty($pseudoConstant['optionGroupName']) && - CRM_Utils_Array::value('labelColumn', $pseudoConstant) !== 'name') { + ($pseudoConstant['labelColumn'] ?? NULL) !== 'name') { // We are increasing our pseudoconstant handling - but still very cautiously, // hence the check for labelColumn === name return FALSE; @@ -6990,8 +6990,8 @@ AND displayRelType.is_active = 1 */ protected function isPseudoFieldAnFK($fieldSpec) { if (empty($fieldSpec['FKClassName']) - || CRM_Utils_Array::value('keyColumn', $fieldSpec['pseudoconstant']) !== 'id' - || CRM_Utils_Array::value('labelColumn', $fieldSpec['pseudoconstant']) !== 'name') { + || ($fieldSpec['pseudoconstant']['keyColumn'] ?? NULL) !== 'id' + || ($fieldSpec['pseudoconstant']['labelColumn'] ?? NULL) !== 'name') { return FALSE; } return TRUE; diff --git a/civicrm/CRM/Contact/BAO/Relationship.php b/civicrm/CRM/Contact/BAO/Relationship.php index 29066d14ab..ffd7f41475 100644 --- a/civicrm/CRM/Contact/BAO/Relationship.php +++ b/civicrm/CRM/Contact/BAO/Relationship.php @@ -1425,7 +1425,7 @@ LEFT JOIN civicrm_country ON (civicrm_address.country_id = civicrm_country.id) $relTypeValues = []; CRM_Contact_BAO_RelationshipType::retrieve($relTypeParams, $relTypeValues); - if (CRM_Utils_Array::value('name_a_b', $relTypeValues) == CRM_Utils_Array::value('name_b_a', $relTypeValues)) { + if (($relTypeValues['name_a_b'] ?? NULL) == CRM_Utils_Array::value('name_b_a', $relTypeValues)) { $values[$cid]['relationshipTypeDirection'] = '_a_b'; } else { diff --git a/civicrm/CRM/Contact/BAO/SavedSearch.php b/civicrm/CRM/Contact/BAO/SavedSearch.php index 372a185193..a5f801dcc0 100644 --- a/civicrm/CRM/Contact/BAO/SavedSearch.php +++ b/civicrm/CRM/Contact/BAO/SavedSearch.php @@ -157,13 +157,6 @@ class CRM_Contact_BAO_SavedSearch extends CRM_Contact_DAO_SavedSearch implements } } - if ($customSearchClass = CRM_Utils_Array::value('customSearchClass', $result)) { - // check if there is a special function - formatSavedSearchFields defined in the custom search form - if (method_exists($customSearchClass, 'formatSavedSearchFields')) { - $customSearchClass::formatSavedSearchFields($result); - } - } - return $result; } @@ -223,32 +216,6 @@ class CRM_Contact_BAO_SavedSearch extends CRM_Contact_DAO_SavedSearch implements return NULL; } - /** - * Contact IDS Sql (whatever that means!). - * - * @param int $id - * - * @return string - */ - public static function contactIDsSQL($id) { - $params = self::getSearchParams($id); - if ($params && !empty($params['customSearchID'])) { - return CRM_Contact_BAO_SearchCustom::contactIDSQL(NULL, $id); - } - else { - $tables = $whereTables = ['civicrm_contact' => 1]; - $where = CRM_Contact_BAO_SavedSearch::whereClause($id, $tables, $whereTables); - if (!$where) { - $where = '( 1 )'; - } - $from = CRM_Contact_BAO_Query::fromClause($whereTables); - return " -SELECT contact_a.id -$from -WHERE $where"; - } - } - /** * Deprecated function, gets a value from Group entity * diff --git a/civicrm/CRM/Contact/Form/Contact.php b/civicrm/CRM/Contact/Form/Contact.php index e714c484a3..2b98c60f60 100644 --- a/civicrm/CRM/Contact/Form/Contact.php +++ b/civicrm/CRM/Contact/Form/Contact.php @@ -956,12 +956,16 @@ class CRM_Contact_Form_Contact extends CRM_Core_Form { } elseif (!empty($params['contact_id']) && ($this->_action & CRM_Core_Action::UPDATE)) { // figure out which all groups are intended to be removed - $contactGroupList = CRM_Contact_BAO_GroupContact::getContactGroup($params['contact_id'], 'Added'); + $contactGroupList = CRM_Contact_BAO_GroupContact::getContactGroup($params['contact_id'], 'Added', NULL, FALSE, TRUE, FALSE, TRUE, NULL, TRUE); if (is_array($contactGroupList)) { foreach ($contactGroupList as $key) { if ((!array_key_exists($key['group_id'], $params['group']) || $params['group'][$key['group_id']] != 1) && empty($key['is_hidden'])) { $params['group'][$key['group_id']] = -1; } + // don't try to add to groups that the contact is already Added to + elseif (array_key_exists($key['group_id'], $params['group']) && $params['group'][$key['group_id']] == 1) { + unset($params['group'][$key['group_id']]); + } } } } diff --git a/civicrm/CRM/Contact/Form/Edit/CommunicationPreferences.php b/civicrm/CRM/Contact/Form/Edit/CommunicationPreferences.php index 5cd315f4a2..2a6b1e2c73 100644 --- a/civicrm/CRM/Contact/Form/Edit/CommunicationPreferences.php +++ b/civicrm/CRM/Contact/Form/Edit/CommunicationPreferences.php @@ -136,7 +136,7 @@ class CRM_Contact_Form_Edit_CommunicationPreferences { $greetings = self::getGreetingFields($self->_contactType); foreach ($greetings as $greeting => $details) { $customizedValue = CRM_Core_PseudoConstant::getKey('CRM_Contact_BAO_Contact', $details['field'], 'Customized'); - if (CRM_Utils_Array::value($details['field'], $fields) == $customizedValue && empty($fields[$details['customField']])) { + if (($fields[$details['field']] ?? NULL) == $customizedValue && empty($fields[$details['customField']])) { $errors[$details['customField']] = ts('Custom %1 is a required field if %1 is of type Customized.', [1 => $details['label']] ); diff --git a/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php b/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php index f06a3e55ca..fdc59e7b6e 100644 --- a/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php +++ b/civicrm/CRM/Contact/Form/Edit/TagsAndGroups.php @@ -168,7 +168,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups { $fName = $fieldName; } - $contactGroup = CRM_Contact_BAO_GroupContact::getContactGroup($id, 'Added', NULL, FALSE, TRUE); + $contactGroup = CRM_Contact_BAO_GroupContact::getContactGroup($id, 'Added', NULL, FALSE, TRUE, FALSE, TRUE, NULL, TRUE); if ($contactGroup) { if ($groupElementType == 'select') { $defaults[$fName] = implode(',', CRM_Utils_Array::collect('group_id', $contactGroup)); diff --git a/civicrm/CRM/Contact/Form/Search.php b/civicrm/CRM/Contact/Form/Search.php index 475366a5b9..575b3d38c2 100644 --- a/civicrm/CRM/Contact/Form/Search.php +++ b/civicrm/CRM/Contact/Form/Search.php @@ -682,8 +682,8 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search { // show the context menu only when we’re not searching for deleted contacts; CRM-5673 if (empty($this->_formValues['deleted_contacts'])) { $menuItems = CRM_Contact_BAO_Contact::contextMenu(); - $primaryActions = CRM_Utils_Array::value('primaryActions', $menuItems, []); - $this->_contextMenu = CRM_Utils_Array::value('moreActions', $menuItems, []); + $primaryActions = $menuItems['primaryActions'] ?? []; + $this->_contextMenu = $menuItems['moreActions'] ?? []; $this->assign('contextMenu', $primaryActions + $this->_contextMenu); } diff --git a/civicrm/CRM/Contact/Form/Search/Basic.php b/civicrm/CRM/Contact/Form/Search/Basic.php index f7fa2e6485..acb67ab51d 100644 --- a/civicrm/CRM/Contact/Form/Search/Basic.php +++ b/civicrm/CRM/Contact/Form/Search/Basic.php @@ -196,7 +196,7 @@ class CRM_Contact_Form_Search_Basic extends CRM_Contact_Form_Search { return ['task' => 'Please select a valid action.']; } - if (CRM_Utils_Array::value('task', $fields) == CRM_Contact_Task::SAVE_SEARCH) { + if (($fields['task'] ?? NULL) == CRM_Contact_Task::SAVE_SEARCH) { // dont need to check for selection of contacts for saving search return TRUE; } diff --git a/civicrm/CRM/Contact/Form/Search/Builder.php b/civicrm/CRM/Contact/Form/Search/Builder.php index f3c252c20b..2996b1f8d7 100644 --- a/civicrm/CRM/Contact/Form/Search/Builder.php +++ b/civicrm/CRM/Contact/Form/Search/Builder.php @@ -473,7 +473,7 @@ class CRM_Contact_Form_Search_Builder extends CRM_Contact_Form_Search { elseif (in_array(substr($field, 0, 3), [ 'is_', 'do_', - ]) || CRM_Utils_Array::value('data_type', $info) == 'Boolean' + ]) || ($info['data_type'] ?? NULL) == 'Boolean' ) { $options[$field] = 'yesno'; if ($entity != 'contact') { diff --git a/civicrm/CRM/Contact/Form/Task.php b/civicrm/CRM/Contact/Form/Task.php index 134379f81c..10643c407d 100644 --- a/civicrm/CRM/Contact/Form/Task.php +++ b/civicrm/CRM/Contact/Form/Task.php @@ -133,7 +133,7 @@ class CRM_Contact_Form_Task extends CRM_Core_Form_Task { $isSelectedContacts = (self::$_searchFormValues['radio_ts'] ?? NULL) === 'ts_sel'; $form->assign('isSelectedContacts', $isSelectedContacts); // all contacts or action = save a search - if ((CRM_Utils_Array::value('radio_ts', self::$_searchFormValues) == 'ts_all') || + if (((self::$_searchFormValues['radio_ts'] ?? NULL) == 'ts_all') || ($form->_task == CRM_Contact_Task::SAVE_SEARCH) ) { // since we don't store all contacts in prevnextcache, when user selects "all" use query to retrieve contacts diff --git a/civicrm/CRM/Contact/Form/Task/Delete.php b/civicrm/CRM/Contact/Form/Task/Delete.php index 44cd6be1f8..1c35f9e00d 100644 --- a/civicrm/CRM/Contact/Form/Task/Delete.php +++ b/civicrm/CRM/Contact/Form/Task/Delete.php @@ -49,8 +49,8 @@ class CRM_Contact_Form_Task_Delete extends CRM_Contact_Form_Task { // sort out whether it’s a delete-to-trash, delete-into-oblivion or restore (and let the template know) $values = $this->controller->exportValues(); - $this->_skipUndelete = (CRM_Core_Permission::check('access deleted contacts') and (CRM_Utils_Request::retrieve('skip_undelete', 'Boolean', $this) or CRM_Utils_Array::value('task', $values) == CRM_Contact_Task::DELETE_PERMANENTLY)); - $this->_restore = (CRM_Utils_Request::retrieve('restore', 'Boolean', $this) or CRM_Utils_Array::value('task', $values) == CRM_Contact_Task::RESTORE); + $this->_skipUndelete = (CRM_Core_Permission::check('access deleted contacts') and (CRM_Utils_Request::retrieve('skip_undelete', 'Boolean', $this) or ($values['task'] ?? NULL) == CRM_Contact_Task::DELETE_PERMANENTLY)); + $this->_restore = (CRM_Utils_Request::retrieve('restore', 'Boolean', $this) or ($values['task'] ?? NULL) == CRM_Contact_Task::RESTORE); if ($this->_restore && !CRM_Core_Permission::check('access deleted contacts')) { CRM_Core_Error::statusBounce(ts('You do not have permission to access this contact.')); @@ -244,7 +244,7 @@ class CRM_Contact_Form_Task_Delete extends CRM_Contact_Form_Task { } $message .= '<ul><li>' . implode('</li><li>', $this->_sharedAddressMessage['contactList']) . '</li></ul>'; - $session->setStatus($message, ts('Shared Addresses Owner Deleted'), 'info', ['expires' => 0]); + $session->setStatus($message, ts('Shared Addresses Owner Deleted'), 'info', ['expires' => 30000]); $this->set('sharedAddressMessage', NULL); } diff --git a/civicrm/CRM/Contact/Form/Task/Label.php b/civicrm/CRM/Contact/Form/Task/Label.php index ac91129e22..bb293b0dcf 100644 --- a/civicrm/CRM/Contact/Form/Task/Label.php +++ b/civicrm/CRM/Contact/Form/Task/Label.php @@ -249,7 +249,7 @@ class CRM_Contact_Form_Task_Label extends CRM_Contact_Form_Task { $valuesothers = CRM_Core_BAO_Location::getValues($paramsothers, $valuesothers); if (!empty($fv['location_type_id'])) { foreach ($valuesothers as $vals) { - if (CRM_Utils_Array::value('location_type_id', $vals) == + if (($vals['location_type_id'] ?? NULL) == CRM_Utils_Array::value('location_type_id', $fv) ) { foreach ($vals as $k => $v) { diff --git a/civicrm/CRM/Contact/Form/Task/LabelCommon.php b/civicrm/CRM/Contact/Form/Task/LabelCommon.php index f8f01063ff..4c5a412e16 100644 --- a/civicrm/CRM/Contact/Form/Task/LabelCommon.php +++ b/civicrm/CRM/Contact/Form/Task/LabelCommon.php @@ -182,7 +182,7 @@ class CRM_Contact_Form_Task_LabelCommon { $valuesothers = CRM_Core_BAO_Location::getValues($paramsothers, $valuesothers); if ($locationTypeID) { foreach ($valuesothers as $vals) { - if (CRM_Utils_Array::value('location_type_id', $vals) == + if (($vals['location_type_id'] ?? NULL) == $locationTypeID ) { foreach ($vals as $k => $v) { diff --git a/civicrm/CRM/Contact/Form/Task/PDFTrait.php b/civicrm/CRM/Contact/Form/Task/PDFTrait.php index e19cdac942..521e02664f 100644 --- a/civicrm/CRM/Contact/Form/Task/PDFTrait.php +++ b/civicrm/CRM/Contact/Form/Task/PDFTrait.php @@ -473,17 +473,7 @@ trait CRM_Contact_Form_Task_PDFTrait { //time being hack to strip ' ' //from particular letter line, CRM-6798 $this->formatMessage($html_message); - - $messageToken = CRM_Utils_Token::getTokens($html_message); - - $returnProperties = []; - if (isset($messageToken['contact'])) { - foreach ($messageToken['contact'] as $key => $value) { - $returnProperties[$value] = 1; - } - } - - return [$formValues, $html_message, $messageToken, $returnProperties]; + return [$formValues, $html_message]; } /** diff --git a/civicrm/CRM/Contact/Form/Task/SMSCommon.php b/civicrm/CRM/Contact/Form/Task/SMSCommon.php index 95cd3b627a..a86c490221 100644 --- a/civicrm/CRM/Contact/Form/Task/SMSCommon.php +++ b/civicrm/CRM/Contact/Form/Task/SMSCommon.php @@ -191,7 +191,7 @@ class CRM_Contact_Form_Task_SMSCommon { unset($form->_contactDetails[$contactId]); continue; } - elseif ($contactDetails['phone_type_id'] != CRM_Utils_Array::value('Mobile', $phoneTypes)) { + elseif ($contactDetails['phone_type_id'] != ($phoneTypes['Mobile'] ?? NULL)) { //if phone is not primary check if non-primary phone is "Mobile" $filter = ['do_not_sms' => 0]; $contactPhones = CRM_Core_BAO_Phone::allPhones($contactId, FALSE, 'Mobile', $filter); diff --git a/civicrm/CRM/Contact/Import/Parser/Contact.php b/civicrm/CRM/Contact/Import/Parser/Contact.php index 2cc086a0c7..2b38376013 100644 --- a/civicrm/CRM/Contact/Import/Parser/Contact.php +++ b/civicrm/CRM/Contact/Import/Parser/Contact.php @@ -10,6 +10,7 @@ */ use Civi\Api4\Contact; +use Civi\Api4\County; use Civi\Api4\RelationshipType; use Civi\Api4\StateProvince; use Civi\Api4\DedupeRuleGroup; @@ -1621,16 +1622,21 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser { if ($key === 'address') { foreach ($value as $index => $address) { $stateProvinceID = $address['state_province_id'] ?? NULL; + $countyID = $address['county_id'] ?? NULL; + $countryID = $address['country_id'] ?? NULL; if ($stateProvinceID) { if (!is_numeric($stateProvinceID)) { - $params['address'][$index]['state_province_id'] = $this->tryToResolveStateProvince($stateProvinceID, $address['country_id'] ?? NULL); + $params['address'][$index]['state_province_id'] = $stateProvinceID = $this->tryToResolveStateProvince($stateProvinceID, $countryID); } - elseif (!empty($address['country_id']) && is_numeric($address['country_id'])) { + elseif ($countryID && is_numeric($countryID)) { if (!$this->checkStatesForCountry((int) $address['country_id'], [$stateProvinceID])) { $params['address'][$index]['state_province_id'] = 'invalid_import_value'; } } } + if ($countyID && !is_numeric($countyID)) { + $params['address'][$index]['county_id'] = $this->tryToResolveCounty($countyID, $stateProvinceID, $countryID); + } } } elseif (is_array($value) && !in_array($key, ['email', 'phone', 'im', 'website', 'openid'], TRUE)) { @@ -1709,4 +1715,43 @@ class CRM_Contact_Import_Parser_Contact extends CRM_Import_Parser { } } + /** + * @param string $countyID + * @param string|int|null $stateProvinceID + * @param string|int|null $countryID + * + * @return string|int + * @throws \CRM_Core_Exception + */ + private function tryToResolveCounty(string $countyID, $stateProvinceID, $countryID) { + $cacheString = $countryID . '_' . $stateProvinceID . '_' . $countyID; + if (!isset(\Civi::$statics[$cacheString])) { + $possibleCounties = $this->ambiguousOptions['county_id'][mb_strtolower($countyID)] ?? NULL; + if (!$possibleCounties || $countyID === 'invalid_import_value') { + \Civi::$statics[$cacheString] = $countyID; + } + else { + if ($stateProvinceID === NULL && $countryID === NULL) { + $countryID = \Civi::settings()->get('defaultContactCountry'); + } + $countyLookUp = County::get(FALSE) + ->addWhere('id', 'IN', $possibleCounties); + if ($countryID && is_numeric($countryID)) { + $countyLookUp->addWhere('state_province_id.country_id', '=', $countryID); + } + if ($stateProvinceID && is_numeric($stateProvinceID)) { + $countyLookUp->addWhere('state_province_id', '=', $stateProvinceID); + } + $county = $countyLookUp->execute(); + if (count($county) === 1) { + \Civi::$statics[$cacheString] = $county->first()['id']; + } + else { + \Civi::$statics[$cacheString] = 'invalid_import_value'; + } + } + } + return \Civi::$statics[$cacheString]; + } + } diff --git a/civicrm/CRM/Contact/Page/Inline/ContactInfo.php b/civicrm/CRM/Contact/Page/Inline/ContactInfo.php index 9dad262779..832711780a 100644 --- a/civicrm/CRM/Contact/Page/Inline/ContactInfo.php +++ b/civicrm/CRM/Contact/Page/Inline/ContactInfo.php @@ -35,7 +35,7 @@ class CRM_Contact_Page_Inline_ContactInfo extends CRM_Core_Page { CRM_Contact_BAO_Contact::getValues($params, $defaults); //get the current employer name - if (CRM_Utils_Array::value('contact_type', $defaults) == 'Individual') { + if (($defaults['contact_type'] ?? NULL) == 'Individual') { if (!empty($defaults['employer_id']) && !empty($defaults['organization_name'])) { $defaults['current_employer'] = $defaults['organization_name']; $defaults['current_employer_id'] = $defaults['employer_id']; diff --git a/civicrm/CRM/Contact/Selector.php b/civicrm/CRM/Contact/Selector.php index 888554112b..e57cbbcb13 100644 --- a/civicrm/CRM/Contact/Selector.php +++ b/civicrm/CRM/Contact/Selector.php @@ -262,7 +262,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 'qs' => "reset=1&cid=%%id%%{$searchContext}{$extraParams}", 'title' => ts('View Contact Details'), 'ref' => 'view-contact', - 'weight' => -20, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::VIEW), ], CRM_Core_Action::UPDATE => [ 'name' => ts('Edit'), @@ -271,36 +271,36 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 'qs' => "reset=1&action=update&cid=%%id%%{$searchContext}{$extraParams}", 'title' => ts('Edit Contact Details'), 'ref' => 'edit-contact', - 'weight' => -10, + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::UPDATE), ], ]; - $config = CRM_Core_Config::singleton(); //CRM-16552: mapAPIKey is not mandatory as google no longer requires an API Key - if ($config->mapProvider && ($config->mapAPIKey || $config->mapProvider == 'Google')) { + if (\Civi::settings()->get('mapProvider') === 'Google' || (\Civi::settings()->get('mapProvider') && \Civi::settings()->get('mapAPIKey'))) { self::$_links[CRM_Core_Action::MAP] = [ 'name' => ts('Map'), 'url' => 'civicrm/contact/map', 'qs' => "reset=1&cid=%%id%%{$searchContext}{$extraParams}", 'title' => ts('Map Contact'), + 'weight' => CRM_Core_Action::getWeight(CRM_Core_Action::MAP), ]; } // Adding Context Menu Links in more action if ($contextMenu) { $counter = 7000; - foreach ($contextMenu as $key => $value) { + foreach ($contextMenu as $value) { $contextVal = '&context=' . $value['key']; - if ($value['key'] == 'delete') { + if ($value['key'] === 'delete') { $contextVal = $searchContext; } $url = "civicrm/contact/view/{$value['key']}"; $qs = "reset=1&action=add&cid=%%id%%{$contextVal}{$extraParams}"; - if ($value['key'] == 'activity') { + if ($value['key'] === 'activity') { $qs = "action=browse&selectedChild=activity&reset=1&cid=%%id%%{$extraParams}"; } - elseif ($value['key'] == 'email') { - $url = "civicrm/contact/view/activity"; + elseif ($value['key'] === 'email') { + $url = 'civicrm/contact/view/activity'; $qs = "atype=3&action=add&reset=1&cid=%%id%%{$extraParams}"; } @@ -311,6 +311,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se 'title' => $value['title'], 'ref' => $value['ref'], 'class' => $value['class'] ?? NULL, + 'weight' => $value['weight'], ]; } } @@ -418,7 +419,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se if (strpos($name, '-') !== FALSE) { [$fieldName, $lType, $type] = CRM_Utils_System::explode('-', $name, 3); - if ($lType == 'Primary') { + if ($lType === 'Primary') { $locationTypeName = 1; } else { @@ -442,7 +443,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } } //to handle sort key for Internal contactId.CRM-2289 - if ($name == 'id') { + if ($name === 'id') { $name = 'contact_id'; } @@ -558,7 +559,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se if (($output == CRM_Core_Selector_Controller::EXPORT || $output == CRM_Core_Selector_Controller::SCREEN ) && - $this->_formValues['radio_ts'] == 'ts_sel' + $this->_formValues['radio_ts'] === 'ts_sel' ) { $includeContactIds = TRUE; } @@ -591,7 +592,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se // mask value to hide map link if there are not lat/long $mapMask = $mask & 4095; - if ($this->_searchContext == 'smog') { + if ($this->_searchContext === 'smog') { $gc = CRM_Core_SelectValues::groupContactStatus(); } @@ -607,10 +608,10 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se if (strpos($key, '-') !== FALSE) { [$fieldName, $id, $type] = CRM_Utils_System::explode('-', $key, 3); - if ($id == 'Primary') { + if ($id === 'Primary') { $locationTypeName = 1; } - elseif ($fieldName == 'url') { + elseif ($fieldName === 'url') { $locationTypeName = "website-{$id}"; } else { @@ -671,7 +672,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se $this->_query->convertToPseudoNames($result); // the columns we are interested in foreach ($names as $property) { - if ($property == 'status') { + if ($property === 'status') { continue; } if ($cfID = CRM_Core_BAO_CustomField::getKeyID($property)) { @@ -736,7 +737,7 @@ class CRM_Contact_Selector extends CRM_Core_Selector_Base implements CRM_Core_Se } if ($output != CRM_Core_Selector_Controller::EXPORT && - $this->_searchContext == 'smog' + $this->_searchContext === 'smog' ) { if (empty($result->status) && $groupID diff --git a/civicrm/CRM/Contribute/BAO/Contribution.php b/civicrm/CRM/Contribute/BAO/Contribution.php index 574cde7f65..c164c36fb5 100644 --- a/civicrm/CRM/Contribute/BAO/Contribution.php +++ b/civicrm/CRM/Contribute/BAO/Contribution.php @@ -2146,6 +2146,11 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ /** * Repeat a transaction as part of a recurring series. * + * @internal NOT supported to be called from outside of core. Note this function + * was made public to be called from the v3 api which IS supported so we can + * amend it without regards to possible external callers as this warning + * was added in the same commit as it was made public rather than protected. + * * The ideal flow is * 1) Processor calls contribution.repeattransaction with contribution_status_id = Pending * 2) The repeattransaction loads the 'template contribution' and calls a hook to allow altering of it . @@ -2173,18 +2178,55 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ * as a template and is_template is set to TRUE. If this cannot be found the latest added contribution * is used. * - * @param array $contributionParams + * @param int $recurringContributionID * * @return bool|array * @throws \CRM_Core_Exception * @throws \Civi\API\Exception\UnauthorizedException * @todo * - * 2) repeattransaction code is current munged into completeTransaction code for historical bad coding reasons + * 2) repeattransaction code is callable from completeTransaction code for historical bad coding reasons * 3) Repeat transaction duplicates rather than calls Order.create * 4) Use of payment.create still limited - completetransaction is more common. */ - protected static function repeatTransaction(array $input, array $contributionParams) { + public static function repeatTransaction(array $input, int $recurringContributionID) { + // @todo - this was shared with `completeOrder` and not all necessarily apply. + $inputContributionWhiteList = [ + 'fee_amount', + 'net_amount', + 'trxn_id', + 'check_number', + 'payment_instrument_id', + 'is_test', + 'campaign_id', + 'receive_date', + 'receipt_date', + 'contribution_status_id', + 'card_type_id', + 'pan_truncation', + ]; + + $paymentProcessorId = $input['payment_processor_id'] ?? NULL; + + $completedContributionStatusID = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); + + // @todo this was taken from completeContribution - it may be this just duplicates + // upcoming filtering & can go. + $contributionParams = array_merge([ + 'contribution_status_id' => $completedContributionStatusID, + ], array_intersect_key($input, array_fill_keys($inputContributionWhiteList, 1) + )); + + $contributionParams['payment_processor'] = $paymentProcessorId; + + if (empty($contributionParams['payment_instrument_id']) && $paymentProcessorId) { + $contributionParams['payment_instrument_id'] = PaymentProcessor::get(FALSE)->addWhere('id', '=', $paymentProcessorId)->addSelect('payment_instrument_id')->execute()->first()['payment_instrument_id']; + } + + if ($recurringContributionID) { + $contributionParams['contribution_recur_id'] = $recurringContributionID; + } + $isCompleted = CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $contributionParams['contribution_status_id']) === 'Completed'; $templateContribution = CRM_Contribute_BAO_ContributionRecur::getTemplateContribution( (int) $contributionParams['contribution_recur_id'], [ @@ -2212,6 +2254,10 @@ LEFT JOIN civicrm_contribution contribution ON ( componentPayment.contribution_ CRM_Contribute_BAO_ContributionRecur::updateRecurLinkedPledge($createContribution['id'], $contributionParams['contribution_recur_id'], $contributionParams['status_id'], $contributionParams['total_amount']); + if ($isCompleted) { + // Ideally add deprecation notice here & only accept pending for repeattransaction. + return self::completeOrder($input, NULL, $createContribution['id']); + } return $createContribution; } @@ -3063,7 +3109,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $additionalParticipantId = []; $contributionStatus = CRM_Core_PseudoConstant::getName('CRM_Contribute_BAO_Contribution', 'contribution_status_id', $params['contribution_status_id'] ?? NULL); - if (CRM_Utils_Array::value('contribution_mode', $params) === 'participant') { + if (($params['contribution_mode'] ?? NULL) === 'participant') { $entityId = $params['participant_id']; $entityTable = 'civicrm_participant'; $additionalParticipantId = CRM_Event_BAO_Participant::getAdditionalParticipantIds($entityId); @@ -3769,6 +3815,10 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac * @throws \CRM_Core_Exception */ public static function completeOrder($input, $recurringContributionID, $contributionID, $isPostPaymentCreate = FALSE) { + if (!$contributionID) { + CRM_Core_Error::deprecatedFunctionWarning('v3api Contribution.repeattransaction. This handling will be removed around 5.70 (calling this function directly has never been supported outside core anyway)'); + return self::repeatTransaction($input, $recurringContributionID); + } $transaction = new CRM_Core_Transaction(); $inputContributionWhiteList = [ @@ -3805,16 +3855,6 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $contributionParams['contribution_recur_id'] = $recurringContributionID; } - if (!$contributionID) { - $contributionResult = self::repeatTransaction($input, $contributionParams); - $contributionID = $contributionResult['id']; - if ($contributionParams['contribution_status_id'] === $completedContributionStatusID) { - // Ideally add deprecation notice here & only accept pending for repeattransaction. - return self::completeOrder($input, NULL, $contributionID); - } - return $contributionResult; - } - if ($contributionParams['contribution_status_id'] === $completedContributionStatusID) { self::updateMembershipBasedOnCompletionOfContribution( $contributionID, @@ -3834,9 +3874,7 @@ INNER JOIN civicrm_activity ON civicrm_activity_contact.activity_id = civicrm_ac $contributionParams['id'] = $contributionID; $contributionParams['is_post_payment_create'] = $isPostPaymentCreate; - if (empty($contributionResult)) { - $contributionResult = civicrm_api3('Contribution', 'create', $contributionParams); - } + $contributionResult = civicrm_api3('Contribution', 'create', $contributionParams); $transaction->commit(); \Civi::log()->info("Contribution {$contributionParams['id']} updated successfully"); diff --git a/civicrm/CRM/Contribute/BAO/ContributionRecur.php b/civicrm/CRM/Contribute/BAO/ContributionRecur.php index 3f7731ef28..6d74fa4f07 100644 --- a/civicrm/CRM/Contribute/BAO/ContributionRecur.php +++ b/civicrm/CRM/Contribute/BAO/ContributionRecur.php @@ -973,6 +973,7 @@ INNER JOIN civicrm_contribution con ON ( con.id = mp.contribution_id ) if (!empty($existing['installments']) && self::isComplete($recurringContributionID, $existing['installments'])) { $params['contribution_status_id'] = 'Completed'; $params['next_sched_contribution_date'] = 'null'; + $params['end_date'] = 'now'; } else { // Only update next sched date if it's empty or up to 48 hours away because payment processors may be managing diff --git a/civicrm/CRM/Contribute/DAO/Contribution.php b/civicrm/CRM/Contribute/DAO/Contribution.php index 42014c5779..6fc472c9b2 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:c612cd79d620e91f7498a3883c635293) + * (GenCodeChecksum:4816aa376fc64fa748237d9eb9b68e01) */ /** @@ -944,6 +944,7 @@ class CRM_Contribute_DAO_Contribution extends CRM_Core_DAO { 'localizable' => 0, 'FKClassName' => 'CRM_Contribute_DAO_ContributionRecur', 'html' => [ + 'type' => 'EntityRef', 'label' => ts("Recurring Contribution"), ], 'readonly' => TRUE, diff --git a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php index 3c687182d1..90b2fe1522 100644 --- a/civicrm/CRM/Contribute/Form/AbstractEditPayment.php +++ b/civicrm/CRM/Contribute/Form/AbstractEditPayment.php @@ -697,7 +697,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { if (!$this->_mode) { return; } - $js = ($isBuildRecurBlock ? ['onChange' => "buildRecurBlock( this.value ); return false;"] : NULL); + $js = ($isBuildRecurBlock ? ['onChange' => "buildRecurBlock( this.value ); return false;"] : []); if ($isBuildAutoRenewBlock) { $js = ['onChange' => "buildAutoRenew( null, this.value, '{$this->_mode}');"]; } @@ -706,7 +706,7 @@ class CRM_Contribute_Form_AbstractEditPayment extends CRM_Contact_Form_Task { ts('Payment Processor'), array_diff_key($this->_processors, [0 => 1]), $isRequired, - $js + $js + ['class' => 'crm-select2'] ); // The concept of _online is not really explained & the code is old // @todo figure out & document. diff --git a/civicrm/CRM/Contribute/Form/AdditionalInfo.php b/civicrm/CRM/Contribute/Form/AdditionalInfo.php index f14aa60698..2d451f782c 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalInfo.php +++ b/civicrm/CRM/Contribute/Form/AdditionalInfo.php @@ -128,10 +128,9 @@ class CRM_Contribute_Form_AdditionalInfo { $form->add('select', 'contribution_page_id', ts('Contribution Page'), - [ - '' => ts('- select -'), - ] + - CRM_Contribute_PseudoConstant::contributionPage() + ['' => ts('- select -')] + CRM_Contribute_PseudoConstant::contributionPage(), + FALSE, + ['class' => 'crm-select2'] ); $form->add('textarea', 'note', ts('Notes'), ["rows" => 4, "cols" => 60]); diff --git a/civicrm/CRM/Contribute/Form/AdditionalPayment.php b/civicrm/CRM/Contribute/Form/AdditionalPayment.php index f2247c0969..bbf41548d0 100644 --- a/civicrm/CRM/Contribute/Form/AdditionalPayment.php +++ b/civicrm/CRM/Contribute/Form/AdditionalPayment.php @@ -191,7 +191,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract } CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, FALSE, TRUE, CRM_Utils_Request::retrieve('payment_instrument_id', 'Integer')); - $this->add('select', 'payment_processor_id', ts('Payment Processor'), $this->_processors, NULL); + $this->addPaymentProcessorSelect(FALSE); $attributes = CRM_Core_DAO::getAttribute('CRM_Financial_DAO_FinancialTrxn'); @@ -209,7 +209,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract $eventID = CRM_Core_DAO::getFieldValue('CRM_Event_DAO_Participant', $this->_id, 'event_id', 'id'); } - $this->add('select', 'from_email_address', ts('Receipt From'), CRM_Financial_BAO_Payment::getValidFromEmailsForPayment($eventID ?? NULL)); + $this->add('select', 'from_email_address', ts('Receipt From'), CRM_Financial_BAO_Payment::getValidFromEmailsForPayment($eventID ?? NULL), FALSE, ['class' => 'crm-select2 huge']); $this->add('textarea', 'receipt_text', ts('Confirmation Message')); @@ -236,7 +236,7 @@ class CRM_Contribute_Form_AdditionalPayment extends CRM_Contribute_Form_Abstract ts('Payment Method'), ['' => ts('- select -')] + CRM_Contribute_PseudoConstant::paymentInstrument(), TRUE, - ['onChange' => "return showHideByValue('payment_instrument_id','4','checkNumber','table-row','select',false);"] + ['onChange' => "return showHideByValue('payment_instrument_id','4','checkNumber','table-row','select',false);", 'class' => 'crm-select2'] ); $this->add('text', 'check_number', ts('Check Number'), $attributes['financial_trxn_check_number']); diff --git a/civicrm/CRM/Contribute/Form/CancelSubscription.php b/civicrm/CRM/Contribute/Form/CancelSubscription.php index 940b8256b0..8ce402c574 100644 --- a/civicrm/CRM/Contribute/Form/CancelSubscription.php +++ b/civicrm/CRM/Contribute/Form/CancelSubscription.php @@ -257,7 +257,7 @@ class CRM_Contribute_Form_CancelSubscription extends CRM_Contribute_Form_Contrib $msgType = 'success'; } - if (CRM_Utils_Array::value('is_notify', $params) == 1) { + if (($params['is_notify'] ?? NULL) == 1) { // send notification $sendTemplateParams = [ diff --git a/civicrm/CRM/Contribute/Form/Contribution.php b/civicrm/CRM/Contribute/Form/Contribution.php index d4500ecd1f..9ee904c5a8 100644 --- a/civicrm/CRM/Contribute/Form/Contribution.php +++ b/civicrm/CRM/Contribute/Form/Contribution.php @@ -651,7 +651,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP ts('Financial Type'), ['' => ts('- select -')] + $financialTypes, TRUE, - ['onChange' => "CRM.buildCustomData( 'Contribution', this.value );"] + ['onChange' => "CRM.buildCustomData( 'Contribution', this.value );", 'class' => 'crm-select2'] ); $paymentInstrument = FALSE; @@ -662,7 +662,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $paymentInstrument = $this->add('select', 'payment_instrument_id', ts('Payment Method'), ['' => ts('- select -')] + CRM_Contribute_BAO_Contribution::buildOptions('payment_instrument_id', 'create'), - $required, ['onChange' => "return showHideByValue('payment_instrument_id','{$checkPaymentID}','checkNumber','table-row','select',false);"] + $required, + ['onChange' => "return showHideByValue('payment_instrument_id','{$checkPaymentID}','checkNumber','table-row','select',false);", 'class' => 'crm-select2'] ); } @@ -671,7 +672,7 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP //add receipt for offline contribution $this->addElement('checkbox', 'is_email_receipt', ts('Send Receipt?')); - $this->add('select', 'from_email_address', ts('Receipt From'), $this->_fromEmails); + $this->add('select', 'from_email_address', ts('Receipt From'), $this->_fromEmails, FALSE, ['class' => 'crm-select2 huge']); $componentDetails = []; if ($this->_id) { @@ -691,7 +692,8 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $statusElement = $this->add('select', 'contribution_status_id', ts('Contribution Status'), $status, - FALSE + FALSE, + ['class' => 'crm-select2'] ); $currencyFreeze = FALSE; @@ -756,10 +758,9 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP // instead of selecting manually $financialTypeIds = CRM_Price_BAO_PriceSet::getAssoc(FALSE, 'CiviContribute', 'financial_type_id'); $element = $this->add('select', 'price_set_id', ts('Choose price set'), - [ - '' => ts('Choose price set'), - ] + $priceSets, - NULL, ['onchange' => "buildAmount( this.value, " . json_encode($financialTypeIds) . ");"] + ['' => ts('Choose price set')] + $priceSets, + NULL, + ['onchange' => "buildAmount( this.value, " . json_encode($financialTypeIds) . ");", 'class' => 'crm-select2'] ); if ($this->_online && !($this->_action & CRM_Core_Action::UPDATE)) { $element->freeze(); @@ -850,9 +851,11 @@ class CRM_Contribute_Form_Contribution extends CRM_Contribute_Form_AbstractEditP $trxnId->freeze(); } $financialType->freeze(); - $this->assign('freezeFinancialType', TRUE); + $freezeFinancialType = TRUE; + } } + $this->assign('freezeFinancialType', $freezeFinancialType ?? FALSE); if ($this->_action & CRM_Core_Action::VIEW) { $this->freeze(); diff --git a/civicrm/CRM/Contribute/Form/Contribution/Main.php b/civicrm/CRM/Contribute/Form/Contribution/Main.php index c34b3f4bf1..035d529df2 100644 --- a/civicrm/CRM/Contribute/Form/Contribution/Main.php +++ b/civicrm/CRM/Contribute/Form/Contribution/Main.php @@ -429,8 +429,9 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $prms = ['id' => $this->_pcpId]; CRM_Core_DAO::commonRetrieve('CRM_PCP_DAO_PCP', $prms, $pcpInfo); if ($pcpInfo['is_honor_roll']) { - $this->add('checkbox', 'pcp_display_in_roll', ts('Show my contribution in the public honor roll'), NULL, NULL, - ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"] + $this->add('checkbox', 'pcp_display_in_roll', ts('Show my contribution in the public honor roll'), + ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"], + FALSE ); $extraOption = ['onclick' => "return pcpAnonymous( );"]; $this->addRadio('pcp_is_anonymous', NULL, [ts('Include my name and message'), ts('List my contribution anonymously')], [], ' ', FALSE, [$extraOption, $extraOption]); @@ -681,7 +682,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu //} $form->add('text', 'installments', ts('installments'), - $attributes['installments'] + $attributes['installments'] + ['class' => 'two'] ); $form->addRule('installments', ts('Number of installments must be a whole number.'), 'integer'); @@ -714,11 +715,11 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu } } } - $frequencyUnit = &$form->addElement('select', 'frequency_unit', NULL, $units, ['aria-label' => ts('Frequency Unit')]); + $frequencyUnit = &$form->add('select', 'frequency_unit', NULL, $units, FALSE, ['aria-label' => ts('Frequency Unit'), 'class' => 'crm-select2 eight']); } if (!empty($form->_values['is_recur_interval']) || $className == 'CRM_Contribute_Form_Contribution') { - $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every')]); + $form->add('text', 'frequency_interval', $unit, $attributes['frequency_interval'] + ['aria-label' => ts('Every'), 'class' => 'two']); $form->addRule('frequency_interval', ts('Frequency must be a whole number (EXAMPLE: Every 3 months).'), 'integer'); } else { @@ -821,7 +822,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $membershipFieldId = $contributionFieldId = $errorKey = $otherFieldId = NULL; foreach ($self->_values['fee'] as $fieldKey => $fieldValue) { // if 'No thank you' membership is selected then set $membershipFieldId - if ($fieldValue['name'] == 'membership_amount' && CRM_Utils_Array::value('price_' . $fieldKey, $fields) == 0) { + if ($fieldValue['name'] == 'membership_amount' && ($fields['price_' . $fieldKey] ?? NULL) == 0) { $membershipFieldId = $fieldKey; } elseif ($membershipFieldId) { @@ -832,7 +833,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $contributionFieldId = $fieldKey; } - if (!$errorKey || CRM_Utils_Array::value('price_' . $contributionFieldId, $fields) == '0') { + if (!$errorKey || ($fields['price_' . $contributionFieldId] ?? NULL) == '0') { $errorKey = $fieldKey; } } @@ -958,7 +959,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu // validate PCP fields - if not anonymous, we need a nick name value if ($self->_pcpId && !empty($fields['pcp_display_in_roll']) && empty($fields['pcp_is_anonymous']) && - CRM_Utils_Array::value('pcp_roll_nickname', $fields) == '' + ($fields['pcp_roll_nickname'] ?? NULL) == '' ) { $errors['pcp_roll_nickname'] = ts('Please enter a name to include in the Honor Roll, or select \'contribute anonymously\'.'); } @@ -991,7 +992,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu if (!isset($fields['pledge_installments'])) { $errors['pledge_installments'] = ts('Pledge Installments is required field.'); } - elseif (CRM_Utils_Array::value('pledge_installments', $fields) == 1) { + elseif (($fields['pledge_installments'] ?? NULL) == 1) { $errors['pledge_installments'] = ts('Pledges consist of multiple scheduled payments. Select one-time contribution if you want to make your gift in a single payment.'); } elseif (empty($fields['pledge_installments'])) { @@ -1061,7 +1062,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $params['amount_other'] = CRM_Utils_Rule::cleanMoney($params['amount_other']); } - if (CRM_Utils_Array::value('amount', $params) == 'amount_other_radio' || !empty($params['amount_other'])) { + if (($params['amount'] ?? NULL) == 'amount_other_radio' || !empty($params['amount_other'])) { $amount = $params['amount_other']; } elseif (!empty($params['pledge_amount'])) { @@ -1143,7 +1144,7 @@ class CRM_Contribute_Form_Contribution_Main extends CRM_Contribute_Form_Contribu $params['amount'] = $selectedPriceOptionID; if ($priceField->name == 'contribution_amount' || ($priceField->name == 'membership_amount' && - CRM_Utils_Array::value('is_separate_payment', $this->_membershipBlock) == 0) + ($this->_membershipBlock['is_separate_payment'] ?? NULL) == 0) ) { $this->_values['amount'] = $priceOptions[$selectedPriceOptionID]['amount'] ?? NULL; } diff --git a/civicrm/CRM/Contribute/Form/ContributionBase.php b/civicrm/CRM/Contribute/Form/ContributionBase.php index e97fd44536..39afb969c4 100644 --- a/civicrm/CRM/Contribute/Form/ContributionBase.php +++ b/civicrm/CRM/Contribute/Form/ContributionBase.php @@ -961,12 +961,12 @@ class CRM_Contribute_Form_ContributionBase extends CRM_Core_Form { if (count($organizations)) { // Related org url - pass checksum if needed $args = [ - 'ufId' => $form->_values['onbehalf_profile_id'], + 'ufID' => $form->_values['onbehalf_profile_id'], 'cid' => '', ]; if (!empty($_GET['cs'])) { $args = [ - 'ufId' => $form->_values['onbehalf_profile_id'], + 'ufID' => $form->_values['onbehalf_profile_id'], 'uid' => $this->_contactID, 'cs' => $_GET['cs'], 'cid' => '', diff --git a/civicrm/CRM/Contribute/Form/ContributionPage.php b/civicrm/CRM/Contribute/Form/ContributionPage.php index 6af8a60bf9..f09086dfd0 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage.php @@ -260,8 +260,10 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { $this->set('values', $this->_values); } $defaults = $this->_values; + // These fields are not exposed on the form and 'name' is exposed on amount, with a different meaning. + // see https://lab.civicrm.org/dev/core/-/issues/4453. + unset($defaults['name'], $defaults['created_id'], $defaults['created_date']); - $config = CRM_Core_Config::singleton(); if (isset($this->_id)) { //set defaults for pledgeBlock values. @@ -285,7 +287,7 @@ class CRM_Contribute_Form_ContributionPage extends CRM_Core_Form { ]; foreach ($pledgeBlock as $key) { $defaults[$key] = $pledgeBlockDefaults[$key] ?? NULL; - if ($key == 'pledge_start_date' && !empty($pledgeBlockDefaults[$key])) { + if ($key === 'pledge_start_date' && !empty($pledgeBlockDefaults[$key])) { $defaultPledgeDate = (array) json_decode($pledgeBlockDefaults['pledge_start_date']); $pledgeDateFields = [ 'pledge_calendar_date' => 'calendar_date', diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php index be00fb12b9..b0d246f374 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Amount.php @@ -175,7 +175,7 @@ class CRM_Contribute_Form_ContributionPage_Amount extends CRM_Contribute_Form_Co ); $this->add('datepicker', 'pledge_calendar_date', ts('Specific Calendar Date'), [], FALSE, ['time' => FALSE]); $month = CRM_Utils_Date::getCalendarDayOfMonth(); - $this->add('select', 'pledge_calendar_month', ts('Specific day of Month'), $month); + $this->add('select', 'pledge_calendar_month', ts('Specific day of Month'), $month, FALSE, ['class' => 'crm-select2 eight']); $pledgeDefaults = [ 'contribution_date' => ts('Day of Contribution'), 'calendar_date' => ts('Specific Calendar Date'), diff --git a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php index 7669084a27..ebf7b9cc78 100644 --- a/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php +++ b/civicrm/CRM/Contribute/Form/ContributionPage/Settings.php @@ -376,8 +376,8 @@ class CRM_Contribute_Form_ContributionPage_Settings extends CRM_Contribute_Form_ //On subsequent honor_block_is_active uncheck, disable(don't delete) //that particular honoree profile entry in UFjoin table, CRM-13981 - $ufId = CRM_Core_BAO_UFJoin::findJoinEntryId($ufJoinParam); - if ($ufId) { + $ufID = CRM_Core_BAO_UFJoin::findJoinEntryId($ufJoinParam); + if ($ufID) { $ufJoinParam['uf_group_id'] = CRM_Core_BAO_UFJoin::findUFGroupId($ufJoinParam); $ufJoinParam['is_active'] = 0; CRM_Core_BAO_UFJoin::create($ufJoinParam); diff --git a/civicrm/CRM/Contribute/Form/ManagePremiums.php b/civicrm/CRM/Contribute/Form/ManagePremiums.php index 965c67f4ae..247c3df103 100644 --- a/civicrm/CRM/Contribute/Form/ManagePremiums.php +++ b/civicrm/CRM/Contribute/Form/ManagePremiums.php @@ -195,14 +195,14 @@ class CRM_Contribute_Form_ManagePremiums extends CRM_Contribute_Form { public static function formRule($params, $files) { // If choosing to upload an image, then an image must be provided - if (CRM_Utils_Array::value('imageOption', $params) == 'image' + if (($params['imageOption'] ?? NULL) == 'image' && empty($files['uploadFile']['name']) ) { $errors['uploadFile'] = ts('A file must be selected'); } // If choosing to use image URLs, then both URLs must be present - if (CRM_Utils_Array::value('imageOption', $params) == 'thumbnail') { + if (($params['imageOption'] ?? NULL) == 'thumbnail') { if (!$params['imageUrl']) { $errors['imageUrl'] = ts('Image URL is Required'); } diff --git a/civicrm/CRM/Contribute/Form/Search.php b/civicrm/CRM/Contribute/Form/Search.php index c3f65c0c13..8997b4208e 100644 --- a/civicrm/CRM/Contribute/Form/Search.php +++ b/civicrm/CRM/Contribute/Form/Search.php @@ -253,11 +253,6 @@ class CRM_Contribute_Form_Search extends CRM_Core_Form_Search { // @todo - stop changing formValues - respect submitted form values, change a working array. $this->fixFormValues(); - // We don't show test records in summaries or dashboards - if (empty($this->_formValues['contribution_test']) && $this->_force && !empty($this->_context) && $this->_context === 'dashboard') { - // @todo - stop changing formValues - respect submitted form values, change a working array. - $this->_formValues['contribution_test'] = 0; - } // We don't show template records in summaries or dashboards if (empty($this->_formValues['is_template']) && $this->_force && !empty($this->_context) && ($this->_context === 'dashboard' || $this->_context === 'contribution')) { // @todo - stop changing formValues - respect submitted form values, change a working array. diff --git a/civicrm/CRM/Contribute/Form/Task/Invoice.php b/civicrm/CRM/Contribute/Form/Task/Invoice.php index c67b0a10ff..c43a24be99 100644 --- a/civicrm/CRM/Contribute/Form/Task/Invoice.php +++ b/civicrm/CRM/Contribute/Form/Task/Invoice.php @@ -138,7 +138,7 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $this->preventAjaxSubmit(); $this->assign('isAdmin', CRM_Core_Permission::check('administer CiviCRM')); - $this->add('select', 'from_email_address', ts('From'), $this->_fromEmails, TRUE); + $this->add('select', 'from_email_address', ts('From'), $this->_fromEmails, TRUE, ['class' => 'crm-select2 huge']); if ($this->_selectedOutput != 'email') { $this->addElement('radio', 'output', NULL, ts('Email Invoice'), 'email_invoice'); $this->addElement('radio', 'output', NULL, ts('PDF Invoice'), 'pdf_invoice'); @@ -149,13 +149,12 @@ class CRM_Contribute_Form_Task_Invoice extends CRM_Contribute_Form_Task { $this->addRule('from_email_address', ts('From Email Address is required'), 'required'); } - $attributes = ['class' => 'huge']; $this->addEntityRef('cc_id', ts('CC'), [ 'entity' => 'Email', 'multiple' => TRUE, ]); - $this->add('text', 'subject', ts('Subject'), $attributes + ['placeholder' => ts('Optional')]); - $this->add('wysiwyg', 'email_comment', ts('If you would like to add personal message to email please add it here. (If sending to more then one receipient the same message will be sent to each contact.)'), [ + $this->add('text', 'subject', ts('Replace Subject'), ['class' => 'huge', 'placeholder' => ts('Optional')]); + $this->add('wysiwyg', 'email_comment', ts('Additional Message'), [ 'rows' => 2, 'cols' => 40, ]); diff --git a/civicrm/CRM/Contribute/Form/UpdateBilling.php b/civicrm/CRM/Contribute/Form/UpdateBilling.php index 272a7ed234..b7e60559b0 100644 --- a/civicrm/CRM/Contribute/Form/UpdateBilling.php +++ b/civicrm/CRM/Contribute/Form/UpdateBilling.php @@ -87,7 +87,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution if ($this->getSubscriptionDetails()->contact_id) { $fields = []; - $names = array( + $names = [ 'first_name', 'middle_name', 'last_name', @@ -96,7 +96,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution "postal_code-{$this->_bltID}", "country_id-{$this->_bltID}", "state_province_id-{$this->_bltID}", - ); + ]; foreach ($names as $name) { $fields[$name] = 1; } @@ -139,20 +139,20 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution $type = 'submit'; } - $this->addButtons(array( - array( + $this->addButtons([ + [ 'type' => $type, 'name' => ts('Save'), 'isDefault' => TRUE, - ), - array( + ], + [ 'type' => 'cancel', 'name' => ts('Cancel'), - ), - )); + ], + ]); CRM_Core_Payment_Form::buildPaymentForm($this, $this->_paymentProcessor, TRUE, TRUE); - $this->addFormRule(array('CRM_Contribute_Form_UpdateBilling', 'formRule'), $this); + $this->addFormRule(['CRM_Contribute_Form_UpdateBilling', 'formRule'], $this); } /** @@ -221,7 +221,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution // build tpl params if ($this->getSubscriptionDetails()->membership_id) { - $inputParams = array('id' => $this->getSubscriptionDetails()->membership_id); + $inputParams = ['id' => $this->getSubscriptionDetails()->membership_id]; CRM_Member_BAO_Membership::getValues($inputParams, $tplParams); $tplParams = $tplParams[$this->getSubscriptionDetails()->membership_id]; $tplParams['membership_status'] = CRM_Core_DAO::getFieldValue('CRM_Member_DAO_MembershipStatus', $tplParams['status_id']); @@ -234,24 +234,24 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution } else { $status = ts('Billing details for the recurring contribution of %1, every %2 %3 have been updated.', - array( + [ 1 => $this->getSubscriptionDetails()->amount, 2 => $this->getSubscriptionDetails()->frequency_interval, 3 => $this->getSubscriptionDetails()->frequency_unit, - ) + ] ); $msgTitle = ts('Details Updated'); $msgType = 'success'; - $tplParams = array( + $tplParams = [ 'recur_frequency_interval' => $this->getSubscriptionDetails()->frequency_interval, 'recur_frequency_unit' => $this->getSubscriptionDetails()->frequency_unit, 'amount' => $this->getSubscriptionDetails()->amount, - ); + ]; } // format new address for display - $addressParts = array("street_address", "city", "postal_code", "state_province", "country"); + $addressParts = ["street_address", "city", "postal_code", "state_province", "country"]; foreach ($addressParts as $part) { $addressParts[$part] = $processorParams[$part] ?? NULL; } @@ -260,7 +260,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution // format old address to store in activity details $this->_defaults["state_province-{$this->_bltID}"] = CRM_Core_PseudoConstant::stateProvince($this->_defaults["state_province-{$this->_bltID}"], FALSE); $this->_defaults["country-{$this->_bltID}"] = CRM_Core_PseudoConstant::country($this->_defaults["country-{$this->_bltID}"], FALSE); - $addressParts = array("street_address", "city", "postal_code", "state_province", "country"); + $addressParts = ["street_address", "city", "postal_code", "state_province", "country"]; foreach ($addressParts as $part) { $key = "{$part}-{$this->_bltID}"; $addressParts[$part] = $this->_defaults[$key] ?? NULL; @@ -296,7 +296,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution <br/>{$this->_defaults['billingName']} <br/>{$this->_defaults['address']}"; - $activityParams = array( + $activityParams = [ 'source_contact_id' => $this->getSubscriptionDetails()->contact_id, 'activity_type_id' => CRM_Core_PseudoConstant::getKey( 'CRM_Activity_BAO_Activity', @@ -307,7 +307,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution 'details' => $message, 'activity_date_time' => date('YmdHis'), 'status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'status_id', 'Completed'), - ); + ]; $session = CRM_Core_Session::singleton(); $cid = $session->get('userID'); if ($cid) { @@ -317,11 +317,11 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution CRM_Activity_BAO_Activity::create($activityParams); list($donorDisplayName, $donorEmail) = CRM_Contact_BAO_Contact::getContactDetails($this->getSubscriptionDetails()->contact_id); - $tplParams['contact'] = array('display_name' => $donorDisplayName); + $tplParams['contact'] = ['display_name' => $donorDisplayName]; $tplParams = array_merge($tplParams, CRM_Contribute_Form_AbstractEditPayment::formatCreditCardDetails($processorParams)); - $sendTemplateParams = array( + $sendTemplateParams = [ 'groupName' => $this->getSubscriptionDetails()->membership_id ? 'msg_tpl_workflow_membership' : 'msg_tpl_workflow_contribution', 'workflow' => $this->getSubscriptionDetails()->membership_id ? 'membership_autorenew_billing' : 'contribution_recurring_billing', 'contactId' => $this->getSubscriptionDetails()->contact_id, @@ -331,7 +331,7 @@ class CRM_Contribute_Form_UpdateBilling extends CRM_Contribute_Form_Contribution 'from' => CRM_Contribute_BAO_ContributionRecur::getRecurFromAddress($this->getContributionRecurID()), 'toName' => $donorDisplayName, 'toEmail' => $donorEmail, - ); + ]; list($sent) = CRM_Core_BAO_MessageTemplate::sendTemplate($sendTemplateParams); } else { diff --git a/civicrm/CRM/Contribute/Page/ContributionPage.php b/civicrm/CRM/Contribute/Page/ContributionPage.php index db9f1ba790..0ebc82cfcd 100644 --- a/civicrm/CRM/Contribute/Page/ContributionPage.php +++ b/civicrm/CRM/Contribute/Page/ContributionPage.php @@ -60,32 +60,32 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { $deleteExtra = ts('Are you sure you want to delete this Contribution page?'); $copyExtra = ts('Are you sure you want to make a copy of this Contribution page?'); - self::$_actionLinks = array( - CRM_Core_Action::COPY => array( + self::$_actionLinks = [ + CRM_Core_Action::COPY => [ 'name' => ts('Make a Copy'), 'url' => CRM_Utils_System::currentPath(), 'qs' => 'action=copy&gid=%%id%%', 'title' => ts('Make a Copy of CiviCRM Contribution Page'), 'extra' => 'onclick = "return confirm(\'' . $copyExtra . '\');"', - ), - CRM_Core_Action::DISABLE => array( + ], + CRM_Core_Action::DISABLE => [ 'name' => ts('Disable'), 'title' => ts('Disable'), 'ref' => 'crm-enable-disable', - ), - CRM_Core_Action::ENABLE => array( + ], + CRM_Core_Action::ENABLE => [ 'name' => ts('Enable'), 'ref' => 'crm-enable-disable', 'title' => ts('Enable'), - ), - CRM_Core_Action::DELETE => array( + ], + CRM_Core_Action::DELETE => [ 'name' => ts('Delete'), 'url' => CRM_Utils_System::currentPath(), 'qs' => 'action=delete&reset=1&id=%%id%%', 'title' => ts('Delete Custom Field'), 'extra' => 'onclick = "return confirm(\'' . $deleteExtra . '\');"', - ), - ); + ], + ]; } return self::$_actionLinks; } @@ -101,75 +101,75 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { $urlString = 'civicrm/admin/contribute/'; $urlParams = 'reset=1&action=update&id=%%id%%'; - self::$_configureActionLinks = array( - CRM_Core_Action::ADD => array( + self::$_configureActionLinks = [ + CRM_Core_Action::ADD => [ 'name' => ts('Title and Settings'), 'title' => ts('Title and Settings'), 'url' => $urlString . 'settings', 'qs' => $urlParams, 'uniqueName' => 'settings', - ), - CRM_Core_Action::UPDATE => array( + ], + CRM_Core_Action::UPDATE => [ 'name' => ts('Contribution Amounts'), 'title' => ts('Contribution Amounts'), 'url' => $urlString . 'amount', 'qs' => $urlParams, 'uniqueName' => 'amount', - ), - CRM_Core_Action::VIEW => array( + ], + CRM_Core_Action::VIEW => [ 'name' => ts('Membership Settings'), 'title' => ts('Membership Settings'), 'url' => $urlString . 'membership', 'qs' => $urlParams, 'uniqueName' => 'membership', - ), - CRM_Core_Action::EXPORT => array( + ], + CRM_Core_Action::EXPORT => [ 'name' => ts('Thank-you and Receipting'), 'title' => ts('Thank-you and Receipting'), 'url' => $urlString . 'thankyou', 'qs' => $urlParams, 'uniqueName' => 'thankyou', - ), - CRM_Core_Action::BASIC => array( + ], + CRM_Core_Action::BASIC => [ 'name' => ts('Tell a Friend'), 'title' => ts('Tell a Friend'), 'url' => $urlString . 'friend', 'qs' => $urlParams, 'uniqueName' => 'friend', - ), - CRM_Core_Action::PROFILE => array( + ], + CRM_Core_Action::PROFILE => [ 'name' => ts('Include Profiles'), 'title' => ts('Include Profiles'), 'url' => $urlString . 'custom', 'qs' => $urlParams, 'uniqueName' => 'custom', - ), - CRM_Core_Action::MAP => array( + ], + CRM_Core_Action::MAP => [ 'name' => ts('Contribution Widget'), 'title' => ts('Contribution Widget'), 'url' => $urlString . 'widget', 'qs' => $urlParams, 'uniqueName' => 'widget', - ), - CRM_Core_Action::FOLLOWUP => array( + ], + CRM_Core_Action::FOLLOWUP => [ 'name' => ts('Premiums'), 'title' => ts('Premiums'), 'url' => $urlString . 'premium', 'qs' => $urlParams, 'uniqueName' => 'premium', - ), - CRM_Core_Action::ADVANCED => array( + ], + CRM_Core_Action::ADVANCED => [ 'name' => ts('Personal Campaign Pages'), 'title' => ts('Personal Campaign Pages'), 'url' => $urlString . 'pcp', 'qs' => $urlParams, 'uniqueName' => 'pcp', - ), - ); - $context = array( + ], + ]; + $context = [ 'urlString' => $urlString, 'urlParams' => $urlParams, - ); + ]; CRM_Utils_Hook::tabset('civicrm/admin/contribute', self::$_configureActionLinks, $context); } @@ -185,16 +185,16 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { if (!isset(self::$_onlineContributionLinks)) { $urlString = 'civicrm/contribute/transact'; $urlParams = 'reset=1&id=%%id%%'; - self::$_onlineContributionLinks = array( - CRM_Core_Action::RENEW => array( + self::$_onlineContributionLinks = [ + CRM_Core_Action::RENEW => [ 'name' => ts('Live Page'), 'title' => ts('Live Page'), 'url' => $urlString, 'qs' => $urlParams, 'fe' => TRUE, 'uniqueName' => 'live_page', - ), - CRM_Core_Action::PREVIEW => array( + ], + CRM_Core_Action::PREVIEW => [ 'name' => ts('Test-drive'), 'title' => ts('Test-drive'), 'url' => $urlString, @@ -202,8 +202,8 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { // Addresses https://lab.civicrm.org/dev/core/issues/658 'fe' => TRUE, 'uniqueName' => 'test_drive', - ), - ); + ], + ]; } return self::$_onlineContributionLinks; @@ -226,29 +226,29 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { $urlString = 'civicrm/contribute/search'; $urlParams = 'reset=1&contribution_page_id=%%id%%&force=1&test=0'; - self::$_contributionLinks = array( - CRM_Core_Action::DETACH => array( + self::$_contributionLinks = [ + CRM_Core_Action::DETACH => [ 'name' => ts('Current Month-To-Date'), 'title' => ts('Current Month-To-Date'), 'url' => $urlString, 'qs' => "{$urlParams}&receive_date_low={$monthDate}&receive_date_high={$now}", 'uniqueName' => 'current_month_to_date', - ), - CRM_Core_Action::REVERT => array( + ], + CRM_Core_Action::REVERT => [ 'name' => ts('Fiscal Year-To-Date'), 'title' => ts('Fiscal Year-To-Date'), 'url' => $urlString, 'qs' => "{$urlParams}&receive_date_low={$yearDate}&receive_date_high={$yearNow}", 'uniqueName' => 'fiscal_year_to_date', - ), - CRM_Core_Action::BROWSE => array( + ], + CRM_Core_Action::BROWSE => [ 'name' => ts('Cumulative'), 'title' => ts('Cumulative'), 'url' => $urlString, 'qs' => "{$urlParams}", 'uniqueName' => 'cumulative', - ), - ); + ], + ]; } return self::$_contributionLinks; @@ -277,14 +277,14 @@ class CRM_Contribute_Page_ContributionPage extends CRM_Core_Page { ); // set breadcrumb to append to 2nd layer pages - $breadCrumb = array( - array( + $breadCrumb = [ + [ 'title' => ts('Manage Contribution Pages'), 'url' => CRM_Utils_System::url(CRM_Utils_System::currentPath(), 'reset=1' ), - ), - ); + ], + ]; // what action to take ? if ($action & CRM_Core_Action::ADD) { @@ -333,7 +333,7 @@ AND cp.page_type = 'contribute' "; if ($pageTitle = CRM_Core_DAO::singleValueQuery($query)) { - CRM_Core_Session::setStatus(ts('The \'%1\' cannot be deleted! You must Delete all Personal Campaign Page(s) related with this contribution page prior to deleting the page.', array(1 => $pageTitle)), ts('Deletion Error'), 'error'); + CRM_Core_Session::setStatus(ts('The \'%1\' cannot be deleted! You must Delete all Personal Campaign Page(s) related with this contribution page prior to deleting the page.', [1 => $pageTitle]), ts('Deletion Error'), 'error'); CRM_Utils_System::redirect(CRM_Utils_System::url('civicrm/admin/contribute', 'reset=1')); } @@ -485,7 +485,7 @@ ORDER BY is_active desc, title asc $sectionsInfo = CRM_Utils_Array::value($dao->id, $contriPageSectionInfo, []); $contributions[$dao->id]['configureActionLinks'] = CRM_Core_Action::formLink(self::formatConfigureLinks($sectionsInfo), $action, - array('id' => $dao->id), + ['id' => $dao->id], ts('Configure'), TRUE, 'contributionpage.configure.actions', @@ -496,7 +496,7 @@ ORDER BY is_active desc, title asc //build the contributions links. $contributions[$dao->id]['contributionLinks'] = CRM_Core_Action::formLink(self::contributionLinks(), $action, - array('id' => $dao->id), + ['id' => $dao->id], ts('Contributions'), TRUE, 'contributionpage.contributions.search', @@ -507,7 +507,7 @@ ORDER BY is_active desc, title asc //build the online contribution links. $contributions[$dao->id]['onlineContributionLinks'] = CRM_Core_Action::formLink(self::onlineContributionLinks(), $action, - array('id' => $dao->id), + ['id' => $dao->id], ts('Links'), TRUE, 'contributionpage.online.links', @@ -518,7 +518,7 @@ ORDER BY is_active desc, title asc //build the normal action links. $contributions[$dao->id]['action'] = CRM_Core_Action::formLink(self::actionLinks(), $action, - array('id' => $dao->id), + ['id' => $dao->id], ts('more'), TRUE, 'contributionpage.action.links', @@ -571,10 +571,10 @@ ORDER BY is_active desc, title asc if ($title) { $clauses[] = "title LIKE %1"; if (strpos($title, '%') !== FALSE) { - $params[1] = array(trim($title), 'String', FALSE); + $params[1] = [trim($title), 'String', FALSE]; } else { - $params[1] = array(trim($title), 'String', TRUE); + $params[1] = [trim($title), 'String', TRUE]; } } @@ -694,7 +694,7 @@ ORDER BY UPPER(LEFT(title, 1)) if (isset($link['class'])) { $classes = $link['class']; } - $link['class'] = array_merge($classes, array('crm-disabled')); + $link['class'] = array_merge($classes, ['crm-disabled']); } } diff --git a/civicrm/CRM/Contribute/Page/ContributionRecurPayments.php b/civicrm/CRM/Contribute/Page/ContributionRecurPayments.php index 91419ff364..3e210f90da 100644 --- a/civicrm/CRM/Contribute/Page/ContributionRecurPayments.php +++ b/civicrm/CRM/Contribute/Page/ContributionRecurPayments.php @@ -120,10 +120,10 @@ class CRM_Contribute_Page_ContributionRecurPayments extends CRM_Core_Page { private function insertStatusLabels(&$contribution) { $contribution['contribution_status_label'] = $contribution['contribution_status']; - if ($contribution['is_pay_later'] && CRM_Utils_Array::value('contribution_status', $contribution) == 'Pending') { + if ($contribution['is_pay_later'] && ($contribution['contribution_status'] ?? NULL) == 'Pending') { $contribution['contribution_status_label'] .= ' (' . ts('Pay Later') . ')'; } - elseif (CRM_Utils_Array::value('contribution_status', $contribution) == 'Pending') { + elseif (($contribution['contribution_status'] ?? NULL) == 'Pending') { $contribution['contribution_status_label'] .= ' (' . ts('Incomplete Transaction') . ')'; } } @@ -169,7 +169,7 @@ class CRM_Contribute_Page_ContributionRecurPayments extends CRM_Core_Page { ); $isPayLater = FALSE; - if ($contribution['is_pay_later'] && CRM_Utils_Array::value('contribution_status', $contribution) == 'Pending') { + if ($contribution['is_pay_later'] && ($contribution['contribution_status'] ?? NULL) == 'Pending') { $isPayLater = TRUE; $links[CRM_Core_Action::ADD] = [ diff --git a/civicrm/CRM/Contribute/Selector/Search.php b/civicrm/CRM/Contribute/Selector/Search.php index 6638cdeef6..53a2488e02 100644 --- a/civicrm/CRM/Contribute/Selector/Search.php +++ b/civicrm/CRM/Contribute/Selector/Search.php @@ -405,7 +405,7 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C ); $isPayLater = FALSE; - if ($result->is_pay_later && CRM_Utils_Array::value('contribution_status_name', $row) == 'Pending') { + if ($result->is_pay_later && ($row['contribution_status_name'] ?? NULL) == 'Pending') { $isPayLater = TRUE; $row['contribution_status'] .= ' (' . ts('Pay Later') . ')'; $links[CRM_Core_Action::ADD] = [ @@ -415,7 +415,7 @@ class CRM_Contribute_Selector_Search extends CRM_Core_Selector_Base implements C 'title' => ts('Pay with Credit Card'), ]; } - elseif (CRM_Utils_Array::value('contribution_status_name', $row) == 'Pending') { + elseif (($row['contribution_status_name'] ?? NULL) == 'Pending') { $row['contribution_status'] .= ' (' . ts('Incomplete Transaction') . ')'; } diff --git a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php index 2951c74803..433ef71d67 100644 --- a/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php +++ b/civicrm/CRM/Contribute/WorkflowMessage/ContributionTrait.php @@ -4,7 +4,7 @@ use Civi\Api4\Membership; /** * @method array getContribution() - * @method ?int getContributionID() + * @method int|null getContributionID() * @method $this setContributionID(?int $contributionId) */ trait CRM_Contribute_WorkflowMessage_ContributionTrait { @@ -70,6 +70,11 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait { if (!$this->order && $this->contributionID) { $this->order = new CRM_Financial_BAO_Order(); $this->order->setTemplateContributionID($this->contributionID); + if (!empty($this->eventID)) { + // Temporary support for tests that are making a mess of this. + // It should always be possible to get this from the line items. + $this->order->setPriceSetIDByEventPageID($this->eventID); + } } return $this->order; } @@ -147,11 +152,20 @@ trait CRM_Contribute_WorkflowMessage_ContributionTrait { } $this->taxRateBreakdown = []; foreach ($this->getLineItems() as $lineItem) { - $this->taxRateBreakdown[$lineItem['tax_rate']] = [ - 'amount' => $lineItem['tax_amount'] ?? 0, - 'rate' => $lineItem['tax_rate'], - 'percentage' => sprintf('%.2f', $lineItem['tax_rate']), - ]; + if (!isset($this->taxRateBreakdown[$lineItem['tax_rate']])) { + $this->taxRateBreakdown[$lineItem['tax_rate']] = [ + 'amount' => 0, + 'rate' => $lineItem['tax_rate'], + 'percentage' => sprintf('%.2f', $lineItem['tax_rate']), + ]; + } + $this->taxRateBreakdown[$lineItem['tax_rate']]['amount'] += $lineItem['tax_amount'] ?? 0; + } + // Remove the rates with no value. + foreach ($this->taxRateBreakdown as $rate => $details) { + if ($details['amount'] === 0.0) { + unset($this->taxRateBreakdown[$rate]); + } } if (array_keys($this->taxRateBreakdown) === [0]) { // If the only tax rate charged is 0% then no tax breakdown is returned. diff --git a/civicrm/CRM/Core/Action.php b/civicrm/CRM/Core/Action.php index d23bd256a4..cb6ae64fc8 100644 --- a/civicrm/CRM/Core/Action.php +++ b/civicrm/CRM/Core/Action.php @@ -79,12 +79,113 @@ class CRM_Core_Action { 'reopen' => self::REOPEN, ]; - /** - * The flipped version of the names array, initialized when used - * - * @var array - */ - public static $_description; + private static function getInfo(): array { + Civi::$statics[__CLASS__ . 'Info'] = Civi::$statics[__CLASS__ . 'Info'] ?? [ + self::ADD => [ + 'name' => 'add', + 'label' => ts('Add'), + 'weight' => 0, + 'icon' => 'fa-plus', + ], + self::UPDATE => [ + 'name' => 'update', + 'label' => ts('Edit'), + 'weight' => -10, + 'icon' => 'fa-pencil', + ], + self::VIEW => [ + 'name' => 'view', + 'label' => ts('View'), + 'weight' => -20, + 'icon' => 'fa-external-link', + ], + self::DELETE => [ + 'name' => 'delete', + 'label' => ts('Delete'), + 'weight' => 100, + 'icon' => 'fa-trash', + ], + self::BROWSE => [ + 'name' => 'browse', + 'label' => ts('Browse'), + 'weight' => 0, + 'icon' => 'fa-list', + ], + self::ENABLE => [ + 'name' => 'enable', + 'label' => ts('Enable'), + 'weight' => 40, + 'icon' => 'fa-repeat', + ], + self::DISABLE => [ + 'name' => 'disable', + 'label' => ts('Disable'), + 'weight' => 40, + 'icon' => 'fa-ban', + ], + self::EXPORT => [ + 'name' => 'export', + 'label' => ts('Export'), + 'weight' => 0, + 'icon' => 'fa-download', + ], + self::PREVIEW => [ + 'name' => 'preview', + 'label' => ts('Preview'), + 'weight' => 0, + 'icon' => 'fa-eye', + ], + self::MAP => [ + 'name' => 'map', + 'label' => ts('Map'), + 'weight' => 10, + 'icon' => 'fa-cog', + ], + self::COPY => [ + 'name' => 'copy', + 'label' => ts('Copy'), + 'weight' => 20, + 'icon' => 'fa-clone', + ], + self::PROFILE => [ + 'name' => 'profile', + 'label' => ts('Profile'), + 'weight' => 0, + 'icon' => 'fa-files-o', + ], + self::RENEW => [ + 'name' => 'renew', + 'label' => ts('Renew'), + 'weight' => 10, + 'icon' => 'fa-undo', + ], + self::DETACH => [ + 'name' => 'detach', + 'label' => ts('Move'), + 'weight' => 0, + 'icon' => 'fa-random', + ], + self::REVERT => [ + 'name' => 'revert', + 'label' => ts('Revert'), + 'weight' => 0, + 'icon' => 'fa-refresh', + ], + self::CLOSE => [ + 'name' => 'close', + 'label' => ts('Close'), + 'weight' => 0, + 'icon' => 'fa-folder', + ], + self::REOPEN => [ + 'name' => 'reopen', + 'label' => ts('Reopen'), + 'weight' => 0, + 'icon' => 'fa-folder-open-o', + ], + ]; + return Civi::$statics[__CLASS__ . 'Info']; + } /** * Called by the request object to translate a string into a mask. @@ -129,35 +230,31 @@ class CRM_Core_Action { } /** - * Given a string determine the bitmask for this specific string. + * Given a string lookup the bitmask for the action name. + * e.g. "add" returns self::ADD. * - * @param string $item - * The input action to process. + * @param string $name * * @return int - * the action mask corresponding to the input string */ - public static function mapItem($item) { - $mask = self::$_names[trim($item)] ?? NULL; - return $mask ? $mask : 0; + public static function mapItem($name) { + foreach (self::getInfo() as $mask => $info) { + if ($info['name'] === $name) { + return $mask; + } + } + return self::NONE; } /** - * - * Given an action mask, find the corresponding description + * Given an action mask, get the name which describes it, + * e.g. self::ADD returns 'add'. * * @param int $mask - * The action mask. - * * @return string - * the corresponding action description */ public static function description($mask) { - if (!isset(self::$_description)) { - self::$_description = array_flip(self::$_names); - } - - return CRM_Utils_Array::value($mask, self::$_description, 'NO DESCRIPTION SET'); + return self::getInfo()[$mask]['name'] ?? 'NO DESCRIPTION SET'; } /** @@ -412,4 +509,91 @@ class CRM_Core_Action { return $mask; } + /** + * @param int $mask + * @return string|null + */ + public static function getLabel(int $mask): ?string { + return self::getInfo()[$mask]['label'] ?? NULL; + } + + /** + * @param int $mask + * @return int|null + */ + public static function getWeight(int $mask): ?string { + return self::getInfo()[$mask]['weight'] ?? NULL; + } + + /** + * @param int $mask + * @return int|null + */ + public static function getIcon(int $mask): ?string { + return self::getInfo()[$mask]['icon'] ?? NULL; + } + + /** + * Builds a title based on action and entity title, e.g. "Update Contact" + * + * @param int $action + * @param string $entityTitle + * @return string|null + */ + public static function getTitle(int $action, string $entityTitle): ?string { + switch ($action) { + case self::ADD: + return ts('Add %1', [1 => $entityTitle]); + + case self::UPDATE: + return ts('Update %1', [1 => $entityTitle]); + + case self::VIEW: + return ts('View %1', [1 => $entityTitle]); + + case self::DELETE: + return ts('Delete %1', [1 => $entityTitle]); + + case self::BROWSE: + return ts('Browse %1', [1 => $entityTitle]); + + case self::ENABLE: + return ts('Enable %1', [1 => $entityTitle]); + + case self::DISABLE: + return ts('Disable %1', [1 => $entityTitle]); + + case self::EXPORT: + return ts('Export %1', [1 => $entityTitle]); + + case self::PREVIEW: + return ts('Preview %1', [1 => $entityTitle]); + + case self::MAP: + return ts('Map %1', [1 => $entityTitle]); + + case self::COPY: + return ts('Copy %1', [1 => $entityTitle]); + + case self::PROFILE: + return ts('Profile %1', [1 => $entityTitle]); + + case self::RENEW: + return ts('Renew %1', [1 => $entityTitle]); + + case self::DETACH: + return ts('Move %1', [1 => $entityTitle]); + + case self::REVERT: + return ts('Revert %1', [1 => $entityTitle]); + + case self::CLOSE: + return ts('Close %1', [1 => $entityTitle]); + + case self::REOPEN: + return ts('Reopen %1', [1 => $entityTitle]); + } + return NULL; + } + } diff --git a/civicrm/CRM/Core/BAO/Address.php b/civicrm/CRM/Core/BAO/Address.php index 909b4e607f..f95753743c 100644 --- a/civicrm/CRM/Core/BAO/Address.php +++ b/civicrm/CRM/Core/BAO/Address.php @@ -916,7 +916,7 @@ SELECT is_primary, } // prevent an endless chain between two shared addresses (prevent chaining 3) CRM-21214 - if (CRM_Utils_Array::value('id', $params) == $params['master_id']) { + if (($params['id'] ?? NULL) == $params['master_id']) { $params['master_id'] = NULL; CRM_Core_Session::setStatus(ts("You can't connect an address to itself"), '', 'warning'); } diff --git a/civicrm/CRM/Core/BAO/CustomField.php b/civicrm/CRM/Core/BAO/CustomField.php index 75cd9ca436..8c7f3d0aa9 100644 --- a/civicrm/CRM/Core/BAO/CustomField.php +++ b/civicrm/CRM/Core/BAO/CustomField.php @@ -443,9 +443,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $cacheKey = md5($cacheKey); } - if (!self::$_importFields || - CRM_Utils_Array::value($cacheKey, self::$_importFields) === NULL - ) { + if (!isset(self::$_importFields[$cacheKey])) { if (!self::$_importFields) { self::$_importFields = []; } @@ -570,7 +568,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $fields[$dao->id]['groupTitle'] = $dao->title; $fields[$dao->id]['data_type'] = $dao->data_type; $fields[$dao->id]['name'] = 'custom_' . $dao->id; - $fields[$dao->id]['type'] = CRM_Utils_Array::value($dao->data_type, self::dataToType()); + $fields[$dao->id]['type'] = self::dataToType()[$dao->data_type] ?? NULL; $fields[$dao->id]['html_type'] = $dao->html_type; $fields[$dao->id]['default_value'] = $dao->default_value; $fields[$dao->id]['text_length'] = $dao->text_length; @@ -760,8 +758,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { * * @param bool $all * - * @return int|null - * The id (if exists) + * @return array|int|null */ public static function getKeyID($key, $all = FALSE) { $match = []; @@ -772,7 +769,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { else { return [ $match[1], - CRM_Utils_Array::value(2, $match), + $match[2] ?? NULL, ]; } } @@ -941,8 +938,8 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { 'time' => $field->time_format ? $field->time_format * 12 : FALSE, ]; if ($field->is_search_range && $search) { - $qf->add('datepicker', $elementName . '_from', $label, $fieldAttributes + array('placeholder' => ts('From')), FALSE, $params); - $qf->add('datepicker', $elementName . '_to', NULL, $fieldAttributes + array('placeholder' => ts('To')), FALSE, $params); + $qf->add('datepicker', $elementName . '_from', $label, $fieldAttributes + ['placeholder' => ts('From')], FALSE, $params); + $qf->add('datepicker', $elementName . '_to', NULL, $fieldAttributes + ['placeholder' => ts('To')], FALSE, $params); } else { $element = $qf->add('datepicker', $elementName, $label, $fieldAttributes, $useRequired && !$search, $params); @@ -1265,7 +1262,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { $display = implode(', ', $v); } else { - $display = CRM_Utils_Array::value($value, $field['options'], ''); + $display = $field['options'][$value] ?? ''; // For float type (see Number and Money) $value would be decimal like // 1.00 (because it is stored in db as decimal), while options array // key would be integer like 1. In this case expression on line above @@ -1296,7 +1293,7 @@ class CRM_Core_BAO_CustomField extends CRM_Core_DAO_CustomField { if ($format) { if (array_key_exists($format, $actualPHPFormats)) { $customTimeFormat = (array) $actualPHPFormats[$format]; - switch (CRM_Utils_Array::value('time_format', $field)) { + switch ($field['time_format'] ?? NULL) { case 1: $customTimeFormat[] = 'g:iA'; break; @@ -2119,7 +2116,7 @@ WHERE id IN ( %1, %2 ) */ protected static function prepareCreate($params) { $op = empty($params['id']) ? 'create' : 'edit'; - CRM_Utils_Hook::pre($op, 'CustomField', CRM_Utils_Array::value('id', $params), $params); + CRM_Utils_Hook::pre($op, 'CustomField', $params['id'] ?? NULL, $params); $params['is_append_field_id_to_column_name'] = !isset($params['column_name']); if ($op === 'create') { CRM_Core_DAO::setCreateDefaults($params, self::getDefaults()); @@ -2675,7 +2672,7 @@ WHERE f.id IN ($ids)"; } $dataType = $field->data_type; - $profileField = CRM_Utils_Array::value($key, $profileFields, []); + $profileField = $profileFields[$key] ?? []; $fieldTitle = $profileField['title'] ?? NULL; $isRequired = $profileField['is_required'] ?? NULL; if (!$fieldTitle) { @@ -2687,7 +2684,7 @@ WHERE f.id IN ($ids)"; continue; } - //lets validate first for required field. + // Validate first for required field. if ($isRequired && CRM_Utils_System::isNull($value)) { $errors[$key] = ts('%1 is a required field.', [1 => $fieldTitle]); continue; @@ -2699,28 +2696,28 @@ WHERE f.id IN ($ids)"; case 'Int': $ruleName = 'integer'; $errorMsg = ts('%1 must be an integer (whole number).', - array(1 => $fieldTitle) + [1 => $fieldTitle] ); break; case 'Money': $ruleName = 'money'; $errorMsg = ts('%1 must in proper money format. (decimal point/comma/space is allowed).', - array(1 => $fieldTitle) + [1 => $fieldTitle] ); break; case 'Float': $ruleName = 'numeric'; $errorMsg = ts('%1 must be a number (with or without decimal point).', - array(1 => $fieldTitle) + [1 => $fieldTitle] ); break; case 'Link': $ruleName = 'wikiURL'; $errorMsg = ts('%1 must be valid Website.', - array(1 => $fieldTitle) + [1 => $fieldTitle] ); break; } diff --git a/civicrm/CRM/Core/BAO/CustomGroup.php b/civicrm/CRM/Core/BAO/CustomGroup.php index fedf435938..ea50814bb8 100644 --- a/civicrm/CRM/Core/BAO/CustomGroup.php +++ b/civicrm/CRM/Core/BAO/CustomGroup.php @@ -188,10 +188,10 @@ class CRM_Core_BAO_CustomGroup extends CRM_Core_DAO_CustomGroup implements \Civi self::createTable($group); } elseif ($tableNameNeedingIndexUpdate) { - CRM_Core_BAO_SchemaHandler::changeUniqueToIndex($tableNameNeedingIndexUpdate, CRM_Utils_Array::value('is_multiple', $params)); + CRM_Core_BAO_SchemaHandler::changeUniqueToIndex($tableNameNeedingIndexUpdate, !empty($params['is_multiple'])); } - if (CRM_Utils_Array::value('overrideFKConstraint', $params) == 1) { + if (($params['overrideFKConstraint'] ?? NULL) == 1) { $table = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $params['id'], 'table_name' @@ -2059,10 +2059,10 @@ SELECT civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT * * @param $context * @param array $params - * @param array $props * @return array */ - public static function getExtendsEntityColumnValueOptions($context, $params, $props = []) { + public static function getExtendsEntityColumnValueOptions($context, $params) { + $props = $params['values'] ?? []; // Requesting this option list only makes sense if the value of 'extends' is known or can be looked up if (!empty($props['id']) || !empty($props['name']) || !empty($props['extends']) || !empty($props['extends_entity_column_id'])) { $id = $props['id'] ?? NULL; @@ -2147,10 +2147,10 @@ SELECT civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT * * @param string $context * @param array $params - * @param array $props * @return array */ - public static function getExtendsEntityColumnIdOptions($context = NULL, $params = [], $props = []) { + public static function getExtendsEntityColumnIdOptions($context = NULL, $params = []) { + $props = $params['values'] ?? []; $ogId = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', 'custom_data_type', 'id', 'name'); $optionValues = CRM_Core_BAO_OptionValue::getOptionValuesArray($ogId); @@ -2195,16 +2195,6 @@ SELECT civicrm_custom_group.id as groupID, civicrm_custom_group.title as groupT * @inheritDoc */ public static function buildOptions($fieldName, $context = NULL, $props = []) { - // This is necessary in order to pass $props to the callback function - if ($fieldName === 'extends_entity_column_value') { - $options = self::getExtendsEntityColumnValueOptions($context, [], $props); - return CRM_Core_PseudoConstant::formatArrayOptions($context, $options); - } - // Provides filtering by 'extends' entity - if ($fieldName === 'extends_entity_column_id') { - $options = self::getExtendsEntityColumnIdOptions($context, [], $props); - return CRM_Core_PseudoConstant::formatArrayOptions($context, $options); - } // Legacy support for APIv3 which also needs the ParticipantEventName etc pseudo-selectors if ($fieldName === 'extends' && ($props['version'] ?? NULL) == 3) { $options = CRM_Core_SelectValues::customGroupExtends(); diff --git a/civicrm/CRM/Core/BAO/CustomQuery.php b/civicrm/CRM/Core/BAO/CustomQuery.php index 002f5fba26..7948b7eaf0 100644 --- a/civicrm/CRM/Core/BAO/CustomQuery.php +++ b/civicrm/CRM/Core/BAO/CustomQuery.php @@ -177,9 +177,7 @@ class CRM_Core_BAO_CustomQuery { foreach ($this->_ids as $id => $values) { // Fixed for Issue CRM 607 - if (CRM_Utils_Array::value($id, $this->_fields) === NULL || - !$values - ) { + if (!isset($this->_fields[$id]) || !$values) { continue; } @@ -207,7 +205,7 @@ class CRM_Core_BAO_CustomQuery { $qillValue = CRM_Core_BAO_CustomField::displayValue($value, $id); } - $qillOp = CRM_Utils_Array::value($op, CRM_Core_SelectValues::getSearchBuilderOperators(), $op); + $qillOp = CRM_Core_SelectValues::getSearchBuilderOperators()[$op] ?? $op; // Ensure the table is joined in (eg if in where but not select). $this->joinCustomTableForField($field); diff --git a/civicrm/CRM/Core/BAO/CustomValueTable.php b/civicrm/CRM/Core/BAO/CustomValueTable.php index 00ca79c55b..1b2c0003de 100644 --- a/civicrm/CRM/Core/BAO/CustomValueTable.php +++ b/civicrm/CRM/Core/BAO/CustomValueTable.php @@ -243,7 +243,7 @@ class CRM_Core_BAO_CustomValueTable { $fieldExtends = $field['extends'] ?? NULL; if ( - CRM_Utils_Array::value('entity_table', $field) === 'civicrm_contact' + ($field['entity_table'] ?? NULL) === 'civicrm_contact' || $fieldExtends === 'Contact' || $fieldExtends === 'Individual' || $fieldExtends === 'Organization' diff --git a/civicrm/CRM/Core/BAO/MessageTemplate.php b/civicrm/CRM/Core/BAO/MessageTemplate.php index fdf9528205..1d53ed7a80 100644 --- a/civicrm/CRM/Core/BAO/MessageTemplate.php +++ b/civicrm/CRM/Core/BAO/MessageTemplate.php @@ -245,11 +245,14 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen throw new CRM_Core_Exception(ts('Message template with id of %1 does not have a default to revert to.', [1 => $id])); } - $diverted->msg_subject = $orig->msg_subject; - $diverted->msg_text = $orig->msg_text; - $diverted->msg_html = $orig->msg_html; - $diverted->pdf_format_id = is_null($orig->pdf_format_id) ? 'null' : $orig->pdf_format_id; - $diverted->save(); + // Use write record to trigger hook invocations. + self::writeRecord([ + 'msg_subject' => $orig->msg_subject, + 'msg_text' => $orig->msg_text, + 'msg_html' => $orig->msg_html, + 'pdf_format_id' => is_null($orig->pdf_format_id) ? 'null' : $orig->pdf_format_id, + 'id' => $id, + ]); } /** @@ -286,64 +289,86 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen $modelDefaults = [ // instance of WorkflowMessageInterface, containing a list of data to provide to the message-template 'model' => NULL, + // Symbolic name of the workflow step. Matches the value in civicrm_msg_template.workflow_name. - 'workflow' => NULL, + // This field is allowed as an input. However, the default mechanics go through the 'model'. + // 'workflow' => NULL, + // additional template params (other than the ones already set in the template singleton) 'tplParams' => [], + // additional token params (passed to the TokenProcessor) // INTERNAL: 'tokenContext' is currently only intended for use within civicrm-core only. For downstream usage, future updates will provide comparable public APIs. 'tokenContext' => [], + // properties to import directly to the model object 'modelProps' => NULL, + // contact id if contact tokens are to be replaced; alias for tokenContext.contactId 'contactId' => NULL, ]; $viewDefaults = [ // ID of the specific template to load 'messageTemplateID' => NULL, + // content of the message template // Ex: ['msg_subject' => 'Hello {contact.display_name}', 'msg_html' => '...', 'msg_text' => '...'] // INTERNAL: 'messageTemplate' is currently only intended for use within civicrm-core only. For downstream usage, future updates will provide comparable public APIs. 'messageTemplate' => NULL, + // whether this is a test email (and hence should include the test banner) 'isTest' => FALSE, + // Disable Smarty? 'disableSmarty' => FALSE, ]; $envelopeDefaults = [ // the From: header 'from' => NULL, + // the recipient’s name 'toName' => NULL, + // the recipient’s email - mail is sent only if set 'toEmail' => NULL, + // the Cc: header 'cc' => NULL, + // the Bcc: header 'bcc' => NULL, + // the Reply-To: header 'replyTo' => NULL, + // email attachments 'attachments' => NULL, + // filename of optional PDF version to add as attachment (do not include path) 'PDFFilename' => NULL, ]; self::synchronizeLegacyParameters($params); + $params = array_merge($modelDefaults, $viewDefaults, $envelopeDefaults, $params); + self::synchronizeLegacyParameters($params); // Allow WorkflowMessage to run any filters/mappings/cleanups. + /** @var \Civi\WorkflowMessage\GenericWorkflowMessage $model */ $model = $params['model'] ?? WorkflowMessage::create($params['workflow'] ?? 'UNKNOWN'); - $params = WorkflowMessage::exportAll(WorkflowMessage::importAll($model, $params)); + WorkflowMessage::importAll($model, $params); + $mailContent = $model->resolveContent(); + $params = WorkflowMessage::exportAll($model); unset($params['model']); // Subsequent hooks use $params. Retaining the $params['model'] might be nice - but don't do it unless you figure out how to ensure data-consistency (eg $params['tplParams'] <=> $params['model']). // If you want to expose the model via hook, consider interjecting a new Hook::alterWorkflowMessage($model) between `importAll()` and `exportAll()`. self::synchronizeLegacyParameters($params); - $params = array_merge($modelDefaults, $viewDefaults, $envelopeDefaults, $params); - $language = $params['language'] ?? (!empty($params['contactId']) ? Civi\Api4\Contact::get(FALSE)->addWhere('id', '=', $params['contactId'])->addSelect('preferred_language')->execute()->first()['preferred_language'] : NULL); CRM_Utils_Hook::alterMailParams($params, 'messageTemplate'); - [$mailContent, $translatedLanguage] = self::loadTemplate((string) $params['workflow'], $params['isTest'], $params['messageTemplateID'] ?? NULL, $params['groupName'] ?? '', $params['messageTemplate'], $params['subject'] ?? NULL, $language); - $params['tokenContext']['locale'] = $translatedLanguage ?? $params['language'] ?? NULL; + CRM_Utils_Hook::alterMailContent($mailContent); + if (!empty($params['subject'])) { + CRM_Core_Error::deprecatedWarning('CRM_Core_BAO_MessageTemplate: $params[subject] is deprecated. Use $params[messageTemplate][msg_subject] instead.'); + $mailContent['subject'] = $params['subject']; + } self::synchronizeLegacyParameters($params); $rendered = CRM_Core_TokenSmarty::render(CRM_Utils_Array::subset($mailContent, ['text', 'html', 'subject']), $params['tokenContext'], $params['tplParams']); @@ -372,6 +397,8 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen return !$v; }); + CRM_Utils_Array::pathSync($params, ['tokenContext', 'locale'], ['language']); + // Core#644 - handle Email ID passed as "From". if (isset($params['from'])) { $params['from'] = \CRM_Utils_Mail::formatFromAddress($params['from']); @@ -446,92 +473,6 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen ])->fetchMap('name', 'id'); } - /** - * Load the specified template. - * - * @param string $workflowName - * @param bool $isTest - * @param int|null $messageTemplateID - * @param string $groupName - * @param array|null $messageTemplateOverride - * Optionally, record with msg_subject, msg_text, msg_html. - * If omitted, the record will be loaded from workflowName/messageTemplateID. - * @param string|null $subjectOverride - * This option is the older, wonkier version of $messageTemplate['msg_subject']... - * @param string|null $language - * - * @return array - * @throws \CRM_Core_Exception - */ - protected static function loadTemplate(string $workflowName, bool $isTest, int $messageTemplateID = NULL, $groupName = NULL, ?array $messageTemplateOverride = NULL, ?string $subjectOverride = NULL, ?string $language = NULL): array { - $base = ['msg_subject' => NULL, 'msg_text' => NULL, 'msg_html' => NULL, 'pdf_format_id' => NULL]; - if (!$workflowName && !$messageTemplateID) { - throw new CRM_Core_Exception(ts("Message template's option value or ID missing.")); - } - - $apiCall = MessageTemplate::get(FALSE) - ->setLanguage($language) - ->setTranslationMode('fuzzy') - ->addSelect('msg_subject', 'msg_text', 'msg_html', 'pdf_format_id', 'id') - ->addWhere('is_default', '=', 1); - - if ($messageTemplateID) { - $apiCall->addWhere('id', '=', (int) $messageTemplateID); - } - else { - $apiCall->addWhere('workflow_name', '=', $workflowName); - } - $result = $apiCall->execute(); - $messageTemplate = array_merge($base, $result->first() ?: [], $messageTemplateOverride ?: []); - if (empty($messageTemplate['id']) && empty($messageTemplateOverride)) { - if ($messageTemplateID) { - throw new CRM_Core_Exception(ts('No such message template: id=%1.', [1 => $messageTemplateID])); - } - throw new CRM_Core_Exception(ts('No message template with workflow name %1.', [1 => $workflowName])); - } - - $mailContent = [ - 'subject' => $messageTemplate['msg_subject'], - 'text' => $messageTemplate['msg_text'], - 'html' => $messageTemplate['msg_html'], - 'format' => $messageTemplate['pdf_format_id'], - // Workflow name is the field in the message templates table that denotes the - // workflow the template is used for. This is intended to eventually - // replace the non-standard option value/group implementation - see - // https://github.com/civicrm/civicrm-core/pull/17227 and the longer - // discussion on https://github.com/civicrm/civicrm-core/pull/17180 - 'workflow_name' => $workflowName, - // Note messageTemplateID is the id but when present we also know it was specifically requested. - 'messageTemplateID' => $messageTemplateID, - // Group name & valueName are deprecated parameters. At some point it will not be passed out. - // https://github.com/civicrm/civicrm-core/pull/17180 - 'groupName' => $groupName, - 'workflow' => $workflowName, - ]; - - CRM_Utils_Hook::alterMailContent($mailContent); - - // add the test banner (if requested) - if ($isTest) { - $testText = MessageTemplate::get(FALSE) - ->setSelect(['msg_subject', 'msg_text', 'msg_html']) - ->addWhere('workflow_name', '=', 'test_preview') - ->addWhere('is_default', '=', TRUE) - ->execute()->first(); - - $mailContent['subject'] = $testText['msg_subject'] . $mailContent['subject']; - $mailContent['text'] = $testText['msg_text'] . $mailContent['text']; - $mailContent['html'] = preg_replace('/<body(.*)$/im', "<body\\1\n{$testText['msg_html']}", $mailContent['html']); - } - - if (!empty($subjectOverride)) { - CRM_Core_Error::deprecatedWarning('CRM_Core_BAO_MessageTemplate: $params[subject] is deprecated. Use $params[messageTemplate][msg_subject] instead.'); - $mailContent['subject'] = $subjectOverride; - } - - return [$mailContent, $messageTemplate['actual_language'] ?? NULL]; - } - /** * Mark these fields as translatable. * diff --git a/civicrm/CRM/Core/BAO/Navigation.php b/civicrm/CRM/Core/BAO/Navigation.php index ae9a0e3180..470280d4ac 100644 --- a/civicrm/CRM/Core/BAO/Navigation.php +++ b/civicrm/CRM/Core/BAO/Navigation.php @@ -82,7 +82,7 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { } if (!isset($params['id']) || - (CRM_Utils_Array::value('parent_id', $params) != CRM_Utils_Array::value('current_parent_id', $params)) + (($params['parent_id'] ?? NULL) != ($params['current_parent_id'] ?? NULL)) ) { /* re/calculate the weight, if the Parent ID changed OR create new menu */ @@ -173,7 +173,8 @@ class CRM_Core_BAO_Navigation extends CRM_Core_DAO_Navigation { $domainID = CRM_Core_Config::domainID(); $query = " SELECT id, label, parent_id, weight, is_active, name -FROM civicrm_navigation WHERE domain_id = $domainID"; +FROM civicrm_navigation WHERE domain_id = $domainID +ORDER BY weight"; $result = CRM_Core_DAO::executeQuery($query); $pidGroups = []; @@ -830,7 +831,7 @@ FROM civicrm_navigation WHERE domain_id = $domainID"; } $params = [ 'name' => $name, - 'label' => ts($name), + 'label' => _ts($name), 'url' => $url, 'parent_id' => $parent_id, 'is_active' => TRUE, @@ -887,7 +888,7 @@ FROM civicrm_navigation WHERE domain_id = $domainID"; */ public static function buildHomeMenu(&$menu) { foreach ($menu as &$item) { - if (CRM_Utils_Array::value('name', $item['attributes']) === 'Home') { + if (($item['attributes']['name'] ?? NULL) === 'Home') { unset($item['attributes']['label'], $item['attributes']['url']); $item['attributes']['icon'] = 'crm-logo-sm'; $item['attributes']['attr']['accesskey'] = 'm'; diff --git a/civicrm/CRM/Core/BAO/Note.php b/civicrm/CRM/Core/BAO/Note.php index 6595969b94..8df7525a98 100644 --- a/civicrm/CRM/Core/BAO/Note.php +++ b/civicrm/CRM/Core/BAO/Note.php @@ -167,14 +167,14 @@ class CRM_Core_BAO_Note extends CRM_Core_DAO_Note implements \Civi\Core\HookInte $recentOther = []; if ($noteActions) { - $recentOther = array( + $recentOther = [ 'editUrl' => CRM_Utils_System::url('civicrm/contact/view/note', "reset=1&action=update&cid={$note->entity_id}&id={$note->id}&context=home" ), 'deleteUrl' => CRM_Utils_System::url('civicrm/contact/view/note', "reset=1&action=delete&cid={$note->entity_id}&id={$note->id}&context=home" ), - ); + ]; } // add the recently created Note @@ -327,7 +327,7 @@ class CRM_Core_BAO_Note extends CRM_Core_DAO_Note implements \Civi\Core\HookInte AND entity_id = %1 AND note is not null ORDER BY modified_date desc"; - $params = array(1 => array($id, 'Integer')); + $params = [1 => [$id, 'Integer']]; $dao = CRM_Core_DAO::executeQuery($query, $params); @@ -501,7 +501,7 @@ ORDER BY modified_date desc"; * Contact id whose notes to be deleted. */ public static function cleanContactNotes($contactID) { - $params = array(1 => array($contactID, 'Integer')); + $params = [1 => [$contactID, 'Integer']]; // delete all notes related to contribution $contributeQuery = "DELETE note.* diff --git a/civicrm/CRM/Core/BAO/RecurringEntity.php b/civicrm/CRM/Core/BAO/RecurringEntity.php index c34c25bdaf..10ff3b0ff6 100644 --- a/civicrm/CRM/Core/BAO/RecurringEntity.php +++ b/civicrm/CRM/Core/BAO/RecurringEntity.php @@ -1224,7 +1224,7 @@ class CRM_Core_BAO_RecurringEntity extends CRM_Core_DAO_RecurringEntity implemen return $this->recursion->getNextOccurrence($occurDate, $strictly_after); } catch (Exception $exception) { - CRM_Core_Session::setStatus(ts($exception->getMessage())); + CRM_Core_Session::setStatus(_ts($exception->getMessage())); } return FALSE; } diff --git a/civicrm/CRM/Core/BAO/SchemaHandler.php b/civicrm/CRM/Core/BAO/SchemaHandler.php index ad36d906f1..f8b3d9d547 100644 --- a/civicrm/CRM/Core/BAO/SchemaHandler.php +++ b/civicrm/CRM/Core/BAO/SchemaHandler.php @@ -156,46 +156,47 @@ class CRM_Core_BAO_SchemaHandler { * @param array $params * @param string $separator * @param string $prefix - * @param string|null $existingIndex + * @param string $existingIndex * * @return NULL|string */ - public static function buildSearchIndexSQL($params, $separator, $prefix = '', $existingIndex = NULL) { - $sql = NULL; + public static function buildSearchIndexSQL($params, $separator, $prefix = '', $existingIndex = '') { + $sql = ''; - // dont index blob + // Don't index blob if ($params['type'] == 'text') { - return $sql; + return NULL; } + // Perform case-insensitive match to see if index name begins with "index_" or "INDEX_" + // (for legacy reasons it could be either) + $searchIndexExists = stripos($existingIndex ?? '', 'index_') === 0; + // Add index if field is searchable if it does not reference a foreign key // (skip indexing FK fields because it would be redundant to have 2 indexes) - if (!empty($params['searchable']) && empty($params['fk_table_name']) && substr($existingIndex ?? '', 0, 5) !== 'INDEX') { + if (!empty($params['searchable']) && empty($params['fk_table_name']) && !$searchIndexExists) { $sql .= $separator; $sql .= str_repeat(' ', 8); $sql .= $prefix; - $sql .= "INDEX_{$params['name']} ( {$params['name']} )"; + $sql .= "index_{$params['name']} ( {$params['name']} )"; } // Drop search index if field is no longer searchable - elseif (empty($params['searchable']) && substr($existingIndex ?? '', 0, 5) === 'INDEX') { + elseif (empty($params['searchable']) && $searchIndexExists) { $sql .= $separator; $sql .= str_repeat(' ', 8); $sql .= "DROP INDEX $existingIndex"; } - return $sql; + return $sql ?: NULL; } /** * @param array $params - * @param $separator - * @param $prefix + * @param string $separator * * @return string */ - public static function buildIndexSQL(&$params, $separator) { - $sql = ''; - $sql .= $separator; - $sql .= str_repeat(' ', 8); + public static function buildIndexSQL($params, $separator = ''): string { + $sql = $separator . str_repeat(' ', 8); if ($params['unique']) { $sql .= 'UNIQUE INDEX'; $indexName = 'unique'; @@ -221,10 +222,8 @@ class CRM_Core_BAO_SchemaHandler { /** * @param string $tableName * @param string $fkTableName - * - * @return bool */ - public static function changeFKConstraint($tableName, $fkTableName) { + public static function changeFKConstraint($tableName, $fkTableName): void { $fkName = "{$tableName}_entity_id"; if (strlen($fkName) >= 48) { $fkName = substr($fkName, 0, 32) . "_" . substr(md5($fkName), 0, 16); @@ -240,8 +239,6 @@ ALTER TABLE {$tableName} ADD CONSTRAINT `FK_{$fkName}` FOREIGN KEY (`entity_id`) REFERENCES {$fkTableName} (`id`) ON DELETE CASCADE;"; // CRM-7007: do not i18n-rewrite this query CRM_Core_DAO::executeQuery($addFKSql, [], TRUE, NULL, FALSE, FALSE); - - return TRUE; } /** diff --git a/civicrm/CRM/Core/BAO/Setting.php b/civicrm/CRM/Core/BAO/Setting.php index 9921e536b7..6e2d809119 100644 --- a/civicrm/CRM/Core/BAO/Setting.php +++ b/civicrm/CRM/Core/BAO/Setting.php @@ -288,7 +288,7 @@ class CRM_Core_BAO_Setting extends CRM_Core_DAO_Setting { } else { $cb = Civi\Core\Resolver::singleton()->get($fieldSpec['validate_callback']); - if (!call_user_func_array($cb, array(&$value, $fieldSpec))) { + if (!call_user_func_array($cb, [&$value, $fieldSpec])) { throw new CRM_Core_Exception("validation failed for {$fieldSpec['name']} = $value based on callback {$fieldSpec['validate_callback']}"); } } diff --git a/civicrm/CRM/Core/BAO/Tag.php b/civicrm/CRM/Core/BAO/Tag.php index 152a797c34..cd2a0522e0 100644 --- a/civicrm/CRM/Core/BAO/Tag.php +++ b/civicrm/CRM/Core/BAO/Tag.php @@ -91,9 +91,9 @@ class CRM_Core_BAO_Tag extends CRM_Core_DAO_Tag { } else { if (!isset($refs[$dao->parent_id])) { - $refs[$dao->parent_id] = array( + $refs[$dao->parent_id] = [ 'children' => [], - ); + ]; } $refs[$dao->parent_id]['children'][$dao->id] = &$thisref; } diff --git a/civicrm/CRM/Core/BAO/TranslateGetWrapper.php b/civicrm/CRM/Core/BAO/TranslateGetWrapper.php index 67214b2426..b5b1eca99c 100644 --- a/civicrm/CRM/Core/BAO/TranslateGetWrapper.php +++ b/civicrm/CRM/Core/BAO/TranslateGetWrapper.php @@ -37,7 +37,7 @@ class CRM_Core_BAO_TranslateGetWrapper { } $toSet = array_intersect_key($this->fields[$value['id']], $value); $value = array_merge($value, $toSet); - $value['actual_language'] = $this->translatedLanguage; + $value['actual_language'] = $this->translatedLanguage[$value['id']]; } return $result; } diff --git a/civicrm/CRM/Core/BAO/Translation.php b/civicrm/CRM/Core/BAO/Translation.php index 61c9007db5..f6d969a8b7 100644 --- a/civicrm/CRM/Core/BAO/Translation.php +++ b/civicrm/CRM/Core/BAO/Translation.php @@ -178,7 +178,7 @@ class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements HookI } $communicationLanguage = \Civi\Core\Locale::detect()->nominal; - if ($communicationLanguage === Civi::settings()->get('lcMessages')) { + if (!$communicationLanguage || !self::isTranslate($communicationLanguage)) { return; } @@ -196,7 +196,9 @@ class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements HookI //n } foreach ($translated['fields'] ?? [] as $field) { \Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['fields'][$field['entity_id']][$field['entity_field']] = $field['string']; - \Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['language'] = $translated['language']; + if (!isset(\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['language'][$field['entity_id']])) { + \Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage]['language'][$field['entity_id']] = $field['language']; + } } } if (!empty(\Civi::$statics[__CLASS__]['translate_fields'][$apiRequest['entity']][$communicationLanguage])) { @@ -205,6 +207,34 @@ class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements HookI } } + /** + * Should the translation process be followed. + * + * It can be short-circuited if there we are in the site default language and + * it is not translated. + * + * @param string $communicationLanguage + * + * @return bool + */ + protected static function isTranslate(string $communicationLanguage): bool { + if ($communicationLanguage !== Civi::settings()->get('lcMessages')) { + return TRUE; + } + if (!isset(\Civi::$statics[__CLASS__]['translate_main'][$communicationLanguage])) { + // The code had an assumption that you would not translate the primary language. + // However, the UI is such that the features (approval flow) so it makes sense + // to translation the default site language as well. If we can see sites are + // doing this then let's treat the main locale like any other locale + \Civi::$statics[__CLASS__]['translate_main'] = (bool) CRM_Core_DAO::singleValueQuery( + 'SELECT COUNT(*) FROM civicrm_translation WHERE language = %1 LIMIT 1', [ + 1 => [$communicationLanguage, 'String'], + ] + ); + } + return \Civi::$statics[__CLASS__]['translate_main']; + } + /** * @param \Civi\Api4\Generic\AbstractAction $apiRequest * @return array translated fields. @@ -237,14 +267,59 @@ class CRM_Core_BAO_Translation extends CRM_Core_DAO_Translation implements HookI } $fields = $translations->execute(); $languages = []; - foreach ($fields as $index => $field) { - $languages[$field['language']][$index] = $field; + foreach ($fields as $field) { + $languages[$field['language']][$field['entity_id'] . $field['entity_field']] = $field; } $bizLocale = $userLocale->renegotiate(array_keys($languages)); - return $bizLocale - ? ['fields' => $languages[$bizLocale->nominal], 'language' => $bizLocale->nominal] - : []; + if ($bizLocale) { + $fields = $languages[$bizLocale->nominal]; + + foreach ($languages as $language => $languageFields) { + if ($language !== $bizLocale->nominal) { + // Merge in any missing entities. Ie we might have a translation for one template in es_MX but + // need to fall back to es_ES for another. If there is a translation for the site default + // language we should fall back to that rather than the messageTemplate + // see https://github.com/civicrm/civicrm-core/pull/26232 + $fields = array_merge(self::getSiteDefaultLanguageTranslations($apiRequest['entity'])['fields'] ?? [], $languageFields, $fields); + } + } + return ['fields' => $fields, 'language' => $bizLocale->nominal]; + } + + // Finally fall back to the translation of the site language, if exists. + // ie if the site language is en_US and there is a translation for that, then use it. + // see https://github.com/civicrm/civicrm-core/pull/26232 + return self::getSiteDefaultLanguageTranslations($apiRequest['entity']); + } + + /** + * Get any translations configured for the site-default language. + * + * @param string $entity + * + * @throws \CRM_Core_Exception + */ + protected static function getSiteDefaultLanguageTranslations(string $entity): array { + if (!isset(\Civi::$statics[__CLASS__]) || !array_key_exists('site_language_translation', \Civi::$statics[__CLASS__])) { + \Civi::$statics[__CLASS__]['site_language_translation'] = []; + $translations = Translation::get(FALSE) + ->addWhere('entity_table', '=', CRM_Core_DAO_AllCoreTables::getTableForEntityName($entity)) + ->setCheckPermissions(FALSE) + ->setSelect(['entity_field', 'entity_id', 'string', 'language']) + ->addWhere('language', '=', \Civi::settings()->get('lcMessages')) + ->execute(); + if ($translations !== NULL) { + \Civi::$statics[__CLASS__]['site_language_translation'] = [ + 'fields' => [], + 'language' => \Civi::settings()->get('lcMessages'), + ]; + foreach ($translations as $translatedField) { + \Civi::$statics[__CLASS__]['site_language_translation']['fields'][$translatedField['entity_id'] . $translatedField['entity_field']] = $translatedField; + } + } + } + return \Civi::$statics[__CLASS__]['site_language_translation']; } } diff --git a/civicrm/CRM/Core/BAO/UFField.php b/civicrm/CRM/Core/BAO/UFField.php index f6d9bcb34a..afb2e3c7b1 100644 --- a/civicrm/CRM/Core/BAO/UFField.php +++ b/civicrm/CRM/Core/BAO/UFField.php @@ -40,7 +40,7 @@ class CRM_Core_BAO_UFField extends CRM_Core_DAO_UFField { $id = $params['id'] ?? NULL; $op = empty($id) ? 'create' : 'edit'; - CRM_Utils_Hook::pre('UFField', $op, $id, $params); + CRM_Utils_Hook::pre($op, 'UFField', $id, $params); // Merge in data from existing field if (!empty($id)) { $UFField = new CRM_Core_BAO_UFField(); @@ -107,7 +107,7 @@ class CRM_Core_BAO_UFField extends CRM_Core_DAO_UFField { $fieldsType = CRM_Core_BAO_UFGroup::calculateGroupType($ufField->uf_group_id, TRUE); CRM_Core_BAO_UFGroup::updateGroupTypes($ufField->uf_group_id, $fieldsType); - CRM_Utils_Hook::post('UFField', $op, $ufField->id, $ufField); + CRM_Utils_Hook::post($op, 'UFField', $ufField->id, $ufField); civicrm_api3('profile', 'getfields', ['cache_clear' => TRUE]); return $ufField; diff --git a/civicrm/CRM/Core/BAO/UFGroup.php b/civicrm/CRM/Core/BAO/UFGroup.php index aa471362ce..e3962a6083 100644 --- a/civicrm/CRM/Core/BAO/UFGroup.php +++ b/civicrm/CRM/Core/BAO/UFGroup.php @@ -516,7 +516,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup implements \Civi\Core\Ho $formattedField['options_per_line'] = $customFields[$field->field_name]['options_per_line']; $formattedField['html_type'] = $customFields[$field->field_name]['html_type']; - if (CRM_Utils_Array::value('html_type', $formattedField) == 'Select Date') { + if (($formattedField['html_type'] ?? NULL) == 'Select Date') { $formattedField['date_format'] = $customFields[$field->field_name]['date_format']; $formattedField['time_format'] = $customFields[$field->field_name]['time_format']; $formattedField['is_datetime_field'] = TRUE; @@ -1286,7 +1286,7 @@ class CRM_Core_BAO_UFGroup extends CRM_Core_DAO_UFGroup implements \Civi\Core\Ho } } - if ((CRM_Utils_Array::value('visibility', $field) == 'Public Pages and Listings') && + if ((($field['visibility'] ?? NULL) == 'Public Pages and Listings') && CRM_Core_Permission::check('profile listings and forms') ) { @@ -1919,7 +1919,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) } } } - elseif (CRM_Utils_Array::value('name', $field) == 'membership_type') { + elseif (($field['name'] ?? NULL) == 'membership_type') { [$orgInfo, $types] = CRM_Member_BAO_MembershipType::getMembershipTypeInfo(); $sel = &$form->addElement('hierselect', $name, $title); $select = ['' => ts('- select membership type -')]; @@ -1937,7 +1937,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) } $sel->setOptions([$orgInfo, $types]); } - elseif (CRM_Utils_Array::value('name', $field) == 'membership_status') { + elseif (($field['name'] ?? NULL) == 'membership_status') { $form->add('select', $name, $title, CRM_Member_PseudoConstant::membershipStatus(NULL, NULL, 'label'), $required ); @@ -2198,7 +2198,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) if (substr($fieldName, 0, 3) === 'is_' or substr($fieldName, 0, 7) === 'do_not_') { $form->add('advcheckbox', $name, $title, $attributes, $required); } - elseif (CRM_Utils_Array::value('html_type', $field) === 'Select Date') { + elseif (($field['html_type'] ?? NULL) === 'Select Date') { $extra = isset($field['datepicker']) ? $field['datepicker']['extra'] : CRM_Utils_Date::getDatePickerExtra($field); $attributes = isset($field['datepicker']) ? $field['datepicker']['attributes'] : CRM_Utils_Date::getDatePickerAttributes($field); $form->add('datepicker', $name, $title, $attributes, $required, $extra); @@ -2520,7 +2520,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) * Check whether a profile is valid combination of * required profile fields * - * @param array $ufId + * @param array $ufID * Integer id of the profile. * @param array $required * Array of fields those are required in the profile. @@ -2528,17 +2528,17 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) * @return array * associative array of profiles */ - public static function checkValidProfile($ufId, $required = NULL) { + public static function checkValidProfile($ufID, $required = NULL) { $validProfile = FALSE; - if (!$ufId) { + if (!$ufID) { return $validProfile; } - if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $ufId, 'is_active')) { + if (!CRM_Core_DAO::getFieldValue('CRM_Core_DAO_UFGroup', $ufID, 'is_active')) { return $validProfile; } - $profileFields = self::getFields($ufId, FALSE, CRM_Core_Action::VIEW, NULL, + $profileFields = self::getFields($ufID, FALSE, CRM_Core_Action::VIEW, NULL, NULL, FALSE, NULL, FALSE, NULL, CRM_Core_Permission::CREATE, NULL ); @@ -3208,7 +3208,7 @@ AND ( entity_id IS NULL OR entity_id <= 0 ) $defaults['field'][$componentId][$name] = $customValue; break; } - elseif (CRM_Utils_Array::value('data_type', $tree['fields'][$customFieldDetails[0]]) == 'Date') { + elseif (($tree['fields'][$customFieldDetails[0]]['data_type'] ?? NULL) == 'Date') { $skipValue = TRUE; // CRM-6681, $default contains formatted date, time values. diff --git a/civicrm/CRM/Core/BAO/UFMatch.php b/civicrm/CRM/Core/BAO/UFMatch.php index 7fc5b7646f..d3ef595149 100644 --- a/civicrm/CRM/Core/BAO/UFMatch.php +++ b/civicrm/CRM/Core/BAO/UFMatch.php @@ -551,13 +551,13 @@ AND domain_id = %4 $query = "SELECT MAX(uf_id)+1 AS next_uf_id FROM civicrm_uf_match"; $dao = CRM_Core_DAO::executeQuery($query); if ($dao->fetch()) { - $ufId = $dao->next_uf_id; + $ufID = $dao->next_uf_id; } - if (!isset($ufId)) { - $ufId = 1; + if (!isset($ufID)) { + $ufID = 1; } - return $ufId; + return $ufID; } /** diff --git a/civicrm/CRM/Core/Block.php b/civicrm/CRM/Core/Block.php index c9f81dc82b..4e034084f8 100644 --- a/civicrm/CRM/Core/Block.php +++ b/civicrm/CRM/Core/Block.php @@ -66,9 +66,9 @@ class CRM_Core_Block { if (!(self::$_properties)) { $config = CRM_Core_Config::singleton(); - self::$_properties = array( + self::$_properties = [ // set status item to 0 to disable block by default (at install) - self::CREATE_NEW => array( + self::CREATE_NEW => [ 'template' => 'CreateNew.tpl', 'info' => ts('CiviCRM Create New Record'), 'subject' => '', @@ -79,8 +79,8 @@ class CRM_Core_Block { 'status' => 1, 'pages' => "civicrm\ncivicrm/*", 'region' => $config->userSystem->getDefaultBlockLocation(), - ), - self::RECENTLY_VIEWED => array( + ], + self::RECENTLY_VIEWED => [ 'template' => 'RecentlyViewed.tpl', 'info' => ts('CiviCRM Recent Items'), 'subject' => ts('Recent Items'), @@ -91,8 +91,8 @@ class CRM_Core_Block { 'status' => 1, 'pages' => "civicrm\ncivicrm/*", 'region' => $config->userSystem->getDefaultBlockLocation(), - ), - self::DASHBOARD => array( + ], + self::DASHBOARD => [ 'template' => 'Dashboard.tpl', 'info' => ts('CiviCRM Contact Dashboard'), 'subject' => '', @@ -103,8 +103,8 @@ class CRM_Core_Block { 'status' => 1, 'pages' => "civicrm\ncivicrm/*", 'region' => $config->userSystem->getDefaultBlockLocation(), - ), - self::ADD => array( + ], + self::ADD => [ 'template' => 'Add.tpl', 'info' => ts('CiviCRM Quick Add'), 'subject' => ts('New Individual'), @@ -115,8 +115,8 @@ class CRM_Core_Block { 'status' => 1, 'pages' => "civicrm\ncivicrm/*", 'region' => $config->userSystem->getDefaultBlockLocation(), - ), - self::LANGSWITCH => array( + ], + self::LANGSWITCH => [ 'template' => 'LangSwitch.tpl', 'info' => ts('CiviCRM Language Switcher'), 'subject' => '', @@ -128,8 +128,8 @@ class CRM_Core_Block { 'status' => 1, 'pages' => "civicrm\ncivicrm/*", 'region' => $config->userSystem->getDefaultBlockLocation(), - ), - self::EVENT => array( + ], + self::EVENT => [ 'template' => 'Event.tpl', 'info' => ts('CiviCRM Upcoming Events'), 'subject' => ts('Upcoming Events'), @@ -141,8 +141,8 @@ class CRM_Core_Block { 'status' => 0, 'pages' => "civicrm\ncivicrm/*", 'region' => $config->userSystem->getDefaultBlockLocation(), - ), - self::FULLTEXT_SEARCH => array( + ], + self::FULLTEXT_SEARCH => [ 'template' => 'FullTextSearch.tpl', 'info' => ts('CiviCRM Full-text Search'), 'subject' => ts('Full-text Search'), @@ -153,8 +153,8 @@ class CRM_Core_Block { 'status' => 0, 'pages' => "civicrm\ncivicrm/*", 'region' => $config->userSystem->getDefaultBlockLocation(), - ), - ); + ], + ]; ksort(self::$_properties); } @@ -218,10 +218,10 @@ class CRM_Core_Block { $block = []; foreach (self::properties() as $id => $value) { if ($value['active']) { - if (in_array($id, array( + if (in_array($id, [ self::ADD, self::CREATE_NEW, - ))) { + ])) { $hasAccess = TRUE; if (!CRM_Core_Permission::check('add contacts') && !CRM_Core_Permission::check('edit groups') @@ -245,7 +245,7 @@ class CRM_Core_Block { continue; } - $block[$id] = array( + $block[$id] = [ 'info' => $value['info'], 'cache' => $value['cache'], 'region' => $value['region'], @@ -253,7 +253,7 @@ class CRM_Core_Block { 'pages' => $value['pages'], 'status' => $value['status'], 'weight' => $value['weight'], - ); + ]; } } @@ -281,10 +281,10 @@ class CRM_Core_Block { case self::ADD: $defaultLocation = CRM_Core_BAO_LocationType::getDefault(); $defaultPrimaryLocationId = $defaultLocation->id; - $values = array( + $values = [ 'postURL' => CRM_Utils_System::url('civicrm/contact/add', 'reset=1&ct=Individual'), 'primaryLocationType' => $defaultPrimaryLocationId, - ); + ]; foreach (CRM_Contact_BAO_Contact::$_greetingTypes as $greeting) { $values[$greeting . '_id'] = CRM_Contact_BAO_Contact_Utils::defaultGreeting('Individual', $greeting); @@ -298,22 +298,22 @@ class CRM_Core_Block { case self::LANGSWITCH: // gives the currentPath without trailing empty lcMessages to be completed - $values = array('queryString' => CRM_Utils_System::getLinksUrl('lcMessages', TRUE, FALSE, FALSE)); + $values = ['queryString' => CRM_Utils_System::getLinksUrl('lcMessages', TRUE, FALSE, FALSE)]; self::setProperty(self::LANGSWITCH, 'templateValues', $values); break; case self::FULLTEXT_SEARCH: - $urlArray = array( + $urlArray = [ 'fullTextSearchID' => CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionValue', 'CRM_Contact_Form_Search_Custom_FullText', 'value', 'name' ), - ); + ]; self::setProperty(self::FULLTEXT_SEARCH, 'templateValues', $urlArray); break; case self::RECENTLY_VIEWED: $recent = CRM_Utils_Recent::get(); - self::setProperty(self::RECENTLY_VIEWED, 'templateValues', array('recentlyViewed' => $recent)); + self::setProperty(self::RECENTLY_VIEWED, 'templateValues', ['recentlyViewed' => $recent]); break; case self::EVENT: @@ -336,14 +336,14 @@ class CRM_Core_Block { } // new activity (select target contact) - $shortCuts = array_merge($shortCuts, array( - array( + $shortCuts = array_merge($shortCuts, [ + [ 'path' => 'civicrm/activity', 'query' => 'action=add&reset=1&context=standalone', 'ref' => 'new-activity', 'title' => ts('Activity'), - ), - )); + ], + ]); $components = CRM_Core_Component::getEnabledComponents(); @@ -357,35 +357,35 @@ class CRM_Core_Block { } // new email (select recipients) - $shortCuts = array_merge($shortCuts, array( - array( + $shortCuts = array_merge($shortCuts, [ + [ 'path' => 'civicrm/activity/email/add', 'query' => 'atype=3&action=add&reset=1&context=standalone', 'ref' => 'new-email', 'title' => ts('Email'), - ), - )); + ], + ]); if (CRM_Core_Permission::check('edit groups')) { - $shortCuts = array_merge($shortCuts, array( - array( + $shortCuts = array_merge($shortCuts, [ + [ 'path' => 'civicrm/group/add', 'query' => 'reset=1', 'ref' => 'new-group', 'title' => ts('Group'), - ), - )); + ], + ]); } if (CRM_Core_Permission::check('manage tags')) { - $shortCuts = array_merge($shortCuts, array( - array( + $shortCuts = array_merge($shortCuts, [ + [ 'path' => 'civicrm/tag', 'query' => 'reset=1&action=add', 'ref' => 'new-tag', 'title' => ts('Tag'), - ), - )); + ], + ]); } if (empty($shortCuts)) { @@ -454,13 +454,13 @@ class CRM_Core_Block { private static function setTemplateDashboardValues() { static $dashboardLinks = []; if (CRM_Core_Permission::check('access Contact Dashboard')) { - $dashboardLinks = array( - array( + $dashboardLinks = [ + [ 'path' => 'civicrm/user', 'query' => 'reset=1', 'title' => ts('My Contact Dashboard'), - ), - ); + ], + ]; } $values = []; @@ -476,7 +476,7 @@ class CRM_Core_Block { $value['key'] = $dash['key'] ?? NULL; $values[] = $value; } - self::setProperty(self::DASHBOARD, 'templateValues', array('dashboardLinks' => $values)); + self::setProperty(self::DASHBOARD, 'templateValues', ['dashboardLinks' => $values]); } /** @@ -486,18 +486,18 @@ class CRM_Core_Block { static $shortCuts = NULL; if (!($shortCuts)) { - $shortCuts = array( - array( + $shortCuts = [ + [ 'path' => 'civicrm/mailing/send', 'query' => 'reset=1', 'title' => ts('Send Mailing'), - ), - array( + ], + [ 'path' => 'civicrm/mailing/browse', 'query' => 'reset=1', 'title' => ts('Browse Sent Mailings'), - ), - ); + ], + ]; } $values = []; @@ -507,7 +507,7 @@ class CRM_Core_Block { $value['title'] = $short['title']; $values[] = $value; } - self::setProperty(self::MAIL, 'templateValues', array('shortCuts' => $values)); + self::setProperty(self::MAIL, 'templateValues', ['shortCuts' => $values]); } /** @@ -529,7 +529,7 @@ class CRM_Core_Block { ); } - self::setProperty(self::EVENT, 'templateValues', array('eventBlock' => $info)); + self::setProperty(self::EVENT, 'templateValues', ['eventBlock' => $info]); } } @@ -602,7 +602,7 @@ class CRM_Core_Block { $block['name'] = 'block-civicrm'; $block['id'] = $block['name'] . '_' . $id; $block['subject'] = self::fetch($id, 'Subject.tpl', - array('subject' => self::getProperty($id, 'subject')) + ['subject' => self::getProperty($id, 'subject')] ); $block['content'] = self::fetch($id, self::getProperty($id, 'template'), self::getProperty($id, 'templateValues') diff --git a/civicrm/CRM/Core/CodeGen/GenerateData.php b/civicrm/CRM/Core/CodeGen/GenerateData.php index 94eb6aa008..3cf8a7e513 100644 --- a/civicrm/CRM/Core/CodeGen/GenerateData.php +++ b/civicrm/CRM/Core/CodeGen/GenerateData.php @@ -1051,8 +1051,8 @@ class CRM_Core_CodeGen_GenerateData { * @return string */ private function _individualEmail($contact, $domain = NULL) { - $first = $contact->first_name; - $last = $contact->last_name; + $first = $contact->first_name ?? ($this->probability(.5) ? $this->randomItem('male_name') : $this->randomItem('female_name')); + $last = $contact->last_name ?? $this->randomItem('last_name'); $f = $first[0]; $l = $last[0]; $m = $contact->middle_name ? $contact->middle_name[0] . '.' : ''; @@ -1141,7 +1141,7 @@ class CRM_Core_CodeGen_GenerateData { // add the 3 groups first foreach ($this->sampleData['group'] as $groupName) { $group = new CRM_Contact_BAO_Group(); - $group->name = $group->title = $groupName; + $group->name = $group->title = $group->frontend_title = $groupName; $group->group_type = "12"; $group->visibility = 'Public Pages'; $group->is_active = 1; diff --git a/civicrm/CRM/Core/Config.php b/civicrm/CRM/Core/Config.php index 29719a59c6..66e59e4264 100644 --- a/civicrm/CRM/Core/Config.php +++ b/civicrm/CRM/Core/Config.php @@ -377,10 +377,6 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { $tableDAO = CRM_Core_DAO::executeQuery($query); $tables = []; while ($tableDAO->fetch()) { - $tables[] = $tableDAO->tableName; - } - if (!empty($tables)) { - $table = implode(',', $tables); // If a User Job references the table do not drop it. This is a bit quick & dirty, but we don't want to // get into calling more sophisticated functions in a cache clear, and the table names are pretty unique // (ex: "civicrm_tmp_d_dflt_1234abcd5678efgh"), and the "metadata" may continue to evolve for the next @@ -388,11 +384,15 @@ class CRM_Core_Config extends CRM_Core_Config_MagicMerge { // TODO: Circa v5.60+, consider a more precise cleanup. Discussion: https://github.com/civicrm/civicrm-core/pull/24538 // A separate process will reap the UserJobs but here the goal is just not to delete them during cache clearing // if they are still referenced. - if (!CRM_Core_DAO::executeQuery("SELECT count(*) FROM civicrm_user_job WHERE metadata LIKE '%" . $tableDAO->tableName . "%'")) { - // drop leftover temporary tables - CRM_Core_DAO::executeQuery("DROP TABLE $table"); + if (!CRM_Core_DAO::singleValueQuery("SELECT count(*) FROM civicrm_user_job WHERE metadata LIKE '%" . $tableDAO->tableName . "%'")) { + $tables[] = $tableDAO->tableName; } } + if (!empty($tables)) { + $table = implode(',', $tables); + // drop leftover temporary tables + CRM_Core_DAO::executeQuery("DROP TABLE $table"); + } } /** diff --git a/civicrm/CRM/Core/DAO.php b/civicrm/CRM/Core/DAO.php index 0cd2218572..bfffbc2f59 100644 --- a/civicrm/CRM/Core/DAO.php +++ b/civicrm/CRM/Core/DAO.php @@ -840,7 +840,7 @@ class CRM_Core_DAO extends DB_DataObject { */ public static function makeAttribute($field) { if ($field) { - if (CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_STRING) { + if (($field['type'] ?? NULL) == CRM_Utils_Type::T_STRING) { $maxLength = $field['maxlength'] ?? NULL; $size = $field['size'] ?? NULL; if ($maxLength || $size) { @@ -854,7 +854,7 @@ class CRM_Core_DAO extends DB_DataObject { return $attributes; } } - elseif (CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_TEXT) { + elseif (($field['type'] ?? NULL) == CRM_Utils_Type::T_TEXT) { $rows = $field['rows'] ?? NULL; if (!isset($rows)) { $rows = 2; @@ -869,7 +869,7 @@ class CRM_Core_DAO extends DB_DataObject { $attributes['cols'] = $cols; return $attributes; } - elseif (CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_INT || CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_FLOAT || CRM_Utils_Array::value('type', $field) == CRM_Utils_Type::T_MONEY) { + elseif (($field['type'] ?? NULL) == CRM_Utils_Type::T_INT || ($field['type'] ?? NULL) == CRM_Utils_Type::T_FLOAT || ($field['type'] ?? NULL) == CRM_Utils_Type::T_MONEY) { $attributes['size'] = 6; $attributes['maxlength'] = 14; return $attributes; @@ -1303,7 +1303,7 @@ LIKE %1 * @param int $id * Id of the DAO object being searched for. * - * @return CRM_Core_DAO + * @return static * Object of the type of the class that called this function. * * @throws Exception @@ -1643,7 +1643,7 @@ LIKE %1 $result = $dao->query($queryStr, $i18nRewrite); // since it is unbuffered, ($dao->N==0) is true. This blocks the standard fetch() mechanism. - if (CRM_Utils_Array::value('result_buffering', $options) === 0) { + if (($options['result_buffering'] ?? NULL) === 0) { $dao->N = TRUE; } @@ -2742,8 +2742,8 @@ SELECT contact_id // We restrict to id + name + FK as we are extending this a bit, but cautiously. elseif ( !empty($field['FKClassName']) - && CRM_Utils_Array::value('keyColumn', $pseudoConstant) === 'id' - && CRM_Utils_Array::value('labelColumn', $pseudoConstant) === 'name' + && ($pseudoConstant['keyColumn'] ?? NULL) === 'id' + && ($pseudoConstant['labelColumn'] ?? NULL) === 'name' ) { $pseudoFieldName = str_replace('_' . $pseudoConstant['keyColumn'], '', $field['name']); // This if is just an extra caution when adding change. @@ -2776,17 +2776,17 @@ SELECT contact_id * @param string $fieldName * @param string $context * @see CRM_Core_DAO::buildOptionsContext - * @param array $props + * @param array $values * Raw field values; whatever is known about this bao object. * - * Note: $props can contain unsanitized input and should not be passed directly to CRM_Core_PseudoConstant::get + * Note: $values can contain unsanitized input and should be handled with care by CRM_Core_PseudoConstant::get * * @return array|bool */ - public static function buildOptions($fieldName, $context = NULL, $props = []) { + public static function buildOptions($fieldName, $context = NULL, $values = []) { // If a given bao does not override this function $baoName = get_called_class(); - return CRM_Core_PseudoConstant::get($baoName, $fieldName, [], $context); + return CRM_Core_PseudoConstant::get($baoName, $fieldName, ['values' => $values], $context); } /** @@ -3068,7 +3068,7 @@ SELECT contact_id $skipContactCheckFor = ['Note']; foreach ($fields as $fieldName => $field) { // Clause for contact-related entities like Email, Relationship, etc. - if (strpos($field['name'], 'contact_id') === 0 && !in_array($field['entity'], $skipContactCheckFor) && CRM_Utils_Array::value('FKClassName', $field) == 'CRM_Contact_DAO_Contact') { + if (strpos($field['name'], 'contact_id') === 0 && !in_array($field['entity'], $skipContactCheckFor) && ($field['FKClassName'] ?? NULL) == 'CRM_Contact_DAO_Contact') { $contactClause = CRM_Utils_SQL::mergeSubquery('Contact'); if (!empty($contactClause)) { $clauses[$field['name']] = $contactClause; diff --git a/civicrm/CRM/Core/DAO/ActionMapping.php b/civicrm/CRM/Core/DAO/ActionMapping.php deleted file mode 100644 index 335dfc2b11..0000000000 --- a/civicrm/CRM/Core/DAO/ActionMapping.php +++ /dev/null @@ -1,393 +0,0 @@ -<?php - -/** - * @package CRM - * @copyright CiviCRM LLC https://civicrm.org/licensing - * - * Generated from xml/schema/CRM/Core/ActionMapping.xml - * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:c36bae34fd3c6552c1738bde5b70d441) - */ - -/** - * Database access object for the ActionMapping entity. - */ -class CRM_Core_DAO_ActionMapping extends CRM_Core_DAO { - const EXT = 'civicrm'; - const TABLE_ADDED = '3.4'; - - /** - * Static instance to hold the table name. - * - * @var string - */ - public static $_tableName = 'civicrm_action_mapping'; - - /** - * Should CiviCRM log any modifications to this table in the civicrm_log table. - * - * @var bool - */ - public static $_log = FALSE; - - /** - * @var int|string|null - * (SQL type: int unsigned) - * Note that values will be retrieved from the database as a string. - */ - public $id; - - /** - * Entity for which the reminder is created - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity; - - /** - * Entity value - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity_value; - - /** - * Entity value label - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity_value_label; - - /** - * Entity status - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity_status; - - /** - * Entity status label - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity_status_label; - - /** - * Entity date - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity_date_start; - - /** - * Entity date - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity_date_end; - - /** - * Entity recipient - * - * @var string|null - * (SQL type: varchar(64)) - * Note that values will be retrieved from the database as a string. - */ - public $entity_recipient; - - /** - * Class constructor. - */ - public function __construct() { - $this->__table = 'civicrm_action_mapping'; - parent::__construct(); - } - - /** - * Returns localized title of this entity. - * - * @param bool $plural - * Whether to return the plural version of the title. - */ - public static function getEntityTitle($plural = FALSE) { - return $plural ? ts('Action Mappings') : ts('Action Mapping'); - } - - /** - * Returns all the column names of this table - * - * @return array - */ - public static function &fields() { - if (!isset(Civi::$statics[__CLASS__]['fields'])) { - Civi::$statics[__CLASS__]['fields'] = [ - 'id' => [ - 'name' => 'id', - 'type' => CRM_Utils_Type::T_INT, - 'title' => ts('Action Mapping ID'), - 'required' => TRUE, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.id', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'html' => [ - 'type' => 'Number', - ], - 'readonly' => TRUE, - 'add' => '3.4', - ], - 'entity' => [ - 'name' => 'entity', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Action Mapping Entity'), - 'description' => ts('Entity for which the reminder is created'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - 'entity_value' => [ - 'name' => 'entity_value', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Action Mapping Entity Value'), - 'description' => ts('Entity value'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity_value', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - 'entity_value_label' => [ - 'name' => 'entity_value_label', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Value Label'), - 'description' => ts('Entity value label'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity_value_label', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - 'entity_status' => [ - 'name' => 'entity_status', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Status'), - 'description' => ts('Entity status'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity_status', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - 'entity_status_label' => [ - 'name' => 'entity_status_label', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Status Label'), - 'description' => ts('Entity status label'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity_status_label', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - 'entity_date_start' => [ - 'name' => 'entity_date_start', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Entity Start Date'), - 'description' => ts('Entity date'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity_date_start', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - 'entity_date_end' => [ - 'name' => 'entity_date_end', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Entity End Date'), - 'description' => ts('Entity date'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity_date_end', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - 'entity_recipient' => [ - 'name' => 'entity_recipient', - 'type' => CRM_Utils_Type::T_STRING, - 'title' => ts('Entity Recipient'), - 'description' => ts('Entity recipient'), - 'maxlength' => 64, - 'size' => CRM_Utils_Type::BIG, - 'usage' => [ - 'import' => FALSE, - 'export' => FALSE, - 'duplicate_matching' => FALSE, - 'token' => FALSE, - ], - 'where' => 'civicrm_action_mapping.entity_recipient', - 'table_name' => 'civicrm_action_mapping', - 'entity' => 'ActionMapping', - 'bao' => 'CRM_Core_DAO_ActionMapping', - 'localizable' => 0, - 'add' => '3.4', - ], - ]; - CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); - } - return Civi::$statics[__CLASS__]['fields']; - } - - /** - * Return a mapping from field-name to the corresponding key (as used in fields()). - * - * @return array - * Array(string $name => string $uniqueName). - */ - public static function &fieldKeys() { - if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) { - Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields())); - } - return Civi::$statics[__CLASS__]['fieldKeys']; - } - - /** - * Returns the names of this table - * - * @return string - */ - public static function getTableName() { - return self::$_tableName; - } - - /** - * Returns if this table needs to be logged - * - * @return bool - */ - public function getLog() { - return self::$_log; - } - - /** - * Returns the list of fields that can be imported - * - * @param bool $prefix - * - * @return array - */ - public static function &import($prefix = FALSE) { - $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'action_mapping', $prefix, []); - return $r; - } - - /** - * Returns the list of fields that can be exported - * - * @param bool $prefix - * - * @return array - */ - public static function &export($prefix = FALSE) { - $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'action_mapping', $prefix, []); - return $r; - } - - /** - * Returns the list of indices - * - * @param bool $localize - * - * @return array - */ - public static function indices($localize = TRUE) { - $indices = []; - return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; - } - -} diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.data.php b/civicrm/CRM/Core/DAO/AllCoreTables.data.php index 9251e2b752..31b51fb7ac 100644 --- a/civicrm/CRM/Core/DAO/AllCoreTables.data.php +++ b/civicrm/CRM/Core/DAO/AllCoreTables.data.php @@ -67,11 +67,6 @@ return [ 'class' => 'CRM_Core_DAO_PrevNextCache', 'table' => 'civicrm_prevnext_cache', ], - 'CRM_Core_DAO_ActionMapping' => [ - 'name' => 'ActionMapping', - 'class' => 'CRM_Core_DAO_ActionMapping', - 'table' => 'civicrm_action_mapping', - ], 'CRM_Core_DAO_RecurringEntity' => [ 'name' => 'RecurringEntity', 'class' => 'CRM_Core_DAO_RecurringEntity', diff --git a/civicrm/CRM/Core/DAO/AllCoreTables.php b/civicrm/CRM/Core/DAO/AllCoreTables.php index aeda2885b4..4c22ee769b 100644 --- a/civicrm/CRM/Core/DAO/AllCoreTables.php +++ b/civicrm/CRM/Core/DAO/AllCoreTables.php @@ -309,13 +309,13 @@ class CRM_Core_DAO_AllCoreTables { * @param string $tableName * @return string|CRM_Core_DAO|NULL */ - public static function getClassForTable($tableName) { + public static function getClassForTable(string $tableName) { //CRM-19677: on multilingual setup, trim locale from $tableName to fetch class name if (CRM_Core_I18n::isMultilingual()) { global $dbLocale; $tableName = str_replace($dbLocale, '', $tableName); } - return CRM_Utils_Array::value($tableName, self::tables()); + return self::tables()[$tableName] ?? NULL; } /** @@ -360,7 +360,7 @@ class CRM_Core_DAO_AllCoreTables { * * @return FALSE|string */ - public static function getTableForEntityName($briefName) { + public static function getTableForEntityName($briefName): string { self::init(); return self::$entityTypes[$briefName]['table']; } diff --git a/civicrm/CRM/Core/DAO/CustomField.php b/civicrm/CRM/Core/DAO/CustomField.php index cae670ca8a..e37267037e 100644 --- a/civicrm/CRM/Core/DAO/CustomField.php +++ b/civicrm/CRM/Core/DAO/CustomField.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/CustomField.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:e6366af2f4e852cd8022fda81c17e021) + * (GenCodeChecksum:e888a6eaf53db3f3d0572a9a1a552c15) */ /** @@ -47,7 +47,7 @@ class CRM_Core_DAO_CustomField extends CRM_Core_DAO { 'update' => 'civicrm/admin/custom/group/field/update?action=update&reset=1&id=[id]&gid=[custom_group_id]', 'preview' => 'civicrm/admin/custom/group/preview?reset=1&fid=[id]', 'delete' => 'civicrm/admin/custom/group/field/delete?reset=1&id=[id]', - 'move' => 'civicrm/admin/custom/group/field/move?reset=1&fid=[id]', + 'detach' => 'civicrm/admin/custom/group/field/move?reset=1&fid=[id]', ]; /** diff --git a/civicrm/CRM/Core/DAO/CustomGroup.php b/civicrm/CRM/Core/DAO/CustomGroup.php index 574988762e..0f32de497d 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:b686c4c7a9eb826d2b2aa39841a01d9d) + * (GenCodeChecksum:aa09bb4ab9224e33693159efddd64089) */ /** @@ -404,8 +404,7 @@ class CRM_Core_DAO_CustomGroup extends CRM_Core_DAO { 'controlField' => 'extends', ], 'pseudoconstant' => [ - 'optionGroupName' => 'custom_data_type', - 'optionEditPath' => 'civicrm/admin/options/custom_data_type', + 'callback' => 'CRM_Core_BAO_CustomGroup::getExtendsEntityColumnIdOptions', ], 'add' => '2.2', ], diff --git a/civicrm/CRM/Core/DAO/Email.php b/civicrm/CRM/Core/DAO/Email.php index 8fa3121e6b..72112be2b8 100644 --- a/civicrm/CRM/Core/DAO/Email.php +++ b/civicrm/CRM/Core/DAO/Email.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/Email.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:466e1cb583d12b018b7deb2c946c2d44) + * (GenCodeChecksum:df7f07aea847edcfd8aeb02390f2e5ba) */ /** @@ -288,7 +288,7 @@ class CRM_Core_DAO_Email extends CRM_Core_DAO { 'bao' => 'CRM_Core_BAO_Email', 'localizable' => 0, 'html' => [ - 'type' => 'Text', + 'type' => 'Email', ], 'add' => '1.1', ], diff --git a/civicrm/CRM/Core/DAO/MailSettings.php b/civicrm/CRM/Core/DAO/MailSettings.php index b933a5d07d..943b3c9caf 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:7b41fb2c318a3f0200a697026fcede90) + * (GenCodeChecksum:f78519e347dec6f6fde41e14b7da4370) */ /** @@ -30,6 +30,17 @@ class CRM_Core_DAO_MailSettings extends CRM_Core_DAO { */ public static $_log = FALSE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/admin/mailSettings/edit?action=add&reset=1', + 'update' => 'civicrm/admin/mailSettings/edit?action=update&id=[id]&reset=1', + 'delete' => 'civicrm/admin/mailSettings/edit?action=delete&id=[id]&reset=1', + ]; + /** * primary key * @@ -196,7 +207,7 @@ class CRM_Core_DAO_MailSettings extends CRM_Core_DAO { * Whether to return the plural version of the title. */ public static function getEntityTitle($plural = FALSE) { - return $plural ? ts('Mail Settingses') : ts('Mail Settings'); + return $plural ? ts('Mail Accounts') : ts('Mail Account'); } /** diff --git a/civicrm/CRM/Core/DAO/PreferencesDate.php b/civicrm/CRM/Core/DAO/PreferencesDate.php index e0d6bdb528..f6c1f48e00 100644 --- a/civicrm/CRM/Core/DAO/PreferencesDate.php +++ b/civicrm/CRM/Core/DAO/PreferencesDate.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/PreferencesDate.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:3f9c7b68e9dc1f9a677731328ffa5947) + * (GenCodeChecksum:c83fafaf0b7ee8513ce6de9844d7a729) */ /** @@ -30,6 +30,15 @@ class CRM_Core_DAO_PreferencesDate extends CRM_Core_DAO { */ public static $_log = TRUE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'update' => 'civicrm/admin/setting/preferences/date?reset=1&action=update&id=[id]', + ]; + /** * @var int|string|null * (SQL type: int unsigned) @@ -106,7 +115,7 @@ class CRM_Core_DAO_PreferencesDate extends CRM_Core_DAO { * Whether to return the plural version of the title. */ public static function getEntityTitle($plural = FALSE) { - return $plural ? ts('Preferences Dates') : ts('Preferences Date'); + return $plural ? ts('Date Preferences') : ts('Date Preference'); } /** diff --git a/civicrm/CRM/Core/DAO/UFGroup.php b/civicrm/CRM/Core/DAO/UFGroup.php index ae54985a33..dd2f2eb9e7 100644 --- a/civicrm/CRM/Core/DAO/UFGroup.php +++ b/civicrm/CRM/Core/DAO/UFGroup.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Core/UFGroup.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:c8d65a421dc23cef070b148a190b37b0) + * (GenCodeChecksum:0d970471c35ed280de73bc5f065278cf) */ /** @@ -131,13 +131,13 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { public $limit_listings_group_id; /** - * Redirect to URL. + * Redirect to URL on submit. * * @var string|null * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ - public $post_URL; + public $post_url; /** * foreign key to civicrm_group_id @@ -194,13 +194,13 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { public $is_update_dupe; /** - * Redirect to URL when Cancle button clik . + * Redirect to URL when Cancel button clicked. * * @var string|null * (SQL type: varchar(255)) * Note that values will be retrieved from the database as a string. */ - public $cancel_URL; + public $cancel_url; /** * Should we create a cms user for this profile @@ -542,11 +542,11 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { ], 'add' => '1.4', ], - 'post_URL' => [ - 'name' => 'post_URL', + 'post_url' => [ + 'name' => 'post_url', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Post Url'), - 'description' => ts('Redirect to URL.'), + 'description' => ts('Redirect to URL on submit.'), 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ @@ -555,7 +555,7 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_uf_group.post_URL', + 'where' => 'civicrm_uf_group.post_url', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', @@ -687,11 +687,11 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'localizable' => 0, 'add' => '1.7', ], - 'cancel_URL' => [ - 'name' => 'cancel_URL', + 'cancel_url' => [ + 'name' => 'cancel_url', 'type' => CRM_Utils_Type::T_STRING, 'title' => ts('Profile Cancel URL'), - 'description' => ts('Redirect to URL when Cancle button clik .'), + 'description' => ts('Redirect to URL when Cancel button clicked.'), 'maxlength' => 255, 'size' => CRM_Utils_Type::HUGE, 'usage' => [ @@ -700,11 +700,14 @@ class CRM_Core_DAO_UFGroup extends CRM_Core_DAO { 'duplicate_matching' => FALSE, 'token' => FALSE, ], - 'where' => 'civicrm_uf_group.cancel_URL', + 'where' => 'civicrm_uf_group.cancel_url', 'table_name' => 'civicrm_uf_group', 'entity' => 'UFGroup', 'bao' => 'CRM_Core_BAO_UFGroup', 'localizable' => 0, + 'html' => [ + 'label' => ts("Cancel URL"), + ], 'add' => '1.4', ], 'is_cms_user' => [ diff --git a/civicrm/CRM/Core/Error.php b/civicrm/CRM/Core/Error.php index 1ff5ab8458..5e6b349e57 100644 --- a/civicrm/CRM/Core/Error.php +++ b/civicrm/CRM/Core/Error.php @@ -365,7 +365,7 @@ class CRM_Core_Error extends PEAR_ErrorStack { CRM_Core_Error::backtrace('backTrace', TRUE); // If we are in an ajax callback, format output appropriately - if (CRM_Utils_Array::value('snippet', $_REQUEST) === CRM_Core_Smarty::PRINT_JSON) { + if (($_REQUEST['snippet'] ?? NULL) === CRM_Core_Smarty::PRINT_JSON) { $out = [ 'status' => 'fatal', 'content' => '<div class="messages status no-popup">' . CRM_Core_Page::crmIcon('fa-info-circle') . ' ' . ts('Sorry but we are not able to provide this at the moment.') . '</div>', @@ -927,7 +927,7 @@ class CRM_Core_Error extends PEAR_ErrorStack { $title = ts('Error'); } $session->setStatus($status, $title, 'alert', ['expires' => 0]); - if (CRM_Utils_Array::value('snippet', $_REQUEST) === CRM_Core_Smarty::PRINT_JSON) { + if (($_REQUEST['snippet'] ?? NULL) === CRM_Core_Smarty::PRINT_JSON) { CRM_Core_Page_AJAX::returnJsonResponse(['status' => 'error']); } CRM_Utils_System::redirect($redirect); diff --git a/civicrm/CRM/Core/Error/Log.php b/civicrm/CRM/Core/Error/Log.php index 964c7ed0ac..59bd871b7f 100644 --- a/civicrm/CRM/Core/Error/Log.php +++ b/civicrm/CRM/Core/Error/Log.php @@ -59,9 +59,17 @@ class CRM_Core_Error_Log extends \Psr\Log\AbstractLogger { if (isset($context['exception'])) { $context['exception'] = CRM_Core_Error::formatTextException($context['exception']); } - $message .= "\n" . print_r($context, 1); + $fullContext = "\n" . print_r($context, 1); + $seeLog = sprintf(' (<em>%s</em>)', ts('See log for details.')); + } + else { + $fullContext = $seeLog = ''; + } + $pearPriority = $this->map[$level]; + CRM_Core_Error::debug_log_message($message . $fullContext, FALSE, '', $pearPriority); + if ($pearPriority <= PEAR_LOG_ERR && CRM_Core_Config::singleton()->debug && isset($_SESSION['CiviCRM'])) { + CRM_Core_Session::setStatus($message . $seeLog, ts('Error'), 'error'); } - CRM_Core_Error::debug_log_message($message, FALSE, '', $this->map[$level]); } } diff --git a/civicrm/CRM/Core/Form.php b/civicrm/CRM/Core/Form.php index ad88b3b020..48613449ca 100644 --- a/civicrm/CRM/Core/Form.php +++ b/civicrm/CRM/Core/Form.php @@ -547,7 +547,12 @@ class CRM_Core_Form extends HTML_QuickForm_Page { unset($attributes['disabled']); } - $element = $this->addElement($type, $name, CRM_Utils_String::purifyHTML($label), $attributes, $extra); + if ($type === 'checkbox') { + $element = $this->addElement($type, $name, CRM_Utils_String::purifyHTML($label), NULL, $attributes); + } + else { + $element = $this->addElement($type, $name, CRM_Utils_String::purifyHTML($label), $attributes, $extra); + } if (HTML_QuickForm::isError($element)) { CRM_Core_Error::statusBounce(HTML_QuickForm::errorMessage($element)); } @@ -1580,8 +1585,8 @@ class CRM_Core_Form extends HTML_QuickForm_Page { ); $attributes = ['formatType' => 'searchDate']; $extra = ['time' => $isDateTime]; - $this->add('datepicker', $fieldName . $from, ts($fromLabel), $attributes, $required, $extra); - $this->add('datepicker', $fieldName . $to, ts($toLabel), $attributes, $required, $extra); + $this->add('datepicker', $fieldName . $from, _ts($fromLabel), $attributes, $required, $extra); + $this->add('datepicker', $fieldName . $to, _ts($toLabel), $attributes, $required, $extra); } /** @@ -1672,7 +1677,7 @@ class CRM_Core_Form extends HTML_QuickForm_Page { [, $id] = explode('_', $name); $label = $props['label'] ?? CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', 'label', $id); $gid = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', 'option_group_id', $id); - if (CRM_Utils_Array::value('context', $props) != 'search') { + if (($props['context'] ?? NULL) != 'search') { $props['data-option-edit-path'] = array_key_exists('option_url', $props) ? $props['option_url'] : 'civicrm/admin/options/' . CRM_Core_DAO::getFieldValue('CRM_Core_DAO_OptionGroup', $gid); } } @@ -1682,14 +1687,14 @@ class CRM_Core_Form extends HTML_QuickForm_Page { foreach ($info['values'] as $uniqueName => $fieldSpec) { if ( $uniqueName === $props['field'] || - CRM_Utils_Array::value('name', $fieldSpec) === $props['field'] || + ($fieldSpec['name'] ?? NULL) === $props['field'] || in_array($props['field'], CRM_Utils_Array::value('api.aliases', $fieldSpec, [])) ) { break; } } $label = $props['label'] ?? $fieldSpec['html']['label'] ?? $fieldSpec['title']; - if (CRM_Utils_Array::value('context', $props) != 'search') { + if (($props['context'] ?? NULL) != 'search') { $props['data-option-edit-path'] = array_key_exists('option_url', $props) ? $props['option_url'] : CRM_Core_PseudoConstant::getOptionEditUrl($fieldSpec); } } @@ -1783,12 +1788,13 @@ class CRM_Core_Form extends HTML_QuickForm_Page { } // Core field - get metadata. - $fieldSpec = civicrm_api3($props['entity'], 'getfield', $props); - $fieldSpec = $fieldSpec['values']; + $fieldSpec = civicrm_api3($props['entity'], 'getfield', $props)['values']; $label = $props['label'] ?? $fieldSpec['html']['label'] ?? $fieldSpec['title']; $widget = $props['type'] ?? $fieldSpec['html']['type']; - if ($widget == 'TextArea' && $context == 'search') { + if (in_array($widget, ['TextArea', 'Email'], TRUE) && $context == 'search') { + // Don't require a full email to be entered in search mode. + // See https://lab.civicrm.org/dev/core/-/issues/4430. $widget = 'Text'; } diff --git a/civicrm/CRM/Core/Form/EntityFormTrait.php b/civicrm/CRM/Core/Form/EntityFormTrait.php index 2d09fa550a..bbdce93d9c 100644 --- a/civicrm/CRM/Core/Form/EntityFormTrait.php +++ b/civicrm/CRM/Core/Form/EntityFormTrait.php @@ -248,7 +248,7 @@ trait CRM_Core_Form_EntityFormTrait { $defaults[$fieldSpec['name']] = $value; } // Store a list of fields with money formatters - if (CRM_Utils_Array::value('formatter', $fieldSpec) == 'crmMoney') { + if (($fieldSpec['formatter'] ?? NULL) == 'crmMoney') { $moneyFields[] = $entityFieldName; } } diff --git a/civicrm/CRM/Core/Form/RecurringEntity.php b/civicrm/CRM/Core/Form/RecurringEntity.php index 52ba505fdc..67ce4f0052 100644 --- a/civicrm/CRM/Core/Form/RecurringEntity.php +++ b/civicrm/CRM/Core/Form/RecurringEntity.php @@ -96,7 +96,7 @@ class CRM_Core_Form_RecurringEntity { // Assign variables $entityType = CRM_Core_DAO_AllCoreTables::getEntityNameForTable($entityTable); $tpl = CRM_Core_Smarty::singleton(); - $tpl->assign('recurringEntityType', ts($entityType)); + $tpl->assign('recurringEntityType', _ts($entityType)); $tpl->assign('currentEntityId', self::$_entityId); $tpl->assign('entityTable', self::$_entityTable); $tpl->assign('scheduleReminderId', self::$_scheduleReminderID); @@ -327,7 +327,7 @@ class CRM_Core_Form_RecurringEntity { $params['entity_id'] = self::$_entityId; } //Process this function only when you get this variable - if (CRM_Utils_Array::value('allowRepeatConfigToSubmit', $params) == 1) { + if (($params['allowRepeatConfigToSubmit'] ?? NULL) == 1) { if (!empty($params['entity_table']) && !empty($params['entity_id']) && $type) { $params['used_for'] = $type; if (empty($params['parent_entity_id'])) { diff --git a/civicrm/CRM/Core/I18n.php b/civicrm/CRM/Core/I18n.php index c9db571c32..6e307334ca 100644 --- a/civicrm/CRM/Core/I18n.php +++ b/civicrm/CRM/Core/I18n.php @@ -524,7 +524,7 @@ class CRM_Core_I18n { foreach ($array as & $value) { if ($value) { - $value = ts($value, $params); + $value = _ts($value, $params); } } } @@ -541,8 +541,11 @@ class CRM_Core_I18n { $this->localizeTitles($value); $array[$key] = $value; } - elseif ((string ) $key == 'title') { - $array[$key] = ts($value, ['context' => 'menu']); + else { + $key = (string) $key; + if ($key == 'title' || $key == 'desc') { + $array[$key] = _ts($value, ['context' => 'menu']); + } } } } @@ -799,12 +802,15 @@ class CRM_Core_I18n { * Short-named function for string translation, defined in global scope so it's available everywhere. * * @param string $text - * String string for translating. + * String for translating. + * Ex: 'Hello, %1!' * @param array $params - * Array an array of additional parameters. - * + * An array of additional parameters, as per `crm_translate()`. + * Ex: [1 => 'Dave'] * @return string - * the translated string + * The translated string + * Ex: '¡Buenos dÃas Dave!` + * @see \CRM_Core_I18n::crm_translate() */ function ts($text, $params = []) { static $bootstrapReady = FALSE; @@ -841,3 +847,21 @@ function ts($text, $params = []) { return $i18n->crm_translate($text, $params); } } + +/** + * Alternate name for `ts()` + * + * This is functionally equivalent to `ts()`. However, regular `ts()` is subject to extra linting + * rules. Using `_ts()` can bypass the linting rules for the rare cases where you really want + * special/dynamic values. + * + * @param array ...$args + * @return string + * @see ts() + * @see \CRM_Core_I18n::crm_translate() + * @internal + */ +function _ts(...$args) { + $f = 'ts'; + return $f(...$args); +} diff --git a/civicrm/CRM/Core/Invoke.php b/civicrm/CRM/Core/Invoke.php index c2d8d5ac71..51b2d0cb15 100644 --- a/civicrm/CRM/Core/Invoke.php +++ b/civicrm/CRM/Core/Invoke.php @@ -55,7 +55,7 @@ class CRM_Core_Invoke { return NULL; } // CRM-15901: Turn off PHP errors display for all ajax calls - if (CRM_Utils_Array::value(1, $args) == 'ajax' || !empty($_REQUEST['snippet'])) { + if (($args[1] ?? NULL) == 'ajax' || !empty($_REQUEST['snippet'])) { ini_set('display_errors', 0); } diff --git a/civicrm/CRM/Core/ManagedEntities.php b/civicrm/CRM/Core/ManagedEntities.php index d923998692..52e8d1c0c4 100644 --- a/civicrm/CRM/Core/ManagedEntities.php +++ b/civicrm/CRM/Core/ManagedEntities.php @@ -89,7 +89,7 @@ class CRM_Core_ManagedEntities { $result = civicrm_api3($dao->entity_type, 'getsingle', $params); } catch (Exception $e) { - $this->onApiError($dao->entity_type, 'getsingle', $params, $result); + $this->onApiError($dao->module, $dao->name, 'getsingle', $result['error_message'], $e); } return $result; } @@ -182,14 +182,21 @@ class CRM_Core_ManagedEntities { // Use "save" instead of "create" action to accommodate a "match" param $params['records'] = [$params['values']]; unset($params['values']); - $result = civicrm_api4($item['entity_type'], 'save', $params); + try { + $result = civicrm_api4($item['entity_type'], 'save', $params); + } + catch (CRM_Core_Exception $e) { + $this->onApiError($item['module'], $item['name'], 'save', $e->getMessage(), $e); + return; + } $id = $result->first()['id']; } // APIv3 else { $result = civicrm_api($item['entity_type'], 'create', $params); if (!empty($result['is_error'])) { - $this->onApiError($item['entity_type'], 'create', $params, $result); + $this->onApiError($item['module'], $item['name'], 'create', $result['error_message']); + return; } $id = $result['id']; } @@ -247,7 +254,8 @@ class CRM_Core_ManagedEntities { $result = civicrm_api($item['entity_type'], 'create', $params); if ($result['is_error']) { - $this->onApiError($item['entity_type'], 'create', $params, $result); + $this->onApiError($item['module'], $item['name'], 'create', $result['error_message']); + return; } } elseif ($doUpdate && $item['params']['version'] == 4) { @@ -255,7 +263,13 @@ class CRM_Core_ManagedEntities { $params['values']['id'] = $item['entity_id']; // 'match' param doesn't apply to "update" action unset($params['match']); - civicrm_api4($item['entity_type'], 'update', $params); + try { + civicrm_api4($item['entity_type'], 'update', $params); + } + catch (CRM_Core_Exception $e) { + $this->onApiError($item['module'], $item['name'], 'update', $e->getMessage(), $e); + return; + } } if (isset($item['cleanup']) || $doUpdate) { @@ -287,7 +301,8 @@ class CRM_Core_ManagedEntities { ]; $result = civicrm_api($item['entity_type'], 'create', $params); if ($result['is_error']) { - $this->onApiError($item['entity_type'], 'create', $params, $result); + $this->onApiError($item['module'], $item['name'], 'create', $result['error_message']); + return; } // Reset the `entity_modified_date` timestamp to indicate that the entity has not been modified by the user. $dao = new CRM_Core_DAO_Managed(); @@ -339,30 +354,25 @@ class CRM_Core_ManagedEntities { // Delete the entity and the managed record if ($doDelete) { - // APIv4 delete - if (CRM_Core_BAO_Managed::isApi4ManagedType($item['entity_type'])) { - civicrm_api4($item['entity_type'], 'delete', [ - 'checkPermissions' => FALSE, - 'where' => [['id', '=', $item['entity_id']]], - ]); - } - // APIv3 delete - else { - $params = [ - 'version' => 3, - 'id' => $item['entity_id'], - ]; - $check = civicrm_api3($item['entity_type'], 'get', $params); - if ($check['count']) { - $result = civicrm_api($item['entity_type'], 'delete', $params); - if ($result['is_error']) { - if (isset($item['name'])) { - $params['name'] = $item['name']; - } - $this->onApiError($item['entity_type'], 'delete', $params, $result); + try { + // APIv4 delete + if (CRM_Core_BAO_Managed::isApi4ManagedType($item['entity_type'])) { + civicrm_api4($item['entity_type'], 'delete', [ + 'checkPermissions' => FALSE, + 'where' => [['id', '=', $item['entity_id']]], + ]); + } + // APIv3 delete + else { + $check = civicrm_api3($item['entity_type'], 'get', ['id' => $item['entity_id']]); + if ($check['count']) { + civicrm_api3($item['entity_type'], 'delete', ['id' => $item['entity_id']]); } } } + catch (CRM_Core_Exception $e) { + $this->onApiError($item['module'], $item['name'], 'delete', $e->getMessage(), $e); + } // Ensure managed record is deleted. // Note: in many cases CRM_Core_BAO_Managed::on_hook_civicrm_post() will take care of // deleting it, but there may be edge cases, such as the source record no longer existing, @@ -465,23 +475,22 @@ class CRM_Core_ManagedEntities { } /** - * @param string $entity - * @param string $action - * @param array $params - * @param array $result - * - * @throws Exception + * @param string $moduleName + * @param string $managedEntityName + * @param string $actionName + * @param string $errorMessage + * @param Throwable|null $exception */ - protected function onApiError($entity, $action, $params, $result) { - CRM_Core_Error::debug_var('ManagedEntities_failed', [ - 'entity' => $entity, - 'action' => $action, - 'params' => $params, - 'result' => $result, - ]); - throw new Exception('API error: ' . $result['error_message'] . ' on ' . $entity . '.' . $action - . (!empty($params['name']) ? '( entity name ' . $params['name'] . ')' : '') - ); + protected function onApiError(string $moduleName, string $managedEntityName, string $actionName, string $errorMessage, ?Throwable $exception = NULL): void { + // During install/upgrade this problem might be due to an about-to-be-installed extension + // So only log the error if it persists outside of upgrade mode + if (CRM_Core_Config::isUpgradeMode() || defined('CIVI_SETUP')) { + return; + } + + $message = sprintf('(%s) Unable to %s managed entity "%s": %s', $moduleName, $actionName, $managedEntityName, $errorMessage); + $context = $exception ? ['exception' => $exception] : []; + Civi::log()->error($message, $context); } /** diff --git a/civicrm/CRM/Core/OptionGroup.php b/civicrm/CRM/Core/OptionGroup.php index f3256090e7..cc06777ee1 100644 --- a/civicrm/CRM/Core/OptionGroup.php +++ b/civicrm/CRM/Core/OptionGroup.php @@ -543,7 +543,7 @@ WHERE v.option_group_id = g.id ] as $fld) { $row[$fld] = $dao->$fld; if ($localize && in_array($fld, ['label', 'description'])) { - $row[$fld] = ts($row[$fld]); + $row[$fld] = _ts($row[$fld]); } } } diff --git a/civicrm/CRM/Core/Page.php b/civicrm/CRM/Core/Page.php index 36c93702e3..41a8a57c69 100644 --- a/civicrm/CRM/Core/Page.php +++ b/civicrm/CRM/Core/Page.php @@ -465,7 +465,7 @@ class CRM_Core_Page { $fields = civicrm_api3($entity, 'getfields', ['action' => 'get']); $dateFields = []; foreach ($fields['values'] as $fieldName => $fieldMetaData) { - if (isset($fieldMetaData['html']) && CRM_Utils_Array::value('type', $fieldMetaData['html']) == 'Select Date') { + if (isset($fieldMetaData['html']) && ($fieldMetaData['html']['type'] ?? NULL) == 'Select Date') { $dateFields[$fieldName] = CRM_Utils_Date::addDateMetadataToField($fieldMetaData, $fieldMetaData); } } diff --git a/civicrm/CRM/Core/Page/AJAX/Location.php b/civicrm/CRM/Core/Page/AJAX/Location.php index b5da745516..2faae46bf2 100644 --- a/civicrm/CRM/Core/Page/AJAX/Location.php +++ b/civicrm/CRM/Core/Page/AJAX/Location.php @@ -32,7 +32,7 @@ class CRM_Core_Page_AJAX_Location { */ public static function getPermissionedLocation() { $cid = CRM_Utils_Request::retrieve('cid', 'Integer', CRM_Core_DAO::$_nullObject, TRUE); - $ufId = CRM_Utils_Request::retrieve('ufId', 'Integer', CRM_Core_DAO::$_nullObject, TRUE); + $ufID = CRM_Utils_Request::retrieve('ufID', 'Integer', CRM_Core_DAO::$_nullObject, TRUE); // Verify user id $user = CRM_Utils_Request::retrieve('uid', 'Integer', CRM_Core_DAO::$_nullObject, FALSE, CRM_Core_Session::singleton() @@ -54,7 +54,7 @@ class CRM_Core_Page_AJAX_Location { $addressSequence = array_flip(CRM_Utils_Address::sequence(\Civi::settings()->get('address_format'))); - $profileFields = CRM_Core_BAO_UFGroup::getFields($ufId, FALSE, CRM_Core_Action::VIEW, NULL, NULL, FALSE, + $profileFields = CRM_Core_BAO_UFGroup::getFields($ufID, FALSE, CRM_Core_Action::VIEW, NULL, NULL, FALSE, NULL, FALSE, NULL, CRM_Core_Permission::CREATE, NULL ); $website = CRM_Core_BAO_Website::getValues($entityBlock, $values); diff --git a/civicrm/CRM/Core/Page/Basic.php b/civicrm/CRM/Core/Page/Basic.php index 52730c05d0..366f16e332 100644 --- a/civicrm/CRM/Core/Page/Basic.php +++ b/civicrm/CRM/Core/Page/Basic.php @@ -18,24 +18,54 @@ abstract class CRM_Core_Page_Basic extends CRM_Core_Page { protected $_action; - /** - * Define all the abstract functions here. - */ - /** * Name of the BAO to perform various DB manipulations. * - * @return string + * @return CRM_Core_DAO|string */ abstract protected function getBAOName(); /** - * An array of action links. + * Get array of action links for the "browse" page. * - * @return array - * (reference) + * Transforms from the 'paths' in metadata to the + * format expected by basic pages. + * + * @return array[] */ - abstract protected function &links(); + public function &links() { + $baoName = $this->getBAOName(); + if (!isset(Civi::$statics[$baoName]['actionLinks'])) { + Civi::$statics[$baoName]['actionLinks'] = []; + $title = $baoName::getEntityTitle(); + $paths = $baoName::getEntityPaths(); + unset($paths['add']); + foreach ($paths as $action => $path) { + $actionKey = CRM_Core_Action::map($action); + if ($actionKey) { + [$path, $query] = array_pad(explode('?', $path), 2, ''); + Civi::$statics[$baoName]['actionLinks'][$actionKey] = [ + 'name' => CRM_Core_Action::getLabel($actionKey), + 'title' => CRM_Core_Action::getTitle($actionKey, $title), + 'url' => $path, + 'qs' => str_replace(['[', ']'], '%%', $query), + 'weight' => CRM_Core_Action::getWeight($actionKey), + ]; + } + } + if (isset($baoName::getSupportedFields()['is_active'])) { + foreach ([CRM_Core_Action::DISABLE, CRM_Core_Action::ENABLE] as $actionKey) { + Civi::$statics[$baoName]['actionLinks'][$actionKey] = [ + 'name' => CRM_Core_Action::getLabel($actionKey), + 'title' => CRM_Core_Action::getTitle($actionKey, $title), + 'ref' => 'crm-enable-disable', + 'weight' => CRM_Core_Action::getWeight($actionKey), + ]; + } + } + } + return Civi::$statics[$baoName]['actionLinks']; + } /** * Name of the edit form class. diff --git a/civicrm/CRM/Core/Page/QUnit.php b/civicrm/CRM/Core/Page/QUnit.php index d97ba0012d..8edd627eaa 100644 --- a/civicrm/CRM/Core/Page/QUnit.php +++ b/civicrm/CRM/Core/Page/QUnit.php @@ -66,7 +66,7 @@ class CRM_Core_Page_QUnit extends CRM_Core_Page { $arg = explode('/', CRM_Utils_System::currentPath()); if ($arg[1] == 'dev' - && CRM_Utils_Array::value(2, $arg) == 'qunit' + && ($arg[2] ?? NULL) == 'qunit' && isset($arg[3]) && isset($arg[4]) ) { diff --git a/civicrm/CRM/Core/Payment.php b/civicrm/CRM/Core/Payment.php index 2eeed7b063..52665be201 100644 --- a/civicrm/CRM/Core/Payment.php +++ b/civicrm/CRM/Core/Payment.php @@ -1529,7 +1529,7 @@ abstract class CRM_Core_Payment { if (isset($_GET['payment_date']) && isset($_GET['merchant_return_link']) && - CRM_Utils_Array::value('payment_status', $_GET) == 'Completed' && + ($_GET['payment_status'] ?? NULL) == 'Completed' && $paymentProcessor['payment_processor_type'] == "PayPal_Standard" ) { return TRUE; @@ -1615,7 +1615,7 @@ abstract class CRM_Core_Payment { // This is called when processor_name is passed - passing processor_id instead is recommended. $sql .= " WHERE ppt.name = %2 AND pp.is_test = %1"; $args[1] = [ - (CRM_Utils_Array::value('mode', $params) == 'test') ? 1 : 0, + (($params['mode'] ?? NULL) == 'test') ? 1 : 0, 'Integer', ]; $args[2] = [$params['processor_name'], 'String']; @@ -1670,7 +1670,7 @@ abstract class CRM_Core_Payment { if (!$extension_instance_found) { $message = "No extension instances of the '%1' payment processor were found.<br />" . "%2 method is unsupported in legacy payment processors."; - throw new CRM_Core_Exception(ts($message, [ + throw new CRM_Core_Exception(_ts($message, [ 1 => $params['processor_name'], 2 => $method, ])); diff --git a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php index f3f050e9f4..6cd7b694a5 100644 --- a/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php +++ b/civicrm/CRM/Core/Payment/AuthorizeNetIPN.php @@ -9,6 +9,8 @@ +--------------------------------------------------------------------+ */ +use Civi\Api4\Contribution; +use Civi\Api4\ContributionRecur; use Civi\Api4\PaymentProcessor; /** @@ -31,95 +33,82 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { parent::__construct(); } + /** + * @var string + */ + protected $transactionID; + + /** + * @var string + */ + protected $contributionStatus; + /** * Main IPN processing function. - * - * @return bool|void - * - * @throws \CRM_Core_Exception */ public function main() { try { //we only get invoice num as a key player from payment gateway response. //for ARB we get x_subscription_id and x_subscription_paynum + // @todo - no idea what the above comment means. The do-nothing line below + // this is only still here as it might relate??? $x_subscription_id = $this->getRecurProcessorID(); - $ids = $input = []; - $input['component'] = 'contribute'; - - // load post vars in $input - $this->getInput($input); - - // load post ids in $ids - $this->getIDs($ids); - $paymentProcessorID = $this->getPaymentProcessorID(); - - // Check if the contribution exists - // make sure contribution exists and is valid - $contribution = new CRM_Contribute_BAO_Contribution(); - $contribution->id = $contributionID = $this->getContributionID(); - if (!$contribution->find(TRUE)) { - throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $contribution->id, NULL, ['context' => "Could not find contribution record: {$contribution->id} in IPN request: " . print_r($input, TRUE)]); + if (!$this->isSuccess()) { + $errorMessage = ts('Subscription payment failed - %1', [1 => htmlspecialchars($this->getInput()['response_reason_text'])]); + ContributionRecur::update(FALSE) + ->addWhere('id', '=', $this->getContributionRecurID()) + ->setValues([ + 'contribution_status_id:name' => 'Failed', + 'cancel_date' => 'now', + 'cancel_reason' => $errorMessage, + ])->execute(); + \Civi::log('authorize_net')->info($errorMessage); + return; } - - $ids['contributionPage'] = $contribution->contribution_page_id; - - $contributionRecur = new CRM_Contribute_BAO_ContributionRecur(); - $contributionRecur->id = $ids['contributionRecur']; - if (!$contributionRecur->find(TRUE)) { - throw new CRM_Core_Exception("Could not find contribution recur record: {$ids['ContributionRecur']} in IPN request: " . print_r($input, TRUE)); + if ($this->getContributionStatus() !== 'Completed') { + ContributionRecur::update(FALSE)->addWhere('id', '=', $this->getContributionRecurID()) + ->setValues(['trxn_id' => $this->getRecurProcessorID()])->execute(); + $contributionID = $this->getContributionID(); } - // do a subscription check - if ($contributionRecur->processor_id != $this->getRecurProcessorID()) { - throw new CRM_Core_Exception('Unrecognized subscription.'); + else { + $contribution = civicrm_api3('Contribution', 'repeattransaction', [ + 'contribution_recur_id' => $this->getContributionRecurID(), + 'receive_date' => $this->getInput()['receive_date'], + 'payment_processor_id' => $this->getPaymentProcessorID(), + 'trxn_id' => $this->getInput()['trxn_id'], + 'amount' => $this->getAmount(), + ]); + $contributionID = $contribution['id']; } - - // check if first contribution is completed, else complete first contribution - $first = TRUE; - if ($contribution->contribution_status_id == 1) { - $first = FALSE; - //load new contribution object if required. - // create a contribution and then get it processed - $contribution = new CRM_Contribute_BAO_Contribution(); - } - $input['payment_processor_id'] = $paymentProcessorID; - $isFirstOrLastRecurringPayment = $this->recur($input, $contributionRecur, $contribution, $first); - - if ($isFirstOrLastRecurringPayment) { - //send recurring Notification email for user - CRM_Contribute_BAO_ContributionPage::recurringNotify($contributionID, TRUE, - $contributionRecur - ); - } - - return TRUE; + civicrm_api3('Payment', 'create', [ + 'trxn_id' => $this->getInput()['trxn_id'], + 'trxn_date' => $this->getInput()['receive_date'], + 'payment_processor_id' => $this->getPaymentProcessorID(), + 'contribution_id' => $contributionID, + 'total_amount' => $this->getAmount(), + 'is_send_contribution_notification' => $this->getContributionRecur()->is_email_receipt, + ]); + $this->notify(); } catch (CRM_Core_Exception $e) { - Civi::log()->debug($e->getMessage()); + Civi::log('authorize_net')->debug($e->getMessage()); echo 'Invalid or missing data'; } } /** - * @param array $input - * @param \CRM_Contribute_BAO_ContributionRecur $recur - * @param \CRM_Contribute_BAO_Contribution $contribution - * @param bool $first - * - * @return bool * @throws \CRM_Core_Exception */ - public function recur($input, $recur, $contribution, $first) { - - $contributionStatus = CRM_Contribute_PseudoConstant::contributionStatus(NULL, 'name'); - - $now = date('YmdHis'); + public function notify() { + $recur = $this->getContributionRecur(); + $input = $this->getInput(); + $input['payment_processor_id'] = $this->getPaymentProcessorID(); $isFirstOrLastRecurringPayment = FALSE; if ($this->isSuccess()) { // Approved - if ($first) { - $recur->trxn_id = $recur->processor_id; + if ($this->getContributionStatus() !== 'Completed') { $isFirstOrLastRecurringPayment = CRM_Core_Payment::RECURRING_PAYMENT_START; } @@ -127,49 +116,34 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { ($input['subscription_paynum'] >= $recur->installments) ) { // this is the last payment - $recur->end_date = $now; $isFirstOrLastRecurringPayment = CRM_Core_Payment::RECURRING_PAYMENT_END; - // This end date update should occur in ContributionRecur::updateOnNewPayment - // testIPNPaymentRecurNoReceipt has test cover. - $recur->save(); } } - else { - // Declined - // failed status - $recur->contribution_status_id = array_search('Failed', $contributionStatus); - $recur->cancel_date = $now; - $recur->save(); - $message = ts('Subscription payment failed - %1', [1 => htmlspecialchars($input['response_reason_text'])]); - CRM_Core_Error::debug_log_message($message); - - // the recurring contribution has declined a payment or has failed - // so we just fix the recurring contribution and not change any of - // the existing contributions - // CRM-9036 - return FALSE; + if ($isFirstOrLastRecurringPayment) { + //send recurring Notification email for user + CRM_Contribute_BAO_ContributionPage::recurringNotify($this->getContributionID(), TRUE, + $this->getContributionRecur() + ); } - - CRM_Contribute_BAO_Contribution::completeOrder($input, $recur->id, $contribution->id ?? NULL); - return $isFirstOrLastRecurringPayment; } /** * Get the input from passed in fields. * - * @param array $input - * * @throws \CRM_Core_Exception */ - public function getInput(&$input) { + public function getInput(): array { + $input = []; + // This component is probably obsolete & will go once we stop calling completeOrder directly. + $input['component'] = 'contribute'; $input['amount'] = $this->retrieve('x_amount', 'String'); $input['subscription_id'] = $this->getRecurProcessorID(); $input['response_reason_code'] = $this->retrieve('x_response_reason_code', 'String', FALSE); $input['response_reason_text'] = $this->retrieve('x_response_reason_text', 'String', FALSE); $input['subscription_paynum'] = $this->retrieve('x_subscription_paynum', 'Integer', FALSE, 0); $input['trxn_id'] = $this->retrieve('x_trans_id', 'String', FALSE); - $input['receive_date'] = $this->retrieve('receive_date', 'String', FALSE, date('YmdHis', strtotime('now'))); + $input['receive_date'] = $this->retrieve('receive_date', 'String', FALSE, date('YmdHis', time())); if ($input['trxn_id']) { $input['is_test'] = 0; @@ -178,9 +152,11 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { // Per CRM-17611 it would also not be passed back for a decline. elseif ($this->isSuccess()) { $input['is_test'] = 1; - $input['trxn_id'] = md5(uniqid(rand(), TRUE)); + $input['trxn_id'] = $this->transactionID ?: md5(uniqid(mt_rand(), TRUE)); } + $this->transactionID = $input['trxn_id']; + // None of this is used... $billingID = CRM_Core_BAO_LocationType::getBilling(); $params = [ 'first_name' => 'x_first_name', @@ -195,28 +171,28 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { foreach ($params as $civiName => $resName) { $input[$civiName] = $this->retrieve($resName, 'String', FALSE); } + return $input; } /** - * Was the transaction successful. + * Get amount. + * + * @return string * - * @return bool * @throws \CRM_Core_Exception */ - private function isSuccess(): bool { - return $this->retrieve('x_response_code', 'Integer') === 1; + protected function getAmount(): string { + return $this->retrieve('x_amount', 'String'); } /** - * Get ids from input. - * - * @param array $ids + * Was the transaction successful. * + * @return bool * @throws \CRM_Core_Exception */ - public function getIDs(&$ids) { - $ids['contribution'] = $this->getContributionID(); - $ids['contributionRecur'] = $this->getContributionRecurID(); + private function isSuccess(): bool { + return $this->retrieve('x_response_code', 'Integer') === 1; } /** @@ -244,25 +220,6 @@ class CRM_Core_Payment_AuthorizeNetIPN extends CRM_Core_Payment_BaseIPN { return $value; } - /** - * Get membership id, if any. - * - * @param int $contributionID - * @param int $contributionRecurID - * - * @return int|null - */ - protected function getMembershipID(int $contributionID, int $contributionRecurID): ?int { - // Get membershipId. Join with membership payment table for additional checks - $sql = " - SELECT m.id - FROM civicrm_membership m -INNER JOIN civicrm_membership_payment mp ON m.id = mp.membership_id AND mp.contribution_id = {$contributionID} - WHERE m.contribution_recur_id = {$contributionRecurID} - LIMIT 1"; - return CRM_Core_DAO::singleValueQuery($sql); - } - /** * Get the recurring contribution object. * @@ -275,22 +232,26 @@ INNER JOIN civicrm_membership_payment mp ON m.id = mp.membership_id AND mp.contr */ protected function getContributionRecurObject(string $processorID, int $contactID, int $contributionID) { // joining with contribution table for extra checks - $sql = " + $sql = ' SELECT cr.id, cr.contact_id FROM civicrm_contribution_recur cr INNER JOIN civicrm_contribution co ON co.contribution_recur_id = cr.id - WHERE cr.processor_id = '{$processorID}' AND - (cr.contact_id = $contactID OR co.id = $contributionID) - LIMIT 1"; - $contRecur = CRM_Core_DAO::executeQuery($sql); - if (!$contRecur->fetch()) { + WHERE cr.processor_id = %1 AND + (cr.contact_id = %2 OR co.id = %3) + LIMIT 1'; + $contributionRecur = CRM_Core_DAO::executeQuery($sql, [ + 1 => [$processorID, 'String'], + 2 => [$contactID, 'Integer'], + 3 => [$contributionID, 'Integer'], + ]); + if (!$contributionRecur->fetch()) { throw new CRM_Core_Exception('Could not find contributionRecur id'); } - if ($contactID != $contRecur->contact_id) { - $message = ts("Recurring contribution appears to have been re-assigned from id %1 to %2, continuing with %2.", [1 => $contactID, 2 => $contRecur->contact_id]); - CRM_Core_Error::debug_log_message($message); + if ($contactID != $contributionRecur->contact_id) { + $message = ts('Recurring contribution appears to have been re-assigned from id %1 to %2, continuing with %2.', [1 => $contactID, 2 => $contributionRecur->contact_id]); + \Civi::log('authorize_net')->warning($message); } - return $contRecur; + return $contributionRecur; } /** @@ -363,4 +324,44 @@ INNER JOIN civicrm_contribution co ON co.contribution_recur_id = cr.id return (int) $contributionRecur->id; } + /** + * + * @return \CRM_Contribute_BAO_ContributionRecur + * @throws \CRM_Core_Exception + */ + private function getContributionRecur(): CRM_Contribute_BAO_ContributionRecur { + $contributionRecur = new CRM_Contribute_BAO_ContributionRecur(); + $contributionRecur->id = $this->getContributionRecurID(); + if (!$contributionRecur->find(TRUE)) { + throw new CRM_Core_Exception('Could not find contribution recur record: ' . $this->getContributionRecurID() . ' in IPN request: ' . print_r($this->getInput(), TRUE)); + } + // do a subscription check + if ($contributionRecur->processor_id != $this->getRecurProcessorID()) { + throw new CRM_Core_Exception('Unrecognized subscription.'); + } + return $contributionRecur; + } + + /** + * Get the relevant contribution status. + * + * @return string $status + * + * @throws \CRM_Core_Exception + */ + private function getContributionStatus(): string { + if (!$this->contributionStatus) { + // Check if the contribution exists + // make sure contribution exists and is valid + $contribution = Contribution::get(FALSE) + ->addWhere('id', '=', $this->getContributionID()) + ->addSelect('contribution_status_id:name')->execute()->first(); + if (empty($contribution)) { + throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . $this->getContributionID(), NULL, ['context' => 'Could not find contribution record: ' . $this->getContributionID() . ' in IPN request: ' . print_r($this->getInput(), TRUE)]); + } + $this->contributionStatus = $contribution['contribution_status_id:name']; + } + return $this->contributionStatus; + } + } diff --git a/civicrm/CRM/Core/Payment/PayPalIPN.php b/civicrm/CRM/Core/Payment/PayPalIPN.php index 6b1c86aaff..369e4c176a 100644 --- a/civicrm/CRM/Core/Payment/PayPalIPN.php +++ b/civicrm/CRM/Core/Payment/PayPalIPN.php @@ -25,6 +25,13 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { */ protected $_inputParameters = []; + /*** + * Loaded contribution object. + * + * @var \CRM_Contribute_BAO_Contribution + */ + private $contribution; + /** * Constructor function. * @@ -60,20 +67,28 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { /** * @param array $input - * @param CRM_Contribute_BAO_ContributionRecur $recur - * @param CRM_Contribute_BAO_Contribution $contribution - * @param bool $first * * @return void * * @throws \CRM_Core_Exception */ - public function recur($input, $recur, $contribution, $first) { - + public function recur($input) { + $contribution = $this->getContribution(); + $contributionRecur = new CRM_Contribute_BAO_ContributionRecur(); + $contributionRecur->id = $this->getContributionRecurID(); + if (!$contributionRecur->find(TRUE)) { + throw new CRM_Core_Exception('Could not find contribution contributionRecur record'); + } + // check if first contribution is completed, else complete first contribution + $first = TRUE; + $completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); + if ($contribution->contribution_status_id == $completedStatusId) { + $first = FALSE; + } // make sure the invoice ids match // make sure the invoice is valid and matches what we have in the contribution record - if ($recur->invoice_id != $input['invoice']) { - Civi::log()->debug('PayPalIPN: Invoice values dont match between database and IPN request (RecurID: ' . $recur->id . ').'); + if ($contributionRecur->invoice_id != $input['invoice']) { + Civi::log()->debug('PayPalIPN: Invoice values dont match between database and IPN request (RecurID: ' . $contributionRecur->id . ').'); throw new CRM_Core_Exception("Failure: Invoice values dont match between database and IPN request"); } @@ -83,43 +98,55 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $contributionStatuses = array_flip(CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'validate')); switch ($this->getTrxnType()) { case 'subscr_signup': - $recur->create_date = $now; + $contributionRecur->create_date = $now; // sometimes subscr_signup response come after the subscr_payment and set to pending mode. $statusID = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_ContributionRecur', - $recur->id, 'contribution_status_id' + $contributionRecur->id, 'contribution_status_id' ); if ($statusID != $contributionStatuses['In Progress']) { - $recur->contribution_status_id = $contributionStatuses['Pending']; + $contributionRecur->contribution_status_id = $contributionStatuses['Pending']; } - $recur->processor_id = $this->retrieve('subscr_id', 'String'); - $recur->trxn_id = $recur->processor_id; - $recur->save(); + $contributionRecur->processor_id = $this->retrieve('subscr_id', 'String'); + $contributionRecur->trxn_id = $contributionRecur->processor_id; + $contributionRecur->save(); + //send recurring Notification email for user + CRM_Contribute_BAO_ContributionPage::recurringNotify( + $this->getContributionID(), + CRM_Core_Payment::RECURRING_PAYMENT_START, + $contributionRecur + ); return; case 'subscr_eot': - if ($recur->contribution_status_id != $contributionStatuses['Cancelled']) { - $recur->contribution_status_id = $contributionStatuses['Completed']; + if ($contributionRecur->contribution_status_id != $contributionStatuses['Cancelled']) { + $contributionRecur->contribution_status_id = $contributionStatuses['Completed']; } - $recur->end_date = $now; - $recur->save(); + $contributionRecur->end_date = $now; + $contributionRecur->save(); + //send recurring Notification email for user + CRM_Contribute_BAO_ContributionPage::recurringNotify( + $this->getContributionID(), + CRM_Core_Payment::RECURRING_PAYMENT_END, + $contributionRecur + ); return; case 'subscr_cancel': - $recur->contribution_status_id = $contributionStatuses['Cancelled']; - $recur->cancel_date = $now; - $recur->save(); + $contributionRecur->contribution_status_id = $contributionStatuses['Cancelled']; + $contributionRecur->cancel_date = $now; + $contributionRecur->save(); return; case 'subscr_failed': - $recur->contribution_status_id = $contributionStatuses['Failed']; - $recur->modified_date = $now; - $recur->save(); + $contributionRecur->contribution_status_id = $contributionStatuses['Failed']; + $contributionRecur->modified_date = $now; + $contributionRecur->save(); break; case 'subscr_modify': - Civi::log()->debug('PayPalIPN: We do not handle modifications to subscriptions right now (RecurID: ' . $recur->id . ').'); - echo "Failure: We do not handle modifications to subscriptions right now<p>"; + Civi::log()->debug('PayPalIPN: We do not handle modifications to subscriptions right now (RecurID: ' . $contributionRecur->id . ').'); + echo 'Failure: We do not handle modifications to subscriptions right now<p>'; return; } @@ -152,25 +179,24 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { // Also consider accepting 'Failed' like other processors. $input['contribution_status_id'] = $contributionStatuses['Completed']; $input['original_contribution_id'] = $contribution->id; - $input['contribution_recur_id'] = $recur->id; + $input['contribution_recur_id'] = $contributionRecur->id; civicrm_api3('Contribution', 'repeattransaction', $input); return; } - $this->single($input, $contribution, TRUE); + $this->single($input, TRUE); } /** * @param array $input - * @param \CRM_Contribute_BAO_Contribution $contribution * @param bool $recur * * @return void * @throws \CRM_Core_Exception */ - public function single($input, $contribution, $recur = FALSE) { - + public function single($input, $recur = FALSE) { + $contribution = $this->getContribution(); // make sure the invoice is valid and matches what we have in the contribution record if ($contribution->invoice_id != $input['invoice']) { Civi::log()->debug('PayPalIPN: Invoice values dont match between database and IPN request. (ID: ' . $contribution->id . ').'); @@ -218,31 +244,11 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { $paymentProcessorID = $this->getPayPalPaymentProcessorID($input, $this->getContributionRecurID()); Civi::log()->debug('PayPalIPN: Received (ContactID: ' . $this->getContactID() . '; trxn_id: ' . $input['trxn_id'] . ').'); - $contribution = $this->getContribution(); $input['payment_processor_id'] = $paymentProcessorID; if ($this->getContributionRecurID()) { - $contributionRecur = new CRM_Contribute_BAO_ContributionRecur(); - $contributionRecur->id = $this->getContributionRecurID(); - if (!$contributionRecur->find(TRUE)) { - throw new CRM_Core_Exception('Could not find contribution recur record'); - } - // check if first contribution is completed, else complete first contribution - $first = TRUE; - $completedStatusId = CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed'); - if ($contribution->contribution_status_id == $completedStatusId) { - $first = FALSE; - } - $this->recur($input, $contributionRecur, $contribution, $first); - if ($this->getFirstOrLastInSeriesStatus()) { - //send recurring Notification email for user - CRM_Contribute_BAO_ContributionPage::recurringNotify( - $contributionID, - $this->getFirstOrLastInSeriesStatus(), - $contributionRecur - ); - } + $this->recur($input); return; } @@ -271,7 +277,7 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { Civi::log()->debug('Returning since contribution status is not handled'); return; } - $this->single($input, $contribution); + $this->single($input); } catch (CRM_Core_Exception $e) { Civi::log()->debug($e->getMessage() . ' input {input}', ['input' => $input]); @@ -379,26 +385,6 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { return $this->retrieve('txn_type', 'String'); } - /** - * Get status code for first or last recurring in the series. - * - * If this is the first or last then return the status code, else - * null. - * - * @return string|null - * @throws \CRM_Core_Exception - */ - protected function getFirstOrLastInSeriesStatus(): ?string { - $subscriptionPaymentStatus = NULL; - if ($this->getTrxnType() === 'subscr_signup') { - return CRM_Core_Payment::RECURRING_PAYMENT_START; - } - if ($this->getTrxnType() === 'subscr_eot') { - return CRM_Core_Payment::RECURRING_PAYMENT_END; - } - return NULL; - } - /** * Get the recurring contribution ID. * @@ -440,15 +426,17 @@ class CRM_Core_Payment_PayPalIPN extends CRM_Core_Payment_BaseIPN { * @throws \CRM_Core_Exception */ protected function getContribution(): CRM_Contribute_BAO_Contribution { - $contribution = new CRM_Contribute_BAO_Contribution(); - $contribution->id = $this->getContributionID(); - if (!$contribution->find(TRUE)) { - throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $contribution->id, NULL, ['context' => "Could not find contribution record: {$contribution->id} in IPN request: "]); - } - if ((int) $contribution->contact_id !== $this->getContactID()) { - CRM_Core_Error::debug_log_message("Contact ID in IPN not found but contact_id found in contribution."); + if (!$this->contribution) { + $this->contribution = new CRM_Contribute_BAO_Contribution(); + $this->contribution->id = $this->getContributionID(); + if (!$this->contribution->find(TRUE)) { + throw new CRM_Core_Exception('Failure: Could not find contribution record for ' . (int) $contribution->id, NULL, ['context' => "Could not find contribution record: {$contribution->id} in IPN request: "]); + } + if ((int) $this->contribution->contact_id !== $this->getContactID()) { + CRM_Core_Error::debug_log_message("Contact ID in IPN not found but contact_id found in contribution."); + } } - return $contribution; + return $this->contribution; } } diff --git a/civicrm/CRM/Core/Payment/PayPalImpl.php b/civicrm/CRM/Core/Payment/PayPalImpl.php index 763e2df050..b9fb59828b 100644 --- a/civicrm/CRM/Core/Payment/PayPalImpl.php +++ b/civicrm/CRM/Core/Payment/PayPalImpl.php @@ -571,7 +571,7 @@ class CRM_Core_Payment_PayPalImpl extends CRM_Core_Payment { // add CiviCRM BN code $args['BUTTONSOURCE'] = 'CiviCRM_SP'; - if (CRM_Utils_Array::value('is_recur', $params) == 1) { + if (($params['is_recur'] ?? NULL) == 1) { $start_time = strtotime(date('m/d/Y')); $start_date = date('Y-m-d\T00:00:00\Z', $start_time); @@ -601,7 +601,7 @@ class CRM_Core_Payment_PayPalImpl extends CRM_Core_Payment { $params['recurr_profile_id'] = NULL; - if (CRM_Utils_Array::value('is_recur', $params) == 1) { + if (($params['is_recur'] ?? NULL) == 1) { $params['recurr_profile_id'] = $apiResult['profileid']; } diff --git a/civicrm/CRM/Core/Permission.php b/civicrm/CRM/Core/Permission.php index d0d59bae4b..4bcdf5eda3 100644 --- a/civicrm/CRM/Core/Permission.php +++ b/civicrm/CRM/Core/Permission.php @@ -547,7 +547,7 @@ class CRM_Core_Permission { // check whether the following Ajax requests submitted the right key // FIXME: this should be integrated into ACLs proper - if (CRM_Utils_Array::value('page_type', $item) == 3) { + if (($item['page_type'] ?? NULL) == 3) { if (!CRM_Core_Key::validate($_REQUEST['key'], $item['path'])) { return FALSE; } diff --git a/civicrm/CRM/Core/Permission/Base.php b/civicrm/CRM/Core/Permission/Base.php index 9b1ae5709b..ac9fbea549 100644 --- a/civicrm/CRM/Core/Permission/Base.php +++ b/civicrm/CRM/Core/Permission/Base.php @@ -169,7 +169,7 @@ class CRM_Core_Permission_Base { Civi::$statics[__CLASS__]['viewPermissionedGroups_' . $domainId . '_' . $userId][$groupKey] = $groups; } - $ids = CRM_ACL_API::group(CRM_Core_Permission::VIEW, NULL, 'civicrm_saved_search', $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'); @@ -178,7 +178,7 @@ class CRM_Core_Permission_Base { } } - $ids = CRM_ACL_API::group(CRM_Core_Permission::EDIT, NULL, 'civicrm_saved_search', $groups); + $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'); diff --git a/civicrm/CRM/Core/Permission/Joomla.php b/civicrm/CRM/Core/Permission/Joomla.php index 1a3e333e40..1be3a31d63 100644 --- a/civicrm/CRM/Core/Permission/Joomla.php +++ b/civicrm/CRM/Core/Permission/Joomla.php @@ -53,23 +53,13 @@ class CRM_Core_Permission_Joomla extends CRM_Core_Permission_Base { // not execute hooks if joomla is not loaded if (defined('_JEXEC')) { $user = JFactory::getUser($userId); - $api_key = CRM_Utils_Request::retrieve('api_key', 'String', $store, FALSE, NULL, 'REQUEST'); + $api_key = CRM_Utils_Request::retrieve('api_key', 'String'); // If we are coming from REST we don't have a user but we do have the api_key for a user. if ($user->id === 0 && !is_null($api_key)) { - // This is a codeblock copied from /Civicrm/Utils/REST - $uid = NULL; - if (!$uid) { - $store = NULL; - - $contact_id = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $api_key, 'id', 'api_key'); - - if ($contact_id) { - $uid = CRM_Core_BAO_UFMatch::getUFId($contact_id); - } - $user = JFactory::getUser($uid); - - } + $contact_id = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $api_key, 'id', 'api_key'); + $uid = ($contact_id) ? CRM_Core_BAO_UFMatch::getUFId($contact_id) : NULL; + $user = JFactory::getUser($uid); } return $user->authorise($translated[0], $translated[1]); diff --git a/civicrm/CRM/Core/Permission/Standalone.php b/civicrm/CRM/Core/Permission/Standalone.php index e6c0616fc0..a201f698aa 100644 --- a/civicrm/CRM/Core/Permission/Standalone.php +++ b/civicrm/CRM/Core/Permission/Standalone.php @@ -43,25 +43,13 @@ class CRM_Core_Permission_Standalone extends CRM_Core_Permission_Base { if ($str == CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION) { return TRUE; } + + if (class_exists(\Civi\Standalone\Security::class)) { + return \Civi\Standalone\Security::singleton()->checkPermission($this, $str, $userId); + } + // return the stubbed permission (defaulting to true if the array is missing) return isset($this->permissions) && is_array($this->permissions) ? in_array($str, $this->permissions) : TRUE; } - /** - * Get the permissioned where clause for the user. - * - * @param int $type - * The type of permission needed. - * @param array $tables - * (reference ) add the tables that are needed for the select clause. - * @param array $whereTables - * (reference ) add the tables that are needed for the where clause. - * - * @return string - * the group where clause for this user - */ - public function whereClause($type, &$tables, &$whereTables) { - return '( 1 )'; - } - } diff --git a/civicrm/CRM/Core/PseudoConstant.php b/civicrm/CRM/Core/PseudoConstant.php index 80a475027d..ce077fb601 100644 --- a/civicrm/CRM/Core/PseudoConstant.php +++ b/civicrm/CRM/Core/PseudoConstant.php @@ -285,7 +285,7 @@ class CRM_Core_PseudoConstant { } // Return "Yes" and "No" for boolean fields - elseif (CRM_Utils_Array::value('type', $fieldSpec) === CRM_Utils_Type::T_BOOLEAN) { + elseif (($fieldSpec['type'] ?? NULL) === CRM_Utils_Type::T_BOOLEAN) { $output = $context == 'validate' ? [0, 1] : CRM_Core_SelectValues::boolean(); CRM_Utils_Hook::fieldOptions($entity, $fieldName, $output, $params); return $flip ? array_flip($output) : $output; diff --git a/civicrm/CRM/Core/Region.php b/civicrm/CRM/Core/Region.php index 7cb7f22254..613b867f2a 100644 --- a/civicrm/CRM/Core/Region.php +++ b/civicrm/CRM/Core/Region.php @@ -83,7 +83,7 @@ class CRM_Core_Region implements CRM_Core_Resources_CollectionInterface, CRM_Cor break; case 'callback': - $args = $snippet['arguments'] ?? array(&$snippet, &$html); + $args = $snippet['arguments'] ?? [&$snippet, &$html]; $html .= call_user_func_array($snippet['callback'], $args); break; diff --git a/civicrm/CRM/Core/Resources/CollectionAdderTrait.php b/civicrm/CRM/Core/Resources/CollectionAdderTrait.php index 71b394a427..5b563dc0b3 100644 --- a/civicrm/CRM/Core/Resources/CollectionAdderTrait.php +++ b/civicrm/CRM/Core/Resources/CollectionAdderTrait.php @@ -260,7 +260,7 @@ trait CRM_Core_Resources_CollectionAdderTrait { // TODO: Maybe this should be its own resource type to allow smarter management? foreach ((array) $text as $str) { - $translated = ts($str, [ + $translated = _ts($str, [ 'domain' => ($domain == 'civicrm') ? NULL : [$domain, NULL], 'raw' => TRUE, ]); diff --git a/civicrm/CRM/Core/Resources/Common.php b/civicrm/CRM/Core/Resources/Common.php index d034b267fa..e470406ace 100644 --- a/civicrm/CRM/Core/Resources/Common.php +++ b/civicrm/CRM/Core/Resources/Common.php @@ -129,7 +129,7 @@ class CRM_Core_Resources_Common { if (is_array($item)) { $bundle->addSetting($item); } - elseif (strpos($item, '.css')) { + elseif (preg_match('/(\.css$)|(\.css[?&])/', $item)) { Civi::resources()->isFullyFormedUrl($item) ? $bundle->addStyleUrl($item, -100) : $bundle->addStyleFile('civicrm', $item, -100); } elseif (Civi::resources()->isFullyFormedUrl($item)) { diff --git a/civicrm/CRM/Core/SelectValues.php b/civicrm/CRM/Core/SelectValues.php index 3b7c242781..bcbff0c96d 100644 --- a/civicrm/CRM/Core/SelectValues.php +++ b/civicrm/CRM/Core/SelectValues.php @@ -1210,4 +1210,23 @@ class CRM_Core_SelectValues { ]; } + /** + * Callback for Role.permissions pseudoconstant values. + * + * Permissions for Civi Standalone, not used by CMS-based systems. + * + * @return array + */ + public static function permissions() { + $perms = $options = []; + \CRM_Utils_Hook::permissionList($perms); + + foreach ($perms as $machineName => $details) { + if ($details['is_active']) { + $options[$machineName] = $details['title']; + } + } + return $options; + } + } diff --git a/civicrm/CRM/Core/Smarty.php b/civicrm/CRM/Core/Smarty.php index 769bb813ef..b5c22c62df 100644 --- a/civicrm/CRM/Core/Smarty.php +++ b/civicrm/CRM/Core/Smarty.php @@ -66,6 +66,16 @@ class CRM_Core_Smarty extends Smarty { */ private $backupFrames = []; + /** + * This is a sentinel-object that indicates an undefined value. + * + * It lacks any substantive content; but it has unique identity that cannot be mistaken for + * organic values like `null`, `string`, `false`, or similar. + * + * @var object + */ + private static $UNDEFINED_VALUE; + private function initialize() { $config = CRM_Core_Config::singleton(); @@ -161,6 +171,9 @@ class CRM_Core_Smarty extends Smarty { * @return \CRM_Core_Smarty */ public static function &singleton() { + if (static::$UNDEFINED_VALUE === NULL) { + static::$UNDEFINED_VALUE = new stdClass(); + } if (!isset(self::$_singleton)) { self::$_singleton = new CRM_Core_Smarty(); self::$_singleton->initialize(); @@ -346,7 +359,7 @@ class CRM_Core_Smarty extends Smarty { $oldVars = $this->get_template_vars(); $backupFrame = []; foreach ($vars as $key => $value) { - $backupFrame[$key] = $oldVars[$key] ?? NULL; + $backupFrame[$key] = array_key_exists($key, $oldVars) ? $oldVars[$key] : static::$UNDEFINED_VALUE; } $this->backupFrames[] = $backupFrame; @@ -373,7 +386,12 @@ class CRM_Core_Smarty extends Smarty { */ public function assignAll($vars) { foreach ($vars as $key => $value) { - $this->assign($key, $value); + if ($value !== static::$UNDEFINED_VALUE) { + $this->assign($key, $value); + } + else { + $this->clear_assign($key); + } } return $this; } diff --git a/civicrm/CRM/Core/Smarty/plugins/block.ts.php b/civicrm/CRM/Core/Smarty/plugins/block.ts.php index 6c1faeffd0..785122d36e 100644 --- a/civicrm/CRM/Core/Smarty/plugins/block.ts.php +++ b/civicrm/CRM/Core/Smarty/plugins/block.ts.php @@ -37,5 +37,5 @@ function smarty_block_ts($params, $text, &$smarty) { if (!isset($params['domain']) && $extensionKey = $smarty->get_template_vars('extensionKey')) { $params['domain'] = is_array($extensionKey) ? $extensionKey : [$extensionKey, NULL]; } - return ts($text, $params); + return _ts($text, $params); } diff --git a/civicrm/CRM/Core/Smarty/plugins/function.help.php b/civicrm/CRM/Core/Smarty/plugins/function.help.php index 2a0a2804d9..754d2ec401 100644 --- a/civicrm/CRM/Core/Smarty/plugins/function.help.php +++ b/civicrm/CRM/Core/Smarty/plugins/function.help.php @@ -45,7 +45,26 @@ function smarty_function_help($params, &$smarty) { $vars = $smarty->get_template_vars(); $smarty->assign('id', $params['id'] . '-title'); - $name = trim($smarty->fetch($params['file'] . '.hlp')) ?: $vars['form'][$fieldID]['textLabel'] ?? ''; + // The way this works is a bit bonkers. All the .hlp files are expecting an + // assign called $params (which is different from our php var here called + // $params), and it does get assigned via ajax via + // CRM_Core_Page_Inline_Help when you click the help bubble (i.e. the link + // that we return at the bottom below). But right now when we fetch the + // file on the next line, there is no params. So it gives a notice. So + // let's assign something. + // It's also awkward since the ONLY reason we're fetching the file + // now is to get the help section's title and we don't care about the rest + // of the file, but that is a bit of a separate issue. + $temporary_vars = []; + if (!array_key_exists('params', $vars)) { + // In the unlikely event that params already exists, we don't want to + // overwrite it, so only do this if not already set. + $temporary_vars = ['params' => []]; + } + // Note fetchWith adds the temporary ones to the existing scope but then + // will reset, unsetting them if not already present before, which is what + // we want here. + $name = trim($smarty->fetchWith($params['file'] . '.hlp', $temporary_vars)) ?: $vars['form'][$fieldID]['textLabel'] ?? ''; $additionalTPLFile = $params['file'] . '.extra.hlp'; if ($smarty->template_exists($additionalTPLFile)) { $extraoutput = trim($smarty->fetch($additionalTPLFile)); diff --git a/civicrm/CRM/Core/xml/Menu/Api4.xml b/civicrm/CRM/Core/xml/Menu/Api4.xml index a80626a08e..3666db9481 100644 --- a/civicrm/CRM/Core/xml/Menu/Api4.xml +++ b/civicrm/CRM/Core/xml/Menu/Api4.xml @@ -3,7 +3,7 @@ <item> <path>civicrm/ajax/api4</path> <page_callback>CRM_Api4_Page_AJAX</page_callback> - <access_callback>CRM_Api4_Permission::check</access_callback> + <access_callback>1</access_callback> </item> <item> <path>civicrm/api4</path> diff --git a/civicrm/CRM/Core/xml/Menu/Misc.xml b/civicrm/CRM/Core/xml/Menu/Misc.xml index 97d9c63c6d..5aad20becc 100644 --- a/civicrm/CRM/Core/xml/Menu/Misc.xml +++ b/civicrm/CRM/Core/xml/Menu/Misc.xml @@ -35,15 +35,21 @@ <access_arguments>administer CiviCRM,access CiviCRM</access_arguments> </item> <item> - <path>civicrm/acl/entityrole</path> - <title>Assign Users to ACL Roles</title> - <page_callback>CRM_ACL_Page_EntityRole</page_callback> + <path>civicrm/acl/edit</path> + <title>Manage ACLs</title> + <page_callback>CRM_ACL_Form_ACL</page_callback> <access_arguments>administer CiviCRM,access CiviCRM</access_arguments> </item> <item> - <path>civicrm/acl/basic</path> - <title>ACL</title> - <page_callback>CRM_ACL_Page_ACLBasic</page_callback> + <path>civicrm/acl/delete</path> + <title>Manage ACLs</title> + <page_callback>CRM_ACL_Form_ACL</page_callback> + <access_arguments>administer CiviCRM,access CiviCRM</access_arguments> + </item> + <item> + <path>civicrm/acl/entityrole</path> + <title>Assign Users to ACL Roles</title> + <page_callback>CRM_ACL_Page_EntityRole</page_callback> <access_arguments>administer CiviCRM,access CiviCRM</access_arguments> </item> <item> diff --git a/civicrm/CRM/Custom/Form/DeleteField.php b/civicrm/CRM/Custom/Form/DeleteField.php index 7793b9ac39..fcef401c6b 100644 --- a/civicrm/CRM/Custom/Form/DeleteField.php +++ b/civicrm/CRM/Custom/Form/DeleteField.php @@ -47,6 +47,12 @@ class CRM_Custom_Form_DeleteField extends CRM_Core_Form { $params = ['id' => $this->_id]; CRM_Core_BAO_CustomField::retrieve($params, $defaults); + if (CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $defaults['custom_group_id'], 'is_reserved')) { + // I think this does not have ts() because the only time you would see + // this is if you manually made a url you weren't supposed to. + CRM_Core_Error::statusBounce("You cannot delete fields in a reserved custom field-set."); + } + $this->_title = $defaults['label'] ?? NULL; $this->assign('title', $this->_title); $this->setTitle(ts('Delete %1', [1 => $this->_title])); diff --git a/civicrm/CRM/Custom/Form/Field.php b/civicrm/CRM/Custom/Form/Field.php index a9d5230e4d..9f829ac9dd 100644 --- a/civicrm/CRM/Custom/Form/Field.php +++ b/civicrm/CRM/Custom/Form/Field.php @@ -30,7 +30,7 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { * * @var int */ - protected $_gid; + public $_gid; /** * The field id, used when editing the field @@ -99,6 +99,8 @@ class CRM_Custom_Form_Field extends CRM_Core_Form { } if (CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomGroup', $this->_gid, 'is_reserved')) { + // I think this does not have ts() because the only time you would see + // this is if you manually made a url you weren't supposed to. CRM_Core_Error::statusBounce("You cannot add or edit fields in a reserved custom field-set."); } diff --git a/civicrm/CRM/Custom/Form/Group.php b/civicrm/CRM/Custom/Form/Group.php index 07499e96da..4f9baa4544 100644 --- a/civicrm/CRM/Custom/Form/Group.php +++ b/civicrm/CRM/Custom/Form/Group.php @@ -25,7 +25,7 @@ class CRM_Custom_Form_Group extends CRM_Core_Form { * * @var int */ - protected $_id; + public $_id; /** * set is empty or not. @@ -48,6 +48,7 @@ class CRM_Custom_Form_Group extends CRM_Core_Form { * @return void */ public function preProcess() { + $this->preventAjaxSubmit(); Civi::resources()->addScriptFile('civicrm', 'js/jquery/jquery.crmIconPicker.js'); // current set id @@ -378,6 +379,7 @@ class CRM_Custom_Form_Group extends CRM_Core_Form { $result = civicrm_api3('CustomGroup', 'create', $params); $group = $result['values'][$result['id']]; + $this->_id = $result['id']; // reset the cache Civi::cache('fields')->flush(); diff --git a/civicrm/CRM/Custom/Form/MoveField.php b/civicrm/CRM/Custom/Form/MoveField.php index 59d2af4eb9..1f9ffe36be 100644 --- a/civicrm/CRM/Custom/Form/MoveField.php +++ b/civicrm/CRM/Custom/Form/MoveField.php @@ -91,7 +91,15 @@ class CRM_Custom_Form_MoveField extends CRM_Core_Form { */ public function buildQuickForm() { - $customGroup = CRM_Core_PseudoConstant::get('CRM_Core_DAO_CustomField', 'custom_group_id'); + $customGroup = []; + $groups = \Civi\Api4\CustomGroup::get() + ->addWhere('is_reserved', '=', FALSE) + ->addWhere('is_active', '=', TRUE) + ->addSelect('id', 'title') + ->execute(); + foreach ($groups as $group) { + $customGroup[$group['id']] = $group['title']; + } unset($customGroup[$this->_srcGID]); if (empty($customGroup)) { CRM_Core_Error::statusBounce(ts('You need more than one custom group to move fields')); diff --git a/civicrm/CRM/Custom/Form/Option.php b/civicrm/CRM/Custom/Form/Option.php index e392a9af7d..b1c04717ef 100644 --- a/civicrm/CRM/Custom/Form/Option.php +++ b/civicrm/CRM/Custom/Form/Option.php @@ -109,7 +109,7 @@ class CRM_Custom_Form_Option extends CRM_Core_Form { } } else { - if (CRM_Utils_Array::value('default_value', $fieldDefaults) == CRM_Utils_Array::value('value', $defaults)) { + if (($fieldDefaults['default_value'] ?? NULL) == CRM_Utils_Array::value('value', $defaults)) { $defaults['default_value'] = 1; } } diff --git a/civicrm/CRM/Custom/Import/Parser/Api.php b/civicrm/CRM/Custom/Import/Parser/Api.php index cd2ed4edd2..8ccef384a3 100644 --- a/civicrm/CRM/Custom/Import/Parser/Api.php +++ b/civicrm/CRM/Custom/Import/Parser/Api.php @@ -83,7 +83,7 @@ class CRM_Custom_Import_Parser_Api extends CRM_Import_Parser { $this->importableFieldsMetadata = array_merge([ 'do_not_import' => ['title' => ts('- do not import -')], 'contact_id' => ['title' => ts('Contact ID'), 'name' => 'contact_id', 'type' => CRM_Utils_Type::T_INT, 'options' => FALSE, 'headerPattern' => '/contact?|id$/i'], - 'external_identifier' => ['title' => ts('External Identifier'), 'name' => 'external_identifier', 'type' => CRM_Utils_Type::T_INT, 'options' => FALSE, 'headerPattern' => '/external\s?id/i'], + 'external_identifier' => ['title' => ts('External Identifier'), 'name' => 'external_identifier', 'type' => CRM_Utils_Type::T_STRING, 'options' => FALSE, 'headerPattern' => '/external\s?id/i'], ], $importableFields); } } diff --git a/civicrm/CRM/Dedupe/Merger.php b/civicrm/CRM/Dedupe/Merger.php index 45b6b91742..f1e54bbaa1 100644 --- a/civicrm/CRM/Dedupe/Merger.php +++ b/civicrm/CRM/Dedupe/Merger.php @@ -266,7 +266,8 @@ class CRM_Dedupe_Merger { public static function locTables() { static $locTables; if (!$locTables) { - $locTables = ['civicrm_email', 'civicrm_address', 'civicrm_phone']; + // should be in sync with getLocationBlockInfo + $locTables = ['civicrm_email', 'civicrm_address', 'civicrm_phone', 'civicrm_im', 'civicrm_website']; // Allow hook_civicrm_merge() to adjust $locTables CRM_Utils_Hook::merge('locTables', $locTables); @@ -2598,7 +2599,7 @@ ORDER BY civicrm_custom_group.weight, } // For other locations, don't merge/add if the values are the same - elseif (CRM_Utils_Array::value('main', $migrationInfo['rows'][$key]) == $migrationInfo['rows'][$key]['other']) { + elseif (($migrationInfo['rows'][$key]['main'] ?? NULL) == $migrationInfo['rows'][$key]['other']) { unset($migrationInfo[$key]); } } diff --git a/civicrm/CRM/Event/BAO/Event.php b/civicrm/CRM/Event/BAO/Event.php index 7adc12737b..884d9cd4b6 100644 --- a/civicrm/CRM/Event/BAO/Event.php +++ b/civicrm/CRM/Event/BAO/Event.php @@ -315,19 +315,22 @@ WHERE ( civicrm_event.is_template IS NULL OR civicrm_event.is_template = 0 )"; } /** - * Returns an array of event pages [id => title] + * Callback for the experimental `event_show_payment_on_confirm` setting. + * Should be removed when that setting gets retired. * @return array - * @throws \API_Exception - * @throws \Civi\API\Exception\UnauthorizedException */ public static function getEventsForSelect2() { - return ['all' => ts('- all -')] + - \Civi\Api4\Event::get(FALSE) + $options = ['all' => ts('- all -')]; + // Check that CiviEvent is enabled before calling the api + if (class_exists('\Civi\Api4\Event')) { + $options += \Civi\Api4\Event::get(FALSE) ->addSelect('id', 'title') ->addWhere('is_active', '=', TRUE) ->execute() ->indexBy('id') ->column('title'); + } + return $options; } /** @@ -1353,7 +1356,7 @@ WHERE civicrm_event.is_active = 1 if ( CRM_Utils_Array::value('data_type', $v, '') == 'File' || CRM_Utils_Array::value('name', $v, '') == 'image_URL' || - CRM_Utils_Array::value('field_type', $v) == 'Formatting' + ($v['field_type'] ?? NULL) == 'Formatting' ) { unset($fields[$k]); } diff --git a/civicrm/CRM/Event/DAO/ParticipantStatusType.php b/civicrm/CRM/Event/DAO/ParticipantStatusType.php index c8f90aa306..6a8e2a936a 100644 --- a/civicrm/CRM/Event/DAO/ParticipantStatusType.php +++ b/civicrm/CRM/Event/DAO/ParticipantStatusType.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Event/ParticipantStatusType.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:8f6c30f03f591fc2069d17cd7152d5e0) + * (GenCodeChecksum:826624f3fa543f7c7a93439ddb53b150) */ /** @@ -38,6 +38,17 @@ class CRM_Event_DAO_ParticipantStatusType extends CRM_Core_DAO { */ public static $_log = TRUE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/admin/participant_status?action=add&reset=1', + 'update' => 'civicrm/admin/participant_status?action=update&id=[id]&reset=1', + 'delete' => 'civicrm/admin/participant_status?action=delete&id=[id]&reset=1', + ]; + /** * unique participant status type id * diff --git a/civicrm/CRM/Event/Form/ManageEvent/Fee.php b/civicrm/CRM/Event/Form/ManageEvent/Fee.php index 61a902f474..caf14a29d8 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Fee.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Fee.php @@ -654,7 +654,7 @@ class CRM_Event_Form_ManageEvent_Fee extends CRM_Event_Form_ManageEvent { $discountPriceSets = !empty($this->_defaultValues['discount_price_set']) ? $this->_defaultValues['discount_price_set'] : []; $discountFieldIDs = !empty($this->_defaultValues['discount_option_id']) ? $this->_defaultValues['discount_option_id'] : []; - if (CRM_Utils_Array::value('is_discount', $params) == 1) { + if (($params['is_discount'] ?? NULL) == 1) { // if there are discounted set of label / values, // create custom options for them $labels = $params['discounted_label'] ?? NULL; diff --git a/civicrm/CRM/Event/Form/ManageEvent/Location.php b/civicrm/CRM/Event/Form/ManageEvent/Location.php index cc41a4447f..e6a30e61e6 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Location.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Location.php @@ -203,7 +203,7 @@ class CRM_Event_Form_ManageEvent_Location extends CRM_Event_Form_ManageEvent { $deleteOldBlock = FALSE; // If 'Use existing location' is selected. - if (CRM_Utils_Array::value('location_option', $params) == 2) { + if (($params['location_option'] ?? NULL) == 2) { /* * If there is an existing LocBlock and the selected LocBlock is different, @@ -231,7 +231,7 @@ class CRM_Event_Form_ManageEvent_Location extends CRM_Event_Form_ManageEvent { * set the loc_block_id for this Event to null so that an update results in * creating a new LocBlock. */ - if ($this->_oldLocBlockId && (CRM_Utils_Array::value('location_option', $params) == 1)) { + if ($this->_oldLocBlockId && (($params['location_option'] ?? NULL) == 1)) { $deleteOldBlock = TRUE; CRM_Core_DAO::setFieldValue('CRM_Event_DAO_Event', $this->_id, 'loc_block_id', 'null' @@ -266,7 +266,7 @@ class CRM_Event_Form_ManageEvent_Location extends CRM_Event_Form_ManageEvent { * In order to do so, the IDs of the Address, Phone and Email "Blocks" have * to be retrieved and added in to the elements in the $params array. */ - if (CRM_Utils_Array::value('location_option', $params) == 2) { + if (($params['location_option'] ?? NULL) == 2) { if (empty($this->locationBlock['loc_block_id']) && !empty($params['loc_event_id'])) { $isUpdateToExistingLocationBlock = TRUE; $existingLocBlock = LocBlock::get() diff --git a/civicrm/CRM/Event/Form/ManageEvent/Registration.php b/civicrm/CRM/Event/Form/ManageEvent/Registration.php index 4a76047396..852c2960cd 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/Registration.php +++ b/civicrm/CRM/Event/Form/ManageEvent/Registration.php @@ -260,7 +260,7 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent '' => ts('- Unsupervised rule -'), ]; $dedupeRules += CRM_Dedupe_BAO_DedupeRuleGroup::getByType('Individual'); - $this->add('select', 'dedupe_rule_group_id', ts('Duplicate matching rule'), $dedupeRules); + $this->add('select', 'dedupe_rule_group_id', ts('Duplicate matching rule'), $dedupeRules, FALSE, ['class' => 'crm-select2 huge']); $participantStatuses = CRM_Event_PseudoConstant::participantStatus(); if (in_array('Awaiting approval', $participantStatuses) and in_array('Pending from approval', $participantStatuses) and in_array('Rejected', $participantStatuses)) { @@ -850,7 +850,7 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent $ufAdd[1] = $params['custom_pre_id']; $wtAdd = 1; } - elseif (CRM_Utils_Array::value('additional_custom_pre_id', $params) == 'none') { + elseif (($params['additional_custom_pre_id'] ?? NULL) == 'none') { } else { $ufAdd[1] = $params['additional_custom_pre_id']; @@ -862,7 +862,7 @@ class CRM_Event_Form_ManageEvent_Registration extends CRM_Event_Form_ManageEvent if (empty($params['additional_custom_post_id'])) { $ufAdd[2] = $params['custom_post_id']; } - elseif (CRM_Utils_Array::value('additional_custom_post_id', $params) == 'none') { + elseif (($params['additional_custom_post_id'] ?? NULL) == 'none') { } else { $ufAdd[2] = $params['additional_custom_post_id']; diff --git a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php index bd661efae4..d940c5951f 100644 --- a/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php +++ b/civicrm/CRM/Event/Form/ManageEvent/TabHeader.php @@ -115,7 +115,7 @@ WHERE e.id = %1 ]; $dao = CRM_Core_DAO::executeQuery($sql, $params); if (!$dao->fetch()) { - throw new CRM_Core_Exception('Unable to determine Event information');; + throw new CRM_Core_Exception('Unable to determine Event information'); } if (!$dao->is_location) { $tabs['location']['valid'] = FALSE; @@ -223,7 +223,7 @@ WHERE e.id = %1 if (is_array($tabs)) { foreach ($tabs as $subPage => $pageVal) { - if (CRM_Utils_Array::value('current', $pageVal) === TRUE) { + if (($pageVal['current'] ?? NULL) === TRUE) { $current = $subPage; break; } diff --git a/civicrm/CRM/Event/Form/Participant.php b/civicrm/CRM/Event/Form/Participant.php index 5ab8781600..20baaa48c7 100644 --- a/civicrm/CRM/Event/Form/Participant.php +++ b/civicrm/CRM/Event/Form/Participant.php @@ -676,14 +676,12 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment CRM_Campaign_BAO_Campaign::addCampaign($this, $campaignId); $this->add('datepicker', 'register_date', ts('Registration Date'), [], TRUE, ['time' => TRUE]); - if ($this->_id) { - $this->assign('entityID', $this->_id); - } + $this->assign('entityID', $this->_id); $this->addSelect('role_id', ['multiple' => TRUE, 'class' => 'huge'], TRUE); // CRM-4395 - $checkCancelledJs = ['onchange' => "return sendNotification( );"]; + $checkCancelledJs = ['onchange' => 'return sendNotification( );']; $confirmJS = NULL; if ($this->_onlinePendingContributionId) { $cancelledparticipantStatusId = array_search('Cancelled', CRM_Event_PseudoConstant::participantStatus()); @@ -870,11 +868,11 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $params = $this->controller->exportValues($this->_name); if ($this->_action & CRM_Core_Action::DELETE) { - if (CRM_Utils_Array::value('delete_participant', $params) == 2) { + if (($params['delete_participant'] ?? NULL) == 2) { $additionalId = (CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id)); $participantLinks = (CRM_Event_BAO_Participant::getAdditionalParticipantUrl($additionalId)); } - if (CRM_Utils_Array::value('delete_participant', $params) == 1) { + if (($params['delete_participant'] ?? NULL) == 1) { $additionalIds = CRM_Event_BAO_Participant::getAdditionalParticipantIds($this->_id); foreach ($additionalIds as $value) { CRM_Event_BAO_Participant::deleteParticipant($value); @@ -1341,7 +1339,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $updateStatusMsg = NULL; //send mail when participant status changed, CRM-4326 if ($this->_id && $this->_statusId && - $this->_statusId != CRM_Utils_Array::value('status_id', $params) && !empty($params['is_notify']) + $this->_statusId != ($params['status_id'] ?? NULL) && !empty($params['is_notify']) ) { $updateStatusMsg = CRM_Event_BAO_Participant::updateStatusMessage($this->_id, @@ -1478,7 +1476,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } if (CRM_Financial_BAO_FinancialType::isACLFinancialTypeStatus() && empty($form->_values['fee']) - && CRM_Utils_Array::value('snippet', $_REQUEST) == CRM_Core_Smarty::PRINT_NOFORM + && ($_REQUEST['snippet'] ?? NULL) == CRM_Core_Smarty::PRINT_NOFORM ) { CRM_Core_Session::setStatus(ts('You do not have all the permissions needed for this page.'), 'Permission Denied', 'error'); return FALSE; @@ -1494,7 +1492,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment CRM_Financial_BAO_FinancialType::getAvailableFinancialTypes($financialTypes, $form->_action); } else { - $financialTypes = CRM_Contribute_PseudoConstant::financialType(); + $financialTypes = CRM_Contribute_BAO_Contribution::buildOptions('financial_type_id', 'create'); } $form->add('select', 'financial_type_id', @@ -1506,7 +1504,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment $form->add('select', 'payment_instrument_id', ts('Payment Method'), - ['' => ts('- select -')] + CRM_Contribute_PseudoConstant::paymentInstrument(), + ['' => ts('- select -')] + CRM_Contribute_BAO_Contribution::buildOptions('payment_instrument_id', 'create'), FALSE, ['onChange' => "return showHideByValue('payment_instrument_id','4','checkNumber','table-row','select',false);"] ); // don't show transaction id in batch update mode @@ -1712,7 +1710,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $this->assign('event', $event); $this->assign('isShowLocation', $event['is_show_location']); - if (CRM_Utils_Array::value('is_show_location', $event) == 1) { + if (($event['is_show_location'] ?? NULL) == 1) { $locationParams = [ 'entity_id' => $eventID, 'entity_table' => 'civicrm_event', @@ -1789,7 +1787,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment } $contribParams['is_test'] = 0; - if ($form->_action & CRM_Core_Action::PREVIEW || CRM_Utils_Array::value('mode', $params) == 'test') { + if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) == 'test') { $contribParams['is_test'] = 1; } @@ -1863,7 +1861,7 @@ class CRM_Event_Form_Participant extends CRM_Contribute_Form_AbstractEditPayment 'campaign_id' => $params['campaign_id'] ?? NULL, ]; - if ($form->_action & CRM_Core_Action::PREVIEW || CRM_Utils_Array::value('mode', $params) == 'test') { + if ($form->_action & CRM_Core_Action::PREVIEW || ($params['mode'] ?? NULL) == 'test') { $participantParams['is_test'] = 1; } else { diff --git a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php index 883048922a..865e791c53 100644 --- a/civicrm/CRM/Event/Form/ParticipantFeeSelection.php +++ b/civicrm/CRM/Event/Form/ParticipantFeeSelection.php @@ -246,8 +246,7 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { $params = $this->controller->exportValues($this->_name); $feeBlock = $this->_values['fee']; - $lineItems = $this->_values['line_items']; - CRM_Price_BAO_LineItem::changeFeeSelections($params, $this->_participantId, 'participant', $this->getContributionID(), $feeBlock, $lineItems); + CRM_Price_BAO_LineItem::changeFeeSelections($params, $this->_participantId, 'participant', $this->getContributionID(), $feeBlock); $this->contributionAmt = CRM_Core_DAO::getFieldValue('CRM_Contribute_BAO_Contribution', $this->getContributionID(), 'total_amount'); // email sending if (!empty($params['send_receipt'])) { @@ -326,7 +325,7 @@ class CRM_Event_Form_ParticipantFeeSelection extends CRM_Core_Form { $this->assign('event', $event); $this->assign('isShowLocation', $event['is_show_location']); - if (CRM_Utils_Array::value('is_show_location', $event) == 1) { + if (($event['is_show_location'] ?? NULL) == 1) { $locationParams = [ 'entity_id' => $params['event_id'], 'entity_table' => 'civicrm_event', diff --git a/civicrm/CRM/Event/Form/Registration.php b/civicrm/CRM/Event/Form/Registration.php index 1a3c1b471d..ebde060eb3 100644 --- a/civicrm/CRM/Event/Form/Registration.php +++ b/civicrm/CRM/Event/Form/Registration.php @@ -218,6 +218,7 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { $this->_additionalParticipantIds = $this->get('additionalParticipantIds'); $this->showPaymentOnConfirm = (in_array($this->_eventId, \Civi::settings()->get('event_show_payment_on_confirm')) || in_array('all', \Civi::settings()->get('event_show_payment_on_confirm'))); + $this->assign('showPaymentOnConfirm', $this->showPaymentOnConfirm); if (!$this->_values) { // this is the first time we are hitting this, so check for permissions here @@ -656,6 +657,9 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { if (CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $priceSetId, 'is_quick_config') && $form->getVar('_name') != 'Participant') { $form->assign('quickConfig', 1); } + else { + $form->assign('quickConfig', 0); + } } // get price info if ($priceSetId) { @@ -726,9 +730,6 @@ class CRM_Event_Form_Registration extends CRM_Core_Form { * @throws \CRM_Core_Exception */ public function confirmPostProcess($contactID = NULL, $contribution = NULL) { - // add/update contact information - unset($this->_params['note']); - //to avoid conflict overwrite $this->_params $this->_params = $this->get('value'); diff --git a/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php b/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php index 2b000a3037..dfbafad706 100644 --- a/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php +++ b/civicrm/CRM/Event/Form/Registration/AdditionalParticipant.php @@ -442,7 +442,7 @@ class CRM_Event_Form_Registration_AdditionalParticipant extends CRM_Event_Form_R else { // check with first_name and last_name for additional participants if (!empty($value['first_name']) && ($value['first_name'] == CRM_Utils_Array::value('first_name', $fields)) && - (CRM_Utils_Array::value('last_name', $value) == CRM_Utils_Array::value('last_name', $fields)) + (($value['last_name'] ?? NULL) == CRM_Utils_Array::value('last_name', $fields)) ) { $errors['first_name'] = ts('The first name and last name must be unique for each participant.'); break; diff --git a/civicrm/CRM/Event/Form/Registration/Register.php b/civicrm/CRM/Event/Form/Registration/Register.php index 3ee42aac91..bb3fc9ad43 100644 --- a/civicrm/CRM/Event/Form/Registration/Register.php +++ b/civicrm/CRM/Event/Form/Registration/Register.php @@ -93,14 +93,14 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { } elseif (!empty($fields['amount']) && (isset($form->_values['discount'][$fields['amount']]) - && CRM_Utils_Array::value('value', $form->_values['discount'][$fields['amount']]) == 0 + && ($form->_values['discount'][$fields['amount']]['value'] ?? NULL) == 0 ) ) { $isZeroAmount = TRUE; } elseif (!empty($fields['amount']) && (isset($form->_values['fee'][$fields['amount']]) - && CRM_Utils_Array::value('value', $form->_values['fee'][$fields['amount']]) == 0 + && ($form->_values['fee'][$fields['amount']]['value'] ?? NULL) == 0 ) ) { $isZeroAmount = TRUE; @@ -471,6 +471,12 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { if ($createCMSUser) { CRM_Core_BAO_CMSUser::buildForm($this, $profileID, TRUE); } + else { + $this->assign('showCMS', FALSE); + } + } + else { + $this->assign('showCMS', FALSE); } //we have to load confirm contribution button in template @@ -525,6 +531,9 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { if ($this->_pcpId) { CRM_PCP_BAO_PCP::buildPcp($this->_pcpId, $this); } + else { + $this->assign('pcp', FALSE); + } } /** @@ -608,8 +617,8 @@ class CRM_Event_Form_Registration_Register extends CRM_Event_Form_Registration { foreach ($form->_feeBlock as $field) { // public AND admin visibility fields are included for back-office registration and back-office change selections - if (CRM_Utils_Array::value('visibility', $field) == 'public' || - (CRM_Utils_Array::value('visibility', $field) == 'admin' && $adminFieldVisible == TRUE) || + if (($field['visibility'] ?? NULL) == 'public' || + (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || $className == 'CRM_Event_Form_Participant' || $className === 'CRM_Event_Form_Task_Register' || $className == 'CRM_Event_Form_ParticipantFeeSelection' diff --git a/civicrm/CRM/Event/Form/Registration/ThankYou.php b/civicrm/CRM/Event/Form/Registration/ThankYou.php index 9464ebacce..948294772a 100644 --- a/civicrm/CRM/Event/Form/Registration/ThankYou.php +++ b/civicrm/CRM/Event/Form/Registration/ThankYou.php @@ -124,7 +124,7 @@ class CRM_Event_Form_Registration_ThankYou extends CRM_Event_Form_Registration { $this->assign('isAmountzero', $this->_totalAmount <= 0); $this->assign('defaultRole', FALSE); - if (CRM_Utils_Array::value('defaultRole', $this->_params[0]) == 1) { + if (($this->_params[0]['defaultRole'] ?? NULL) == 1) { $this->assign('defaultRole', TRUE); } $defaults = []; diff --git a/civicrm/CRM/Event/Form/Search.php b/civicrm/CRM/Event/Form/Search.php index 9a8f979f1f..8407f83b91 100644 --- a/civicrm/CRM/Event/Form/Search.php +++ b/civicrm/CRM/Event/Form/Search.php @@ -154,7 +154,7 @@ class CRM_Event_Form_Search extends CRM_Core_Form_Search { if (count($eventIds) == 1) { //convert form values to clause. $seatClause = []; - if (CRM_Utils_Array::value('participant_test', $this->_formValues) == '1' || CRM_Utils_Array::value('participant_test', $this->_formValues) == '0') { + if (($this->_formValues['participant_test'] ?? NULL) == '1' || ($this->_formValues['participant_test'] ?? NULL) == '0') { $seatClause[] = "( participant.is_test = {$this->_formValues['participant_test']} )"; } if (!empty($this->_formValues['participant_status_id'])) { @@ -281,11 +281,6 @@ class CRM_Event_Form_Search extends CRM_Core_Form_Search { $this->_formValues = CRM_Contact_BAO_SavedSearch::getFormValues($this->_ssID); } - // We don't show test records in summaries or dashboards - if (empty($this->_formValues['participant_test']) && $this->_force) { - $this->_formValues["participant_test"] = 0; - } - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues, 0, FALSE, NULL, ['event_id']); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Event/Form/Task/Delete.php b/civicrm/CRM/Event/Form/Task/Delete.php index a1df319e1b..daac5af98b 100644 --- a/civicrm/CRM/Event/Form/Task/Delete.php +++ b/civicrm/CRM/Event/Form/Task/Delete.php @@ -77,7 +77,7 @@ class CRM_Event_Form_Task_Delete extends CRM_Event_Form_Task { $params = $this->controller->exportValues($this->_name); $participantLinks = NULL; - if (CRM_Utils_Array::value('delete_participant', $params) == 2) { + if (($params['delete_participant'] ?? NULL) == 2) { $links = []; foreach ($this->_participantIds as $participantId) { $additionalId = (CRM_Event_BAO_Participant::getAdditionalParticipantIds($participantId)); @@ -86,7 +86,7 @@ class CRM_Event_Form_Task_Delete extends CRM_Event_Form_Task { } $deletedParticipants = $additionalCount = 0; foreach ($this->_participantIds as $participantId) { - if (CRM_Utils_Array::value('delete_participant', $params) == 1) { + if (($params['delete_participant'] ?? NULL) == 1) { $primaryParticipantId = CRM_Core_DAO::getFieldValue("CRM_Event_DAO_Participant", $participantId, 'registered_by_id', 'id'); if (CRM_Event_BAO_Participant::isPrimaryParticipant($participantId)) { $additionalIds = (CRM_Event_BAO_Participant::getAdditionalParticipantIds($participantId)); diff --git a/civicrm/CRM/Event/Import/Form/MapField.php b/civicrm/CRM/Event/Import/Form/MapField.php index fe1c4dd2cd..ecdb464455 100644 --- a/civicrm/CRM/Event/Import/Form/MapField.php +++ b/civicrm/CRM/Event/Import/Form/MapField.php @@ -64,7 +64,7 @@ class CRM_Event_Import_Form_MapField extends CRM_Import_Form_MapField { */ public function buildQuickForm() { $this->addSavedMappingFields(); - $this->addFormRule(array('CRM_Event_Import_Form_MapField', 'formRule'), $this); + $this->addFormRule(['CRM_Event_Import_Form_MapField', 'formRule'], $this); $this->addMapper(); $this->addFormButtons(); } @@ -92,10 +92,10 @@ class CRM_Event_Import_Form_MapField extends CRM_Import_Form_MapField { $importKeys[] = $mapperPart[0]; } // FIXME: should use the schema titles, not redeclare them - $requiredFields = array( + $requiredFields = [ 'contact_id' => ts('Contact ID'), 'event_id' => ts('Event ID'), - ); + ]; $contactFieldsBelowWeightMessage = self::validateRequiredContactMatchFields($self->getContactType(), $importKeys); @@ -116,7 +116,7 @@ class CRM_Event_Import_Form_MapField extends CRM_Import_Form_MapField { } elseif (!in_array('event_title', $importKeys)) { $errors['_qf_default'] .= ts('Missing required field: Provide %1 or %2', - array(1 => $title, 2 => 'Event Title') + [1 => $title, 2 => 'Event Title'] ) . '<br />'; } } diff --git a/civicrm/CRM/Event/Page/EventInfo.php b/civicrm/CRM/Event/Page/EventInfo.php index c279ea153b..bb0b940b7c 100644 --- a/civicrm/CRM/Event/Page/EventInfo.php +++ b/civicrm/CRM/Event/Page/EventInfo.php @@ -114,7 +114,7 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { foreach ($priceSetFields as $fid => $fieldValues) { if (!is_array($fieldValues['options']) || empty($fieldValues['options']) || - (CRM_Utils_Array::value('visibility_id', $fieldValues) != array_search('public', $visibility) && $adminFieldVisible == FALSE) + (($fieldValues['visibility_id'] ?? NULL) != array_search('public', $visibility) && $adminFieldVisible == FALSE) ) { continue; } @@ -132,7 +132,7 @@ class CRM_Event_Page_EventInfo extends CRM_Core_Page { } foreach ($fieldValues['options'] as $optionId => $optionVal) { - if (CRM_Utils_Array::value('visibility_id', $optionVal) != array_search('public', $visibility) && + if (($optionVal['visibility_id'] ?? NULL) != array_search('public', $visibility) && $adminFieldVisible == FALSE ) { continue; diff --git a/civicrm/CRM/Event/Page/ParticipantListing.php b/civicrm/CRM/Event/Page/ParticipantListing.php index 23ec405645..7db433372e 100644 --- a/civicrm/CRM/Event/Page/ParticipantListing.php +++ b/civicrm/CRM/Event/Page/ParticipantListing.php @@ -41,7 +41,7 @@ class CRM_Event_Page_ParticipantListing extends CRM_Core_Page { $this->_id, 'title' ); - CRM_Utils_System::setTitle(ts('%1 - Participants', array(1 => $this->_eventTitle))); + CRM_Utils_System::setTitle(ts('%1 - Participants', [1 => $this->_eventTitle])); // we do not want to display recently viewed contacts since this is potentially a public page $this->assign('displayRecent', FALSE); @@ -65,7 +65,7 @@ class CRM_Event_Page_ParticipantListing extends CRM_Core_Page { ); if ($className == 'CRM_Event_Page_ParticipantListing') { CRM_Core_Error::statusBounce(ts("Participant listing code file cannot be '%1'", - array(1 => $className) + [1 => $className] )); } diff --git a/civicrm/CRM/Event/Tokens.php b/civicrm/CRM/Event/Tokens.php index 2968b8c4d4..4f1c0fe65d 100644 --- a/civicrm/CRM/Event/Tokens.php +++ b/civicrm/CRM/Event/Tokens.php @@ -196,11 +196,16 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'is_show_location:label', 'is_public', 'is_public:label', + 'is_share', + 'is_share:label', + 'requires_approval', + 'requires_approval:label', 'is_monetary:label', 'event_type_id:label', 'event_type_id:name', 'pay_later_text', 'pay_later_receipt', + 'fee_label', 'custom.*', ], $this->getExposedFields())) ->execute()->first(); @@ -209,8 +214,8 @@ class CRM_Event_Tokens extends CRM_Core_EntityTokens { 'city' => $event['loc_block_id.address_id.city'], 'state_province' => $event['loc_block_id.address_id.state_province_id:label'], 'postal_code' => $event['loc_block_id.address_id.postal_code'], - ]); + $tokens['location']['text/html'] = nl2br(trim($tokens['location']['text/plain'])); $tokens['info_url']['text/html'] = \CRM_Utils_System::url('civicrm/event/info', 'reset=1&id=' . $eventID, TRUE, NULL, FALSE, TRUE); $tokens['registration_url']['text/html'] = \CRM_Utils_System::url('civicrm/event/register', 'reset=1&id=' . $eventID, TRUE, NULL, FALSE, TRUE); $tokens['start_date']['text/html'] = !empty($event['start_date']) ? new DateTime($event['start_date']) : ''; diff --git a/civicrm/CRM/Event/WorkflowMessage/EventExamples.php b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php index 556bb42b26..dbbdb6f589 100644 --- a/civicrm/CRM/Event/WorkflowMessage/EventExamples.php +++ b/civicrm/CRM/Event/WorkflowMessage/EventExamples.php @@ -1,9 +1,12 @@ <?php +use Civi\Api4\Event; use Civi\Api4\PriceSetEntity; use Civi\Api4\WorkflowMessage; use Civi\WorkflowMessage\GenericWorkflowMessage; use Civi\WorkflowMessage\WorkflowMessageExample; +use Civi\Api4\PriceField; +use Civi\Api4\PriceFieldValue; /** * Basic contribution example for contribution templates. @@ -12,6 +15,15 @@ use Civi\WorkflowMessage\WorkflowMessageExample; */ class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample { + /** + * IDs of events permitting multiple participants. + * + * We prefer these for more nuanced examples. + * + * @var array + */ + private $multipleRegistrationEventIDs; + /** * Get the examples this class is able to deliver. * @@ -24,12 +36,28 @@ class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample { foreach ($priceSets as $priceSet) { yield [ 'name' => 'workflow/' . $workflow . '/' . 'price_set_' . $priceSet['name'], - 'title' => ts('Completed Registration') . ' : ' . $priceSet['title'], + 'title' => ts('Completed Registration') . ($priceSet['is_multiple_registrations'] ? ' ' . ts('primary participant') : '') . ' : ' . $priceSet['title'], 'tags' => ['preview'], 'workflow' => $workflow, 'is_show_line_items' => !$priceSet['is_quick_config'], 'event_id' => $priceSet['event_id'], + 'is_multiple_registrations' => $priceSet['is_multiple_registrations'], + 'is_primary' => TRUE, + 'price_set_id' => $priceSet['id'], ]; + if ($priceSet['is_multiple_registrations']) { + yield [ + 'name' => 'workflow/' . $workflow . '/' . 'price_set_' . $priceSet['name'] . '/' . 'additional', + 'title' => ts('Completed Registration') . ' ' . ts('additional participant') . ' : ' . $priceSet['title'], + 'tags' => ['preview'], + 'workflow' => $workflow, + 'is_show_line_items' => !$priceSet['is_quick_config'], + 'event_id' => $priceSet['event_id'], + 'is_multiple_registrations' => $priceSet['is_multiple_registrations'], + 'is_primary' => FALSE, + 'price_set_id' => $priceSet['id'], + ]; + } } } } @@ -58,10 +86,36 @@ class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample { * @throws \CRM_Core_Exception * @throws \Civi\API\Exception\UnauthorizedException */ - private function addExampleData(GenericWorkflowMessage $messageTemplate, $example): void { + private function addExampleData(GenericWorkflowMessage $messageTemplate, array $example): void { $messageTemplate->setContact(\Civi\Test::example('entity/Contact/Barb')); $messageTemplate->setEventID($example['event_id']); - $messageTemplate->setContribution(['total_amount' => 50, 'balance_amount' => 20, 'currency' => 'USD']); + $isPrimary = $example['is_primary']; + $primaryParticipantID = 60; + $otherParticipantID = 70; + $isMultipleRegistrations = $example['is_multiple_registrations']; + $participantContacts = [$primaryParticipantID => ['display_name' => 'Cindy Taylor']]; + if ($isMultipleRegistrations) { + $participantContacts[$otherParticipantID] = ['display_name' => 'Melanie Mulder']; + } + + $mockOrder = new CRM_Financial_BAO_Order(); + $mockOrder->setTemplateContributionID(50); + $mockOrder->setPriceSetID($example['price_set_id']); + + foreach (PriceField::get(FALSE)->addWhere('price_set_id', '=', $mockOrder->getPriceSetID())->execute() as $index => $priceField) { + $priceFieldValue = PriceFieldValue::get()->addWhere('price_field_id', '=', $priceField['id'])->execute(); + $this->setLineItem($mockOrder, $priceField, $priceFieldValue->first(), $index, $primaryParticipantID); + if ($isMultipleRegistrations) { + $this->setLineItem($mockOrder, $priceField, $priceFieldValue->last(), $index . '-' . $otherParticipantID, $otherParticipantID); + } + } + $contribution['total_amount'] = $mockOrder->getTotalAmount(); + $contribution['tax_amount'] = $mockOrder->getTotalTaxAmount() ? round($mockOrder->getTotalTaxAmount(), 2) : 0; + $contribution['tax_exclusive_amount'] = $contribution['total_amount'] - $contribution['tax_amount']; + $messageTemplate->setContribution($contribution); + $messageTemplate->setOrder($mockOrder); + $messageTemplate->setParticipantContacts($participantContacts); + $messageTemplate->setParticipant(['id' => $isPrimary ? $primaryParticipantID : $otherParticipantID, 'registered_by_id' => $isPrimary ? NULL : $primaryParticipantID, 'register_date' => date('Y-m-d')]); } /** @@ -72,10 +126,10 @@ class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample { * @throws \CRM_Core_Exception */ private function getPriceSets(): ?array { - $quickConfigPriceSet = $this->getPriceSet(TRUE); $nonQuickConfigPriceSet = $this->getPriceSet(FALSE); + $quickConfigPriceSet = $this->getPriceSet(TRUE); - return array_filter([$quickConfigPriceSet, $nonQuickConfigPriceSet]); + return array_filter([$nonQuickConfigPriceSet, $quickConfigPriceSet]); } /** @@ -87,20 +141,78 @@ class CRM_Event_WorkflowMessage_EventExamples extends WorkflowMessageExample { * @throws \CRM_Core_Exception */ private function getPriceSet(bool $isQuickConfig): ?array { + // Try to find an event configured for multiple registrations $priceSetEntity = PriceSetEntity::get(FALSE) ->addWhere('entity_table', '=', 'civicrm_event') ->addSelect('price_set_id.id', 'entity_id', 'price_set_id.is_quick_config', 'price_set_id.name', 'price_set_id.title') ->setLimit(1) ->addWhere('price_set_id.is_quick_config', '=', $isQuickConfig) + ->addWhere('entity_id', 'IN', $this->getMultipleRegistrationEventIDs()) ->execute()->first(); + if (empty($priceSetEntity)) { + // Try again without limiting to multiple registrations. + $priceSetEntity = PriceSetEntity::get(FALSE) + ->addWhere('entity_table', '=', 'civicrm_event') + ->addSelect('price_set_id.id', 'entity_id', 'price_set_id.is_quick_config', 'price_set_id.name', 'price_set_id.title') + ->setLimit(1) + ->addWhere('price_set_id.is_quick_config', '=', $isQuickConfig) + ->execute()->first(); + } return empty($priceSetEntity) ? NULL : [ - 'id' => $priceSetEntity['price_set_id'], + 'id' => $priceSetEntity['price_set_id.id'], 'name' => $priceSetEntity['price_set_id.name'], 'title' => $priceSetEntity['price_set_id.title'], 'event_id' => $priceSetEntity['entity_id'], 'is_quick_config' => $priceSetEntity['price_set_id.is_quick_config'], + 'is_multiple_registrations' => in_array($priceSetEntity['entity_id'], $this->getMultipleRegistrationEventIDs(), TRUE), ]; } + /** + * @param \CRM_Financial_BAO_Order $mockOrder + * @param $priceField + * @param array|null $priceFieldValue + * @param int $participantID + * @param $index + * + * @throws \CRM_Core_Exception + */ + private function setLineItem(CRM_Financial_BAO_Order $mockOrder, $priceField, ?array $priceFieldValue, $index, $participantID): void { + $mockOrder->setLineItem([ + 'price_field_id' => $priceField['id'], + 'price_field_id.label' => $priceField['label'], + 'price_field_value_id' => $priceFieldValue['id'], + 'qty' => $priceField['is_enter_qty'] ? 2 : 1, + 'unit_price' => $priceFieldValue['amount'], + 'line_total' => $priceField['is_enter_qty'] ? ($priceFieldValue['amount'] * 2) : $priceFieldValue['amount'], + 'label' => $priceFieldValue['label'], + 'financial_type_id' => $priceFieldValue['financial_type_id'], + 'non_deductible_amount' => $priceFieldValue['non_deductible_amount'], + 'entity_table' => 'civicrm_participant', + 'entity_id' => $participantID, + ], $index); + } + + /** + * Get the ids of (up to 25) recent multiple registration events. + * + * @return array + * @throws \CRM_Core_Exception + */ + private function getMultipleRegistrationEventIDs(): array { + if ($this->multipleRegistrationEventIDs === NULL) { + $this->multipleRegistrationEventIDs = array_keys((array) Event::get(FALSE) + ->addWhere('is_multiple_registrations', '=', TRUE) + ->addWhere('max_additional_participants', '>', 0) + ->addSelect('id') + ->addOrderBy('start_date', 'DESC') + ->setLimit(25) + ->execute() + ->indexBy('id')); + + } + return $this->multipleRegistrationEventIDs; + } + } diff --git a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php index 6d9df1d4fe..9ccb56884e 100644 --- a/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php +++ b/civicrm/CRM/Event/WorkflowMessage/ParticipantTrait.php @@ -1,10 +1,17 @@ <?php +use Civi\Api4\LineItem; +use Civi\Api4\Participant; + /** * Trait for participant workflow classes. + * + * @method int getParticipantID() + * @method int getEventID() */ trait CRM_Event_WorkflowMessage_ParticipantTrait { + use CRM_Contribute_WorkflowMessage_ContributionTrait; /** * @var int * @@ -12,6 +19,24 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { */ public $participantID; + /** + * The participant record. + * + * @var array|null + * + * @scope tokenContext as participant + */ + public $participant; + + /** + * Is this the primary participant. + * + * @var bool + * + * @scope tplParams as isPrimary + */ + public $isPrimary; + /** * @var int * @@ -19,14 +44,219 @@ trait CRM_Event_WorkflowMessage_ParticipantTrait { */ public $eventID; + /** + * Line items indexed by the participant. + * + * The format is otherwise the same as lineItems which is also available on the + * template. The by-participant re-keying permits only including the current + * participant for non-primary participants and + * creating a by-participant table for the primary participant. + * + * @var array + * + * @scope tplParams as participants + */ + public $participants; + + /** + * Details of the participant contacts. + * + * This would normally be loaded but exists to allow the example to set them. + * + * @var array + */ + protected $participantContacts; + + /** + * @param array $participantContacts + * + * @return CRM_Event_WorkflowMessage_ParticipantTrait + */ + public function setParticipantContacts(array $participantContacts): self { + $this->participantContacts = $participantContacts; + return $this; + } + /** * @param int $eventID * * @return CRM_Event_WorkflowMessage_ParticipantTrait */ - public function setEventID(int $eventID) { + public function setEventID(int $eventID): self { $this->eventID = $eventID; return $this; } + /** + * @throws \Civi\API\Exception\UnauthorizedException + * @throws \CRM_Core_Exception + */ + public function setParticipantID(int $participantID) { + $this->participantID = $participantID; + if (!$this->getContributionID()) { + $lineItem = LineItem::get(FALSE) + ->addWhere('entity_table', '=', 'civicrm_participant') + ->addWhere('entity_id', '=', $participantID) + ->addSelect('contribution_id') + ->execute()->first(); + if (!empty($lineItem)) { + $this->setContributionID($lineItem['contribution_id']); + } + else { + // 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'); + // It might be bad data on the site - let's do a noisy fall back to participant payment + // (the relationship between contribution & participant should be in the line item but + // some integrations might mess this up - if they are not using the order api). + $participantPayment = civicrm_api3('ParticipantPayment', 'get', ['participant_id' => $participantID])['values']; + if (!empty($participantPayment)) { + $participantPayment = reset($participantPayment); + $this->setContributionID((int) $participantPayment['contribution_id']); + } + } + } + return $this; + } + + /** + * Is the participant the primary participant. + * + * @return bool + * @throws \CRM_Core_Exception + */ + public function getIsPrimary(): bool { + return !$this->getParticipant()['registered_by_id']; + } + + /** + * @return int + */ + public function getPrimaryParticipantID(): int { + return $this->participant['registered_by_id'] ?: $this->participantID; + } + + /** + * Set contribution object. + * + * @param array $participant + * + * @return $this + */ + public function setParticipant(array $participant): self { + $this->participant = $participant; + if (!empty($participant['id'])) { + $this->setParticipantID($participant['id']); + } + if (!empty($participant['event_id'])) { + $this->eventID = $participant['event_id']; + } + return $this; + } + + /** + * Get the participant record. + * + * @return array + * @throws \CRM_Core_Exception + */ + public function getParticipant(): array { + if (!$this->participant) { + $this->participant = Participant::get(FALSE) + ->addWhere('id', '=', $this->participantID) + ->addSelect('registered_by_id')->execute()->first(); + } + 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 getParticipants(): array { + if (!$this->participants) { + if (!$this->getLineItems()) { + return []; + } + // Initiate with the current participant to ensure they are first. + $participants = [$this->participantID => ['id' => $this->participantID, 'tax_rate_breakdown' => []]]; + foreach ($this->getLineItems() as $lineItem) { + if ($lineItem['entity_table'] === 'civicrm_participant') { + $participantID = $lineItem['entity_id']; + } + else { + // It is not clear if this could ever be true - testing the CiviCRM event + // form shows all line items assigned to participants but we should + // assign to primary if this can occur. + $participantID = $this->getPrimaryParticipantID(); + } + $participants[$participantID]['line_items'][] = $lineItem; + if (!isset($participants[$participantID]['totals'])) { + $participants[$participantID]['totals'] = ['total_amount_exclusive' => 0, 'tax_amount' => 0, 'total_amount_inclusive' => 0]; + } + $participants[$participantID]['totals']['total_amount_exclusive'] += $lineItem['line_total']; + $participants[$participantID]['totals']['tax_amount'] += $lineItem['tax_amount']; + $participants[$participantID]['totals']['total_amount_inclusive'] += ($lineItem['line_total'] + $lineItem['tax_amount']); + if (!isset($participants[$participantID]['tax_rate_breakdown'])) { + $participants[$participantID]['tax_rate_breakdown'] = []; + } + if (!isset($participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']])) { + $participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']] = [ + 'amount' => 0, + 'rate' => $lineItem['tax_rate'], + 'percentage' => sprintf('%.2f', $lineItem['tax_rate']), + ]; + } + $participants[$participantID]['tax_rate_breakdown'][$lineItem['tax_rate']]['amount'] += $lineItem['tax_amount']; + } + + $count = 1; + foreach ($participants as $participantID => &$participant) { + $participant['id'] = $participantID; + $participant['index'] = $count; + $participant['contact'] = $this->getParticipantContact($participantID); + foreach ($participant['tax_rate_breakdown'] ?? [] as $rate => $details) { + if ($details['amount'] === 0.0) { + unset($participant['tax_rate_breakdown'][$rate]); + } + } + if (array_keys($participant['tax_rate_breakdown']) === [0]) { + // If the only tax rate charged is 0% then no tax breakdown is returned. + $participant['tax_rate_breakdown'] = []; + } + $count++; + } + $this->participants = $participants; + } + return $this->participants; + } + + /** + * @param $participantID + * + * @return mixed + * @throws \CRM_Core_Exception + * @throws \Civi\API\Exception\UnauthorizedException + */ + private function getParticipantContact($participantID = NULL) { + if (!$participantID) { + $participantID = $this->participantID; + } + if (empty($this->participantContacts[$participantID])) { + $participantContact = Participant::get(FALSE) + ->addWhere('id', '=', $participantID ?: $this->participantID) + ->addSelect('contact_id.display_name', 'contact_id') + ->execute() + ->first(); + $this->participantContacts[$participantID] = ['id' => $participantContact['contact_id'], 'display_name' => $participantContact['contact_id.display_name']]; + } + + return $this->participantContacts[$participantID]; + } + } diff --git a/civicrm/CRM/Export/Form/Select.php b/civicrm/CRM/Export/Form/Select.php index 33b14a3bc3..2c83bc0e82 100644 --- a/civicrm/CRM/Export/Form/Select.php +++ b/civicrm/CRM/Export/Form/Select.php @@ -89,7 +89,7 @@ class CRM_Export_Form_Select extends CRM_Core_Form_Task { $count = 0; $this->_matchingContacts = FALSE; - if (CRM_Utils_Array::value('radio_ts', $values) == 'ts_sel') { + if (($values['radio_ts'] ?? NULL) == 'ts_sel') { foreach ($values as $key => $value) { if (strstr($key, 'mark_x')) { $count++; @@ -232,7 +232,7 @@ FROM {$this->_componentTable} public static function formRule($params, $files, $self) { $errors = []; - if (CRM_Utils_Array::value('mergeOption', $params) == self::EXPORT_MERGE_SAME_ADDRESS && + if (($params['mergeOption'] ?? NULL) == self::EXPORT_MERGE_SAME_ADDRESS && $self->_matchingContacts ) { $greetings = [ @@ -243,7 +243,7 @@ FROM {$this->_componentTable} foreach ($greetings as $key => $value) { $otherOption = $params[$key] ?? NULL; - if ((CRM_Utils_Array::value($otherOption, $self->_greetingOptions[$key]) == ts('Other')) && empty($params[$value])) { + if ((($self->_greetingOptions[$key][$otherOption] ?? NULL) == ts('Other')) && empty($params[$value])) { $label = ucwords(str_replace('_', ' ', $key)); $errors[$value] = ts('Please enter a value for %1 (when merging contacts), or select a pre-configured option from the list.', [1 => $label]); @@ -262,8 +262,8 @@ FROM {$this->_componentTable} public function postProcess() { $params = $this->controller->exportValues($this->_name); $exportOption = $params['exportOption']; - $mergeSameAddress = CRM_Utils_Array::value('mergeOption', $params) == self::EXPORT_MERGE_SAME_ADDRESS ? 1 : 0; - $mergeSameHousehold = CRM_Utils_Array::value('mergeOption', $params) == self::EXPORT_MERGE_HOUSEHOLD ? 1 : 0; + $mergeSameAddress = ($params['mergeOption'] ?? NULL) == self::EXPORT_MERGE_SAME_ADDRESS ? 1 : 0; + $mergeSameHousehold = ($params['mergeOption'] ?? NULL) == self::EXPORT_MERGE_HOUSEHOLD ? 1 : 0; $this->set('mergeSameAddress', $mergeSameAddress); $this->set('mergeSameHousehold', $mergeSameHousehold); @@ -379,7 +379,7 @@ FROM {$this->_componentTable} $options[$key] = ["$greetingCount" => ts('List of names')]; foreach ($params as $id => $field) { - if (CRM_Utils_Array::value('filter', $field) == 4) { + if (($field['filter'] ?? NULL) == 4) { $options[$key][++$greetingCount] = $field['label']; } } diff --git a/civicrm/CRM/Extension/Browser.php b/civicrm/CRM/Extension/Browser.php index f61caf3152..5b7b683fd7 100644 --- a/civicrm/CRM/Extension/Browser.php +++ b/civicrm/CRM/Extension/Browser.php @@ -209,7 +209,7 @@ class CRM_Extension_Browser { * @throws \CRM_Extension_Exception */ private function grabRemoteJson() { - set_error_handler(array('CRM_Extension_Browser', 'downloadError')); + set_error_handler(['CRM_Extension_Browser', 'downloadError']); if (FALSE === $this->getRepositoryUrl()) { // don't check if the user has configured civi not to check an external diff --git a/civicrm/CRM/Extension/Container/Default.php b/civicrm/CRM/Extension/Container/Default.php index 85bec22c4d..ce1d9f562c 100644 --- a/civicrm/CRM/Extension/Container/Default.php +++ b/civicrm/CRM/Extension/Container/Default.php @@ -33,26 +33,26 @@ class CRM_Extension_Container_Default extends CRM_Extension_Container_Basic { if (empty($this->baseDir) || !is_dir($this->baseDir)) { $civicrmDestination = urlencode(CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1')); $url = CRM_Utils_System::url('civicrm/admin/setting/path', "reset=1&civicrmDestination={$civicrmDestination}"); - $errors[] = array( + $errors[] = [ 'title' => ts('Invalid Base Directory'), 'message' => ts('The extensions directory is not properly set. Please go to the <a href="%1">path setting page</a> and correct it.<br/>', - array( + [ 1 => $url, - ) + ] ), - ); + ]; } if (empty($this->baseUrl)) { $civicrmDestination = urlencode(CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1')); $url = CRM_Utils_System::url('civicrm/admin/setting/url', "reset=1&civicrmDestination={$civicrmDestination}"); - $errors[] = array( + $errors[] = [ 'title' => ts('Invalid Base URL'), 'message' => ts('The extensions URL is not properly set. Please go to the <a href="%1">URL setting page</a> and correct it.<br/>', - array( + [ 1 => $url, - ) + ] ), - ); + ]; } return $errors; diff --git a/civicrm/CRM/Extension/Downloader.php b/civicrm/CRM/Extension/Downloader.php index dbf689a807..ccd6d20884 100644 --- a/civicrm/CRM/Extension/Downloader.php +++ b/civicrm/CRM/Extension/Downloader.php @@ -84,21 +84,21 @@ class CRM_Extension_Downloader { if (!$this->containerDir || !is_dir($this->containerDir) || !is_writable($this->containerDir)) { $civicrmDestination = urlencode(CRM_Utils_System::url('civicrm/admin/extensions', 'reset=1')); $url = CRM_Utils_System::url('civicrm/admin/setting/path', "reset=1&civicrmDestination={$civicrmDestination}"); - $errors[] = array( + $errors[] = [ 'title' => ts('Directory Unwritable'), 'message' => ts("Your extensions directory is not set or is not writable. Click <a href='%1'>here</a> to set the extensions directory.", - array( + [ 1 => $url, - ) + ] ), - ); + ]; } if (!class_exists('ZipArchive')) { - $errors[] = array( + $errors[] = [ 'title' => ts('ZIP Support Required'), 'message' => ts('You will not be able to install extensions at this time because your installation of PHP does not support ZIP archives. Please ask your system administrator to install the standard PHP-ZIP extension.'), - ); + ]; } if ($extensionInfo) { @@ -197,12 +197,12 @@ class CRM_Extension_Downloader { $extractedZipPath = $this->tmpDir . DIRECTORY_SEPARATOR . $zipSubDir; if (is_dir($extractedZipPath)) { if (!CRM_Utils_File::cleanDir($extractedZipPath, TRUE, FALSE)) { - CRM_Core_Session::setStatus(ts('Unable to extract the extension: %1 cannot be cleared', array(1 => $extractedZipPath)), ts('Installation Error'), 'error'); + CRM_Core_Session::setStatus(ts('Unable to extract the extension: %1 cannot be cleared', [1 => $extractedZipPath]), ts('Installation Error'), 'error'); return FALSE; } } if (!$zip->extractTo($this->tmpDir)) { - CRM_Core_Session::setStatus(ts('Unable to extract the extension to %1.', array(1 => $this->tmpDir)), ts('Installation Error'), 'error'); + CRM_Core_Session::setStatus(ts('Unable to extract the extension to %1.', [1 => $this->tmpDir]), ts('Installation Error'), 'error'); return FALSE; } $zip->close(); @@ -227,7 +227,7 @@ class CRM_Extension_Downloader { public function validateFiles($key, $extractedZipPath) { $filename = $extractedZipPath . DIRECTORY_SEPARATOR . CRM_Extension_Info::FILENAME; if (!is_readable($filename)) { - CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', array(1 => $filename)), ts('Installation Error'), 'error'); + CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', [1 => $filename]), ts('Installation Error'), 'error'); return FALSE; } @@ -235,7 +235,7 @@ class CRM_Extension_Downloader { $newInfo = CRM_Extension_Info::loadFromFile($filename); } catch (Exception $e) { - CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', array(1 => $filename)), ts('Installation Error'), 'error'); + CRM_Core_Session::setStatus(ts('Failed reading data from %1 during installation', [1 => $filename]), ts('Installation Error'), 'error'); return FALSE; } diff --git a/civicrm/CRM/Financial/BAO/EntityFinancialAccount.php b/civicrm/CRM/Financial/BAO/EntityFinancialAccount.php index 283247a516..80363d1844 100644 --- a/civicrm/CRM/Financial/BAO/EntityFinancialAccount.php +++ b/civicrm/CRM/Financial/BAO/EntityFinancialAccount.php @@ -265,12 +265,9 @@ class CRM_Financial_BAO_EntityFinancialAccount extends CRM_Financial_DAO_EntityF public static function validateRelationship($financialTypeAccount) { $financialAccountLinks = CRM_Financial_BAO_FinancialAccount::getfinancialAccountRelations(); $financialAccountType = CRM_Core_DAO::getFieldValue('CRM_Financial_DAO_FinancialAccount', $financialTypeAccount->financial_account_id, 'financial_account_type_id'); - if (CRM_Utils_Array::value($financialTypeAccount->account_relationship, $financialAccountLinks) != $financialAccountType) { + if (($financialAccountLinks[$financialTypeAccount->account_relationship] ?? NULL) != $financialAccountType) { $accountRelationships = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship'); - $params = [ - 1 => $accountRelationships[$financialTypeAccount->account_relationship], - ]; - throw new CRM_Core_Exception(ts("This financial account cannot have '%1' relationship.", $params)); + throw new CRM_Core_Exception(ts("This financial account cannot have '%1' relationship.", [1 => $accountRelationships[$financialTypeAccount->account_relationship]])); } } diff --git a/civicrm/CRM/Financial/BAO/Order.php b/civicrm/CRM/Financial/BAO/Order.php index d4a0e299dc..b2d0931b7f 100644 --- a/civicrm/CRM/Financial/BAO/Order.php +++ b/civicrm/CRM/Financial/BAO/Order.php @@ -593,6 +593,30 @@ class CRM_Financial_BAO_Order { return $this->priceFieldValueMetadata[$id]; } + /** + * Get the default values for line items using this price field value id. + * + * @param int $id + * + * @return array + */ + public function getPriceFieldValueDefaults(int $id): array { + $valueDefaults = array_intersect_key($this->getPriceFieldValueSpec($id), array_fill_keys([ + 'financial_type_id', + 'non_deductible_amount', + 'membership_type_id', + 'membership_num_terms', + 'amount', + 'description', + 'price_field_id', + 'label', + ], TRUE)); + $valueDefaults['qty'] = 1; + $valueDefaults['unit_price'] = $valueDefaults['amount']; + unset($valueDefaults['amount']); + return $valueDefaults; + } + /** * Get the metadata for the fields in the price set. * @@ -1006,6 +1030,14 @@ class CRM_Financial_BAO_Order { $this->addTotalsToLineBasedOnOverrideTotal((int) $lineItem['financial_type_id'], $lineItem); } else { + if (!empty($lineItem['price_field_value_id'])) { + // Let's make sure it is an integer not '2' for sanity. + $lineItem['price_field_value_id'] = (int) $lineItem['price_field_value_id']; + $lineItem = array_merge($this->getPriceFieldValueDefaults($lineItem['price_field_value_id']), $lineItem); + } + if (!isset($lineItem['line_total'])) { + $lineItem['line_total'] = $lineItem['qty'] * $lineItem['unit_price']; + } $lineItem['tax_rate'] = $this->getTaxRate($lineItem['financial_type_id']); $lineItem['tax_amount'] = ($lineItem['tax_rate'] / 100) * $lineItem['line_total']; } diff --git a/civicrm/CRM/Financial/BAO/Payment.php b/civicrm/CRM/Financial/BAO/Payment.php index 267a308264..cd97682eac 100644 --- a/civicrm/CRM/Financial/BAO/Payment.php +++ b/civicrm/CRM/Financial/BAO/Payment.php @@ -169,7 +169,7 @@ class CRM_Financial_BAO_Payment { } } } - + self::updateRelatedContribution($params, $params['contribution_id']); if ($isPaymentCompletesContribution) { if ($contributionStatus === 'Pending refund') { // Ideally we could still call completetransaction as non-payment related actions should @@ -212,7 +212,6 @@ class CRM_Financial_BAO_Payment { // change status to refunded. self::updateContributionStatus($contribution['id'], 'Refunded'); } - self::updateRelatedContribution($params, $params['contribution_id']); CRM_Contribute_BAO_Contribution::recordPaymentActivity($params['contribution_id'], CRM_Utils_Array::value('participant_id', $params), $params['total_amount'], $trxn->currency, $trxn->trxn_date); return $trxn; } diff --git a/civicrm/CRM/Financial/BAO/PaymentProcessor.php b/civicrm/CRM/Financial/BAO/PaymentProcessor.php index 4a316ef147..b46df53a76 100644 --- a/civicrm/CRM/Financial/BAO/PaymentProcessor.php +++ b/civicrm/CRM/Financial/BAO/PaymentProcessor.php @@ -79,7 +79,6 @@ class CRM_Financial_BAO_PaymentProcessor extends CRM_Financial_DAO_PaymentProces * @return self|null */ public static function retrieve($params, &$defaults) { - CRM_Core_Error::deprecatedFunctionWarning('API'); return self::commonRetrieve(self::class, $params, $defaults); } diff --git a/civicrm/CRM/Financial/DAO/PaymentProcessorType.php b/civicrm/CRM/Financial/DAO/PaymentProcessorType.php index 6cd9a6a7b4..702a8b55d2 100644 --- a/civicrm/CRM/Financial/DAO/PaymentProcessorType.php +++ b/civicrm/CRM/Financial/DAO/PaymentProcessorType.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Financial/PaymentProcessorType.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:4ce6f72edd24847c4ec8fe29c9530363) + * (GenCodeChecksum:c0f54fc4f1f69c631c0c2e89537c6194) */ /** @@ -38,6 +38,17 @@ class CRM_Financial_DAO_PaymentProcessorType extends CRM_Core_DAO { */ public static $_log = FALSE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/admin/paymentProcessorType?reset=1&action=add', + 'delete' => 'civicrm/admin/paymentProcessorType?reset=1&action=delete&id=[id]', + 'update' => 'civicrm/admin/paymentProcessorType?reset=1&action=update&id=[id]', + ]; + /** * Payment Processor Type ID * diff --git a/civicrm/CRM/Financial/Form/FinancialAccount.php b/civicrm/CRM/Financial/Form/FinancialAccount.php index c90572a326..37e78f90f6 100644 --- a/civicrm/CRM/Financial/Form/FinancialAccount.php +++ b/civicrm/CRM/Financial/Form/FinancialAccount.php @@ -146,7 +146,7 @@ class CRM_Financial_Form_FinancialAccount extends CRM_Contribute_Form { $errorMsg['tax_rate'] = ts('Please enter value for tax rate'); } } - if ((CRM_Utils_Array::value('tax_rate', $values) != NULL)) { + if ((($values['tax_rate'] ?? NULL) != NULL)) { if ($values['tax_rate'] < 0 || $values['tax_rate'] >= 100) { $errorMsg['tax_rate'] = ts('Tax Rate Should be between 0 - 100'); } diff --git a/civicrm/CRM/Financial/Form/FinancialType.php b/civicrm/CRM/Financial/Form/FinancialType.php index 4702155253..2b6f1079dd 100644 --- a/civicrm/CRM/Financial/Form/FinancialType.php +++ b/civicrm/CRM/Financial/Form/FinancialType.php @@ -151,7 +151,7 @@ class CRM_Financial_Form_FinancialType extends CRM_Core_Form { else { $text = ts('Your Financial "%1" Type has been created and assigned to an existing financial account with the same title. You should review the assigned account and determine whether additional account relationships are needed.', $statusArray); } - CRM_Core_Session::setStatus($text, ts('Saved'), 'success', ['expires' => 0]); + CRM_Core_Session::setStatus($text, ts('Saved'), 'success', ['expires' => 30000]); } $session = CRM_Core_Session::singleton(); diff --git a/civicrm/CRM/Financial/Form/FinancialTypeAccount.php b/civicrm/CRM/Financial/Form/FinancialTypeAccount.php index 3180d3830f..b28b57360e 100644 --- a/civicrm/CRM/Financial/Form/FinancialTypeAccount.php +++ b/civicrm/CRM/Financial/Form/FinancialTypeAccount.php @@ -212,7 +212,7 @@ class CRM_Financial_Form_FinancialTypeAccount extends CRM_Core_Form { $errorFlag = FALSE; if ($self->_action == CRM_Core_Action::DELETE) { $relationValues = CRM_Core_PseudoConstant::get('CRM_Financial_DAO_EntityFinancialAccount', 'account_relationship'); - if (CRM_Utils_Array::value('financial_account_id', $values) != 'select') { + if (($values['financial_account_id'] ?? NULL) != 'select') { if ($relationValues[$values['account_relationship']] == 'Premiums Inventory Account is' || $relationValues[$values['account_relationship']] == 'Cost of Sales Account is') { $premiumsProduct = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_PremiumsProduct', $values['financial_type_id'], 'product_id', 'financial_type_id'); $product = CRM_Core_DAO::getFieldValue('CRM_Contribute_DAO_Product', $values['financial_type_id'], 'name', 'financial_type_id'); @@ -222,10 +222,10 @@ class CRM_Financial_Form_FinancialTypeAccount extends CRM_Core_Form { } } } - if (CRM_Utils_Array::value('account_relationship', $values) == 'select') { + if (($values['account_relationship'] ?? NULL) == 'select') { $errorMsg['account_relationship'] = 'Financial Account relationship is a required field.'; } - if (CRM_Utils_Array::value('financial_account_id', $values) == 'select') { + if (($values['financial_account_id'] ?? NULL) == 'select') { $errorMsg['financial_account_id'] = 'Financial Account is a required field.'; } if (!empty($values['account_relationship']) && !empty($values['financial_account_id'])) { diff --git a/civicrm/CRM/Financial/Page/FinancialAccount.php b/civicrm/CRM/Financial/Page/FinancialAccount.php index b17d1edabd..16e7d6a187 100644 --- a/civicrm/CRM/Financial/Page/FinancialAccount.php +++ b/civicrm/CRM/Financial/Page/FinancialAccount.php @@ -16,7 +16,7 @@ */ /** - * Page for displaying list of financial types + * Page for displaying list of financial accounts */ class CRM_Financial_Page_FinancialAccount extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/Financial/Page/FinancialBatch.php b/civicrm/CRM/Financial/Page/FinancialBatch.php index 3a6e08ca55..259909911f 100644 --- a/civicrm/CRM/Financial/Page/FinancialBatch.php +++ b/civicrm/CRM/Financial/Page/FinancialBatch.php @@ -16,7 +16,7 @@ */ /** - * Page for displaying list of financial types + * Page for displaying list of financial batches */ class CRM_Financial_Page_FinancialBatch extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/Group/Form/Edit.php b/civicrm/CRM/Group/Form/Edit.php index 25416f7151..647cbeed92 100644 --- a/civicrm/CRM/Group/Form/Edit.php +++ b/civicrm/CRM/Group/Form/Edit.php @@ -102,18 +102,16 @@ class CRM_Group_Form_Edit extends CRM_Core_Form { // current set id $this->_id = CRM_Utils_Request::retrieve('id', 'Positive', $this); if ($this->_id) { - $breadCrumb = array( - array( + $breadCrumb = [ + [ 'title' => ts('Manage Groups'), - 'url' => CRM_Utils_System::url('civicrm/group', - 'reset=1' - ), - ), - ); + 'url' => CRM_Utils_System::url('civicrm/group', 'reset=1'), + ], + ]; CRM_Utils_System::appendBreadCrumb($breadCrumb); $this->_groupValues = []; - $params = array('id' => $this->_id); + $params = ['id' => $this->_id]; $this->_group = CRM_Contact_BAO_Group::retrieve($params, $this->_groupValues); $this->_title = $this->_groupValues['title']; } @@ -124,12 +122,15 @@ class CRM_Group_Form_Edit extends CRM_Core_Form { if ($this->_action == CRM_Core_Action::DELETE) { if (isset($this->_id)) { $this->assign('title', $this->_title); - try { - $this->assign('count', CRM_Contact_BAO_Group::memberCount($this->_id)); - } - catch (CRM_Core_Exception $e) { - // If the group is borked the query might fail but delete should be possible. + if (!($this->_groupValues['saved_search_id'])) { + try { + $count = CRM_Contact_BAO_Group::memberCount($this->_id); + } + catch (CRM_Core_Exception $e) { + // If the group is borked the query might fail but delete should be possible. + } } + $this->assign('count', $count ?? NULL); $this->setTitle(ts('Confirm Group Delete')); } if ($this->_groupValues['is_reserved'] == 1 && !CRM_Core_Permission::check('administer reserved groups')) { @@ -141,18 +142,18 @@ class CRM_Group_Form_Edit extends CRM_Core_Form { CRM_Core_Error::statusBounce(ts('You do not have sufficient permission to change settings for this reserved group.')); } if (isset($this->_id)) { - $groupValues = array( + $groupValues = [ 'id' => $this->_id, 'title' => $this->_title, 'saved_search_id' => $this->_groupValues['saved_search_id'] ?? '', - ); + ]; $this->assign('editSmartGroupURL', isset($this->_groupValues['saved_search_id']) ? CRM_Contact_BAO_SavedSearch::getEditSearchUrl($this->_groupValues['saved_search_id']) : NULL); $groupValues['created_by'] = empty($this->_groupValues['created_id']) ? NULL : CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_groupValues['created_id'], 'sort_name', 'id'); $groupValues['modified_by'] = empty($this->_groupValues['modified_id']) ? NULL : CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Contact', $this->_groupValues['modified_id'], 'sort_name', 'id'); $this->assign('group', $groupValues); - $this->setTitle(ts('Group Settings: %1', array(1 => $this->_title))); + $this->setTitle(ts('Group Settings: %1', [1 => $this->_title])); } $session = CRM_Core_Session::singleton(); $session->pushUserContext(CRM_Utils_System::url('civicrm/group', 'reset=1')); @@ -258,12 +259,12 @@ class CRM_Group_Form_Edit extends CRM_Core_Form { $doParentCheck = !($this->_id && CRM_Core_BAO_Domain::isDomainGroup($this->_id)); } - $options = array( + $options = [ 'selfObj' => $this, 'parentGroups' => $parentGroups, 'doParentCheck' => $doParentCheck, - ); - $this->addFormRule(array('CRM_Group_Form_Edit', 'formRule'), $options); + ]; + $this->addFormRule(['CRM_Group_Form_Edit', 'formRule'], $options); } /** @@ -311,16 +312,16 @@ SELECT count(*) FROM civicrm_group WHERE title = %1 "; - $params = array(1 => array($title, 'String')); + $params = [1 => [$title, 'String']]; if ($self->_id) { $query .= "AND id <> %2"; - $params[2] = array($self->_id, 'Integer'); + $params[2] = [$self->_id, 'Integer']; } $grpCnt = CRM_Core_DAO::singleValueQuery($query, $params); if ($grpCnt) { - $errors['title'] = ts('Group \'%1\' already exists.', array(1 => $fields['title'])); + $errors['title'] = ts('Group \'%1\' already exists.', [1 => $fields['title']]); } } @@ -336,7 +337,7 @@ WHERE title = %1 $updateNestingCache = FALSE; if ($this->_action & CRM_Core_Action::DELETE) { CRM_Contact_BAO_Group::discard($this->_id); - CRM_Core_Session::setStatus(ts("The Group '%1' has been deleted.", array(1 => $this->_title)), ts('Group Deleted'), 'success'); + CRM_Core_Session::setStatus(ts("The Group '%1' has been deleted.", [1 => $this->_title]), ts('Group Deleted'), 'success'); $updateNestingCache = TRUE; } else { @@ -370,7 +371,7 @@ WHERE title = %1 // Set the entity id so it is available to postProcess hook consumers $this->setEntityId($group->id); - CRM_Core_Session::setStatus(ts('The Group \'%1\' has been saved.', array(1 => $group->title)), ts('Group Saved'), 'success'); + CRM_Core_Session::setStatus(ts('The Group \'%1\' has been saved.', [1 => $group->title]), ts('Group Saved'), 'success'); // Add context to the session, in case we are adding members to the group if ($this->_action & CRM_Core_Action::ADD) { @@ -430,7 +431,7 @@ WHERE title = %1 else { $required = FALSE; } - $form->add('select', 'parents', ts('Add Parent'), $parentGroupSelectValues, $required, array('class' => 'crm-select2', 'multiple' => TRUE)); + $form->add('select', 'parents', ts('Add Parent'), $parentGroupSelectValues, $required, ['class' => 'crm-select2', 'multiple' => TRUE]); } return $parentGroups; @@ -447,7 +448,7 @@ WHERE title = %1 public static function buildGroupOrganizations(&$form) { if (CRM_Core_Permission::check('administer Multiple Organizations') && CRM_Core_Permission::isMultisiteEnabled()) { //group organization Element - $props = array('api' => array('params' => array('contact_type' => 'Organization'))); + $props = ['api' => ['params' => ['contact_type' => 'Organization']]]; $form->addEntityRef('organization_id', ts('Organization'), $props); } } diff --git a/civicrm/CRM/Group/Form/Search.php b/civicrm/CRM/Group/Form/Search.php index 9ff60f05aa..9a6d45cbcd 100644 --- a/civicrm/CRM/Group/Form/Search.php +++ b/civicrm/CRM/Group/Form/Search.php @@ -45,7 +45,7 @@ class CRM_Group_Form_Search extends CRM_Core_Form { $optionTypes = [ '1' => ts('Smart Group'), - '2' => ts('Normal Group'), + '2' => ts('Regular Group'), ]; $this->add('select', 'saved_search', ts('Group Type'), ['' => ts('- any -')] + $optionTypes diff --git a/civicrm/CRM/Import/Form/MapField.php b/civicrm/CRM/Import/Form/MapField.php index 0ddea9ae84..ff1c6d0ca1 100644 --- a/civicrm/CRM/Import/Form/MapField.php +++ b/civicrm/CRM/Import/Form/MapField.php @@ -193,9 +193,7 @@ abstract class CRM_Import_Form_MapField extends CRM_Import_Forms { $fieldMessage .= ' ' . $field . '(weight ' . $weight . ')'; } if ($weightSum < $threshold) { - return $fieldMessage . ' ' . ts('(Sum of all weights should be greater than or equal to threshold: %1).', array( - 1 => $threshold, - )); + return $fieldMessage . ' ' . ts('(Sum of all weights should be greater than or equal to threshold: %1).', [1 => $threshold]); } return ''; } diff --git a/civicrm/CRM/Import/Parser.php b/civicrm/CRM/Import/Parser.php index 359070c426..170f1e5b52 100644 --- a/civicrm/CRM/Import/Parser.php +++ b/civicrm/CRM/Import/Parser.php @@ -1179,7 +1179,7 @@ abstract class CRM_Import_Parser implements UserJobInterface { $addressCnt = 1; foreach ($params['address'] as $cnt => $addressBlock) { - if (CRM_Utils_Array::value('location_type_id', $values) == + if (($values['location_type_id'] ?? NULL) == CRM_Utils_Array::value('location_type_id', $addressBlock) ) { $addressCnt = $cnt; diff --git a/civicrm/CRM/Logging/Differ.php b/civicrm/CRM/Logging/Differ.php index 8dd8e8d8ea..083a6266f1 100644 --- a/civicrm/CRM/Logging/Differ.php +++ b/civicrm/CRM/Logging/Differ.php @@ -219,7 +219,7 @@ WHERE lt.log_conn_id = %1 continue; } - if (CRM_Utils_Array::value($diff, $original) === CRM_Utils_Array::value($diff, $changed)) { + if (($original[$diff] ?? NULL) === CRM_Utils_Array::value($diff, $changed)) { continue; } diff --git a/civicrm/CRM/Logging/ReportSummary.php b/civicrm/CRM/Logging/ReportSummary.php index cde815f888..da50232bff 100644 --- a/civicrm/CRM/Logging/ReportSummary.php +++ b/civicrm/CRM/Logging/ReportSummary.php @@ -372,9 +372,9 @@ WHERE log_date <= %1 AND id = %2 ORDER BY log_date DESC LIMIT 1"; foreach ($this->_logTables as $entity => $detail) { if ((in_array($this->getLogType($entity), $logTypes) && - CRM_Utils_Array::value('log_type_op', $this->_params) == 'in') || + ($this->_params['log_type_op'] ?? NULL) == 'in') || (!in_array($this->getLogType($entity), $logTypes) && - CRM_Utils_Array::value('log_type_op', $this->_params) == 'notin') + ($this->_params['log_type_op'] ?? NULL) == 'notin') ) { $this->currentLogTable = $entity; $sql = $this->buildQuery(FALSE); diff --git a/civicrm/CRM/Logging/Schema.php b/civicrm/CRM/Logging/Schema.php index f1f5847cc4..8094be15c3 100644 --- a/civicrm/CRM/Logging/Schema.php +++ b/civicrm/CRM/Logging/Schema.php @@ -722,7 +722,7 @@ WHERE table_schema IN ('{$this->db}', '{$civiDB}')"; if (!empty($specDiff) && $col !== 'id' && !in_array($col, $diff['ADD'])) { if (empty($colSpecs['EXTRA']) || (!empty($colSpecs['EXTRA']) && $colSpecs['EXTRA'] !== 'auto_increment')) { // ignore 'id' column for any spec changes, to avoid any auto-increment mysql errors - if ($civiTableSpecs[$col]['DATA_TYPE'] != CRM_Utils_Array::value('DATA_TYPE', $logTableSpecs[$col]) + if ($civiTableSpecs[$col]['DATA_TYPE'] != ($logTableSpecs[$col]['DATA_TYPE'] ?? NULL) // We won't alter the log if the length is decreased in case some of the existing data won't fit. || CRM_Utils_Array::value('LENGTH', $civiTableSpecs[$col]) > CRM_Utils_Array::value('LENGTH', $logTableSpecs[$col]) ) { @@ -730,12 +730,12 @@ WHERE table_schema IN ('{$this->db}', '{$civiDB}')"; $diff['MODIFY'][] = $col; } elseif ($civiTableSpecs[$col]['DATA_TYPE'] === 'enum' && - CRM_Utils_Array::value('ENUM_VALUES', $civiTableSpecs[$col]) != CRM_Utils_Array::value('ENUM_VALUES', $logTableSpecs[$col]) + ($civiTableSpecs[$col]['ENUM_VALUES'] ?? NULL) != ($logTableSpecs[$col]['ENUM_VALUES'] ?? NULL) ) { // column is enum and the permitted values have changed $diff['MODIFY'][] = $col; } - elseif ($civiTableSpecs[$col]['IS_NULLABLE'] != CRM_Utils_Array::value('IS_NULLABLE', $logTableSpecs[$col]) && + elseif ($civiTableSpecs[$col]['IS_NULLABLE'] != ($logTableSpecs[$col]['IS_NULLABLE'] ?? NULL) && $logTableSpecs[$col]['IS_NULLABLE'] === 'NO' ) { // if is-null property is different, and log table's column is NOT-NULL, surely consider the column diff --git a/civicrm/CRM/Mailing/BAO/Mailing.php b/civicrm/CRM/Mailing/BAO/Mailing.php index 03acef38f5..bb726c6a59 100644 --- a/civicrm/CRM/Mailing/BAO/Mailing.php +++ b/civicrm/CRM/Mailing/BAO/Mailing.php @@ -459,6 +459,25 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing implements \Civi\C // Create parent job if not yet created. // Condition on the existence of a scheduled date. if (!empty($params['scheduled_date']) && $params['scheduled_date'] != 'null' && empty($params['_skip_evil_bao_auto_schedule_'])) { + + if (!isset($params['is_completed']) || $params['is_completed'] !== 1) { + $mailingGroups = \Civi\Api4\MailingGroup::get() + ->addSelect('group.id') + ->addJoin('Group AS group', 'LEFT', ['entity_id', '=', 'group.id']) + ->addWhere('mailing_id', '=', $mailing->id) + ->addWhere('entity_table', '=', 'civicrm_group') + ->addWhere('group_type', 'IN', ['Include', 'Exclude']) + ->addClause('OR', ['group.saved_search_id', 'IS NOT NULL'], ['group.children', 'IS NOT NULL']) + ->execute(); + foreach ($mailingGroups as $mailingGroup) { + CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache($mailingGroup['group.id']); + $group = new CRM_Contact_DAO_Group(); + $group->find(TRUE); + $group->id = $mailingGroup['group.id']; + CRM_Contact_BAO_GroupContactCache::load($group); + } + } + $job = new CRM_Mailing_BAO_MailingJob(); $job->mailing_id = $mailing->id; // If we are creating a new Completed mailing (e.g. import from another system) set the job to completed. diff --git a/civicrm/CRM/Mailing/DAO/MailingComponent.php b/civicrm/CRM/Mailing/DAO/MailingComponent.php index 6d548f3058..1a0b2001d1 100644 --- a/civicrm/CRM/Mailing/DAO/MailingComponent.php +++ b/civicrm/CRM/Mailing/DAO/MailingComponent.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Mailing/MailingComponent.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:aa24935c1369d294b00f00cec1dd9623) + * (GenCodeChecksum:7ad429cf84e9bae091c8ea38beada696) */ /** @@ -31,6 +31,16 @@ class CRM_Mailing_DAO_MailingComponent extends CRM_Core_DAO { */ public static $_log = FALSE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/admin/component?action=add&reset=1', + 'update' => 'civicrm/admin/component?action=update&id=[id]&reset=1', + ]; + /** * @var int|string|null * (SQL type: int unsigned) diff --git a/civicrm/CRM/Mailing/Event/BAO/MailingEventBounce.php b/civicrm/CRM/Mailing/Event/BAO/MailingEventBounce.php index 7a2d808ff2..38fecb9b30 100644 --- a/civicrm/CRM/Mailing/Event/BAO/MailingEventBounce.php +++ b/civicrm/CRM/Mailing/Event/BAO/MailingEventBounce.php @@ -224,7 +224,7 @@ class CRM_Mailing_Event_BAO_MailingEventBounce extends CRM_Mailing_Event_DAO_Mai $url = CRM_Utils_System::url('civicrm/contact/view', "reset=1&cid={$dao->contact_id}" ); - $results[] = array( + $results[] = [ 'name' => "<a href=\"$url\">{$dao->display_name}</a>", 'email' => $dao->email, // FIXME: translate this @@ -232,7 +232,7 @@ class CRM_Mailing_Event_BAO_MailingEventBounce extends CRM_Mailing_Event_DAO_Mai ), 'reason' => $dao->reason, 'date' => CRM_Utils_Date::customFormat($dao->date), - ); + ]; } return $results; } diff --git a/civicrm/CRM/Mailing/Event/BAO/MailingEventDelivered.php b/civicrm/CRM/Mailing/Event/BAO/MailingEventDelivered.php index 6d823e71e3..0d651c1fe7 100644 --- a/civicrm/CRM/Mailing/Event/BAO/MailingEventDelivered.php +++ b/civicrm/CRM/Mailing/Event/BAO/MailingEventDelivered.php @@ -17,15 +17,15 @@ class CRM_Mailing_Event_BAO_MailingEventDelivered extends CRM_Mailing_Event_DAO_MailingEventDelivered { /** - * Create a new delivery event. + * Record a new delivery event. * * @param array $params * Associative array of delivery event values. * * @return \CRM_Mailing_Event_BAO_MailingEventDelivered */ - public static function &create(&$params) { - $q = &CRM_Mailing_Event_BAO_MailingEventQueue::verify($params['job_id'], + public static function recordDelivery(&$params) { + $q = CRM_Mailing_Event_BAO_MailingEventQueue::verify($params['job_id'], $params['event_queue_id'], $params['hash'] ); @@ -54,6 +54,19 @@ class CRM_Mailing_Event_BAO_MailingEventDelivered extends CRM_Mailing_Event_DAO_ return $delivered; } + /** + * Create function was renamed `recordDelivery` because it's not a standard CRUD create function + * + * @param array $params + * @deprecated + * + * @return \CRM_Mailing_Event_BAO_MailingEventDelivered + */ + public static function create(&$params) { + CRM_Core_Error::deprecatedFunctionWarning('recordDelivery'); + return self::recordDelivery($params); + } + /** * Get row count for the event selector. * diff --git a/civicrm/CRM/Mailing/Event/BAO/MailingEventForward.php b/civicrm/CRM/Mailing/Event/BAO/MailingEventForward.php index a94fcab29a..4fa9667991 100644 --- a/civicrm/CRM/Mailing/Event/BAO/MailingEventForward.php +++ b/civicrm/CRM/Mailing/Event/BAO/MailingEventForward.php @@ -183,7 +183,7 @@ class CRM_Mailing_Event_BAO_MailingEventForward extends CRM_Mailing_Event_DAO_Ma $successfulForward = TRUE; // Register the delivery event. - CRM_Mailing_Event_BAO_MailingEventDelivered::create($params); + CRM_Mailing_Event_BAO_MailingEventDelivered::recordDelivery($params); } $transaction->commit(); @@ -284,7 +284,7 @@ class CRM_Mailing_Event_BAO_MailingEventForward extends CRM_Mailing_Event_DAO_Ma $addressCnt = 1; foreach ($params['address'] as $cnt => $addressBlock) { - if (CRM_Utils_Array::value('location_type_id', $values) == + if (($values['location_type_id'] ?? NULL) == CRM_Utils_Array::value('location_type_id', $addressBlock) ) { $addressCnt = $cnt; diff --git a/civicrm/CRM/Mailing/Event/BAO/MailingEventSubscribe.php b/civicrm/CRM/Mailing/Event/BAO/MailingEventSubscribe.php index ecda0c8cce..30af618b88 100644 --- a/civicrm/CRM/Mailing/Event/BAO/MailingEventSubscribe.php +++ b/civicrm/CRM/Mailing/Event/BAO/MailingEventSubscribe.php @@ -347,7 +347,7 @@ SELECT civicrm_email.id as email_id $group[$groupID]['status'] = $contactGroups[$groupID]['status']; $status = ts('You are already subscribed in %1, your subscription is %2.', [ 1 => $group[$groupID]['title'], - 2 => ts($group[$groupID]['status']), + 2 => _ts($group[$groupID]['status']), ]); CRM_Utils_System::setUFMessage($status); continue; diff --git a/civicrm/CRM/Mailing/Form/Optout.php b/civicrm/CRM/Mailing/Form/Optout.php index 0ffd5f2975..784fab4be4 100644 --- a/civicrm/CRM/Mailing/Form/Optout.php +++ b/civicrm/CRM/Mailing/Form/Optout.php @@ -27,22 +27,22 @@ class CRM_Mailing_Form_Optout extends CRM_Core_Form { /** * @var int */ - private $_job_id; + protected $_job_id; /** * @var int */ - private $_queue_id; + protected $_queue_id; /** * @var string */ - private $_hash; + protected $_hash; /** * @var string */ - private $_email; + protected $_email; public function preProcess() { $this->_job_id = $job_id = CRM_Utils_Request::retrieve('jid', 'Integer', $this); diff --git a/civicrm/CRM/Mailing/Form/Unsubscribe.php b/civicrm/CRM/Mailing/Form/Unsubscribe.php index 7b3df693e7..36fb63a152 100644 --- a/civicrm/CRM/Mailing/Form/Unsubscribe.php +++ b/civicrm/CRM/Mailing/Form/Unsubscribe.php @@ -27,22 +27,22 @@ class CRM_Mailing_Form_Unsubscribe extends CRM_Core_Form { /** * @var int */ - private $_job_id; + protected $_job_id; /** * @var int */ - private $_queue_id; + protected $_queue_id; /** * @var string */ - private $_hash; + protected $_hash; /** * @var string */ - private $_email; + protected $_email; public function preProcess() { $this->_job_id = $job_id = CRM_Utils_Request::retrieve('jid', 'Integer', $this); diff --git a/civicrm/CRM/Mailing/Page/Browse.php b/civicrm/CRM/Mailing/Page/Browse.php index 501e56e173..eca527d5dc 100644 --- a/civicrm/CRM/Mailing/Page/Browse.php +++ b/civicrm/CRM/Mailing/Page/Browse.php @@ -116,34 +116,25 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { public function run() { $this->preProcess(); - $newArgs = func_get_args(); - // since we want only first function argument - $newArgs = $newArgs[0]; - $this->_isArchived = $this->isArchived($newArgs); - if (isset($_GET['runJobs']) || CRM_Utils_Array::value('2', $newArgs) == 'queue') { - $mailerJobSize = Civi::settings()->get('mailerJobSize'); - CRM_Mailing_BAO_MailingJob::runJobs_pre($mailerJobSize); - CRM_Mailing_BAO_MailingJob::runJobs(); - CRM_Mailing_BAO_MailingJob::runJobs_post(); - } + $newArgs = func_get_args()[0]; $this->_sortByCharacter = 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)) { + // CRM-11920 "all" should set sortByCharacter to null, not empty string + if (strtolower($this->_sortByCharacter ?: '') == 'all' || !empty($_POST)) { $this->_sortByCharacter = NULL; $this->set('sortByCharacter', NULL); } - if (CRM_Utils_Array::value(3, $newArgs) == 'unscheduled') { + if (($newArgs[3] ?? NULL) == 'unscheduled') { $this->_unscheduled = TRUE; } $this->set('unscheduled', $this->_unscheduled); $this->set('archived', $this->isArchived($newArgs)); - if (CRM_Utils_Array::value(3, $newArgs) == 'scheduled') { + if (($newArgs[3] ?? NULL) == 'scheduled') { $this->_scheduled = TRUE; } $this->set('scheduled', $this->_scheduled); @@ -252,7 +243,7 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { if ($this->get('sms')) { $urlParams .= '&sms=1'; } - if (CRM_Utils_Array::value(3, $newArgs) == 'unscheduled') { + if (($newArgs[3] ?? NULL) == 'unscheduled') { $urlString .= '/unscheduled'; $urlParams .= '&scheduled=false'; $this->assign('unscheduled', TRUE); @@ -262,7 +253,7 @@ class CRM_Mailing_Page_Browse extends CRM_Core_Page { $urlString .= '/archived'; $this->assign('archived', TRUE); } - elseif (CRM_Utils_Array::value(3, $newArgs) == 'scheduled') { + elseif (($newArgs[3] ?? NULL) == 'scheduled') { $urlString .= '/scheduled'; $urlParams .= '&scheduled=true'; } diff --git a/civicrm/CRM/Mailing/Page/Component.php b/civicrm/CRM/Mailing/Page/Component.php index 860f3561ee..b723185377 100644 --- a/civicrm/CRM/Mailing/Page/Component.php +++ b/civicrm/CRM/Mailing/Page/Component.php @@ -21,13 +21,6 @@ */ class CRM_Mailing_Page_Component extends CRM_Core_Page_Basic { - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -38,36 +31,6 @@ class CRM_Mailing_Page_Component extends CRM_Core_Page_Basic { return 'CRM_Mailing_BAO_MailingComponent'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => CRM_Utils_System::currentPath(), - 'qs' => 'action=update&id=%%id%%', - 'title' => ts('Edit Mailing Component'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Mailing Component'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Mailing Component'), - ], - ]; - } - return self::$_links; - } - /** * Get name of edit form. * diff --git a/civicrm/CRM/Mailing/Page/View.php b/civicrm/CRM/Mailing/Page/View.php index 4b63e2b4a2..fb7caac10f 100644 --- a/civicrm/CRM/Mailing/Page/View.php +++ b/civicrm/CRM/Mailing/Page/View.php @@ -163,7 +163,7 @@ class CRM_Mailing_Page_View extends CRM_Core_Page { } CRM_Utils_System::setTitle($mailing['subject']); - if (CRM_Utils_Array::value('snippet', $_GET) === 'json') { + if (($_GET['snippet'] ?? NULL) === 'json') { CRM_Core_Page_AJAX::returnJsonResponse($content); } if ($print) { diff --git a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml index 3c4446704f..5e6b7b474e 100644 --- a/civicrm/CRM/Mailing/xml/Menu/Mailing.xml +++ b/civicrm/CRM/Mailing/xml/Menu/Mailing.xml @@ -40,11 +40,18 @@ <path>civicrm/admin/mailSettings</path> <title>Mail Accounts</title> <page_callback>CRM_Admin_Page_MailSettings</page_callback> - <desc>Configure email account setting.</desc> + <desc>List email accounts.</desc> <access_arguments>access CiviCRM,access CiviMail</access_arguments> <adminGroup>CiviMail</adminGroup> <weight>420</weight> </item> + <item> + <path>civicrm/admin/mailSettings/edit</path> + <title>Mail Accounts</title> + <page_callback>CRM_Admin_Form_MailSettings</page_callback> + <access_arguments>access CiviCRM,access CiviMail</access_arguments> + <weight>420</weight> + </item> <item> <path>civicrm/admin/setting/preferences/mailing</path> <title>CiviMail Component Settings</title> @@ -159,13 +166,6 @@ <is_public>true</is_public> <weight>685</weight> </item> - <item> - <path>civicrm/mailing/queue</path> - <title>Sending Mail</title> - <page_callback>CRM_Mailing_Page_Browse</page_callback> - <access_arguments>access CiviMail</access_arguments> - <weight>690</weight> - </item> <item> <path>civicrm/mailing/report/event</path> <title>Mailing Event</title> diff --git a/civicrm/CRM/Member/BAO/Membership.php b/civicrm/CRM/Member/BAO/Membership.php index 303af17141..f5d2bf8999 100644 --- a/civicrm/CRM/Member/BAO/Membership.php +++ b/civicrm/CRM/Member/BAO/Membership.php @@ -298,7 +298,7 @@ class CRM_Member_BAO_Membership extends CRM_Member_DAO_Membership { 'now', $excludeIsAdmin, $params['membership_type_id'] ?? NULL, $params ); if (empty($calcStatus)) { - throw new CRM_Core_Exception(ts("The membership cannot be saved because the status cannot be calculated for start_date: {$params['start_date']} end_date {$params['end_date']} join_date {$params['join_date']} as at " . CRM_Utils_Time::date('Y-m-d H:i:s'))); + throw new CRM_Core_Exception(ts("The membership cannot be saved because the status cannot be calculated for start_date: %1, end_date: %2, join_date: %3. Current time is: %4.", [1 => $params['start_date'], 2 => $params['end_date'], 3 => $params['join_date'], 4 => CRM_Utils_Time::date('Y-m-d H:i:s')])); } $params['status_id'] = $calcStatus['id']; } diff --git a/civicrm/CRM/Member/BAO/MembershipType.php b/civicrm/CRM/Member/BAO/MembershipType.php index 8e490af173..690279bd42 100644 --- a/civicrm/CRM/Member/BAO/MembershipType.php +++ b/civicrm/CRM/Member/BAO/MembershipType.php @@ -316,13 +316,13 @@ class CRM_Member_BAO_MembershipType extends CRM_Member_DAO_MembershipType implem } $fixed_period_rollover = FALSE; - if (CRM_Utils_Array::value('period_type', $membershipTypeDetails) == 'rolling') { + if (($membershipTypeDetails['period_type'] ?? NULL) == 'rolling') { if (!$startDate) { $startDate = $joinDate; } $actualStartDate = $startDate; } - elseif (CRM_Utils_Array::value('period_type', $membershipTypeDetails) == 'fixed') { + elseif (($membershipTypeDetails['period_type'] ?? NULL) == 'fixed') { // calculate start date // if !$startDate then use $joinDate $toDay = explode('-', (empty($startDate) ? $joinDate : $startDate)); diff --git a/civicrm/CRM/Member/DAO/MembershipStatus.php b/civicrm/CRM/Member/DAO/MembershipStatus.php index 1079d2e20a..6447292ef5 100644 --- a/civicrm/CRM/Member/DAO/MembershipStatus.php +++ b/civicrm/CRM/Member/DAO/MembershipStatus.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/Member/MembershipStatus.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:284a64d31c739244c653daab8bebfe97) + * (GenCodeChecksum:667f8df9ffcdc08d37863ce19cb1b0ef) */ /** @@ -38,6 +38,17 @@ class CRM_Member_DAO_MembershipStatus extends CRM_Core_DAO { */ public static $_log = TRUE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/admin/member/membershipStatus?action=add&reset=1', + 'update' => 'civicrm/admin/member/membershipStatus?action=update&id=[id]&reset=1', + 'delete' => 'civicrm/admin/member/membershipStatus?action=delete&id=[id]&reset=1', + ]; + /** * Membership ID * diff --git a/civicrm/CRM/Member/Form/Membership.php b/civicrm/CRM/Member/Form/Membership.php index 6c3963de43..a8249e8f92 100644 --- a/civicrm/CRM/Member/Form/Membership.php +++ b/civicrm/CRM/Member/Form/Membership.php @@ -31,6 +31,11 @@ class CRM_Member_Form_Membership extends CRM_Member_Form { protected $_memType = NULL; + /** + * If this is set (to 'test' or 'live') then the payment processor will be shown on the form to take a payment. + * + * @var string|null + */ public $_mode; public $_contributeMode = 'direct'; @@ -754,7 +759,7 @@ DESC limit 1"); } $membershipDetails = CRM_Member_BAO_MembershipType::getMembershipType($memType); - if ($startDate && CRM_Utils_Array::value('period_type', $membershipDetails) === 'rolling') { + if ($startDate && ($membershipDetails['period_type'] ?? NULL) === 'rolling') { if ($startDate < $joinDate) { $errors['start_date'] = ts('Start date must be the same or later than Member since.'); } @@ -775,7 +780,7 @@ DESC limit 1"); } if (empty($params['status_id']) || in_array($params['status_id'], $status_ids) == FALSE) { - $errors['status_id'] = ts('Please enter a status that does NOT represent a current membership status.'); + $errors['status_id'] = ts('A current lifetime membership cannot have an end date. You can either remove the end date or change the status to a non-current status like Cancelled, Expired, or Deceased.'); } if (!empty($params['is_override']) && !CRM_Member_StatusOverrideTypes::isPermanent($params['is_override'])) { @@ -1259,17 +1264,31 @@ DESC limit 1"); } else { $params['action'] = $this->_action; + foreach ($lineItem[$this->_priceSetId] as $id => $lineItemValues) { if (empty($lineItemValues['membership_type_id'])) { continue; } - // @todo figure out why recieve_date isn't being set right here. + // @todo figure out why receive_date isn't being set right here. if (empty($params['receive_date'])) { $params['receive_date'] = CRM_Utils_Time::date('Y-m-d H:i:s'); } $membershipParams = array_merge($params, $membershipTypeValues[$lineItemValues['membership_type_id']]); + // If is_override is empty then status_id="" (because it's a hidden field). That will trigger a recalculation in CRM_Member_BAO_Membership::create + // unless is_override = TRUE or skipStatusCal = TRUE. But skipStatusCal also skips date calculations. + // If we are recording a contribution we *do* want to trigger a recalculation of membership status so it can go from Pending->New/Current + // So here we check if status_id is empty, default (ie. status in database) is pending and that we are not recording a contribution - + // If all those are true then we skip the status calculation and explicitly set the pending status (to avoid a DB constraint status_id=0). + if (empty($membershipParams['status_id']) + && !empty($this->_defaultValues['status_id']) + && !$this->getSubmittedValue('record_contribution') + && (int) $this->_defaultValues['status_id'] === $pendingMembershipStatusId + ) { + $membershipParams['status_id'] = $this->_defaultValues['status_id']; + } + if (!empty($softParams)) { $params['soft_credit'] = $softParams; } @@ -1372,12 +1391,10 @@ DESC limit 1"); !in_array($this->_memType, $this->_memTypeSelected) ) { if ($this->isCreateRecurringContribution()) { - CRM_Core_Session::setStatus(ts('Associated recurring contribution cannot be updated on membership type change.', ts('Error'), 'error')); + CRM_Core_Session::setStatus(ts('Associated recurring contribution cannot be updated on membership type change.'), ts('Error'), 'error'); return; } - // fetch lineitems by updated membership ID - $lineItems = CRM_Price_BAO_LineItem::getLineItems($this->getMembershipID(), 'membership'); // retrieve the related contribution ID $contributionID = CRM_Core_DAO::getFieldValue( 'CRM_Member_DAO_MembershipPayment', @@ -1404,8 +1421,7 @@ DESC limit 1"); $this->getMembershipID(), 'membership', $contributionID, - $priceSetDetails['fields'], - $lineItems + $priceSetDetails['fields'] ); CRM_Core_Session::setStatus(ts('Associated contribution is updated on membership type change.'), ts('Success'), 'success'); } @@ -1510,9 +1526,13 @@ DESC limit 1"); //CRM-15187 // display message when membership type is changed if (($this->_action & CRM_Core_Action::UPDATE) && $this->getMembershipID() && !in_array($this->_memType, $this->_memTypeSelected)) { - $lineItem = CRM_Price_BAO_LineItem::getLineItems($this->getMembershipID(), 'membership'); - $maxID = max(array_keys($lineItem)); - $lineItem = $lineItem[$maxID]; + $lineItems = CRM_Price_BAO_LineItem::getLineItems($this->getMembershipID(), 'membership'); + if (empty($lineItems)) { + return; + } + + $maxID = max(array_keys($lineItems)); + $lineItem = $lineItems[$maxID]; $membershipTypeDetails = $this->allMembershipTypeDetails[$this->getMembership()['membership_type_id']]; if ($membershipTypeDetails['financial_type_id'] != $lineItem['financial_type_id']) { CRM_Core_Session::setStatus( diff --git a/civicrm/CRM/Member/Form/Search.php b/civicrm/CRM/Member/Form/Search.php index d3816b9a3f..5e4d6ce424 100644 --- a/civicrm/CRM/Member/Form/Search.php +++ b/civicrm/CRM/Member/Form/Search.php @@ -218,11 +218,6 @@ class CRM_Member_Form_Search extends CRM_Core_Form_Search { $this->fixFormValues(); - // We don't show test records in summaries or dashboards - if (empty($this->_formValues['member_test']) && $this->_force) { - $this->_formValues["member_test"] = 0; - } - $this->_queryParams = CRM_Contact_BAO_Query::convertFormValues($this->_formValues, 0, FALSE, NULL, $this->entityReferenceFields); $this->set('queryParams', $this->_queryParams); diff --git a/civicrm/CRM/Member/Form/Task/PDFLetter.php b/civicrm/CRM/Member/Form/Task/PDFLetter.php index d0c1696d03..2d1b680ef4 100644 --- a/civicrm/CRM/Member/Form/Task/PDFLetter.php +++ b/civicrm/CRM/Member/Form/Task/PDFLetter.php @@ -86,8 +86,8 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task { public function postProcessMembers($membershipIDs, $contactIDs) { $form = $this; $formValues = $form->controller->exportValues($form->getName()); - [$formValues, $html_message, $messageToken] = $this->processMessageTemplate($formValues); - + [$formValues, $html_message] = $this->processMessageTemplate($formValues); + $messageToken = CRM_Utils_Token::getTokens($html_message); $html = $this->generateHTML( $membershipIDs, diff --git a/civicrm/CRM/Member/Import/Form/MapField.php b/civicrm/CRM/Member/Import/Form/MapField.php index 50b4b134bd..8d04b84bcf 100644 --- a/civicrm/CRM/Member/Import/Form/MapField.php +++ b/civicrm/CRM/Member/Import/Form/MapField.php @@ -59,15 +59,15 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField { $importKeys[] = $mapperPart; } // FIXME: should use the schema titles, not redeclare them - $requiredFields = array( + $requiredFields = [ 'membership_contact_id' => ts('Contact ID'), 'membership_type_id' => ts('Membership Type'), 'membership_start_date' => ts('Membership Start Date'), - ); - $params = array( + ]; + $params = [ 'used' => 'Unsupervised', 'contact_type' => $self->getContactType(), - ); + ]; [$ruleFields, $threshold] = CRM_Dedupe_BAO_DedupeRuleGroup::dedupeRuleFieldsWeight($params); $weightSum = 0; foreach ($importKeys as $key => $val) { @@ -93,17 +93,17 @@ class CRM_Member_Import_Form_MapField extends CRM_Import_Form_MapField { if (!isset($errors['_qf_default'])) { $errors['_qf_default'] = ''; } - $errors['_qf_default'] .= ts('Missing required contact matching fields.') . " $fieldMessage " . ts('(Sum of all weights should be greater than or equal to threshold: %1).', array( + $errors['_qf_default'] .= ts('Missing required contact matching fields.') . " $fieldMessage " . ts('(Sum of all weights should be greater than or equal to threshold: %1).', [ 1 => $threshold, - )) . ' ' . ts('(OR Membership ID if update mode.)') . '<br />'; + ]) . ' ' . ts('(OR Membership ID if update mode.)') . '<br />'; } else { if (!isset($errors['_qf_default'])) { $errors['_qf_default'] = ''; } - $errors['_qf_default'] .= ts('Missing required field: %1', array( + $errors['_qf_default'] .= ts('Missing required field: %1', [ 1 => $title, - )) . '<br />'; + ]) . '<br />'; } } } diff --git a/civicrm/CRM/Member/Page/DashBoard.php b/civicrm/CRM/Member/Page/DashBoard.php index 8e80036222..b9b30216e4 100644 --- a/civicrm/CRM/Member/Page/DashBoard.php +++ b/civicrm/CRM/Member/Page/DashBoard.php @@ -16,7 +16,7 @@ */ /** - * Page for displaying list of Payment-Instrument + * Page for displaying members. */ class CRM_Member_Page_DashBoard extends CRM_Core_Page { @@ -55,7 +55,7 @@ class CRM_Member_Page_DashBoard extends CRM_Core_Page { !checkdate(substr($ym, 4, 2), 1, substr($ym, 0, 4)) || substr($ym, 0, 1) == 0 ) { - CRM_Core_Error::statusBounce(ts('Invalid date query "%1" in URL (valid syntax is yyyymm).', array(1 => $ym))); + CRM_Core_Error::statusBounce(ts('Invalid date query "%1" in URL (valid syntax is yyyymm).', [1 => $ym])); } $isPreviousMonth = 0; @@ -82,94 +82,94 @@ class CRM_Member_Page_DashBoard extends CRM_Core_Page { foreach ($membershipTypes as $key => $value) { - $membershipSummary[$key]['premonth']['new'] = array( + $membershipSummary[$key]['premonth']['new'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipJoins($key, $preMonth, $preMonthEnd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['premonth']['renew'] = array( + $membershipSummary[$key]['premonth']['renew'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipRenewals($key, $preMonth, $preMonthEnd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['premonth']['total'] = array( + $membershipSummary[$key]['premonth']['total'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipStarts($key, $preMonth, $preMonthEnd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['month']['new'] = array( + $membershipSummary[$key]['month']['new'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipJoins($key, $monthStart, $ymd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['month']['renew'] = array( + $membershipSummary[$key]['month']['renew'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipRenewals($key, $monthStart, $ymd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['month']['total'] = array( + $membershipSummary[$key]['month']['total'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipStarts($key, $monthStart, $ymd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['year']['new'] = array( + $membershipSummary[$key]['year']['new'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipJoins($key, $yearStart, $ymd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['year']['renew'] = array( + $membershipSummary[$key]['year']['renew'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipRenewals($key, $yearStart, $ymd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['year']['total'] = array( + $membershipSummary[$key]['year']['total'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipStarts($key, $yearStart, $ymd), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['current']['total'] = array( + $membershipSummary[$key]['current']['total'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipCount($key, $current), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['total']['total'] = array('count' => CRM_Member_BAO_Membership::getMembershipCount($key, $ymd)); + $membershipSummary[$key]['total']['total'] = ['count' => CRM_Member_BAO_Membership::getMembershipCount($key, $ymd)]; //LCD also get summary stats for membership owners - $membershipSummary[$key]['premonth_owner']['premonth_owner'] = array( + $membershipSummary[$key]['premonth_owner']['premonth_owner'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipStarts($key, $preMonth, $preMonthEnd, 0, 1), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['month_owner']['month_owner'] = array( + $membershipSummary[$key]['month_owner']['month_owner'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipStarts($key, $monthStart, $ymd, 0, 1), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['year_owner']['year_owner'] = array( + $membershipSummary[$key]['year_owner']['year_owner'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipStarts($key, $yearStart, $ymd, 0, 1), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['current_owner']['current_owner'] = array( + $membershipSummary[$key]['current_owner']['current_owner'] = [ 'count' => CRM_Member_BAO_Membership::getMembershipCount($key, $current, 0, 1), 'name' => $value, 'url' => FALSE, - ); + ]; - $membershipSummary[$key]['total_owner']['total_owner'] = array('count' => CRM_Member_BAO_Membership::getMembershipCount($key, $ymd, 0, 1)); + $membershipSummary[$key]['total_owner']['total_owner'] = ['count' => CRM_Member_BAO_Membership::getMembershipCount($key, $ymd, 0, 1)]; //LCD end } @@ -221,113 +221,113 @@ class CRM_Member_Page_DashBoard extends CRM_Core_Page { $totalCountTotal_owner = $totalCountTotal_owner + $value['total_owner']['total_owner']['count']; } - $totalCount['premonth']['new'] = array( + $totalCount['premonth']['new'] = [ 'count' => $newCountPreMonth, 'url' => FALSE, - ); + ]; - $totalCount['premonth']['renew'] = array( + $totalCount['premonth']['renew'] = [ 'count' => $renewCountPreMonth, 'url' => FALSE, - ); + ]; - $totalCount['premonth']['total'] = array( + $totalCount['premonth']['total'] = [ 'count' => $totalCountPreMonth, 'url' => FALSE, - ); + ]; - $totalCount['month']['new'] = array( + $totalCount['month']['new'] = [ 'count' => $newCountMonth, 'url' => FALSE, - ); + ]; - $totalCount['month']['renew'] = array( + $totalCount['month']['renew'] = [ 'count' => $renewCountMonth, 'url' => FALSE, - ); + ]; - $totalCount['month']['total'] = array( + $totalCount['month']['total'] = [ 'count' => $totalCountMonth, 'url' => FALSE, - ); + ]; - $totalCount['year']['new'] = array( + $totalCount['year']['new'] = [ 'count' => $newCountYear, 'url' => FALSE, - ); + ]; - $totalCount['year']['renew'] = array( + $totalCount['year']['renew'] = [ 'count' => $renewCountYear, 'url' => FALSE, - ); + ]; - $totalCount['year']['total'] = array( + $totalCount['year']['total'] = [ 'count' => $totalCountYear, 'url' => FALSE, - ); + ]; - $totalCount['current']['total'] = array( + $totalCount['current']['total'] = [ 'count' => $totalCountCurrent, 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status" ), - ); + ]; - $totalCount['total']['total'] = array( + $totalCount['total']['total'] = [ 'count' => $totalCountTotal, 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status" ), - ); + ]; if (!$isCurrentMonth) { - $totalCount['total']['total'] = array( + $totalCount['total']['total'] = [ 'count' => $totalCountTotal, 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status&start=&end=$ymd" ), - ); + ]; } // Activity search also unable to handle owner vs. inherited //LCD add owner values - $totalCount['premonth_owner']['premonth_owner'] = array( + $totalCount['premonth_owner']['premonth_owner'] = [ 'count' => $totalCountPreMonth_owner, 'url' => FALSE, // 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status&start=$preMonth&end=$preMonthEnd&owner=1"), - ); + ]; - $totalCount['month_owner']['month_owner'] = array( + $totalCount['month_owner']['month_owner'] = [ 'count' => $totalCountMonth_owner, 'url' => FALSE, // 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status&start=$monthStart&end=$ymd&owner=1"), - ); + ]; - $totalCount['year_owner']['year_owner'] = array( + $totalCount['year_owner']['year_owner'] = [ 'count' => $totalCountYear_owner, 'url' => FALSE, // 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status&start=$yearStart&end=$ymd&owner=1"), - ); + ]; - $totalCount['current_owner']['current_owner'] = array( + $totalCount['current_owner']['current_owner'] = [ 'count' => $totalCountCurrent_owner, 'url' => FALSE, // 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status&owner=1"), - ); + ]; - $totalCount['total_owner']['total_owner'] = array( + $totalCount['total_owner']['total_owner'] = [ 'count' => $totalCountTotal_owner, 'url' => FALSE, // 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status&owner=1"), - ); + ]; if (!$isCurrentMonth) { - $totalCount['total_owner']['total_owner'] = array( + $totalCount['total_owner']['total_owner'] = [ 'count' => $totalCountTotal_owner, 'url' => FALSE, // 'url' => CRM_Utils_System::url('civicrm/member/search', "reset=1&force=1&membership_status_id=$status&start=&end=$ymd&owner=1"), - ); + ]; } //LCD end diff --git a/civicrm/CRM/Member/Page/MembershipStatus.php b/civicrm/CRM/Member/Page/MembershipStatus.php index 6800dfa905..ed67159720 100644 --- a/civicrm/CRM/Member/Page/MembershipStatus.php +++ b/civicrm/CRM/Member/Page/MembershipStatus.php @@ -16,19 +16,12 @@ */ /** - * Page for displaying list of membership types + * Page for displaying list of membership statuses */ class CRM_Member_Page_MembershipStatus extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -39,42 +32,6 @@ class CRM_Member_Page_MembershipStatus extends CRM_Core_Page_Basic { return 'CRM_Member_BAO_MembershipStatus'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = [ - CRM_Core_Action::UPDATE => [ - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/member/membershipStatus', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Membership Status'), - ], - CRM_Core_Action::DISABLE => [ - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Membership Status'), - ], - CRM_Core_Action::ENABLE => [ - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Membership Status'), - ], - CRM_Core_Action::DELETE => [ - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/member/membershipStatus', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Membership Status'), - ], - ]; - } - return self::$_links; - } - /** * Browse all custom data groups. * diff --git a/civicrm/CRM/Note/Form/Note.php b/civicrm/CRM/Note/Form/Note.php index 1bfed49b12..33addb0e37 100644 --- a/civicrm/CRM/Note/Form/Note.php +++ b/civicrm/CRM/Note/Form/Note.php @@ -25,6 +25,8 @@ */ class CRM_Note_Form_Note extends CRM_Core_Form { + use CRM_Core_Form_EntityFormTrait; + /** * The table name, used when editing/creating a note * @@ -39,13 +41,6 @@ class CRM_Note_Form_Note extends CRM_Core_Form { */ protected $_entityId; - /** - * The note id, used when editing the note - * - * @var int - */ - protected $_id; - /** * The parent note id, used when adding a comment to a note * @@ -193,6 +188,9 @@ class CRM_Note_Form_Note extends CRM_Core_Form { $ids = []; $note = CRM_Core_BAO_Note::add($params, $ids); + // Required for postProcess hooks + $this->setEntityId($note->id); + CRM_Core_Session::setStatus(ts('Your Note has been saved.'), ts('Saved'), 'success'); } diff --git a/civicrm/CRM/PCP/BAO/PCP.php b/civicrm/CRM/PCP/BAO/PCP.php index bcabd19e66..294e8f2b22 100644 --- a/civicrm/CRM/PCP/BAO/PCP.php +++ b/civicrm/CRM/PCP/BAO/PCP.php @@ -391,7 +391,7 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; $form->assign('profile', $profile); } - $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, TRUE); + $form->add('select', 'supporter_profile_id', ts('Supporter Profile'), ['' => ts('- select -')] + $profile, TRUE, ['class' => 'crm-select2']); //CRM-15821 - To add new option for PCP "Owner" notification $ownerNotifications = CRM_Core_OptionGroup::values('pcp_owner_notify'); @@ -470,8 +470,9 @@ WHERE pcp.id = %1 AND cc.contribution_status_id = %2 AND cc.is_test = 0"; // build honor roll fields for registration form if supporter has honor roll enabled for their PCP if ($pcpInfo['is_honor_roll']) { $page->assign('is_honor_roll', TRUE); - $page->add('checkbox', 'pcp_display_in_roll', ts('Show my support in the public honor roll'), NULL, NULL, - ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"] + $page->add('checkbox', 'pcp_display_in_roll', ts('Show my support in the public honor roll'), + ['onclick' => "showHideByValue('pcp_display_in_roll','','nameID|nickID|personalNoteID','block','radio',false); pcpAnonymous( );"], + FALSE ); $extraOption = ['onclick' => "return pcpAnonymous( );"]; $page->addRadio('pcp_is_anonymous', '', [ts('Include my name and message'), ts('List my support anonymously')], [], ' ', FALSE, [$extraOption, $extraOption]); diff --git a/civicrm/CRM/PCP/Form/Campaign.php b/civicrm/CRM/PCP/Form/Campaign.php index 59421cdd42..a4b9ff69a4 100644 --- a/civicrm/CRM/PCP/Form/Campaign.php +++ b/civicrm/CRM/PCP/Form/Campaign.php @@ -333,7 +333,7 @@ class CRM_PCP_Form_Campaign extends CRM_Core_Form { // send email notification to supporter, if initial setup / add mode. if (!$this->_pageId) { CRM_PCP_BAO_PCP::sendStatusUpdate($pcp->id, $statusId, TRUE, $this->_component); - if ($approvalMessage && CRM_Utils_Array::value('status_id', $params) == 1) { + if ($approvalMessage && ($params['status_id'] ?? NULL) == 1) { $notifyStatus .= ts(' You will receive a second email as soon as the review process is complete.'); } } diff --git a/civicrm/CRM/PCP/Page/PCP.php b/civicrm/CRM/PCP/Page/PCP.php index 3150662b63..ce7d9bcb3c 100644 --- a/civicrm/CRM/PCP/Page/PCP.php +++ b/civicrm/CRM/PCP/Page/PCP.php @@ -16,7 +16,7 @@ */ /** - * Page for displaying list of financial types + * Page for displaying list of personal campaign pages */ class CRM_PCP_Page_PCP extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/PCP/Page/PCPInfo.php b/civicrm/CRM/PCP/Page/PCPInfo.php index 53711f255e..b5b39aadb2 100644 --- a/civicrm/CRM/PCP/Page/PCPInfo.php +++ b/civicrm/CRM/PCP/Page/PCPInfo.php @@ -164,7 +164,7 @@ class CRM_PCP_Page_PCPInfo extends CRM_Core_Page { 'pageComponent' => $this->_component, ]; - if (!$pcpBlock->is_tellfriend_enabled || CRM_Utils_Array::value('status_id', $pcpInfo) != $approvedId) { + if (!$pcpBlock->is_tellfriend_enabled || ($pcpInfo['status_id'] ?? NULL) != $approvedId) { unset($link['all'][CRM_Core_Action::DETACH]); } diff --git a/civicrm/CRM/Pledge/BAO/PledgeBlock.php b/civicrm/CRM/Pledge/BAO/PledgeBlock.php index 37411474cc..c26bccc3e6 100644 --- a/civicrm/CRM/Pledge/BAO/PledgeBlock.php +++ b/civicrm/CRM/Pledge/BAO/PledgeBlock.php @@ -122,12 +122,12 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { if (!empty($form->_values['pledge_id'])) { //get all payments required details. $allPayments = []; - $returnProperties = array( + $returnProperties = [ 'status_id', 'scheduled_date', 'scheduled_amount', 'currency', - ); + ]; CRM_Core_DAO::commonRetrieveAll('CRM_Pledge_DAO_PledgePayment', 'pledge_id', $form->_values['pledge_id'], $allPayments, $returnProperties ); @@ -139,27 +139,27 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { $overduePayments = []; foreach ($allPayments as $payID => $value) { if ($allStatus[$value['status_id']] == 'Overdue') { - $overduePayments[$payID] = array( + $overduePayments[$payID] = [ 'id' => $payID, 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), 'scheduled_amount_currency' => $value['currency'], 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], '%B %d' ), - ); + ]; } elseif (!$isNextPayment && $allStatus[$value['status_id']] == 'Pending' ) { // get the next payment. - $nextPayment = array( + $nextPayment = [ 'id' => $payID, 'scheduled_amount' => CRM_Utils_Rule::cleanMoney($value['scheduled_amount']), 'scheduled_amount_currency' => $value['currency'], 'scheduled_date' => CRM_Utils_Date::customFormat($value['scheduled_date'], '%B %d' ), - ); + ]; $isNextPayment = TRUE; } } @@ -168,22 +168,22 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { $payments = []; if (!empty($overduePayments)) { foreach ($overduePayments as $id => $payment) { - $label = ts("%1 - due on %2 (overdue)", array( + $label = ts("%1 - due on %2 (overdue)", [ 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $payment), CRM_Utils_Array::value('scheduled_amount_currency', $payment)), 2 => $payment['scheduled_date'] ?? NULL, - )); + ]); $paymentID = $payment['id'] ?? NULL; - $payments[] = $form->createElement('checkbox', $paymentID, NULL, $label, array('amount' => CRM_Utils_Array::value('scheduled_amount', $payment))); + $payments[] = $form->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $payment)]); } } if (!empty($nextPayment)) { - $label = ts("%1 - due on %2", array( + $label = ts("%1 - due on %2", [ 1 => CRM_Utils_Money::format(CRM_Utils_Array::value('scheduled_amount', $nextPayment), CRM_Utils_Array::value('scheduled_amount_currency', $nextPayment)), 2 => $nextPayment['scheduled_date'] ?? NULL, - )); + ]); $paymentID = $nextPayment['id'] ?? NULL; - $payments[] = $form->createElement('checkbox', $paymentID, NULL, $label, array('amount' => CRM_Utils_Array::value('scheduled_amount', $nextPayment))); + $payments[] = $form->createElement('checkbox', $paymentID, NULL, $label, ['amount' => CRM_Utils_Array::value('scheduled_amount', $nextPayment)]); } // give error if empty or build form for payment. if (empty($payments)) { @@ -199,12 +199,12 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { $pledgeBlock = self::getPledgeBlock($form->_id); // build form for pledge creation. - $pledgeOptions = array( + $pledgeOptions = [ '0' => ts('I want to make a one-time contribution'), '1' => ts('I pledge to contribute this amount every'), - ); + ]; $form->addRadio('is_pledge', ts('Pledge Frequency Interval'), $pledgeOptions, - NULL, array('<br/>') + NULL, ['<br/>'] ); $form->addElement('text', 'pledge_installments', ts('Installments'), ['size' => 3, 'aria-label' => ts('Installments')]); @@ -264,7 +264,7 @@ class CRM_Pledge_BAO_PledgeBlock extends CRM_Pledge_DAO_PledgeBlock { $form->assign('start_date_editable', TRUE); if ($field == 'calendar_month') { $form->assign('is_date', FALSE); - $form->setDefaults(array('start_date' => $value)); + $form->setDefaults(['start_date' => $value]); } } } diff --git a/civicrm/CRM/Pledge/Form/Payment.php b/civicrm/CRM/Pledge/Form/Payment.php index 02a7d41474..bfd98dbb38 100644 --- a/civicrm/CRM/Pledge/Form/Payment.php +++ b/civicrm/CRM/Pledge/Form/Payment.php @@ -137,7 +137,7 @@ class CRM_Pledge_Form_Payment extends CRM_Core_Form { $pledgeId = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_PledgePayment', $params['id'], 'pledge_id'); CRM_Pledge_BAO_PledgePayment::add($params); - $adjustTotalAmount = (CRM_Utils_Array::value('option_type', $formValues) == 2); + $adjustTotalAmount = (($formValues['option_type'] ?? NULL) == 2); $pledgeScheduledAmount = CRM_Core_DAO::getFieldValue('CRM_Pledge_DAO_PledgePayment', $params['id'], diff --git a/civicrm/CRM/Pledge/Form/Pledge.php b/civicrm/CRM/Pledge/Form/Pledge.php index 6ccbfce6f1..eebec8fca5 100644 --- a/civicrm/CRM/Pledge/Form/Pledge.php +++ b/civicrm/CRM/Pledge/Form/Pledge.php @@ -273,7 +273,8 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $frequencyUnit = $this->add('select', 'frequency_unit', ts('Frequency'), ['' => ts('- select -')] + $freqUnitsDisplay, - TRUE + TRUE, + ['class' => 'crm-select2 eight'] ); $frequencyDay = $this->add('number', 'frequency_day', ts('Payments are due on the'), $attributes['frequency_day'], TRUE); @@ -309,7 +310,7 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $this->assign('eachPaymentAmount', $eachPaymentAmount); } - if (CRM_Utils_Array::value('status_id', $this->_values) != + if (($this->_values['status_id'] ?? NULL) != CRM_Core_PseudoConstant::getKey('CRM_Pledge_BAO_Pledge', 'status_id', 'Cancelled') ) { @@ -317,7 +318,7 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { ['onclick' => "showHideByValue( 'is_acknowledge', '', 'acknowledgeDate', 'table-row', 'radio', true); showHideByValue( 'is_acknowledge', '', 'fromEmail', 'table-row', 'radio', false );"] ); - $this->add('select', 'from_email_address', ts('Receipt From'), $this->_fromEmails); + $this->add('select', 'from_email_address', ts('Receipt From'), $this->_fromEmails, FALSE, ['class' => 'crm-select2 huge']); } $this->add('datepicker', 'acknowledge_date', ts('Acknowledgment Date'), [], FALSE, ['time' => FALSE]); @@ -325,7 +326,8 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $this->add('select', 'financial_type_id', ts('Financial Type'), ['' => ts('- select -')] + CRM_Contribute_PseudoConstant::financialType(), - TRUE + TRUE, + ['class' => 'crm-select2'] ); // CRM-7362 --add campaigns. @@ -341,7 +343,9 @@ class CRM_Pledge_Form_Pledge extends CRM_Core_Form { $pledgePages[$value['entity_id']] = $pages[$value['entity_id']]; } $this->add('select', 'contribution_page_id', ts('Self-service Payments Page'), - ['' => ts('- select -')] + $pledgePages + ['' => ts('- select -')] + $pledgePages, + FALSE, + ['class' => 'crm-select2'] ); $mailingInfo = Civi::settings()->get('mailing_backend'); diff --git a/civicrm/CRM/Pledge/Form/Search.php b/civicrm/CRM/Pledge/Form/Search.php index 88c7776ea3..901ccfe109 100644 --- a/civicrm/CRM/Pledge/Form/Search.php +++ b/civicrm/CRM/Pledge/Form/Search.php @@ -190,11 +190,6 @@ class CRM_Pledge_Form_Search extends CRM_Core_Form_Search { $this->fixFormValues(); - // We don't show test records in summaries or dashboards - if (empty($this->_formValues['pledge_test']) && $this->_force) { - $this->_formValues["pledge_test"] = 0; - } - foreach (['pledge_amount_low', 'pledge_amount_high'] as $f) { if (isset($this->_formValues[$f])) { $this->_formValues[$f] = CRM_Utils_Rule::cleanMoney($this->_formValues[$f]); diff --git a/civicrm/CRM/Pledge/Selector/Search.php b/civicrm/CRM/Pledge/Selector/Search.php index 443ad8d2ca..49b5c25c2b 100644 --- a/civicrm/CRM/Pledge/Selector/Search.php +++ b/civicrm/CRM/Pledge/Selector/Search.php @@ -294,6 +294,12 @@ class CRM_Pledge_Selector_Search extends CRM_Core_Selector_Base { while ($result->fetch()) { $row = []; + + // Ignore rows where we dont have an id. + if (empty($result->pledge_id)) { + continue; + } + // the columns we are interested in foreach (self::$_properties as $property) { if (isset($result->$property)) { diff --git a/civicrm/CRM/Price/BAO/LineItem.php b/civicrm/CRM/Price/BAO/LineItem.php index e48adf5d4d..4bfbaebdfd 100644 --- a/civicrm/CRM/Price/BAO/LineItem.php +++ b/civicrm/CRM/Price/BAO/LineItem.php @@ -582,7 +582,7 @@ WHERE li.contribution_id = %1"; * [5] => ['price_field_id' => 5, 'price_field_value_id' => x, 'label....qty...unit_price...line_total...financial_type_id] * */ - public static function buildLineItemsForSubmittedPriceField($priceParams, $overrideAmount = NULL, $financialTypeID = NULL) { + public static function buildLineItemsForSubmittedPriceField($priceParams, $overrideAmount = NULL, $financialTypeID = NULL): array { $lineItems = []; foreach ($priceParams as $key => $value) { $priceField = self::getPriceFieldMetaData($key); @@ -618,7 +618,6 @@ WHERE li.contribution_id = %1"; * @param int $entity * @param int $contributionId * @param $feeBlock - * @param array $lineItems * * @throws \CRM_Core_Exception */ @@ -627,10 +626,9 @@ WHERE li.contribution_id = %1"; $entityID, $entity, $contributionId, - $feeBlock, - $lineItems + $feeBlock ) { - $entityTable = "civicrm_" . $entity; + $entityTable = 'civicrm_' . $entity; $newLineItems = []; CRM_Price_BAO_PriceSet::processAmount($feeBlock, $params, $newLineItems @@ -876,7 +874,7 @@ WHERE li.contribution_id = %1"; foreach ($previousLineItems as $id => $previousLineItem) { if (in_array($previousLineItem['price_field_value_id'], $submittedPriceFieldValueIDs)) { $submittedLineItem = $submittedLineItems[$previousLineItem['price_field_value_id']]; - if (CRM_Utils_Array::value('html_type', $lineItemsToAdd[$previousLineItem['price_field_value_id']]) == 'Text') { + if (($lineItemsToAdd[$previousLineItem['price_field_value_id']]['html_type'] ?? NULL) == 'Text') { // If a 'Text' price field was updated by changing qty value, then we are not adding new line-item but updating the existing one, // because unlike other kind of price-field, it's related price-field-value-id isn't changed and thats why we need to make an // exception here by adding financial item for updated line-item and will reverse any previous financial item entries. diff --git a/civicrm/CRM/Price/BAO/PriceField.php b/civicrm/CRM/Price/BAO/PriceField.php index 06730389c5..1a1676e957 100644 --- a/civicrm/CRM/Price/BAO/PriceField.php +++ b/civicrm/CRM/Price/BAO/PriceField.php @@ -746,7 +746,7 @@ WHERE id IN (" . implode(',', array_keys($priceFields)) . ')'; elseif ($totalAmount > 0 && // if total amount is equal to all selected amount in hand $totalPaymentAmountEnteredOnForm >= $totalAmount && - (CRM_Utils_Array::value('contribution_status_id', $fields) == CRM_Core_PseudoConstant::getKey('CRM_Contribute_DAO_Contribution', 'contribution_status_id', 'Partially paid')) + (($fields['contribution_status_id'] ?? NULL) == CRM_Core_PseudoConstant::getKey('CRM_Contribute_DAO_Contribution', 'contribution_status_id', 'Partially paid')) ) { $error['total_amount'] = ts('You have specified the status Partially Paid but have entered an amount that equals or exceeds the amount due. Please adjust the status of the payment or the amount'); } diff --git a/civicrm/CRM/Price/BAO/PriceSet.php b/civicrm/CRM/Price/BAO/PriceSet.php index 9c3c607889..410867551a 100644 --- a/civicrm/CRM/Price/BAO/PriceSet.php +++ b/civicrm/CRM/Price/BAO/PriceSet.php @@ -1573,7 +1573,7 @@ WHERE ct.id = cp.financial_type_id AND CRM_Price_BAO_LineItem::format($id, $params, $field, $lineItem); $optionValueId = key($field['options']); - if (CRM_Utils_Array::value('name', $field['options'][$optionValueId]) === 'contribution_amount') { + if (($field['options'][$optionValueId]['name'] ?? NULL) === 'contribution_amount') { $taxRates = CRM_Core_PseudoConstant::getTaxRates(); if (array_key_exists($params['financial_type_id'], $taxRates)) { $field['options'][key($field['options'])]['tax_rate'] = $taxRates[$params['financial_type_id']]; @@ -1653,8 +1653,8 @@ WHERE ct.id = cp.financial_type_id AND $adminFieldVisible = CRM_Core_Permission::check('administer CiviCRM'); $checklifetime = FALSE; foreach ($feeBlock as $id => $field) { - if (CRM_Utils_Array::value('visibility', $field) == 'public' || - (CRM_Utils_Array::value('visibility', $field) == 'admin' && $adminFieldVisible == TRUE) || + if (($field['visibility'] ?? NULL) == 'public' || + (($field['visibility'] ?? NULL) == 'admin' && $adminFieldVisible == TRUE) || !$validFieldsOnly ) { $options = $field['options'] ?? NULL; diff --git a/civicrm/CRM/Price/Form/Field.php b/civicrm/CRM/Price/Form/Field.php index ec5896ad91..c9d05a25e3 100644 --- a/civicrm/CRM/Price/Form/Field.php +++ b/civicrm/CRM/Price/Form/Field.php @@ -430,7 +430,7 @@ class CRM_Price_Form_Field extends CRM_Core_Form { if ((is_numeric(CRM_Utils_Array::value('count', $fields)) && empty($fields['count']) ) && - (CRM_Utils_Array::value('html_type', $fields) == 'Text') + (($fields['html_type'] ?? NULL) == 'Text') ) { $errors['count'] = ts('Participant Count must be greater than zero.'); } diff --git a/civicrm/CRM/Price/Form/Option.php b/civicrm/CRM/Price/Form/Option.php index a007681e3a..94e4f0d9a8 100644 --- a/civicrm/CRM/Price/Form/Option.php +++ b/civicrm/CRM/Price/Form/Option.php @@ -79,10 +79,9 @@ class CRM_Price_Form_Option extends CRM_Core_Form { } } - $memberComponentId = CRM_Core_Component::getComponentID('CiviMember'); $extendComponentId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_sid, 'extends', 'id'); - if (!isset($defaults['membership_num_terms']) && $memberComponentId == $extendComponentId) { + if (!isset($defaults['membership_num_terms']) && $this->isComponentPriceOption($extendComponentId, 'CiviMember')) { $defaults['membership_num_terms'] = 1; } // set financial type used for price set to set default for new option @@ -151,7 +150,7 @@ class CRM_Price_Form_Option extends CRM_Core_Form { $this->isEvent = FALSE; $extendComponentId = CRM_Core_DAO::getFieldValue('CRM_Price_DAO_PriceSet', $this->_sid, 'extends', 'id'); $this->assign('showMember', FALSE); - if ($memberComponentId == $extendComponentId) { + if ($this->isComponentPriceOption($extendComponentId, 'CiviMember')) { $this->assign('showMember', TRUE); $membershipTypes = CRM_Member_PseudoConstant::membershipType(); $this->add('select', 'membership_type_id', ts('Membership Type'), [ @@ -161,9 +160,7 @@ class CRM_Price_Form_Option extends CRM_Core_Form { $this->add('number', 'membership_num_terms', ts('Number of Terms'), $attributes['membership_num_terms']); } else { - $allComponents = explode(CRM_Core_DAO::VALUE_SEPARATOR, $extendComponentId); - $eventComponentId = CRM_Core_Component::getComponentID('CiviEvent'); - if (in_array($eventComponentId, $allComponents)) { + if ($this->isComponentPriceOption($extendComponentId, 'CiviEvent')) { $this->isEvent = TRUE; // count $this->add('number', 'count', ts('Participant Count')); @@ -344,4 +341,19 @@ class CRM_Price_Form_Option extends CRM_Core_Form { } } + /** + * Check to see if this is within a price set that supports the specific component + * @var string $extends separator encoded string of Component ids + * @var string $component Component name + * + * @return bool + */ + private function isComponentPriceOption(string $extends, string $component): bool { + if (!CRM_Core_Component::isEnabled($component)) { + return FALSE; + } + $extends = CRM_Core_DAO::unSerializeField($extends, CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND); + return in_array(CRM_Core_Component::getComponentID($component), $extends, FALSE); + } + } diff --git a/civicrm/CRM/Profile/Form.php b/civicrm/CRM/Profile/Form.php index 3c2e669fb6..13e86eef23 100644 --- a/civicrm/CRM/Profile/Form.php +++ b/civicrm/CRM/Profile/Form.php @@ -548,7 +548,7 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($this->_isContactActivityProfile) { $contactFields = $activityFields = []; foreach ($this->_fields as $fieldName => $field) { - if (CRM_Utils_Array::value('field_type', $field) == 'Activity') { + if (($field['field_type'] ?? NULL) == 'Activity') { $activityFields[$fieldName] = $field; } else { @@ -604,7 +604,7 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($htmlType == 'File') { $entityId = $this->_id; - if (CRM_Utils_Array::value('field_type', $field) == 'Activity' && + if (($field['field_type'] ?? NULL) == 'Activity' && $this->_activityId ) { $entityId = $this->_activityId; @@ -639,7 +639,7 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($customFieldID = CRM_Core_BAO_CustomField::getKeyID($name)) { $htmlType = $field['html_type']; if ((!isset($this->_defaults[$name]) || $htmlType == 'File') && - (CRM_Utils_Array::value('field_type', $field) != 'Activity') + (($field['field_type'] ?? NULL) != 'Activity') ) { CRM_Core_BAO_CustomField::setProfileDefaults($customFieldID, $name, @@ -651,7 +651,7 @@ class CRM_Profile_Form extends CRM_Core_Form { if ($htmlType == 'File') { $entityId = $this->_id; - if (CRM_Utils_Array::value('field_type', $field) == 'Activity' && $this->_activityId) { + if (($field['field_type'] ?? NULL) == 'Activity' && $this->_activityId) { $entityId = $this->_activityId; } $url = CRM_Core_BAO_CustomField::getFileURL($entityId, $customFieldID); @@ -1252,7 +1252,7 @@ class CRM_Profile_Form extends CRM_Core_Form { if (($this->_mode & self::MODE_EDIT) && $this->_activityId && $this->_isContactActivityProfile) { $profileFields = $activityParams = []; foreach ($this->_fields as $fieldName => $field) { - if (CRM_Utils_Array::value('field_type', $field) == 'Activity') { + if (($field['field_type'] ?? NULL) == 'Activity') { if (isset($params[$fieldName])) { $activityParams[$fieldName] = $params[$fieldName]; } diff --git a/civicrm/CRM/Profile/Form/Edit.php b/civicrm/CRM/Profile/Form/Edit.php index f58da43349..88c2198607 100644 --- a/civicrm/CRM/Profile/Form/Edit.php +++ b/civicrm/CRM/Profile/Form/Edit.php @@ -146,8 +146,8 @@ SELECT module,is_reserved $this->assign('recentlyViewed', FALSE); if ($this->_context !== 'dialog') { - $this->_postURL = $this->_ufGroup['post_URL']; - $this->_cancelURL = $this->_ufGroup['cancel_URL']; + $this->_postURL = $this->_ufGroup['post_url']; + $this->_cancelURL = $this->_ufGroup['cancel_url']; $gidString = $this->_gid; if (!empty($this->_profileIds)) { diff --git a/civicrm/CRM/Profile/Page/Dynamic.php b/civicrm/CRM/Profile/Page/Dynamic.php index 12cbc92d3b..d17f37d43f 100644 --- a/civicrm/CRM/Profile/Page/Dynamic.php +++ b/civicrm/CRM/Profile/Page/Dynamic.php @@ -256,7 +256,7 @@ class CRM_Profile_Page_Dynamic extends CRM_Core_Page { //reformat fields array foreach ($fields as $name => $field) { // also eliminate all formatting fields - if (CRM_Utils_Array::value('field_type', $field) == 'Formatting') { + if (($field['field_type'] ?? NULL) == 'Formatting') { unset($fields[$name]); } @@ -270,7 +270,7 @@ class CRM_Profile_Page_Dynamic extends CRM_Core_Page { $contactFields = $activityFields = []; foreach ($fields as $fieldName => $field) { - if (CRM_Utils_Array::value('field_type', $field) == 'Activity') { + if (($field['field_type'] ?? NULL) == 'Activity') { $activityFields[$fieldName] = $field; } else { diff --git a/civicrm/CRM/Profile/Page/Listings.php b/civicrm/CRM/Profile/Page/Listings.php index 0cec9a36ba..4ad6a75771 100644 --- a/civicrm/CRM/Profile/Page/Listings.php +++ b/civicrm/CRM/Profile/Page/Listings.php @@ -171,8 +171,8 @@ class CRM_Profile_Page_Listings extends CRM_Core_Page { $value = '%' . $value . '%'; } } - elseif (CRM_Utils_Array::value('html_type', $field) == 'Multi-Select State/Province' - || CRM_Utils_Array::value('html_type', $field) == 'Multi-Select Country' + elseif (($field['html_type'] ?? NULL) == 'Multi-Select State/Province' + || ($field['html_type'] ?? NULL) == 'Multi-Select Country' ) { $value = CRM_Utils_Request::retrieve($name, 'String', $this, FALSE, NULL, 'REQUEST'); if (!is_array($value)) { diff --git a/civicrm/CRM/Report/Form.php b/civicrm/CRM/Report/Form.php index 5fad82f1bc..cbb5d16531 100644 --- a/civicrm/CRM/Report/Form.php +++ b/civicrm/CRM/Report/Form.php @@ -1047,17 +1047,17 @@ class CRM_Report_Form extends CRM_Core_Form { } //assign default value as "in" for multiselect //operator, To freeze the select element - if (CRM_Utils_Array::value('operatorType', $field) == + if (($field['operatorType'] ?? NULL) == CRM_Report_Form::OP_MULTISELECT ) { $this->_defaults["{$fieldName}_op"] = 'in'; } - if (CRM_Utils_Array::value('operatorType', $field) == + if (($field['operatorType'] ?? NULL) == CRM_Report_Form::OP_ENTITYREF ) { $this->_defaults["{$fieldName}_op"] = 'in'; } - elseif (CRM_Utils_Array::value('operatorType', $field) == + elseif (($field['operatorType'] ?? NULL) == CRM_Report_Form::OP_MULTISELECT_SEPARATOR ) { $this->_defaults["{$fieldName}_op"] = 'mhas'; @@ -1426,7 +1426,7 @@ class CRM_Report_Form extends CRM_Core_Form { $fieldName === 'state_province_id' || $fieldName === 'county_id' ) { $element = $this->addElement('select', "{$fieldName}_op", ts('Operator:'), $operations, - array('onchange' => "return showHideMaxMinVal( '$fieldName', this.value );") + ['onchange' => "return showHideMaxMinVal( '$fieldName', this.value );"] ); if (count($operations) <= 1) { @@ -2123,7 +2123,7 @@ class CRM_Report_Form extends CRM_Core_Form { } if ($value !== NULL && is_array($value) && count($value) > 0) { $sqlOP = $this->getSQLOperator($op); - if (CRM_Utils_Array::value('type', $field) == + if (($field['type'] ?? NULL) == CRM_Utils_Type::T_STRING ) { //cycle through selections and escape values @@ -3462,7 +3462,7 @@ WHERE cg.extends IN ('" . implode("','", $this->_customGroupExtends) . "') AND foreach ($table['filters'] as $fieldName => $field) { if ((CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE || CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_TIME) && - CRM_Utils_Array::value('operatorType', $field) != + ($field['operatorType'] ?? NULL) != CRM_Report_Form::OP_MONTH ) { $from = $this->_params["{$fieldName}_from"] ?? NULL; @@ -4194,7 +4194,7 @@ ORDER BY cg.weight, cf.weight"; // handle for ContactReference if (array_key_exists('fields', $prop)) { foreach ($prop['fields'] as $fieldName => $field) { - if (CRM_Utils_Array::value('dataType', $field) == + if (($field['dataType'] ?? NULL) == 'ContactReference' ) { $columnName = CRM_Core_DAO::getFieldValue('CRM_Core_DAO_CustomField', CRM_Core_BAO_CustomField::getKeyID($fieldName), 'column_name'); @@ -4741,7 +4741,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a public function fiscalYearOffset($fieldName) { $config = CRM_Core_Config::singleton(); $fy = $config->fiscalYearStart; - if (CRM_Utils_Array::value('yid_op', $this->_params) == 'calendar' || + if (($this->_params['yid_op'] ?? NULL) == 'calendar' || ($fy['d'] == 1 && $fy['M'] == 1) ) { return "YEAR( $fieldName )"; @@ -5577,7 +5577,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a 'addressee_display' => 'Addressee', ] as $field => $title) { $spec[$options['prefix'] . $field] = [ - 'title' => $options['prefix_label'] . ts($title), + 'title' => $options['prefix_label'] . _ts($title), 'name' => $field, 'is_fields' => TRUE, 'is_filters' => FALSE, @@ -6065,7 +6065,7 @@ LEFT JOIN civicrm_contact {$field['alias']} ON {$field['alias']}.id = {$this->_a */ protected function generateFilterClause($field, $fieldName) { if (CRM_Utils_Array::value('type', $field) & CRM_Utils_Type::T_DATE) { - if (CRM_Utils_Array::value('operatorType', $field) == + if (($field['operatorType'] ?? NULL) == CRM_Report_Form::OP_MONTH ) { $op = $this->_params["{$fieldName}_op"] ?? NULL; diff --git a/civicrm/CRM/Report/Form/Activity.php b/civicrm/CRM/Report/Form/Activity.php index 45b8ef3c9e..17eda67bf1 100644 --- a/civicrm/CRM/Report/Form/Activity.php +++ b/civicrm/CRM/Report/Form/Activity.php @@ -577,7 +577,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { } if ($field['name'] == 'current_user') { - if (CRM_Utils_Array::value("{$fieldName}_value", $this->_params) == + if (($this->_params["{$fieldName}_value"] ?? NULL) == 1 ) { // get current user @@ -657,7 +657,7 @@ class CRM_Report_Form_Activity extends CRM_Report_Form { * @throws Exception */ public function add2group($groupID) { - if (CRM_Utils_Array::value("contact_target_op", $this->_params) == 'nll') { + if (($this->_params["contact_target_op"] ?? NULL) == 'nll') { CRM_Core_Error::statusBounce(ts('Current filter criteria didn\'t have any target contact to add to group')); } @@ -729,12 +729,12 @@ GROUP BY civicrm_activity_id $having {$this->_orderBy}"; //Assign those recordtype to array which have filter operator as 'Is not empty' or 'Is empty' $nullFilters = []; foreach (['target', 'source', 'assignee'] as $type) { - if (CRM_Utils_Array::value("contact_{$type}_op", $this->_params) == + if (($this->_params["contact_{$type}_op"] ?? NULL) == 'nnll' || !empty($this->_params["contact_{$type}_value"]) ) { $nullFilters[] = " civicrm_contact_contact_{$type}_id IS NOT NULL "; } - elseif (CRM_Utils_Array::value("contact_{$type}_op", $this->_params) == + elseif (($this->_params["contact_{$type}_op"] ?? NULL) == 'nll' ) { $nullFilters[] = " civicrm_contact_contact_{$type}_id IS NULL "; diff --git a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php index 32ccc01804..cd5f64153c 100644 --- a/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php +++ b/civicrm/CRM/Report/Form/Campaign/SurveyDetails.php @@ -24,14 +24,14 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { protected $_summary = NULL; protected $_customGroupGroupBy = FALSE; - protected $_customGroupExtends = array( + protected $_customGroupExtends = [ 'Contact', 'Individual', 'Household', 'Organization', 'Activity', - ); - public $_drilldownReport = array('contact/detail' => 'Link to Detail Report'); + ]; + public $_drilldownReport = ['contact/detail' => 'Link to Detail Report']; private static $_surveyRespondentStatus; @@ -49,7 +49,7 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { */ public function __construct() { //filter options for survey activity status. - $responseStatus = array('' => ts('- Any -')); + $responseStatus = ['' => ts('- Any -')]; self::$_surveyRespondentStatus = []; $activityStatus = CRM_Core_PseudoConstant::activityStatus('name'); if ($statusId = array_search('Scheduled', $activityStatus)) { @@ -78,139 +78,139 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { //get all interviewers. $allSurveyInterviewers = CRM_Campaign_BAO_Survey::getInterviewers(); - $this->_columns = array( - 'civicrm_activity_contact' => array( + $this->_columns = [ + 'civicrm_activity_contact' => [ 'dao' => 'CRM_Activity_DAO_ActivityContact', - 'fields' => array('contact_id' => array('title' => ts('Interviewer Name'))), - 'filters' => array( - 'contact_id' => array( + 'fields' => ['contact_id' => ['title' => ts('Interviewer Name')]], + 'filters' => [ + 'contact_id' => [ 'name' => 'contact_id', 'title' => ts('Interviewer Name'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_SELECT, - 'options' => array( + 'options' => [ '' => ts('- any interviewer -'), - ) + $allSurveyInterviewers, - ), - ), + ] + $allSurveyInterviewers, + ], + ], 'grouping' => 'survey-interviewer-fields', - ), - 'civicrm_contact' => array( + ], + 'civicrm_contact' => [ 'dao' => 'CRM_Contact_DAO_Contact', - 'fields' => array( - 'id' => array( + 'fields' => [ + 'id' => [ 'title' => ts('Contact ID'), 'no_display' => TRUE, 'required' => TRUE, - ), - 'sort_name' => array( + ], + 'sort_name' => [ 'title' => ts('Respondent Name'), 'required' => TRUE, 'no_repeat' => TRUE, - ), - ), - 'filters' => array( - 'sort_name' => array( + ], + ], + 'filters' => [ + 'sort_name' => [ 'title' => ts('Respondent Name'), 'operator' => 'like', - ), - ), + ], + ], 'grouping' => 'contact-fields', - 'order_bys' => array( - 'sort_name' => array( + 'order_bys' => [ + 'sort_name' => [ 'title' => ts('Respondent Name'), 'required' => TRUE, - ), - ), - ), - 'civicrm_phone' => array( + ], + ], + ], + 'civicrm_phone' => [ 'dao' => 'CRM_Core_DAO_Phone', - 'fields' => array( - 'phone' => array( + 'fields' => [ + 'phone' => [ 'name' => 'phone', 'title' => ts('Phone'), - ), - ), + ], + ], 'grouping' => 'location-fields', - ), - 'civicrm_email' => array( + ], + 'civicrm_email' => [ 'dao' => 'CRM_Core_DAO_Email', - 'fields' => array( - 'email' => array( + 'fields' => [ + 'email' => [ 'name' => 'email', 'title' => ts('Email'), - ), - ), + ], + ], 'grouping' => 'location-fields', - ), - ) + $this->getAddressColumns() + - array( - 'civicrm_activity' => array( + ], + ] + $this->getAddressColumns() + + [ + 'civicrm_activity' => [ 'dao' => 'CRM_Activity_DAO_Activity', 'alias' => 'survey_activity', - 'fields' => array( - 'survey_id' => array( + 'fields' => [ + 'survey_id' => [ 'name' => 'source_record_id', 'title' => ts('Survey'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Campaign_BAO_Survey::getSurveys(), - ), - 'survey_response' => array( + ], + 'survey_response' => [ 'name' => 'survey_response', 'title' => ts('Survey Responses'), - ), - 'details' => array( + ], + 'details' => [ 'name' => 'details', 'title' => ts('Note'), 'type' => 1, - ), - 'result' => array( + ], + 'result' => [ 'name' => 'result', 'required' => TRUE, 'title' => ts('Survey Result'), - ), - 'activity_date_time' => array( + ], + 'activity_date_time' => [ 'name' => 'activity_date_time', 'title' => ts('Date'), 'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME, - ), - ), - 'filters' => array( - 'survey_id' => array( + ], + ], + 'filters' => [ + 'survey_id' => [ 'name' => 'source_record_id', 'title' => ts('Survey'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Campaign_BAO_Survey::getSurveys(), - ), - 'status_id' => array( + ], + 'status_id' => [ 'name' => 'status_id', 'title' => ts('Respondent Status'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_SELECT, 'options' => $responseStatus, - ), - 'result' => array( + ], + 'result' => [ 'title' => ts('Survey Result'), 'type' => CRM_Utils_Type::T_STRING, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => $resultOptions, - ), - 'activity_date_time' => array( + ], + 'activity_date_time' => [ 'title' => ts('Date'), 'type' => CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME, 'operatorType' => CRM_Report_Form::OP_DATE, - ), - ), + ], + ], 'grouping' => 'survey-activity-fields', - 'order_bys' => array( - 'activity_date_time' => array( + 'order_bys' => [ + 'activity_date_time' => [ 'title' => ts('Date'), - ), - ), - ), - ); + ], + ], + ], + ]; parent::__construct(); } @@ -386,11 +386,11 @@ class CRM_Report_Form_Campaign_SurveyDetails extends CRM_Report_Form { $fldId = substr($name, 7); $fieldIds[$fldId] = $fldId; $title = CRM_Utils_Array::value('label', $field, $field['title']); - $surveyResponseFields[$name] = array( + $surveyResponseFields[$name] = [ 'id' => $fldId, 'title' => $title, 'name' => "{$tableName}_{$name}", - ); + ]; } } } @@ -499,7 +499,7 @@ INNER JOIN civicrm_option_value val ON ( val.option_group_id = survey.result_id $surveyIds = $this->_params['survey_id_value'] ?? NULL; if (CRM_Utils_System::isNull($surveyIds) || empty($this->_params['fields']['result']) || - !in_array($this->_outputMode, array('print', 'pdf')) + !in_array($this->_outputMode, ['print', 'pdf']) ) { return; } @@ -610,13 +610,13 @@ INNER JOIN civicrm_custom_group cg ON ( cg.id = cf.custom_group_id ) $responseFields = []; $fieldValueMap = []; - $properties = array( + $properties = [ 'id', 'data_type', 'html_type', 'column_name', 'option_group_id', - ); + ]; $responseField = CRM_Core_DAO::executeQuery($query); while ($responseField->fetch()) { @@ -628,10 +628,10 @@ INNER JOIN civicrm_custom_group cg ON ( cg.id = cf.custom_group_id ) if ($responseField->option_group_id) { //show value for print and pdf. $value = $responseField->label; - if (in_array($this->_outputMode, array( + if (in_array($this->_outputMode, [ 'print', 'pdf', - ))) { + ])) { $value = $responseField->value; } $fieldValueMap[$responseField->option_group_id][$responseField->value] = $value; @@ -651,7 +651,7 @@ INNER JOIN civicrm_custom_group cg ON ( cg.id = cf.custom_group_id ) } $hasData = TRUE; if ($respondentStatus == 'Reserved' && - in_array($this->_outputMode, array('print', 'pdf')) + in_array($this->_outputMode, ['print', 'pdf']) ) { $optGrpId = $responseFields[$name]['option_group_id'] ?? NULL; $options = CRM_Utils_Array::value($optGrpId, $fieldValueMap, []); @@ -684,18 +684,18 @@ INNER JOIN civicrm_custom_group cg ON ( cg.id = cf.custom_group_id ) foreach ($responseFields as $key => $value) { if (substr($key, 0, 5) == 'phone' && !empty($value['location_type_id'])) { $fName = str_replace('-', '_', $key); - $this->_columns["civicrm_{$fName}"] = array( + $this->_columns["civicrm_{$fName}"] = [ 'dao' => 'CRM_Core_DAO_Phone', 'alias' => "phone_civireport_{$fName}", - 'fields' => array( - $fName => array_merge($value, array( + 'fields' => [ + $fName => array_merge($value, [ 'is_required' => '1', 'alias' => "phone_civireport_{$fName}", 'dbAlias' => "phone_civireport_{$fName}.phone", 'no_display' => TRUE, - )), - ), - ); + ]), + ], + ]; $this->_aliases["civicrm_phone_{$fName}"] = $this->_columns["civicrm_{$fName}"]['alias']; $this->_locationBasedPhoneField = TRUE; } @@ -759,7 +759,7 @@ INNER JOIN civicrm_custom_field cf ON ( cg.id = cf.custom_group_id ) if ($response->time_format) { $fldType = CRM_Utils_Type::T_TIMESTAMP; } - $field = array( + $field = [ 'name' => $response->column_name, 'type' => $fldType, 'title' => $title, @@ -773,7 +773,7 @@ INNER JOIN civicrm_custom_field cf ON ( cg.id = cf.custom_group_id ) $response->column_name, 'no_display' => TRUE, 'isSurveyResponseField' => TRUE, - ); + ]; $this->_columns[$resTable]['fields'][$fieldName] = $field; $this->_aliases[$resTable] = $this->_columns[$resTable]['alias']; diff --git a/civicrm/CRM/Report/Form/Contact/Relationship.php b/civicrm/CRM/Report/Form/Contact/Relationship.php index 6db13e2822..8707e371f1 100644 --- a/civicrm/CRM/Report/Form/Contact/Relationship.php +++ b/civicrm/CRM/Report/Form/Contact/Relationship.php @@ -562,10 +562,10 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { $isStatusFilter = FALSE; $relStatus = NULL; - if (CRM_Utils_Array::value('is_active_value', $this->_params) == '1') { + if (($this->_params['is_active_value'] ?? NULL) == '1') { $relStatus = ts('Is equal to Active'); } - elseif (CRM_Utils_Array::value('is_active_value', $this->_params) == '0') { + elseif (($this->_params['is_active_value'] ?? NULL) == '0') { $relStatus = ts('Is equal to Inactive'); } if (!empty($statistics['filters'])) { @@ -573,7 +573,7 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { // For displaying relationship type filter. if ($value['title'] == 'Relationship') { $relTypes = CRM_Core_PseudoConstant::relationshipType(); - $op = CRM_Utils_Array::value('relationship_type_id_op', $this->_params) == 'in' ? ts('Is one of') . ' ' : ts('Is not one of') . ' '; + $op = ($this->_params['relationship_type_id_op'] ?? NULL) == 'in' ? ts('Is one of') . ' ' : ts('Is not one of') . ' '; $relationshipTypes = []; foreach ($this->_params['relationship_type_id_value'] as $relationship) { $relationshipTypes[] = $relTypes[$relationship]['label_' . $this->relationType]; @@ -752,13 +752,13 @@ class CRM_Report_Form_Contact_Relationship extends CRM_Report_Form { // Handle permissioned relationships if (array_key_exists('civicrm_relationship_is_permission_a_b', $row)) { $rows[$rowNum]['civicrm_relationship_is_permission_a_b'] - = ts(self::permissionedRelationship($row['civicrm_relationship_is_permission_a_b'])); + = _ts(self::permissionedRelationship($row['civicrm_relationship_is_permission_a_b'])); $entryFound = TRUE; } if (array_key_exists('civicrm_relationship_is_permission_b_a', $row)) { $rows[$rowNum]['civicrm_relationship_is_permission_b_a'] - = ts(self::permissionedRelationship($row['civicrm_relationship_is_permission_b_a'])); + = _ts(self::permissionedRelationship($row['civicrm_relationship_is_permission_b_a'])); $entryFound = TRUE; } diff --git a/civicrm/CRM/Report/Form/Contact/Summary.php b/civicrm/CRM/Report/Form/Contact/Summary.php index 4e658da660..f113667736 100644 --- a/civicrm/CRM/Report/Form/Contact/Summary.php +++ b/civicrm/CRM/Report/Form/Contact/Summary.php @@ -22,14 +22,14 @@ class CRM_Report_Form_Contact_Summary extends CRM_Report_Form { protected $_phoneField = FALSE; - protected $_customGroupExtends = array( + protected $_customGroupExtends = [ 'Contact', 'Individual', 'Household', 'Organization', - ); + ]; - public $_drilldownReport = array('contact/detail' => 'Link to Detail Report'); + public $_drilldownReport = ['contact/detail' => 'Link to Detail Report']; /** * This report has not been optimised for group filtering. @@ -48,73 +48,73 @@ class CRM_Report_Form_Contact_Summary extends CRM_Report_Form { */ public function __construct() { $this->_autoIncludeIndexedFieldsAsOrderBys = 1; - $this->_columns = array( - 'civicrm_contact' => array( + $this->_columns = [ + 'civicrm_contact' => [ 'dao' => 'CRM_Contact_DAO_Contact', 'fields' => array_merge( $this->getBasicContactFields(), - array( - 'modified_date' => array( + [ + 'modified_date' => [ 'title' => ts('Modified Date'), 'default' => FALSE, - ), - ) + ], + ] ), 'filters' => $this->getBasicContactFilters(), 'grouping' => 'contact-fields', - 'order_bys' => array( - 'sort_name' => array( + 'order_bys' => [ + 'sort_name' => [ 'title' => ts('Last Name, First Name'), 'default' => '1', 'default_weight' => '0', 'default_order' => 'ASC', - ), - 'first_name' => array( + ], + 'first_name' => [ 'name' => 'first_name', 'title' => ts('First Name'), - ), - 'gender_id' => array( + ], + 'gender_id' => [ 'name' => 'gender_id', 'title' => ts('Gender'), - ), - 'birth_date' => array( + ], + 'birth_date' => [ 'name' => 'birth_date', 'title' => ts('Birth Date'), - ), - 'contact_type' => array( + ], + 'contact_type' => [ 'title' => ts('Contact Type'), - ), - 'contact_sub_type' => array( + ], + 'contact_sub_type' => [ 'title' => ts('Contact Subtype'), - ), - ), - ), - 'civicrm_email' => array( + ], + ], + ], + 'civicrm_email' => [ 'dao' => 'CRM_Core_DAO_Email', - 'fields' => array( - 'email' => array( + 'fields' => [ + 'email' => [ 'title' => ts('Email'), 'no_repeat' => TRUE, - ), - ), + ], + ], 'grouping' => 'contact-fields', - 'order_bys' => array( - 'email' => array( + 'order_bys' => [ + 'email' => [ 'title' => ts('Email'), - ), - ), - ), - 'civicrm_phone' => array( + ], + ], + ], + 'civicrm_phone' => [ 'dao' => 'CRM_Core_DAO_Phone', - 'fields' => array( + 'fields' => [ 'phone' => NULL, - 'phone_ext' => array( + 'phone_ext' => [ 'title' => ts('Phone Extension'), - ), - ), + ], + ], 'grouping' => 'contact-fields', - ), - ) + $this->getAddressColumns(array('group_bys' => FALSE)); + ], + ] + $this->getAddressColumns(['group_bys' => FALSE]); $this->_groupFilter = TRUE; $this->_tagFilter = TRUE; diff --git a/civicrm/CRM/Report/Form/Contribute/Detail.php b/civicrm/CRM/Report/Form/Contribute/Detail.php index 6019750b5e..65a4dc05a6 100644 --- a/civicrm/CRM/Report/Form/Contribute/Detail.php +++ b/civicrm/CRM/Report/Form/Contribute/Detail.php @@ -479,7 +479,7 @@ class CRM_Report_Form_Contribute_Detail extends CRM_Report_Form { // Stats for soft credits if ($this->_softFrom && - CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) != + ($this->_params['contribution_or_soft_value'] ?? NULL) != 'contributions_only' ) { $totalAmount = $average = []; @@ -549,7 +549,7 @@ GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; $this->noDisplayContributionOrSoftColumn = TRUE; } - if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'contributions_only') { + if (($this->_params['contribution_or_soft_value'] ?? NULL) == 'contributions_only') { $this->isContributionBaseMode = TRUE; } if ($this->isContributionBaseMode && @@ -586,7 +586,7 @@ GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; $sql = "{$select} {$this->_from} {$this->_where} $this->_groupBy"; $this->createTemporaryTable('civireport_contribution_detail_temp2', $sql); - if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + if (($this->_params['contribution_or_soft_value'] ?? NULL) == 'soft_credits_only' ) { // revise pager : prev, next based on soft-credits only @@ -610,7 +610,7 @@ GROUP BY {$this->_aliases['civicrm_contribution']}.currency"; "(SELECT * FROM {$this->temporaryTables['civireport_contribution_detail_temp1']['name']})" ); } - elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == + elseif (($this->_params['contribution_or_soft_value'] ?? NULL) == 'soft_credits_only' ) { $this->createTemporaryTable('civireport_contribution_detail_temp3', @@ -692,7 +692,7 @@ UNION ALL } } - if (CRM_Utils_Array::value('civicrm_contribution_contribution_or_soft', $rows[$rowNum]) == + if (($rows[$rowNum]['civicrm_contribution_contribution_or_soft'] ?? NULL) == 'Contribution' ) { unset($rows[$rowNum]['civicrm_contribution_soft_soft_credit_type_id']); @@ -935,18 +935,14 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu // ts exception to avoid having ts("%1 %2: %3") $title = '%1 contributions / soft-credits: %2'; - if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == - 'contributions_only' - ) { + if (($this->_params['contribution_or_soft_value'] ?? NULL) == 'contributions_only') { $title = '%1 contributions: %2'; } - elseif (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == - 'soft_credits_only' - ) { + elseif (($this->_params['contribution_or_soft_value'] ?? NULL) == 'soft_credits_only') { $title = '%1 soft-credits: %2'; } foreach ($totals as $key => $total) { - $totalandsum[$key] = ts($title, [ + $totalandsum[$key] = _ts($title, [ 1 => $total, 2 => CRM_Utils_Money::format($sumcontribs[$key]), ]); @@ -1037,12 +1033,12 @@ WHERE civicrm_contribution_contribution_id={$row['civicrm_contribution_contribu * Add join to the soft credit table. */ protected function joinContributionToSoftCredit() { - if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'contributions_only' + if (($this->_params['contribution_or_soft_value'] ?? NULL) == 'contributions_only' && !$this->isTableSelected('civicrm_contribution_soft')) { return; } $joinType = ' LEFT '; - if (CRM_Utils_Array::value('contribution_or_soft_value', $this->_params) == 'soft_credits_only') { + if (($this->_params['contribution_or_soft_value'] ?? NULL) == 'soft_credits_only') { $joinType = ' INNER '; } $this->_from .= " diff --git a/civicrm/CRM/Report/Form/Contribute/History.php b/civicrm/CRM/Report/Form/Contribute/History.php index 4b310b05b0..997c47208a 100644 --- a/civicrm/CRM/Report/Form/Contribute/History.php +++ b/civicrm/CRM/Report/Form/Contribute/History.php @@ -342,7 +342,7 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { continue; } elseif ($fieldName == 'receive_date') { - if ((CRM_Utils_Array::value('this_year_op', $this->_params) == + if ((($this->_params['this_year_op'] ?? NULL) == 'fiscal' && !empty($this->_params['this_year_value'])) || (CRM_Utils_Array::value('other_year_op', $this->_params == 'fiscal') && !empty($this->_params['other_year_value'])) @@ -598,12 +598,12 @@ class CRM_Report_Form_Contribute_History extends CRM_Report_Form { $addWhere = ''; if (!empty($this->_referenceYear['other_year'])) { - (CRM_Utils_Array::value('other_year_op', $this->_params) == + (($this->_params['other_year_op'] ?? NULL) == 'calendar') ? $other_receive_date = 'YEAR (contri.receive_date)' : $other_receive_date = self::fiscalYearOffset('contri.receive_date'); $addWhere .= " AND {$this->_aliases['civicrm_contact']}.id NOT IN ( SELECT DISTINCT cont.id FROM civicrm_contact cont, civicrm_contribution contri WHERE cont.id = contri.contact_id AND {$other_receive_date} = {$this->_referenceYear['other_year']} AND contri.is_test = 0 AND contri.is_template = 0 ) "; } if (!empty($this->_referenceYear['this_year'])) { - (CRM_Utils_Array::value('this_year_op', $this->_params) == + (($this->_params['this_year_op'] ?? NULL) == 'calendar') ? $receive_date = 'YEAR (contri.receive_date)' : $receive_date = self::fiscalYearOffset('contri.receive_date'); $addWhere .= " AND {$this->_aliases['civicrm_contact']}.id IN ( SELECT DISTINCT cont.id FROM civicrm_contact cont, civicrm_contribution contri WHERE cont.id = contri.contact_id AND {$receive_date} = {$this->_referenceYear['this_year']} AND contri.is_test = 0 AND contri.is_template = 0 ) "; } diff --git a/civicrm/CRM/Report/Form/Contribute/Repeat.php b/civicrm/CRM/Report/Form/Contribute/Repeat.php index 54656a0528..f8be583a37 100644 --- a/civicrm/CRM/Report/Form/Contribute/Repeat.php +++ b/civicrm/CRM/Report/Form/Contribute/Repeat.php @@ -17,12 +17,12 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form { protected $_amountClauseWithAND = NULL; - protected $_customGroupExtends = array( + protected $_customGroupExtends = [ 'Contact', 'Individual', - ); + ]; - public $_drilldownReport = array('contribute/detail' => 'Link to Detail Report'); + public $_drilldownReport = ['contribute/detail' => 'Link to Detail Report']; /** * Temp table for first time frame. @@ -78,72 +78,72 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form { * Class constructor. */ public function __construct() { - $this->_columns = array( - 'civicrm_contact' => array( + $this->_columns = [ + 'civicrm_contact' => [ 'dao' => 'CRM_Contact_DAO_Contact', 'grouping' => 'contact-fields', 'fields' => array_merge( $this->getBasicContactFields(), - array( - 'sort_name' => array( + [ + 'sort_name' => [ 'title' => ts('Contact Name'), 'no_repeat' => TRUE, 'default' => TRUE, - ), - ) + ], + ] ), 'filters' => array_merge( - $this->getBasicContactFilters(array('deceased' => NULL)), - array( - 'percentage_change' => array( + $this->getBasicContactFilters(['deceased' => NULL]), + [ + 'percentage_change' => [ 'title' => ts('Percentage Change'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_INT, 'name' => 'percentage_change', 'dbAlias' => '( ( contribution_civireport2.total_amount_sum - contribution_civireport1.total_amount_sum ) * 100 / contribution_civireport1.total_amount_sum )', - ), - ) + ], + ] ), - 'group_bys' => array( - 'id' => array( + 'group_bys' => [ + 'id' => [ 'title' => ts('Contact'), 'default' => TRUE, - ), - ), - 'order_bys' => array( - 'sort_name' => array( + ], + ], + 'order_bys' => [ + 'sort_name' => [ 'title' => ts('Last Name, First Name'), 'default' => '1', 'default_weight' => '0', 'default_order' => 'ASC', - ), - 'first_name' => array( + ], + 'first_name' => [ 'title' => ts('First Name'), - ), - 'gender_id' => array( + ], + 'gender_id' => [ 'name' => 'gender_id', 'title' => ts('Gender'), - ), - 'birth_date' => array( + ], + 'birth_date' => [ 'name' => 'birth_date', 'title' => ts('Birth Date'), - ), - 'contact_type' => array( + ], + 'contact_type' => [ 'title' => ts('Contact Type'), - ), - 'contact_sub_type' => array( + ], + 'contact_sub_type' => [ 'title' => ts('Contact Subtype'), - ), - ), - ), - 'civicrm_email' => array( + ], + ], + ], + 'civicrm_email' => [ 'dao' => 'CRM_Core_DAO_Email', - 'fields' => array( - 'email' => array( + 'fields' => [ + 'email' => [ 'title' => ts('Email'), 'no_repeat' => TRUE, - ), - ), + ], + ], 'filters' => [ 'on_hold' => [ 'title' => ts('On Hold'), @@ -153,33 +153,33 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form { ], ], 'grouping' => 'contact-fields', - ), - 'civicrm_phone' => array( + ], + 'civicrm_phone' => [ 'dao' => 'CRM_Core_DAO_Phone', - 'fields' => array( - 'phone' => array( + 'fields' => [ + 'phone' => [ 'title' => ts('Phone'), 'no_repeat' => TRUE, - ), - ), + ], + ], 'grouping' => 'contact-fields', - ), - 'civicrm_financial_type' => array( + ], + 'civicrm_financial_type' => [ 'dao' => 'CRM_Financial_DAO_FinancialType', - 'fields' => array('financial_type' => array('title' => ts('Financial Type'))), + 'fields' => ['financial_type' => ['title' => ts('Financial Type')]], 'grouping' => 'contri-fields', - 'group_bys' => array( - 'financial_type' => array( + 'group_bys' => [ + 'financial_type' => [ 'name' => 'id', 'title' => ts('Financial Type'), - ), - ), - ), - 'civicrm_contribution' => array( + ], + ], + ], + 'civicrm_contribution' => [ 'dao' => 'CRM_Contribute_DAO_Contribution', - 'fields' => array( + 'fields' => [ 'contribution_source' => NULL, - 'total_amount1' => array( + 'total_amount1' => [ 'name' => 'total_amount', 'alias' => 'contribution1', 'title' => ts('Range One Stat'), @@ -187,8 +187,8 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form { 'default' => TRUE, 'required' => TRUE, 'clause' => 'contribution_civireport1.total_amount_count as contribution1_total_amount_count, contribution_civireport1.total_amount_sum as contribution1_total_amount_sum', - ), - 'total_amount2' => array( + ], + 'total_amount2' => [ 'name' => 'total_amount', 'alias' => 'contribution2', 'title' => ts('Range Two Stat'), @@ -196,50 +196,50 @@ class CRM_Report_Form_Contribute_Repeat extends CRM_Report_Form { 'default' => TRUE, 'required' => TRUE, 'clause' => 'contribution_civireport2.total_amount_count as contribution2_total_amount_count, contribution_civireport2.total_amount_sum as contribution2_total_amount_sum', - ), - ), + ], + ], 'grouping' => 'contri-fields', - 'filters' => array( - 'receive_date1' => array( + 'filters' => [ + 'receive_date1' => [ 'title' => ts('Initial Date Range'), 'default' => 'previous.year', 'operatorType' => CRM_Report_Form::OP_DATE, 'name' => 'receive_date', - ), - 'receive_date2' => array( + ], + 'receive_date2' => [ 'title' => ts('Second Date Range'), 'default' => 'this.year', 'operatorType' => CRM_Report_Form::OP_DATE, 'name' => 'receive_date', - ), - 'total_amount1' => array( + ], + 'total_amount1' => [ 'title' => ts('Range One Amount'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_INT, 'name' => 'total_amount', - ), - 'total_amount2' => array( + ], + 'total_amount2' => [ 'title' => ts('Range Two Amount'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_INT, 'name' => 'total_amount', - ), - 'financial_type_id' => array( + ], + 'financial_type_id' => [ 'title' => ts('Financial Type'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Contribute_BAO_Contribution::buildOptions('financial_type_id', 'search'), - ), - 'contribution_status_id' => array( + ], + 'contribution_status_id' => [ 'title' => ts('Contribution Status'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'search'), - 'default' => array('1'), - ), - ), - 'group_bys' => array('contribution_source' => NULL), - ), - ) + $this->addAddressFields(TRUE, FALSE, TRUE, array('country_id' => FALSE)); + 'default' => ['1'], + ], + ], + 'group_bys' => ['contribution_source' => NULL], + ], + ] + $this->addAddressFields(TRUE, FALSE, TRUE, ['country_id' => FALSE]); $this->_groupFilter = TRUE; $this->_tagFilter = TRUE; @@ -388,10 +388,10 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 * @return mixed|string */ public function whereContribution($replaceAliasWith = 'contribution1') { - $clauses = array( + $clauses = [ "is_test" => "{$this->_aliases['civicrm_contribution']}.is_test = 0", "is_template" => "{$this->_aliases['civicrm_contribution']}.is_template = 0", - ); + ]; foreach ($this->_columns['civicrm_contribution']['filters'] as $fieldName => $field) { $clause = NULL; @@ -452,7 +452,7 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 $this->_amountClauseWithAND = "!({$this->_aliases['civicrm_contribution']}1.total_amount_count IS NULL AND {$this->_aliases['civicrm_contribution']}2.total_amount_count IS NULL)"; } - $clauses = array("atleast_one_amount" => $this->_amountClauseWithAND); + $clauses = ["atleast_one_amount" => $this->_amountClauseWithAND]; foreach ($this->_columns as $tableName => $table) { if (array_key_exists('filters', $table) && @@ -490,8 +490,8 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 $errors = $checkDate = $errorCount = []; - $rules = array( - 'id' => array( + $rules = [ + 'id' => [ 'sort_name', 'exposed_id', 'display_name', @@ -535,14 +535,14 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 'is_opt_out', 'is_deceased', 'preferred_language', - ), - 'country_id' => array('country_id'), - 'state_province_id' => array('country_id', 'state_province_id'), - 'contribution_source' => array('contribution_source'), - 'financial_type' => array('financial_type'), - ); - - $idMapping = array( + ], + 'country_id' => ['country_id'], + 'state_province_id' => ['country_id', 'state_province_id'], + 'contribution_source' => ['contribution_source'], + 'financial_type' => ['financial_type'], + ]; + + $idMapping = [ 'id' => ts('Contact'), 'exposed_id' => ts('Contact'), 'country_id' => ts('Country'), @@ -552,7 +552,7 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 'sort_name' => ts('Contact Name'), 'email' => ts('Email'), 'phone' => ts('Phone'), - ); + ]; if (empty($fields['group_bys'])) { $errors['fields'] = ts('Please select at least one Group by field.'); @@ -580,10 +580,10 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 } if (!$found) { $erorrGrps = implode(',', $invlidGroups); - $tempErrors[] = ts("Do not select field %1 with Group by %2.", array( + $tempErrors[] = ts("Do not select field %1 with Group by %2.", [ 1 => $idMapping[$fld_id], 2 => $erorrGrps, - )); + ]); } } } @@ -683,10 +683,10 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 //store contributions in array 'contact_sums' for comparison $contact_sums = []; while ($dao->fetch()) { - $contact_sums[$dao->contact_civireport_id] = array( + $contact_sums[$dao->contact_civireport_id] = [ 'contribution1_total_amount_sum' => $dao->contribution1_total_amount_sum, 'contribution2_total_amount_sum' => $dao->contribution2_total_amount_sum, - ); + ]; } $total_distinct_contacts = count($contact_sums); @@ -729,26 +729,26 @@ LEFT JOIN $this->tempTableRepeat2 {$this->_aliases['civicrm_contribution']}2 $lapsed = ($lapsed / $total_distinct_contacts) * 100; } //display percentages for new, lapsed, upgraded, downgraded, and maintained contributors - $statistics['counts']['count_new'] = array( + $statistics['counts']['count_new'] = [ 'value' => $new, 'title' => ts('% New Donors'), - ); - $statistics['counts']['count_lapsed'] = array( + ]; + $statistics['counts']['count_lapsed'] = [ 'value' => $lapsed, 'title' => ts('% Lapsed Donors'), - ); - $statistics['counts']['count_upgraded'] = array( + ]; + $statistics['counts']['count_upgraded'] = [ 'value' => $upgraded, 'title' => ts('% Upgraded Donors'), - ); - $statistics['counts']['count_downgraded'] = array( + ]; + $statistics['counts']['count_downgraded'] = [ 'value' => $downgraded, 'title' => ts('% Downgraded Donors'), - ); - $statistics['counts']['count_maintained'] = array( + ]; + $statistics['counts']['count_maintained'] = [ 'value' => $maintained, 'title' => ts('% Maintained Donors'), - ); + ]; $select = " SELECT COUNT({$this->_aliases['civicrm_contribution']}1.total_amount_count ) as count, @@ -783,38 +783,38 @@ GROUP BY currency $count2 += $dao->count2; } - $statistics['counts']['range_one_title'] = array('title' => ts('Initial Date Range:')); - $statistics['counts']['amount'] = array( + $statistics['counts']['range_one_title'] = ['title' => ts('Initial Date Range:')]; + $statistics['counts']['amount'] = [ 'value' => implode(', ', $amount), 'title' => ts('Total Amount'), 'type' => CRM_Utils_Type::T_STRING, - ); - $statistics['counts']['count'] = array( + ]; + $statistics['counts']['count'] = [ 'value' => $count, 'title' => ts('Total Donations'), - ); - $statistics['counts']['avg'] = array( + ]; + $statistics['counts']['avg'] = [ 'value' => implode(', ', $average), 'title' => ts('Average'), 'type' => CRM_Utils_Type::T_STRING, - ); - $statistics['counts']['range_two_title'] = array( + ]; + $statistics['counts']['range_two_title'] = [ 'title' => ts('Second Date Range:'), - ); - $statistics['counts']['amount2'] = array( + ]; + $statistics['counts']['amount2'] = [ 'value' => implode(', ', $amount2), 'title' => ts('Total Amount'), 'type' => CRM_Utils_Type::T_STRING, - ); - $statistics['counts']['count2'] = array( + ]; + $statistics['counts']['count2'] = [ 'value' => $count2, 'title' => ts('Total Donations'), - ); - $statistics['counts']['avg2'] = array( + ]; + $statistics['counts']['avg2'] = [ 'value' => implode(', ', $average2), 'title' => ts('Average'), 'type' => CRM_Utils_Type::T_STRING, - ); + ]; return $statistics; } @@ -870,25 +870,25 @@ GROUP BY currency " ({$row['contribution2_total_amount_count']})"; } } - $this->_columnHeaders['change'] = array( + $this->_columnHeaders['change'] = [ 'title' => ts('% Change'), 'type' => CRM_Utils_Type::T_INT, - ); + ]; // hack to fix title list($from1, $to1) = $this->getFromTo(CRM_Utils_Array::value("receive_date1_relative", $this->_params), CRM_Utils_Array::value("receive_date1_from", $this->_params), CRM_Utils_Array::value("receive_date1_to", $this->_params) ); - $from1 = CRM_Utils_Date::customFormat($from1, NULL, array('d')); - $to1 = CRM_Utils_Date::customFormat($to1, NULL, array('d')); + $from1 = CRM_Utils_Date::customFormat($from1, NULL, ['d']); + $to1 = CRM_Utils_Date::customFormat($to1, NULL, ['d']); list($from2, $to2) = $this->getFromTo(CRM_Utils_Array::value("receive_date2_relative", $this->_params), CRM_Utils_Array::value("receive_date2_from", $this->_params), CRM_Utils_Array::value("receive_date2_to", $this->_params) ); - $from2 = CRM_Utils_Date::customFormat($from2, NULL, array('d')); - $to2 = CRM_Utils_Date::customFormat($to2, NULL, array('d')); + $from2 = CRM_Utils_Date::customFormat($from2, NULL, ['d']); + $to2 = CRM_Utils_Date::customFormat($to2, NULL, ['d']); $this->_columnHeaders['contribution1_total_amount_sum']['title'] = "$from1 - $to1"; $this->_columnHeaders['contribution2_total_amount_sum']['title'] = "$from2 - $to2"; diff --git a/civicrm/CRM/Report/Form/Event/ParticipantListing.php b/civicrm/CRM/Report/Form/Event/ParticipantListing.php index f9488cd41f..63c7bd3dc9 100644 --- a/civicrm/CRM/Report/Form/Event/ParticipantListing.php +++ b/civicrm/CRM/Report/Form/Event/ParticipantListing.php @@ -23,14 +23,14 @@ class CRM_Report_Form_Event_ParticipantListing extends CRM_Report_Form { protected $_tagFilter = TRUE; protected $_balance = FALSE; - protected $_customGroupExtends = array( + protected $_customGroupExtends = [ 'Participant', 'Contact', 'Individual', 'Event', - ); + ]; - public $_drilldownReport = array('event/income' => 'Link to Detail Report'); + public $_drilldownReport = ['event/income' => 'Link to Detail Report']; /** * Class constructor. @@ -38,353 +38,353 @@ class CRM_Report_Form_Event_ParticipantListing extends CRM_Report_Form { public function __construct() { $this->_autoIncludeIndexedFieldsAsOrderBys = 1; - $this->_columns = array( - 'civicrm_contact' => array( + $this->_columns = [ + 'civicrm_contact' => [ 'dao' => 'CRM_Contact_DAO_Contact', - 'fields' => array_merge(array( + 'fields' => array_merge([ // CRM-17115 - to avoid changing report output at this stage re-instate // old field name for sort name - 'sort_name_linked' => array( + 'sort_name_linked' => [ 'title' => ts('Participant Name'), 'required' => TRUE, 'no_repeat' => TRUE, 'dbAlias' => 'contact_civireport.sort_name', - ), - ), + ], + ], $this->getBasicContactFields(), - array( - 'age_at_event' => array( + [ + 'age_at_event' => [ 'title' => ts('Age at Event'), 'dbAlias' => 'TIMESTAMPDIFF(YEAR, contact_civireport.birth_date, event_civireport.start_date)', - ), - ) + ], + ] ), 'grouping' => 'contact-fields', - 'order_bys' => array( - 'sort_name' => array( + 'order_bys' => [ + 'sort_name' => [ 'title' => ts('Last Name, First Name'), 'default' => '1', 'default_weight' => '0', 'default_order' => 'ASC', - ), - 'first_name' => array( + ], + 'first_name' => [ 'name' => 'first_name', 'title' => ts('First Name'), - ), - 'gender_id' => array( + ], + 'gender_id' => [ 'name' => 'gender_id', 'title' => ts('Gender'), - ), - 'birth_date' => array( + ], + 'birth_date' => [ 'name' => 'birth_date', 'title' => ts('Birth Date'), - ), - 'age_at_event' => array( + ], + 'age_at_event' => [ 'name' => 'age_at_event', 'title' => ts('Age at Event'), - ), - 'contact_type' => array( + ], + 'contact_type' => [ 'title' => ts('Contact Type'), - ), - 'contact_sub_type' => array( + ], + 'contact_sub_type' => [ 'title' => ts('Contact Subtype'), - ), - ), + ], + ], 'filters' => CRM_Report_Form::getBasicContactFilters(), - ), - 'civicrm_email' => array( + ], + 'civicrm_email' => [ 'dao' => 'CRM_Core_DAO_Email', - 'fields' => array( - 'email' => array( + 'fields' => [ + 'email' => [ 'title' => ts('Email'), 'no_repeat' => TRUE, - ), - ), + ], + ], 'grouping' => 'contact-fields', - 'filters' => array( - 'email' => array( + 'filters' => [ + 'email' => [ 'title' => ts('Participant E-mail'), 'operator' => 'like', - ), - ), - ), - ); + ], + ], + ], + ]; $this->_columns += $this->getAddressColumns(); - $this->_columns += array( - 'civicrm_participant' => array( + $this->_columns += [ + 'civicrm_participant' => [ 'dao' => 'CRM_Event_DAO_Participant', - 'fields' => array( - 'participant_id' => array('title' => ts('Participant ID')), - 'participant_record' => array( + 'fields' => [ + 'participant_id' => ['title' => ts('Participant ID')], + 'participant_record' => [ 'name' => 'id', 'no_display' => TRUE, 'required' => TRUE, - ), - 'event_id' => array( + ], + 'event_id' => [ 'default' => TRUE, 'type' => CRM_Utils_Type::T_STRING, - ), - 'status_id' => array( + ], + 'status_id' => [ 'title' => ts('Status'), 'default' => TRUE, - ), - 'role_id' => array( + ], + 'role_id' => [ 'title' => ts('Role'), 'default' => TRUE, - ), - 'fee_currency' => array( + ], + 'fee_currency' => [ 'required' => TRUE, 'no_display' => TRUE, - ), - 'registered_by_id' => array( + ], + 'registered_by_id' => [ 'title' => ts('Registered by Participant ID'), - ), - 'registered_by_name' => array( + ], + 'registered_by_name' => [ 'title' => ts('Registered by Participant Name'), 'name' => 'registered_by_id', - ), - 'created_id' => array( + ], + 'created_id' => [ 'title' => ts('Registered by Contact ID'), - ), - 'registered_by_contact_name' => array( + ], + 'registered_by_contact_name' => [ 'title' => ts('Registered by Contact Name'), 'name' => 'created_id', - ), - 'source' => array( + ], + 'source' => [ 'title' => ts('Participant Source'), - ), + ], 'participant_fee_level' => NULL, - 'participant_fee_amount' => array('title' => ts('Participant Fee')), - 'participant_register_date' => array('title' => ts('Registration Date')), - 'total_paid' => array( + 'participant_fee_amount' => ['title' => ts('Participant Fee')], + 'participant_register_date' => ['title' => ts('Registration Date')], + 'total_paid' => [ 'title' => ts('Total Paid'), 'dbAlias' => 'IFNULL(SUM(ft.total_amount), 0)', 'type' => 1024, - ), - 'balance' => array( + ], + 'balance' => [ 'title' => ts('Balance'), 'dbAlias' => 'participant_civireport.fee_amount - IFNULL(SUM(ft.total_amount), 0)', 'type' => 1024, - ), - ), + ], + ], 'grouping' => 'event-fields', - 'filters' => array( - 'event_id' => array( + 'filters' => [ + 'event_id' => [ 'name' => 'event_id', 'title' => ts('Event'), 'operatorType' => CRM_Report_Form::OP_ENTITYREF, 'type' => CRM_Utils_Type::T_INT, - 'attributes' => array( + 'attributes' => [ 'entity' => 'Event', - 'select' => array('minimumInputLength' => 0), - ), - ), - 'sid' => array( + 'select' => ['minimumInputLength' => 0], + ], + ], + 'sid' => [ 'name' => 'status_id', 'title' => ts('Participant Status'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Event_PseudoConstant::participantStatus(NULL, NULL, 'label'), - ), - 'rid' => array( + ], + 'rid' => [ 'name' => 'role_id', 'title' => ts('Participant Role'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Event_PseudoConstant::participantRole(), - ), - 'participant_register_date' => array( + ], + 'participant_register_date' => [ 'title' => ts('Registration Date'), 'operatorType' => CRM_Report_Form::OP_DATE, - ), - 'fee_currency' => array( + ], + 'fee_currency' => [ 'title' => ts('Fee Currency'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Core_OptionGroup::values('currencies_enabled'), 'default' => NULL, 'type' => CRM_Utils_Type::T_STRING, - ), - 'registered_by_id' => array( + ], + 'registered_by_id' => [ 'title' => ts('Registered by Participant ID'), 'type' => CRM_Utils_Type::T_STRING, 'operator' => 'like', - ), - 'source' => array( + ], + 'source' => [ 'title' => ts('Participant Source'), 'type' => CRM_Utils_Type::T_STRING, 'operator' => 'like', - ), + ], 'is_test' => [ 'title' => ts('Is Test'), 'type' => CRM_Utils_Type::T_BOOLEAN, 'default' => 0, ], - ), - 'order_bys' => array( - 'participant_register_date' => array( + ], + 'order_bys' => [ + 'participant_register_date' => [ 'title' => ts('Registration Date'), 'default_weight' => '1', 'default_order' => 'ASC', - ), - 'event_id' => array( + ], + 'event_id' => [ 'title' => ts('Event'), 'default_weight' => '1', 'default_order' => 'ASC', - ), - ), - ), - 'civicrm_phone' => array( + ], + ], + ], + 'civicrm_phone' => [ 'dao' => 'CRM_Core_DAO_Phone', - 'fields' => array( - 'phone' => array( + 'fields' => [ + 'phone' => [ 'title' => ts('Phone'), 'default' => TRUE, 'no_repeat' => TRUE, - ), - ), + ], + ], 'grouping' => 'contact-fields', - ), - 'civicrm_event' => array( + ], + 'civicrm_event' => [ 'dao' => 'CRM_Event_DAO_Event', - 'fields' => array( - 'event_type_id' => array( + 'fields' => [ + 'event_type_id' => [ 'title' => ts('Event Type'), - ), - 'event_start_date' => array( + ], + 'event_start_date' => [ 'title' => ts('Event Start Date'), - ), - 'event_end_date' => array( + ], + 'event_end_date' => [ 'title' => ts('Event End Date'), - ), - ), + ], + ], 'grouping' => 'event-fields', - 'filters' => array( - 'eid' => array( + 'filters' => [ + 'eid' => [ 'name' => 'event_type_id', 'title' => ts('Event Type'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Core_OptionGroup::values('event_type'), - ), - 'event_start_date' => array( + ], + 'event_start_date' => [ 'title' => ts('Event Start Date'), 'operatorType' => CRM_Report_Form::OP_DATE, - ), - 'event_end_date' => array( + ], + 'event_end_date' => [ 'title' => ts('Event End Date'), 'operatorType' => CRM_Report_Form::OP_DATE, - ), - ), - 'order_bys' => array( - 'event_type_id' => array( + ], + ], + 'order_bys' => [ + 'event_type_id' => [ 'title' => ts('Event Type'), 'default_weight' => '2', 'default_order' => 'ASC', - ), - 'event_start_date' => array( + ], + 'event_start_date' => [ 'title' => ts('Event Start Date'), - ), - ), - ), - 'civicrm_note' => array( + ], + ], + ], + 'civicrm_note' => [ 'dao' => 'CRM_Core_DAO_Note', - 'fields' => array( - 'participant_note' => array( + 'fields' => [ + 'participant_note' => [ 'name' => 'note', 'title' => ts('Participant Note'), - ), - ), - ), - 'civicrm_contribution' => array( + ], + ], + ], + 'civicrm_contribution' => [ 'dao' => 'CRM_Contribute_DAO_Contribution', - 'fields' => array( - 'contribution_id' => array( + 'fields' => [ + 'contribution_id' => [ 'name' => 'id', 'no_display' => TRUE, 'required' => TRUE, 'csv_display' => TRUE, 'title' => ts('Contribution ID'), - ), - 'financial_type_id' => array('title' => ts('Financial Type')), - 'receive_date' => array('title' => ts('Payment Date')), - 'contribution_status_id' => array('title' => ts('Contribution Status')), - 'payment_instrument_id' => array('title' => ts('Payment Type')), - 'contribution_source' => array( + ], + 'financial_type_id' => ['title' => ts('Financial Type')], + 'receive_date' => ['title' => ts('Payment Date')], + 'contribution_status_id' => ['title' => ts('Contribution Status')], + 'payment_instrument_id' => ['title' => ts('Payment Type')], + 'contribution_source' => [ 'name' => 'source', 'title' => ts('Contribution Source'), - ), - 'currency' => array( + ], + 'currency' => [ 'required' => TRUE, 'no_display' => TRUE, - ), + ], 'trxn_id' => NULL, - 'fee_amount' => array('title' => ts('Transaction Fee')), + 'fee_amount' => ['title' => ts('Transaction Fee')], 'net_amount' => NULL, - ), + ], 'grouping' => 'contrib-fields', - 'filters' => array( - 'receive_date' => array( + 'filters' => [ + 'receive_date' => [ 'title' => ts('Payment Date'), 'operatorType' => CRM_Report_Form::OP_DATE, - ), - 'financial_type_id' => array( + ], + 'financial_type_id' => [ 'title' => ts('Financial Type'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Contribute_PseudoConstant::financialType(), - ), - 'currency' => array( + ], + 'currency' => [ 'title' => ts('Contribution Currency'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Core_OptionGroup::values('currencies_enabled'), 'default' => NULL, 'type' => CRM_Utils_Type::T_STRING, - ), - 'payment_instrument_id' => array( + ], + 'payment_instrument_id' => [ 'title' => ts('Payment Type'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Contribute_PseudoConstant::paymentInstrument(), - ), - 'contribution_status_id' => array( + ], + 'contribution_status_id' => [ 'title' => ts('Contribution Status'), 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => CRM_Contribute_BAO_Contribution::buildOptions('contribution_status_id', 'search'), 'default' => NULL, - ), - ), - ), - 'civicrm_line_item' => array( + ], + ], + ], + 'civicrm_line_item' => [ 'dao' => 'CRM_Price_DAO_LineItem', 'grouping' => 'priceset-fields', - 'filters' => array( - 'price_field_value_id' => array( + 'filters' => [ + 'price_field_value_id' => [ 'name' => 'price_field_value_id', 'title' => ts('Fee Level'), 'type' => CRM_Utils_Type::T_INT, 'operatorType' => CRM_Report_Form::OP_MULTISELECT, 'options' => $this->getPriceLevels(), - ), - ), - ), - ); + ], + ], + ], + ]; - $this->_options = array( - 'blank_column_begin' => array( + $this->_options = [ + 'blank_column_begin' => [ 'title' => ts('Blank column at the Begining'), 'type' => 'checkbox', - ), - 'blank_column_end' => array( + ], + 'blank_column_end' => [ 'title' => ts('Blank column at the End'), 'type' => 'select', - 'options' => array( + 'options' => [ '' => ts('-select-'), 1 => ts('One'), 2 => ts('Two'), 3 => ts('Three'), - ), - ), - ); + ], + ], + ]; // CRM-17115 avoid duplication of sort_name - would be better to standardise name // & behaviour across reports but trying for no change at this point. diff --git a/civicrm/CRM/Report/Form/Instance.php b/civicrm/CRM/Report/Form/Instance.php index 224d404fc1..ecd3942715 100644 --- a/civicrm/CRM/Report/Form/Instance.php +++ b/civicrm/CRM/Report/Form/Instance.php @@ -134,7 +134,7 @@ class CRM_Report_Form_Instance { // navigation field $parentMenu = CRM_Core_BAO_Navigation::getNavigationList(); - $form->add('select', 'parent_id', ts('Parent Menu'), ['' => ts('- select -')] + $parentMenu); + $form->add('select', 'parent_id', ts('Parent Menu'), ['' => ts('- select -')] + $parentMenu, FALSE, ['class' => 'crm-select2 huge']); // For now we only providing drilldown for one primary detail report only. In future this could be multiple reports foreach ($form->_drilldownReport as $reportUrl => $drillLabel) { @@ -256,7 +256,7 @@ class CRM_Report_Form_Instance { // CRM-17310 private reports option. $defaults['add_to_my_reports'] = 0; - if (CRM_Utils_Array::value('owner_id', $defaults) != NULL) { + if (($defaults['owner_id'] ?? NULL) != NULL) { $defaults['add_to_my_reports'] = 1; } diff --git a/civicrm/CRM/Report/Form/Mailing/Detail.php b/civicrm/CRM/Report/Form/Mailing/Detail.php index 9afed0ae97..8426bd9907 100644 --- a/civicrm/CRM/Report/Form/Mailing/Detail.php +++ b/civicrm/CRM/Report/Form/Mailing/Detail.php @@ -329,12 +329,12 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form { ON {$this->_aliases['civicrm_mailing_event_delivered']}.event_queue_id = civicrm_mailing_event_queue.id LEFT JOIN civicrm_mailing_event_bounce {$this->_aliases['civicrm_mailing_event_bounce']} ON {$this->_aliases['civicrm_mailing_event_bounce']}.event_queue_id = civicrm_mailing_event_queue.id"; - if (CRM_Utils_Array::value('delivery_status_value', $this->_params) == + if (($this->_params['delivery_status_value'] ?? NULL) == 'bounced' ) { $this->_columns['civicrm_mailing_event_delivered']['filters']['delivery_status']['clause'] = "{$this->_aliases['civicrm_mailing_event_bounce']}.id IS NOT NULL"; } - elseif (CRM_Utils_Array::value('delivery_status_value', $this->_params) == + elseif (($this->_params['delivery_status_value'] ?? NULL) == 'successful' ) { $this->_columns['civicrm_mailing_event_delivered']['filters']['delivery_status']['clause'] = "{$this->_aliases['civicrm_mailing_event_delivered']}.id IS NOT NULL AND {$this->_aliases['civicrm_mailing_event_bounce']}.id IS NULL"; @@ -347,7 +347,7 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form { if (array_key_exists('reply_id', $this->_params['fields']) || is_numeric(CRM_Utils_Array::value('is_replied_value', $this->_params)) ) { - if (CRM_Utils_Array::value('is_replied_value', $this->_params) == 1) { + if (($this->_params['is_replied_value'] ?? NULL) == 1) { $joinType = 'INNER'; $this->_columns['civicrm_mailing_event_reply']['filters']['is_replied']['clause'] = '(1)'; } @@ -365,7 +365,7 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form { if (array_key_exists('unsubscribe_id', $this->_params['fields']) || is_numeric(CRM_Utils_Array::value('is_unsubscribed_value', $this->_params)) ) { - if (CRM_Utils_Array::value('is_unsubscribed_value', $this->_params) == 1 + if (($this->_params['is_unsubscribed_value'] ?? NULL) == 1 ) { $joinType = 'INNER'; $this->_columns['civicrm_mailing_event_unsubscribe']['filters']['is_unsubscribed']['clause'] = '(1)'; @@ -385,7 +385,7 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form { if (array_key_exists('optout_id', $this->_params['fields']) || is_numeric(CRM_Utils_Array::value('is_optout_value', $this->_params)) ) { - if (CRM_Utils_Array::value('is_optout_value', $this->_params) == 1) { + if (($this->_params['is_optout_value'] ?? NULL) == 1) { $joinType = 'INNER'; $this->_columns['civicrm_mailing_event_unsubscribe']['filters']['is_optout']['clause'] = '(1)'; } @@ -404,7 +404,7 @@ class CRM_Report_Form_Mailing_Detail extends CRM_Report_Form { if (array_key_exists('forward_id', $this->_params['fields']) || is_numeric(CRM_Utils_Array::value('is_forwarded_value', $this->_params)) ) { - if (CRM_Utils_Array::value('is_forwarded_value', $this->_params) == 1) { + if (($this->_params['is_forwarded_value'] ?? NULL) == 1) { $joinType = 'INNER'; $this->_columns['civicrm_mailing_event_forward']['filters']['is_forwarded']['clause'] = '(1)'; } diff --git a/civicrm/CRM/Report/Form/Member/Detail.php b/civicrm/CRM/Report/Form/Member/Detail.php index d156bdf65e..81ea4b89da 100644 --- a/civicrm/CRM/Report/Form/Member/Detail.php +++ b/civicrm/CRM/Report/Form/Member/Detail.php @@ -178,10 +178,7 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { 'receipt_date' => NULL, 'fee_amount' => NULL, 'net_amount' => NULL, - 'total_amount' => [ - 'title' => ts('Payment Amount (most recent)'), - 'statistics' => ['sum' => ts('Amount')], - ], + 'total_amount' => NULL, ], 'filters' => [ 'receive_date' => ['operatorType' => CRM_Report_Form::OP_DATE], @@ -294,9 +291,15 @@ class CRM_Report_Form_Member_Detail extends CRM_Report_Form { //used when contribution field is selected. if ($this->isTableSelected('civicrm_contribution')) { + // if we're grouping (by membership), we need to make sure the inner join picks the most recent contribution. + $groupedBy = !empty($this->_params['group_bys']['id']); $this->_from .= " LEFT JOIN civicrm_membership_payment cmp - ON {$this->_aliases['civicrm_membership']}.id = cmp.membership_id + ON ({$this->_aliases['civicrm_membership']}.id = cmp.membership_id"; + $this->_from .= $groupedBy ? " + AND cmp.id = (SELECT MAX(id) FROM civicrm_membership_payment WHERE civicrm_membership_payment.membership_id = {$this->_aliases['civicrm_membership']}.id))" + : ")"; + $this->_from .= " LEFT JOIN civicrm_contribution {$this->_aliases['civicrm_contribution']} ON cmp.contribution_id={$this->_aliases['civicrm_contribution']}.id\n"; } diff --git a/civicrm/CRM/Report/Page/Options.php b/civicrm/CRM/Report/Page/Options.php index f0d88838dd..a82c931d7c 100644 --- a/civicrm/CRM/Report/Page/Options.php +++ b/civicrm/CRM/Report/Page/Options.php @@ -16,7 +16,7 @@ */ /** - * Page for displaying list of Gender + * Page for displaying list of report options */ class CRM_Report_Page_Options extends CRM_Core_Page_Basic { diff --git a/civicrm/CRM/Report/Page/TemplateList.php b/civicrm/CRM/Report/Page/TemplateList.php index 2b69ada6f5..124adad7bf 100644 --- a/civicrm/CRM/Report/Page/TemplateList.php +++ b/civicrm/CRM/Report/Page/TemplateList.php @@ -74,8 +74,8 @@ LEFT JOIN civicrm_component comp ) { continue; } - $rows[$dao->component_name][$dao->value]['title'] = ts($dao->label); - $rows[$dao->component_name][$dao->value]['description'] = ts($dao->description); + $rows[$dao->component_name][$dao->value]['title'] = _ts($dao->label); + $rows[$dao->component_name][$dao->value]['description'] = _ts($dao->description); $rows[$dao->component_name][$dao->value]['url'] = CRM_Utils_System::url('civicrm/report/' . trim($dao->value, '/'), 'reset=1'); $rows[$dao->component_name][$dao->value]['instanceUrl'] = $dao->instance_id ? CRM_Utils_System::url( 'civicrm/report/list', diff --git a/civicrm/CRM/Report/Utils/Get.php b/civicrm/CRM/Report/Utils/Get.php index 0bccfb231b..f952c842bf 100644 --- a/civicrm/CRM/Report/Utils/Get.php +++ b/civicrm/CRM/Report/Utils/Get.php @@ -286,7 +286,7 @@ class CRM_Report_Utils_Get { if ($urlFields = CRM_Utils_Array::value("fld", $_GET)) { $urlFields = explode(',', $urlFields); } - if (CRM_Utils_Array::value("ufld", $_GET) == 1) { + if (($_GET["ufld"] ?? NULL) == 1) { // unset all display columns $defaults['fields'] = []; } diff --git a/civicrm/CRM/Report/Utils/Report.php b/civicrm/CRM/Report/Utils/Report.php index 51a5dad04d..6f837dc9ad 100644 --- a/civicrm/CRM/Report/Utils/Report.php +++ b/civicrm/CRM/Report/Utils/Report.php @@ -254,12 +254,12 @@ WHERE inst.report_id = %1"; $value = str_replace('"', '""', html_entity_decode(strip_tags($value), ENT_QUOTES | ENT_HTML401)); if (CRM_Utils_Array::value('type', $form->_columnHeaders[$v]) & 4) { - if (CRM_Utils_Array::value('group_by', $form->_columnHeaders[$v]) == 'MONTH' || - CRM_Utils_Array::value('group_by', $form->_columnHeaders[$v]) == 'QUARTER' + if (($form->_columnHeaders[$v]['group_by'] ?? NULL) == 'MONTH' || + ($form->_columnHeaders[$v]['group_by'] ?? NULL) == 'QUARTER' ) { $value = CRM_Utils_Date::customFormat($value, $config->dateformatPartial); } - elseif (CRM_Utils_Array::value('group_by', $form->_columnHeaders[$v]) == 'YEAR') { + elseif (($form->_columnHeaders[$v]['group_by'] ?? NULL) == 'YEAR') { $value = CRM_Utils_Date::customFormat($value, $config->dateformatYear); } elseif ($form->_columnHeaders[$v]['type'] == 12) { @@ -272,7 +272,7 @@ WHERE inst.report_id = %1"; } // Note the reference to a specific field does not belong in this generic class & does not work on all reports. // @todo - fix this properly rather than just supressing the en-otice. Repeat transaction report is a good example. - elseif (CRM_Utils_Array::value('type', $form->_columnHeaders[$v]) == 1024 && !empty($row['civicrm_contribution_currency'])) { + elseif (($form->_columnHeaders[$v]['type'] ?? NULL) == 1024 && !empty($row['civicrm_contribution_currency'])) { $value = CRM_Utils_Money::format($value, $row['civicrm_contribution_currency']); } $displayRows[$v] = '"' . $value . '"'; diff --git a/civicrm/CRM/SMS/DAO/Provider.php b/civicrm/CRM/SMS/DAO/Provider.php index 7875b0814e..3be708e169 100644 --- a/civicrm/CRM/SMS/DAO/Provider.php +++ b/civicrm/CRM/SMS/DAO/Provider.php @@ -6,7 +6,7 @@ * * Generated from xml/schema/CRM/SMS/Provider.xml * DO NOT EDIT. Generated by CRM_Core_CodeGen - * (GenCodeChecksum:ebadcc1aa561a61001ec934e60a9c475) + * (GenCodeChecksum:ea1cbd7f1f11e5665fff00358476e535) */ /** @@ -37,6 +37,17 @@ class CRM_SMS_DAO_Provider extends CRM_Core_DAO { */ public static $_log = FALSE; + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/admin/sms/provider?reset=1&action=add', + 'delete' => 'civicrm/admin/sms/provider?reset=1&action=delete&id=[id]', + 'update' => 'civicrm/admin/sms/provider?reset=1&action=update&id=[id]', + ]; + /** * SMS Provider ID * @@ -141,7 +152,7 @@ class CRM_SMS_DAO_Provider extends CRM_Core_DAO { * Whether to return the plural version of the title. */ public static function getEntityTitle($plural = FALSE) { - return $plural ? ts('Providers') : ts('Provider'); + return $plural ? ts('SMS Providers') : ts('SMS Provider'); } /** diff --git a/civicrm/CRM/SMS/Form/Schedule.php b/civicrm/CRM/SMS/Form/Schedule.php index 00afbb84e8..d702d4f7b7 100644 --- a/civicrm/CRM/SMS/Form/Schedule.php +++ b/civicrm/CRM/SMS/Form/Schedule.php @@ -114,7 +114,7 @@ class CRM_SMS_Form_Schedule extends CRM_Core_Form { CRM_Utils_System::redirect($url); } - if ((isset($params['send_option']) && $params['send_option'] == 'send_immediate') || CRM_Utils_Array::value('_qf_Schedule_back', $params) == ts('Previous')) { + if ((isset($params['send_option']) && $params['send_option'] == 'send_immediate') || ($params['_qf_Schedule_back'] ?? NULL) == ts('Previous')) { return TRUE; } diff --git a/civicrm/CRM/SMS/Page/Provider.php b/civicrm/CRM/SMS/Page/Provider.php index 9122dca44e..cea624e2a1 100644 --- a/civicrm/CRM/SMS/Page/Provider.php +++ b/civicrm/CRM/SMS/Page/Provider.php @@ -22,13 +22,6 @@ class CRM_SMS_Page_Provider extends CRM_Core_Page_Basic { public $useLivePageJS = TRUE; - /** - * The action links that we need to display for the browse screen. - * - * @var array - */ - public static $_links = NULL; - /** * Get BAO Name. * @@ -39,42 +32,6 @@ class CRM_SMS_Page_Provider extends CRM_Core_Page_Basic { return 'CRM_SMS_BAO_Provider'; } - /** - * Get action Links. - * - * @return array - * (reference) of action links - */ - public function &links() { - if (!(self::$_links)) { - self::$_links = array( - CRM_Core_Action::UPDATE => array( - 'name' => ts('Edit'), - 'url' => 'civicrm/admin/sms/provider', - 'qs' => 'action=update&id=%%id%%&reset=1', - 'title' => ts('Edit Provider'), - ), - CRM_Core_Action::DELETE => array( - 'name' => ts('Delete'), - 'url' => 'civicrm/admin/sms/provider', - 'qs' => 'action=delete&id=%%id%%', - 'title' => ts('Delete Provider'), - ), - CRM_Core_Action::ENABLE => array( - 'name' => ts('Enable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Enable Provider'), - ), - CRM_Core_Action::DISABLE => array( - 'name' => ts('Disable'), - 'ref' => 'crm-enable-disable', - 'title' => ts('Disable Provider'), - ), - ); - } - return self::$_links; - } - /** * Run the page. * @@ -85,14 +42,14 @@ class CRM_SMS_Page_Provider extends CRM_Core_Page_Basic { public function run() { // set title and breadcrumb CRM_Utils_System::setTitle(ts('Settings - SMS Provider')); - $breadCrumb = array( - array( + $breadCrumb = [ + [ 'title' => ts('SMS Provider'), 'url' => CRM_Utils_System::url('civicrm/admin/sms/provider', 'reset=1' ), - ), - ); + ], + ]; CRM_Utils_System::appendBreadCrumb($breadCrumb); $this->_id = CRM_Utils_Request::retrieve('id', 'String', @@ -127,7 +84,7 @@ class CRM_SMS_Page_Provider extends CRM_Core_Page_Basic { $provider['api_type'] = $apiTypes[$provider['api_type']]; $provider['action'] = CRM_Core_Action::formLink(self::links(), $action, - array('id' => $provider['id']), + ['id' => $provider['id']], ts('more'), FALSE, 'sms.provider.row', diff --git a/civicrm/CRM/SMS/Provider.php b/civicrm/CRM/SMS/Provider.php index 9cb40538cd..b711f2afb8 100644 --- a/civicrm/CRM/SMS/Provider.php +++ b/civicrm/CRM/SMS/Provider.php @@ -98,7 +98,7 @@ abstract class CRM_SMS_Provider { $sql = " SELECT scheduled_id FROM civicrm_mailing m INNER JOIN civicrm_mailing_job mj ON mj.mailing_id = m.id AND mj.id = %1"; - $sourceContactID = CRM_Core_DAO::singleValueQuery($sql, array(1 => array($jobID, 'Integer'))); + $sourceContactID = CRM_Core_DAO::singleValueQuery($sql, [1 => [$jobID, 'Integer']]); } elseif ($userID) { $sourceContactID = $userID; @@ -116,14 +116,14 @@ INNER JOIN civicrm_mailing_job mj ON mj.mailing_id = m.id AND mj.id = %1"; } // note: lets not pass status here, assuming status will be updated by callback - $activityParams = array( + $activityParams = [ 'source_contact_id' => $sourceContactID, 'target_contact_id' => $headers['contact_id'], 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'SMS delivery'), 'activity_date_time' => date('YmdHis'), 'details' => $message, 'result' => $apiMsgID, - ); + ]; return CRM_Activity_BAO_Activity::create($activityParams); } @@ -170,9 +170,9 @@ INNER JOIN civicrm_mailing_job mj ON mj.mailing_id = m.id AND mj.id = %1"; if (!$message->fromContactID) { // find sender by phone number if $fromContactID not set by hook $formatFrom = '%' . $this->formatPhone($this->stripPhone($message->from), $like, "like"); - $message->fromContactID = CRM_Core_DAO::singleValueQuery("SELECT contact_id FROM civicrm_phone JOIN civicrm_contact ON civicrm_contact.id = civicrm_phone.contact_id WHERE !civicrm_contact.is_deleted AND phone LIKE %1", array( - 1 => array($formatFrom, 'String'), - )); + $message->fromContactID = CRM_Core_DAO::singleValueQuery("SELECT contact_id FROM civicrm_phone JOIN civicrm_contact ON civicrm_contact.id = civicrm_phone.contact_id WHERE !civicrm_contact.is_deleted AND phone LIKE %1", [ + 1 => [$formatFrom, 'String'], + ]); } if (!$message->fromContactID) { @@ -184,22 +184,22 @@ INNER JOIN civicrm_mailing_job mj ON mj.mailing_id = m.id AND mj.id = %1"; $phoneloc = array_search('Home', $locationTypes); $phonetype = array_search('Mobile', $phoneTypes); $stripFrom = $this->stripPhone($message->from); - $contactparams = array( + $contactparams = [ 'contact_type' => 'Individual', - 'email' => array( - 1 => array( + 'email' => [ + 1 => [ 'location_type_id' => $phoneloc, 'email' => $stripFrom . '@mobile.sms', - ), - ), - 'phone' => array( - 1 => array( + ], + ], + 'phone' => [ + 1 => [ 'phone_type_id' => $phonetype, 'location_type_id' => $phoneloc, 'phone' => $stripFrom, - ), - ), - ); + ], + ], + ]; $fromContact = CRM_Contact_BAO_Contact::create($contactparams, FALSE, TRUE, FALSE); $message->fromContactID = $fromContact->id; } @@ -207,9 +207,9 @@ INNER JOIN civicrm_mailing_job mj ON mj.mailing_id = m.id AND mj.id = %1"; if (!$message->toContactID) { // find recipient if $toContactID not set by hook if ($message->to) { - $message->toContactID = CRM_Core_DAO::singleValueQuery("SELECT contact_id FROM civicrm_phone JOIN civicrm_contact ON civicrm_contact.id = civicrm_phone.contact_id WHERE !civicrm_contact.is_deleted AND phone LIKE %1", array( - 1 => array('%' . $message->to, 'String'), - )); + $message->toContactID = CRM_Core_DAO::singleValueQuery("SELECT contact_id FROM civicrm_phone JOIN civicrm_contact ON civicrm_contact.id = civicrm_phone.contact_id WHERE !civicrm_contact.is_deleted AND phone LIKE %1", [ + 1 => ['%' . $message->to, 'String'], + ]); } else { $message->toContactID = $message->fromContactID; @@ -218,7 +218,7 @@ INNER JOIN civicrm_mailing_job mj ON mj.mailing_id = m.id AND mj.id = %1"; if ($message->fromContactID) { // note: lets not pass status here, assuming status will be updated by callback - $activityParams = array( + $activityParams = [ 'source_contact_id' => $message->toContactID, 'target_contact_id' => $message->fromContactID, 'activity_type_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_type_id', 'Inbound SMS'), @@ -226,7 +226,7 @@ INNER JOIN civicrm_mailing_job mj ON mj.mailing_id = m.id AND mj.id = %1"; 'status_id' => CRM_Core_PseudoConstant::getKey('CRM_Activity_BAO_Activity', 'activity_status_id', 'Completed'), 'details' => $message->body, 'phone_number' => $message->from, - ); + ]; if ($message->trackID) { $activityParams['result'] = CRM_Utils_Type::escape($message->trackID, 'String'); } diff --git a/civicrm/CRM/UF/Form/AdvanceSetting.php b/civicrm/CRM/UF/Form/AdvanceSetting.php index 56a247a916..bacdbf7683 100644 --- a/civicrm/CRM/UF/Form/AdvanceSetting.php +++ b/civicrm/CRM/UF/Form/AdvanceSetting.php @@ -34,10 +34,10 @@ class CRM_UF_Form_AdvanceSetting extends CRM_UF_Form_Group { // should we allow updates on a exisitng contact $form->addRadio('is_update_dupe', ts('What to do upon duplicate match'), [ts('Issue warning and do not save'), ts('Update the matching contact'), ts('Allow duplicate contact to be created')]); // we do not have any url checks to allow relative urls - $form->addElement('text', 'post_URL', ts('Redirect URL'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_UFGroup', 'post_URL')); + $form->addElement('text', 'post_url', ts('Redirect URL'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_UFGroup', 'post_url')); $form->add('advcheckbox', 'add_cancel_button', ts('Include Cancel Button?')); - $form->addElement('text', 'cancel_URL', ts('Cancel Redirect URL'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_UFGroup', 'cancel_URL')); + $form->addElement('text', 'cancel_url', ts('Cancel Redirect URL'), CRM_Core_DAO::getAttribute('CRM_Core_DAO_UFGroup', 'cancel_url')); // add select for groups $group = ['' => ts('- select -')] + $form->_group; diff --git a/civicrm/CRM/UF/Form/Field.php b/civicrm/CRM/UF/Form/Field.php index 03d583fa90..5e9e87a229 100644 --- a/civicrm/CRM/UF/Form/Field.php +++ b/civicrm/CRM/UF/Form/Field.php @@ -25,7 +25,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form { * * @var int */ - protected $_gid; + public $_gid; /** * The field id, used when editing the field. @@ -551,9 +551,6 @@ class CRM_UF_Form_Field extends CRM_Core_Form { $this->setMessageIfCountryNotAboveState($fieldName, CRM_Utils_Array::value('location_type_id', $apiFormattedParams), $apiFormattedParams['weight'], $apiFormattedParams['uf_group_id']); - CRM_Core_Session::setStatus(ts('Your CiviCRM Profile Field \'%1\' has been saved to \'%2\'.', - [1 => $name, 2 => $this->_title] - ), ts('Profile Field Saved'), 'success'); } $buttonName = $this->controller->getButtonName(); @@ -647,7 +644,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form { $params = ['id' => $customField->custom_group_id]; $customGroup = []; CRM_Core_BAO_CustomGroup::retrieve($params, $customGroup); - if (($fieldType != CRM_Utils_Array::value('extends', $customGroup)) || empty($customGroup['extends_entity_column_value'])) { + if (($fieldType != ($customGroup['extends'] ?? NULL)) || empty($customGroup['extends_entity_column_value'])) { return $errors; } @@ -792,7 +789,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form { //adding group field, email field should be present in the group //fixed for issue CRM-2861 & CRM-4153 if (CRM_Core_BAO_UFGroup::isProfileDoubleOptin()) { - if (CRM_Utils_Array::value(1, $fields['field_name']) == 'group') { + if (($fields['field_name'][1] ?? NULL) == 'group') { $dao = new CRM_Core_BAO_UFField(); $dao->uf_group_id = $fields['group_id']; $dao->find(); @@ -961,7 +958,7 @@ class CRM_UF_Form_Field extends CRM_Core_Form { } } elseif ( - CRM_Utils_Array::value(1, $fields['field_name']) == 'contact_sub_type' && + ($fields['field_name'][1] ?? NULL) == 'contact_sub_type' && !in_array($profileType, CRM_Contact_BAO_ContactType::basicTypes(TRUE), TRUE) && !in_array($profileType, CRM_Contact_BAO_ContactType::subTypes(), TRUE) ) { diff --git a/civicrm/CRM/UF/Form/Group.php b/civicrm/CRM/UF/Form/Group.php index 881b1ceedf..37d340ebf9 100644 --- a/civicrm/CRM/UF/Form/Group.php +++ b/civicrm/CRM/UF/Form/Group.php @@ -84,6 +84,7 @@ class CRM_UF_Form_Group extends CRM_Core_Form { * Set variables up before form is built. */ public function preProcess() { + $this->preventAjaxSubmit(); // current form id $this->_id = $this->get('id'); if (!$this->_id) { @@ -252,8 +253,8 @@ class CRM_UF_Form_Group extends CRM_Core_Form { $showAdvanced = 0; $advFields = [ 'group', - 'post_URL', - 'cancel_URL', + 'post_url', + 'cancel_url', 'add_captcha', 'is_map', 'is_uf_link', @@ -350,6 +351,7 @@ class CRM_UF_Form_Group extends CRM_Core_Form { // create uf group $ufGroup = CRM_Core_BAO_UFGroup::add($params); + $this->_id = $ufGroup->id; if (!empty($params['is_active'])) { //make entry in uf join table diff --git a/civicrm/CRM/Upgrade/Incremental/Base.php b/civicrm/CRM/Upgrade/Incremental/Base.php index 81214edd06..68e04644f7 100644 --- a/civicrm/CRM/Upgrade/Incremental/Base.php +++ b/civicrm/CRM/Upgrade/Incremental/Base.php @@ -563,6 +563,18 @@ class CRM_Upgrade_Incremental_Base { return TRUE; } + /** + * Drop a table if it exists. + * + * @param CRM_Queue_TaskContext $ctx + * @param string $tableName + * @return bool + */ + public static function dropTable($ctx, $tableName) { + CRM_Core_BAO_SchemaHandler::dropTable($tableName); + return TRUE; + } + /** * Drop a table... but only if it's empty. * diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php index 2c4a34dd0c..0b31540361 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveFiftyOne.php @@ -106,9 +106,9 @@ class CRM_Upgrade_Incremental_php_FiveFiftyOne extends CRM_Upgrade_Incremental_B } $fieldMap[ts('Soft Credit')] = 'soft_credit'; $fieldMap[ts('Pledge Payment')] = 'pledge_payment'; - $fieldMap[ts(ts('Pledge ID'))] = 'pledge_id'; - $fieldMap[ts(ts('Financial Type'))] = 'financial_type_id'; - $fieldMap[ts(ts('Payment Method'))] = 'payment_instrument_id'; + $fieldMap[ts('Pledge ID')] = 'pledge_id'; + $fieldMap[ts('Financial Type')] = 'financial_type_id'; + $fieldMap[ts('Payment Method')] = 'payment_instrument_id'; $fieldMap[ts('- do not import -')] = 'do_not_import'; // Membership fields diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixteen.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixteen.php index 90ff9e2c78..b11d07ee6a 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveSixteen.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixteen.php @@ -20,7 +20,7 @@ class CRM_Upgrade_Incremental_php_FiveSixteen extends CRM_Upgrade_Incremental_Ba * @param string $rev */ public function upgrade_5_16_alpha1($rev) { - $this->addTask(ts('Upgrade DB to %1: SQL', array(1 => $rev)), 'runSql', $rev); + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); $this->addTask('Update smart groups to rename filters on contribution_date to receive_date', 'updateSmartGroups', [ 'renameField' => [ ['old' => 'contribution_date', 'new' => 'receive_date'], diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyFour.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyFour.php new file mode 100644 index 0000000000..6c7492f65f --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyFour.php @@ -0,0 +1,117 @@ +<?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.64.x series. + * + * Each minor version in the series is handled by either a `5.64.x.mysql.tpl` file, + * or a function in this class named `upgrade_5_64_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_FiveSixtyFour extends CRM_Upgrade_Incremental_Base { + + /** + * How many activities before the queries used here are slow. Guessing. + */ + const ACTIVITY_THRESHOLD = 1000000; + + public function setPreUpgradeMessage(&$preUpgradeMessage, $rev, $currentVer = NULL) { + if ($rev === '5.64.beta1') { + // The ON DELETE constraint drop+recreate can be slow, so tell people what to do at their convenience if db is large. + if (CRM_Core_DAO::singleValueQuery('SELECT MAX(id) FROM civicrm_activity') >= self::ACTIVITY_THRESHOLD) { + $preUpgradeMessage .= '<p>' . ts('<strong>ACTION REQUIRED</strong>: You will need to apply a <strong>manual update</strong> because your civicrm_activity table is large and the update will run slowly. Please read about <a %1>how to apply this update manually</a>.', [1 => 'target="_blank" href="https://civicrm.org/redirect/activities-parentid-cascade"']) . '</p>'; + } + } + } + + /** + * Upgrade step; adds tasks including 'runSql'. + * + * @param string $rev + * The version number matching this function name + */ + public function upgrade_5_64_alpha1($rev): void { + $this->addTask('Add priority column onto ACL table', 'addColumn', 'civicrm_acl', 'priority', 'int NOT NULL DEFAULT 0'); + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + $this->addTask('Drop unused civicrm_action_mapping table', 'dropTable', 'civicrm_action_mapping'); + $this->addTask('Update post_URL/cancel_URL in logging tables', 'updateLogging'); + $this->addTask('Add in Everybody ACL Role option value', 'addEveryBodyAclOptionValue'); + $this->addTask('Fix double json encoding of accepted_credit_cards field in payment processor table', 'fixDoubleEscapingPaymentProcessorCreditCards'); + } + + /** + * Upgrade step; adds tasks including 'runSql'. + * + * @param string $rev + * The version number matching this function name + */ + public function upgrade_5_64_beta1($rev): void { + $this->addTask(ts('Upgrade DB to %1: SQL', [1 => $rev]), 'runSql', $rev); + if (CRM_Core_DAO::singleValueQuery('SELECT MAX(id) FROM civicrm_activity') < self::ACTIVITY_THRESHOLD) { + $this->addTask('Fix dangerous delete cascade', 'fixDeleteCascade'); + } + } + + public static function updateLogging($ctx): bool { + if (\Civi::settings()->get('logging')) { + $dsn = defined('CIVICRM_LOGGING_DSN') ? CRM_Utils_SQL::autoSwitchDSN(CIVICRM_LOGGING_DSN) : CRM_Utils_SQL::autoSwitchDSN(CIVICRM_DSN); + $dsn = DB::parseDSN($dsn); + $table = '`' . $dsn['database'] . '`.`log_civicrm_uf_group`'; + CRM_Core_DAO::executeQuery("ALTER TABLE $table CHANGE `post_URL` `post_url` varchar(255) DEFAULT NULL COMMENT 'Redirect to URL on submit.', +CHANGE `cancel_URL` `cancel_url` varchar(255) DEFAULT NULL COMMENT 'Redirect to URL when Cancel button clicked.'"); + } + return TRUE; + } + + public static function addEverybodyAclOptionValue($ctx): bool { + \CRM_Core_BAO_OptionValue::ensureOptionValueExists([ + 'label' => 'Everybody', + 'value' => 0, + 'option_group_id' => 'acl_role', + 'is_active' => 1, + 'name' => 'Everybody', + 'is_reserved' => 1, + ]); + return TRUE; + } + + /** + * Fix any double json encoding in Payment Processor accepted_credit_cards field + */ + public static function fixDoubleEscapingPaymentProcessorCreditCards() { + $paymentProcessors = CRM_Core_DAO::executeQuery("SELECT id, accepted_credit_cards FROM civicrm_payment_processor"); + while ($paymentProcessors->fetch()) { + if (!empty($paymentProcessors->accepted_credit_cards)) { + $accepted_credit_cards = json_decode($paymentProcessors->accepted_credit_cards, TRUE); + if (is_numeric(array_keys($accepted_credit_cards)[0])) { + CRM_Core_DAO::executeQuery("UPDATE civicrm_payment_processor SET accepted_credit_cards = %1 WHERE id = %2", [ + 1 => [$accepted_credit_cards[0], 'String'], + 2 => [$paymentProcessors->id, 'Positive'], + ]); + } + } + } + return TRUE; + } + + /** + * Fix DELETE CASCADE that can lead to loss of data. + */ + public static function fixDeleteCascade($ctx): bool { + CRM_Core_BAO_SchemaHandler::safeRemoveFK('civicrm_activity', 'FK_civicrm_activity_parent_id'); + CRM_Core_DAO::executeQuery('ALTER TABLE `civicrm_activity` ADD CONSTRAINT `FK_civicrm_activity_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity` (`id`) ON DELETE SET NULL'); + return TRUE; + } + +} diff --git a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyThree.php b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyThree.php index e7825cfc53..d3587657ae 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyThree.php +++ b/civicrm/CRM/Upgrade/Incremental/php/FiveSixtyThree.php @@ -50,35 +50,4 @@ class CRM_Upgrade_Incremental_php_FiveSixtyThree extends CRM_Upgrade_Incremental $this->addTask('Make ContributionPage.frontend_title required', 'alterColumn', 'civicrm_contribution_page', 'frontend_title', "varchar(255) NOT NULL COMMENT 'Contribution Page Public title'", TRUE); } - /** - * Upgrade step; adds tasks including 'runSql'. - * - * @param string $rev - * The version number matching this function name - * - * @throws \Civi\Core\Exception\DBQueryException - */ - public function upgrade_5_63_1(string $rev): void { - $this->addTask('Fix double json encoding of accepted_credit_cards field in payment processor table', 'fixDoubleEscapingPaymentProcessorCreditCards'); - } - - /** - * Fix any double json encoding in Payment Processor accepted_credit_cards field - */ - public static function fixDoubleEscapingPaymentProcessorCreditCards() { - $paymentProcessors = CRM_Core_DAO::executeQuery("SELECT id, accepted_credit_cards FROM civicrm_payment_processor"); - while ($paymentProcessors->fetch()) { - if (!empty($paymentProcessors->accepted_credit_cards)) { - $accepted_credit_cards = json_decode($paymentProcessors->accepted_credit_cards, TRUE); - if (is_numeric(array_keys($accepted_credit_cards)[0])) { - CRM_Core_DAO::executeQuery("UPDATE civicrm_payment_processor SET accepted_credit_cards = %1 WHERE id = %2", [ - 1 => [$accepted_credit_cards[0], 'String'], - 2 => [$paymentProcessors->id, 'Positive'], - ]); - } - } - } - return TRUE; - } - } diff --git a/civicrm/CRM/Upgrade/Incremental/php/TimezoneRevertTrait.php b/civicrm/CRM/Upgrade/Incremental/php/TimezoneRevertTrait.php index 418f7d3c49..c4c7945374 100644 --- a/civicrm/CRM/Upgrade/Incremental/php/TimezoneRevertTrait.php +++ b/civicrm/CRM/Upgrade/Incremental/php/TimezoneRevertTrait.php @@ -277,7 +277,7 @@ trait CRM_Upgrade_Incremental_php_TimezoneRevertTrait { 1 => ['upgrade%' . $highVersion . '.upgrade', 'String'], ]); $highLogId = $highLog->fetch() ? $highLog->id : CRM_Core_DAO::singleValueQuery('SELECT MAX(id) FROM civicrm_log'); - return array($lowLogId, $highLogId); + return [$lowLogId, $highLogId]; } /** diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.64.alpha1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.64.alpha1.mysql.tpl new file mode 100644 index 0000000000..d44f0b8c4f --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.64.alpha1.mysql.tpl @@ -0,0 +1,17 @@ +{* file to handle db changes in 5.64.alpha1 during upgrade *} + +UPDATE `civicrm_acl` SET `priority` = `id`; + +-- Remove obsolete "Basic ACLs" +DELETE FROM civicrm_acl +WHERE object_table NOT IN ('civicrm_group', 'civicrm_saved_search', 'civicrm_uf_group', 'civicrm_custom_group', 'civicrm_event'); + +-- Fix wrong table name +UPDATE `civicrm_acl` SET `object_table` = 'civicrm_group' WHERE `object_table` = 'civicrm_saved_search'; + +-- fix mis-casing of field name. Note the php function doesn't permit the name change hence it is here +-- but field is not localised. +ALTER TABLE civicrm_uf_group +CHANGE `post_URL` `post_url` varchar(255) DEFAULT NULL COMMENT 'Redirect to URL on submit.', +CHANGE `cancel_URL` `cancel_url` varchar(255) DEFAULT NULL COMMENT 'Redirect to URL when Cancel button clicked.' +; diff --git a/civicrm/CRM/Upgrade/Incremental/sql/5.64.beta1.mysql.tpl b/civicrm/CRM/Upgrade/Incremental/sql/5.64.beta1.mysql.tpl new file mode 100644 index 0000000000..543a06eb41 --- /dev/null +++ b/civicrm/CRM/Upgrade/Incremental/sql/5.64.beta1.mysql.tpl @@ -0,0 +1 @@ +{* file to handle db changes in 5.64.beta1 during upgrade *} diff --git a/civicrm/CRM/Utils/Address.php b/civicrm/CRM/Utils/Address.php index 5436f0534d..62c5b2a88f 100644 --- a/civicrm/CRM/Utils/Address.php +++ b/civicrm/CRM/Utils/Address.php @@ -47,7 +47,6 @@ class CRM_Utils_Address { $mailing = FALSE, $tokenFields = NULL ) { - static $config = NULL; $mailing = FALSE; if (!$format) { @@ -167,12 +166,10 @@ class CRM_Utils_Address { 'contact.world_region' => "<span class=\"region\">" . $fields['world_region'] . "</span>", ]; - // erase all empty ones, so we dont get blank lines + // Erase all empty ones, so we don't get blank lines foreach (array_keys($replacements) as $key) { $exactKey = substr($key, 0, 8) == 'contact.' ? substr($key, 8) : $key; - if ($key != 'contact.postal_code' && - CRM_Utils_Array::value($exactKey, $fields) == NULL - ) { + if ($key !== 'contact.postal_code' && empty($fields[$exactKey])) { $replacements[$key] = ''; } } @@ -244,7 +241,6 @@ class CRM_Utils_Address { else { // remove \n from each line and only add at the end // this hack solves formatting issue, when we convert nl2br - $lines = []; $count = 1; $finalFormatted = NULL; $formattedArray = explode("\n", $formatted); @@ -276,12 +272,12 @@ class CRM_Utils_Address { * * @param array $fields * The address fields. - * @param string $format - * The desired address format. + * @param null $format + * Unused var. * @param bool $microformat - * If true indicates, the address to be built in hcard-microformat standard. + * Unused var. * @param bool $mailing - * If true indicates, the call has been made from mailing label. + * Unused var. * @param null $tokenFields * * @return string @@ -295,11 +291,7 @@ class CRM_Utils_Address { $mailing = FALSE, $tokenFields = NULL ) { - static $config = NULL; - - $format = Civi::settings()->get('mailing_format'); - - $formatted = $format; + $formatted = Civi::settings()->get('mailing_format'); $fullPostalCode = $fields['postal_code'] ?? NULL; if (!empty($fields['postal_code_suffix'])) { diff --git a/civicrm/CRM/Utils/Cache/Redis.php b/civicrm/CRM/Utils/Cache/Redis.php index 87c7361139..4461eebbf7 100644 --- a/civicrm/CRM/Utils/Cache/Redis.php +++ b/civicrm/CRM/Utils/Cache/Redis.php @@ -95,6 +95,9 @@ class CRM_Utils_Cache_Redis implements CRM_Utils_Cache_Interface { if (isset($config['prefix'])) { $this->_prefix = $config['prefix']; } + if (defined('CIVICRM_DEPLOY_ID')) { + $this->_prefix = CIVICRM_DEPLOY_ID . '_' . $this->_prefix; + } $this->_cache = self::connect($config); } diff --git a/civicrm/CRM/Utils/Check/Component.php b/civicrm/CRM/Utils/Check/Component.php index f09877f284..79cecd1be7 100644 --- a/civicrm/CRM/Utils/Check/Component.php +++ b/civicrm/CRM/Utils/Check/Component.php @@ -133,9 +133,9 @@ abstract class CRM_Utils_Check_Component { $fileExists = FALSE; try { $guzzleClient = new GuzzleHttp\Client(); - $guzzleResponse = $guzzleClient->request('GET', $url, array( + $guzzleResponse = $guzzleClient->request('GET', $url, [ 'timeout' => $timeoutOverride, - )); + ]); $fileExists = ($guzzleResponse->getStatusCode() == 200); } catch (Exception $e) { diff --git a/civicrm/CRM/Utils/Check/Component/AddressParsing.php b/civicrm/CRM/Utils/Check/Component/AddressParsing.php index 0d42a1771c..02d63d94d9 100644 --- a/civicrm/CRM/Utils/Check/Component/AddressParsing.php +++ b/civicrm/CRM/Utils/Check/Component/AddressParsing.php @@ -31,16 +31,11 @@ class CRM_Utils_Check_Component_AddressParsing extends CRM_Utils_Check_Component if ($addressOptions['street_address_parsing']) { if (!CRM_Core_BAO_Address::isSupportedParsingLocale()) { $config = CRM_Core_Config::singleton(); + $url_address = CRM_Utils_System::url('civicrm/admin/setting/preferences/address', 'reset=1'); + $url_localization = CRM_Utils_System::url('civicrm/admin/setting/localization', 'reset=1'); $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts( - '<a href=' . - CRM_Utils_System::url('civicrm/admin/setting/preferences/address', 'reset=1') . - '">Street address parsing</a> is enabled but not supported by <a href="' . - CRM_Utils_System::url('civicrm/admin/setting/localization', 'reset=1') . - '">your locale</a> (%1).', - [1 => $config->lcMessages] - ), + ts('<a %1>Street address parsing</a> is enabled but not supported by <a %2>your language settings</a> (%3).', [1 => "href='$url_address'", 2 => "href='$url_localization'", 3 => $config->lcMessages]), ts('Street address parsing'), \Psr\Log\LogLevel::WARNING, 'fa-address-card' diff --git a/civicrm/CRM/Utils/Check/Component/Case.php b/civicrm/CRM/Utils/Check/Component/Case.php index d6b4c11488..bd9f757c35 100644 --- a/civicrm/CRM/Utils/Check/Component/Case.php +++ b/civicrm/CRM/Utils/Check/Component/Case.php @@ -361,17 +361,15 @@ class CRM_Utils_Check_Component_Case extends CRM_Utils_Check_Component { } $messages[] = new CRM_Utils_Check_Message( __FUNCTION__ . "missingroles", - ts("<p>The following roles listed in your case type definitions do not match any relationship type defined in the system: <em>%1</em>.</p>" - . "<p>This might be because of a mismatch if you are using external xml files to manage case types. If using xml files, then use either the name_a_b or name_b_a value from the following table. (Out of the box you would use name_b_a, which lists them on the case from the client perspective.) If you are not using xml files, you can edit your case types at Administer - CiviCase - Case Types.</p>" - . "<table> - <tr><th>ID</th><th>name_a_b</th><th>name_b_a</th><th>label_a_b</th><th>label_b_a</th></tr>" + '<p>' . ts("The following roles listed in your case type definitions do not match any relationship type defined in the system: <em>%1</em>.", [1 => htmlspecialchars(implode(', ', $missing))]) . '</p>' + . "<p>" . ts("This might be because of a mismatch if you are using external xml files to manage case types. If using xml files, then use either the name_a_b or name_b_a value from the following table. (Out of the box you would use name_b_a, which lists them on the case from the client perspective.) If you are not using xml files, you can edit your case types at Administer - CiviCase - Case Types.") . '</p>' + . '<table>' + . '<tr><th>ID</th><th>name_a_b</th><th>name_b_a</th><th>label_a_b</th><th>label_b_a</th></tr>' . implode("\n", $tableRows) - . "</table>", [ - 1 => htmlspecialchars(implode(', ', $missing)), - ]) . - '<br /><a href="' . CRM_Utils_System::docURL2('user/case-management/what-you-need-to-know#missing-roles', TRUE) . '">' . - ts('Read more about this warning') . - '</a>', + . '</table>' + . '<br /><a href="' . CRM_Utils_System::docURL2('user/case-management/what-you-need-to-know#missing-roles', TRUE) . '">' + . ts('Read more about this warning') + . '</a>', ts('Missing Roles'), \Psr\Log\LogLevel::ERROR, 'fa-exclamation' diff --git a/civicrm/CRM/Utils/Check/Component/PriceFields.php b/civicrm/CRM/Utils/Check/Component/PriceFields.php index 03816c98fe..b73cc48393 100644 --- a/civicrm/CRM/Utils/Check/Component/PriceFields.php +++ b/civicrm/CRM/Utils/Check/Component/PriceFields.php @@ -39,17 +39,17 @@ class CRM_Utils_Check_Component_PriceFields extends CRM_Utils_Check_Component { 'action' => 'browse', 'sid' => $dao->ps_id, ]); - $html .= "<tr><td>$dao->ps_title</td><td>$dao->psf_label</td><td><a href='$url'>View Price Set Fields</a></td></tr>"; + $html .= "<tr><td>$dao->ps_title</td><td>$dao->psf_label</td><td><a href='$url'>" . ts('View Price Set Fields') . '</a></td></tr>'; } if ($count > 0) { - $msg = "<p>the following Price Set Fields use disabled or invalid financial types and need to be fixed if they are to still be used.<p> - <p><table><thead><tr><th>Price Set</th><th>Price Set Field</th><th>Action Link</th> - </tr></thead><tbody> - $html - </tbody></table></p>"; + $msg = '<p>' . ts('The following Price Set Fields use disabled or invalid financial types and need to be fixed if they are to still be used.') . '<p>' + . '<p><table><thead><tr><th>' . ts('Price Set') . '</th><th>' . ts('Price Set Field') . '</th><th>' . ts('Action') . '</th>' + . '</tr></thead><tbody>' + . $html + . '</tbody></table></p>'; $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts($msg), + $msg, ts('Invalid Price Fields'), \Psr\Log\LogLevel::WARNING, 'fa-lock' diff --git a/civicrm/CRM/Utils/Check/Component/Schema.php b/civicrm/CRM/Utils/Check/Component/Schema.php index da26ccc5e2..ac67ebb449 100644 --- a/civicrm/CRM/Utils/Check/Component/Schema.php +++ b/civicrm/CRM/Utils/Check/Component/Schema.php @@ -38,14 +38,14 @@ class CRM_Utils_Check_Component_Schema extends CRM_Utils_Check_Component { $html .= "<tr><td>{$tableName}</td><td>{$index['name']}</td><td>$fields</td>"; } } - $message = "<p>The following tables have missing indices. Click 'Update Indices' button to create them.<p> - <p><table><thead><tr><th>Table Name</th><th>Key Name</th><th>Expected Indices</th> - </tr></thead><tbody> - $html - </tbody></table></p>"; + $message = '<p>' . ts("The following tables have missing indices. Click 'Update Indices' button to create them.") . '<p>' + . '<p><table><thead><tr><th>' . ts('Table Name') . '</th><th>' . ts('Key Name') . '</th><th>' . ts('Expected Indices') . '</th>' + . '</tr></thead><tbody>' + . $html + . '</tbody></table></p>'; $msg = new CRM_Utils_Check_Message( __FUNCTION__, - ts($message), + $message, ts('Performance warning: Missing indices'), \Psr\Log\LogLevel::WARNING, 'fa-server' diff --git a/civicrm/CRM/Utils/Check/Component/Security.php b/civicrm/CRM/Utils/Check/Component/Security.php index f4852db380..90510c8e62 100644 --- a/civicrm/CRM/Utils/Check/Component/Security.php +++ b/civicrm/CRM/Utils/Check/Component/Security.php @@ -75,12 +75,12 @@ class CRM_Utils_Check_Component_Security extends CRM_Utils_Check_Component { $log_url = implode($filePathMarker, $url); if ($this->fileExists($log_url)) { $docs_url = $this->createDocUrl('the-log-file-should-not-be-accessible'); - $msg = 'The <a href="%1">CiviCRM debug log</a> should not be downloadable.' - . '<br />' . - '<a href="%2">Read more about this warning</a>'; + $msg = ts('The <a %1>CiviCRM debug log</a> should not be downloadable.', [1 => "href='$log_url'"]) + . '<br />' + . '<a href="' . $docs_url . '">' . ts('Read more about this warning') . '</a>'; $messages[] = new CRM_Utils_Check_Message( __FUNCTION__, - ts($msg, [1 => $log_url, 2 => $docs_url]), + $msg, ts('Security Warning'), \Psr\Log\LogLevel::WARNING, 'fa-lock' diff --git a/civicrm/CRM/Utils/Date.php b/civicrm/CRM/Utils/Date.php index 409833e470..0159874e7d 100644 --- a/civicrm/CRM/Utils/Date.php +++ b/civicrm/CRM/Utils/Date.php @@ -83,20 +83,20 @@ class CRM_Utils_Date { $date['d'] = sprintf('%02d', $date['d']); $time = ''; - if (CRM_Utils_Array::value('H', $date) != NULL || - CRM_Utils_Array::value('h', $date) != NULL || - CRM_Utils_Array::value('i', $date) != NULL || - CRM_Utils_Array::value('s', $date) != NULL + if (!empty($date['H']) || + !empty($date['h']) || + !empty($date['i']) || + !empty($date['s']) ) { // we have time too.. if (!empty($date['h'])) { - if (CRM_Utils_Array::value('A', $date) == 'PM' or CRM_Utils_Array::value('a', $date) == 'pm') { + if (($date['A'] ?? NULL) == 'PM' or ($date['a'] ?? NULL) == 'pm') { if ($date['h'] != 12) { $date['h'] = $date['h'] + 12; } } - if ((CRM_Utils_Array::value('A', $date) == 'AM' or CRM_Utils_Array::value('a', $date) == 'am') && - CRM_Utils_Array::value('h', $date) == 12 + if ((($date['A'] ?? NULL) == 'AM' or ($date['a'] ?? NULL) == 'am') && + ($date['h'] ?? NULL) == 12 ) { $date['h'] = '00'; } diff --git a/civicrm/CRM/Utils/Hook.php b/civicrm/CRM/Utils/Hook.php index 4754078cb8..5e6005b77b 100644 --- a/civicrm/CRM/Utils/Hook.php +++ b/civicrm/CRM/Utils/Hook.php @@ -598,9 +598,7 @@ abstract class CRM_Utils_Hook { * @param int $contactID * User contactID for whom the check is made. * @param string $tableName - * Table name of group, e.g. `civicrm_uf_group` or `civicrm_custom_group`. - * Note: for some weird reason when this hook is called for contact groups, this - * value will be `civicrm_saved_search` instead of `civicrm_group` as you'd expect. + * Table name of group, e.g. 'civicrm_group' or 'civicrm_uf_group' or 'civicrm_custom_group'. * @param array $allGroups * All groups from the above table, keyed by id. * @param int[] $currentGroups @@ -611,6 +609,17 @@ abstract class CRM_Utils_Hook { */ public static function aclGroup($type, $contactID, $tableName, &$allGroups, &$currentGroups) { $null = NULL; + // Legacy support for hooks that still expect 'civicrm_group' to be 'civicrm_saved_search' + // This was changed in 5.64 + if ($tableName === 'civicrm_group') { + $initialValue = $currentGroups; + $legacyTableName = 'civicrm_saved_search'; + self::singleton() + ->invoke(['type', 'contactID', 'tableName', 'allGroups', 'currentGroups'], $type, $contactID, $legacyTableName, $allGroups, $currentGroups, $null, 'civicrm_aclGroup'); + if ($initialValue != $currentGroups) { + CRM_Core_Error::deprecatedWarning('Since 5.64 hook_civicrm_aclGroup passes "civicrm_group" instead of "civicrm_saved_search" for the $tableName when referring to Groups. Hook listeners should be updated.'); + } + } return self::singleton() ->invoke(['type', 'contactID', 'tableName', 'allGroups', 'currentGroups'], $type, $contactID, $tableName, $allGroups, $currentGroups, $null, 'civicrm_aclGroup'); } @@ -1768,6 +1777,38 @@ abstract class CRM_Utils_Hook { ); } + /** + * Build the group contact cache for the relevant group. + * + * This hook allows a listener to specify the sql to be used to build a group in + * the group contact cache. + * + * If sql is altered then the api / bao query methods of building the cache will not + * be called. + * + * An example of the sql it might be set to is: + * + * SELECT 7 AS group_id, contact_a.id as contact_id + * FROM civicrm_contact contact_a + * WHERE contact_a.contact_type = 'Household' AND contact_a.household_name LIKE '%' AND ( 1 ) ORDER BY contact_a.id + * AND contact_a.id + * NOT IN ( + * SELECT contact_id FROM civicrm_group_contact + * WHERE civicrm_group_contact.status = 'Removed' + * AND civicrm_group_contact.group_id = 7 ) + * + * @param array $savedSearch + * @param int $groupID + * @param string $sql + */ + public static function buildGroupContactCache(array $savedSearch, int $groupID, string &$sql): void { + $null = NULL; + self::singleton()->invoke(['savedSearch', 'groupID', 'sql'], $savedSearch, $groupID, + $sql, $null, $null, $null, + 'civicrm_buildGroupContactCache' + ); + } + /** * (EXPERIMENTAL) Scan extensions for a list of auto-registered interfaces. * @@ -3102,41 +3143,6 @@ abstract class CRM_Utils_Hook { ); } - /** - * Alter APIv4 route permissions based on the Entity and Action - * - * This is an experimental hook intended to *relax* the requirement - * for "access AJAX API" when calling public-oriented APIs. - * - * Historically, when APIv2/v3 were first exposed to an HTTP interface, using - * the HTTP interface required an extra permission "access AJAX API". This is a - * broad hedge against security flaws within those API's. In the current APIv4 - * era, security concerns are often baked into each API, so there is a debate about - * whether "access AJAX API" serves a purpose or just makes - * administration/development more complicated. (So far, there's more support - * for the latter.) - * - * This hook might foreseeably be abandoned either... - * - * - if it is found that "access AJAX API" guard is not needed for APIv4. - * - if the policy is moved into metadata. - * - * @param array|string $permissions - * @param string $entity - * @param string $action - * - * @return mixed - */ - public static function alterApiRoutePermissions(&$permissions, $entity, $action) { - $null = NULL; - return self::singleton()->invoke( - ['permissions', 'entity', 'action'], - $permissions, $entity, $action, - $null, $null, $null, - 'civicrm_alterApiRoutePermissions' - ); - } - /** * Allows an extension to override the checksum validation. * For example you may want to invalidate checksums that were sent out/forwarded by mistake. You could also diff --git a/civicrm/CRM/Utils/Hook/Joomla.php b/civicrm/CRM/Utils/Hook/Joomla.php index 4f95215cd6..83ca6ac83d 100644 --- a/civicrm/CRM/Utils/Hook/Joomla.php +++ b/civicrm/CRM/Utils/Hook/Joomla.php @@ -81,7 +81,7 @@ class CRM_Utils_Hook_Joomla extends CRM_Utils_Hook { } } - $result = $app->triggerEvent($fnSuffix, array(&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6)); + $result = $app->triggerEvent($fnSuffix, [&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6]); $moduleResult = $this->commonInvoke($numParams, $arg1, $arg2, $arg3, $arg4, $arg5, $arg6, diff --git a/civicrm/CRM/Utils/Hook/UnitTests.php b/civicrm/CRM/Utils/Hook/UnitTests.php index 71babb86f8..1e5d3248d1 100644 --- a/civicrm/CRM/Utils/Hook/UnitTests.php +++ b/civicrm/CRM/Utils/Hook/UnitTests.php @@ -87,7 +87,7 @@ class CRM_Utils_Hook_UnitTests extends CRM_Utils_Hook { $numParams, &$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6, $fnSuffix) { - $params = array(&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6); + $params = [&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6]; $fResult2 = $fResult3 = NULL; diff --git a/civicrm/CRM/Utils/Hook/WordPress.php b/civicrm/CRM/Utils/Hook/WordPress.php index 6d9a7e9224..d43328a0b5 100644 --- a/civicrm/CRM/Utils/Hook/WordPress.php +++ b/civicrm/CRM/Utils/Hook/WordPress.php @@ -93,7 +93,7 @@ class CRM_Utils_Hook_WordPress extends CRM_Utils_Hook { // only pass the arguments that have values $args = array_slice( - array(&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6), + [&$arg1, &$arg2, &$arg3, &$arg4, &$arg5, &$arg6], 0, $numParams ); diff --git a/civicrm/CRM/Utils/Pager.php b/civicrm/CRM/Utils/Pager.php index d0c7a1d557..8f7a2bdf4a 100644 --- a/civicrm/CRM/Utils/Pager.php +++ b/civicrm/CRM/Utils/Pager.php @@ -182,7 +182,7 @@ class CRM_Utils_Pager extends Pager_Sliding { // else if a value is set that has higher priority and finally the GET var $currentPage = $defaultPageId; if (!empty($_POST)) { - if (isset($_POST[CRM_Utils_Array::value('buttonTop', $params)]) && isset($_POST[self::PAGE_ID])) { + if (isset($_POST[$params['buttonTop']]) && isset($_POST[self::PAGE_ID])) { $currentPage = max((int ) @$_POST[self::PAGE_ID], 1); } elseif (isset($_POST[$params['buttonBottom']]) && isset($_POST[self::PAGE_ID_BOTTOM])) { diff --git a/civicrm/CRM/Utils/PagerAToZ.php b/civicrm/CRM/Utils/PagerAToZ.php index 2faefae786..ea08a189d3 100644 --- a/civicrm/CRM/Utils/PagerAToZ.php +++ b/civicrm/CRM/Utils/PagerAToZ.php @@ -97,7 +97,7 @@ class CRM_Utils_PagerAToZ { $dynamicAlphabets = []; while ($result->fetch()) { - $dynamicAlphabets[] = strtoupper($result->sort_name); + $dynamicAlphabets[] = strtoupper($result->sort_name ?? ''); } return $dynamicAlphabets; } diff --git a/civicrm/CRM/Utils/SQL/Select.php b/civicrm/CRM/Utils/SQL/Select.php index 94452cf946..0937b8aa71 100644 --- a/civicrm/CRM/Utils/SQL/Select.php +++ b/civicrm/CRM/Utils/SQL/Select.php @@ -72,6 +72,8 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { private $onDuplicates = []; private $selects = []; private $from; + private $setOps; + private $setAlias; private $joins = []; private $wheres = []; private $groupBys = []; @@ -93,6 +95,27 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { return new self($from, $options); } + /** + * Create a new SELECT-like query by performing set-operations (e.g. UNION). + * + * For example, if you want to query two tables and treat the results as one combined-set, then + * this is s a set-operation. + * + * $queryA = CRM_Utils_SQL_Select::from('table_a'); + * $queryB = CRM_Utils_SQL_Select::from('table_b'); + * $querySet = CRM_Utils_SQL_Select::fromSet()->union('DISTINCT', [$queryA, $queryB])->toSQL(); + * + * @param array $options + * Ex: ['setAlias' => 'uniondata'] + * @return CRM_Utils_SQL_Select + */ + public static function fromSet($options = []) { + $options = array_merge(['setAlias' => '_sql_set'], $options); + $result = new self(NULL, $options); + $result->setOps = []; + return $result; + } + /** * Create a partial SELECT query. * @@ -113,6 +136,7 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { public function __construct($from, $options = []) { $this->from = $from; $this->mode = $options['mode'] ?? self::INTERPOLATE_AUTO; + $this->setAlias = $options['setAlias'] ?? NULL; } /** @@ -330,6 +354,53 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { return $this; } + /** + * Add a union to the list of set operations. + * + * Ex: CRM_Utils_SQL_Select::fromSet()->union([$subQuery1, $subQuery2]) + * Ex: CRM_Utils_SQL_Select::fromSet()->union($subQuery1)->union($subQuery2); + * + * @param string $type "DISTINCT"|"ALL" + * @param CRM_Utils_SQL_Select[]|CRM_Utils_SQL_Select $subQueries + * @return $this + */ + public function union(string $type, $subQueries) { + return $this->setOp("UNION $type", $subQueries); + } + + /** + * Add a set operation. + * + * Ex: CRM_Utils_SQL_Select::fromSet()->setOp('INTERSECT', [$subQuery1, $subQuery2]) + * + * @param string $setOperation + * Ex: 'UNION DISTINCT', 'UNION ALL'. + * TODO: 'INTERSECT', 'EXCEPT' when moving to MySQL 8. + * @param CRM_Utils_SQL_Select[]|CRM_Utils_SQL_Select $subQueries + * @return $this + * @see https://dev.mysql.com/doc/refman/8.0/en/set-operations.html + */ + public function setOp(string $setOperation, $subQueries) { + // TODO: Support more ops like 'INTERSECT' & 'EXCEPT' + $supportedOps = ['UNION DISTINCT', 'UNION ALL']; + if (!in_array($setOperation, $supportedOps, TRUE)) { + throw new CRM_Core_Exception("Unsupported set-operation '$setOperation'. Must be one of (" . implode(', ', $supportedOps) . ')'); + } + if ($this->from !== NULL || !is_array($this->setOps)) { + throw new CRM_Core_Exception("Set-operation '$setOperation' must have a list of subqueries. Primitive FROM is not supported."); + } + $subQueries = is_array($subQueries) ? $subQueries : [$subQueries]; /* Simple (array)cast would mishandle objects. */ + foreach ($subQueries as $subQuery) { + if ($this->setOps === []) { + $this->setOps[] = ['', $subQuery]; + } + else { + $this->setOps[] = [" $setOperation ", $subQuery]; + } + } + return $this; + } + /** * Insert the results of the SELECT query into another * table. @@ -495,6 +566,14 @@ class CRM_Utils_SQL_Select extends CRM_Utils_SQL_BaseParamQuery { if ($this->from !== NULL) { $sql .= 'FROM ' . $this->from . "\n"; } + elseif (is_array($this->setOps)) { + $sql .= 'FROM ('; + foreach ($this->setOps as $setOp) { + $sql .= $setOp[0]; + $sql .= '(' . (is_object($setOp[1]) ? $setOp[1]->toSQL() : $setOp[1]) . ')'; + } + $sql .= ") {$this->setAlias}\n"; + } foreach ($this->joins as $join) { $sql .= $join . "\n"; } diff --git a/civicrm/CRM/Utils/System.php b/civicrm/CRM/Utils/System.php index aed21211d1..774a4b3740 100644 --- a/civicrm/CRM/Utils/System.php +++ b/civicrm/CRM/Utils/System.php @@ -1405,7 +1405,7 @@ class CRM_Utils_System { return NULL; } - if (CRM_Utils_Array::value('resource', $params) == 'wiki') { + if (($params['resource'] ?? NULL) == 'wiki') { $docBaseURL = self::getWikiBaseURL(); } else { diff --git a/civicrm/CRM/Utils/System/Drupal8.php b/civicrm/CRM/Utils/System/Drupal8.php index 5536e59344..c866e67d96 100644 --- a/civicrm/CRM/Utils/System/Drupal8.php +++ b/civicrm/CRM/Utils/System/Drupal8.php @@ -292,11 +292,11 @@ class CRM_Utils_System_Drupal8 extends CRM_Utils_System_DrupalBase { // Not all links that CiviCRM generates are Drupal routes, so we use the weaker ::fromUri method. try { - $url = \Drupal\Core\Url::fromUri("{$base}{$url['path']}", array( + $url = \Drupal\Core\Url::fromUri("{$base}{$url['path']}", [ 'query' => $url['query'], 'fragment' => $fragment, 'absolute' => $absolute, - ))->toString(); + ])->toString(); } catch (Exception $e) { \Drupal::logger('civicrm')->error($e->getMessage()); diff --git a/civicrm/CRM/Utils/System/Standalone.php b/civicrm/CRM/Utils/System/Standalone.php index 66409148b1..db53c0bb59 100644 --- a/civicrm/CRM/Utils/System/Standalone.php +++ b/civicrm/CRM/Utils/System/Standalone.php @@ -15,33 +15,72 @@ * @copyright CiviCRM LLC https://civicrm.org/licensing */ +use Civi\Standalone\Security; + /** * Standalone specific stuff goes here. */ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { + public function missingStandaloneExtension() { + // error_log("sessionStart, " . (class_exists(\Civi\Standalone\Security::class) ? 'exists' : 'no ext')); + return !class_exists(\Civi\Standalone\Security::class); + } + + /** + * Start a new session. + */ + public function sessionStart() { + parent::sessionStart(); + if ($this->missingStandaloneExtension()) { + // Provide a fake contact and user ID, otherwise we don't get a menu. + $session = CRM_Core_Session::singleton(); + $session->set('userID', 1); + $session->set('ufID', 1); + } + } + /** * @inheritdoc */ public function getDefaultFileStorage() { return [ 'url' => 'upload', - // @todo Not sure if this is wise + // @todo Not sure if this is wise - what about CLI invocation? 'path' => $_SERVER['DOCUMENT_ROOT'], ]; } /** * @inheritDoc + * + * Create a user in the CMS. + * + * @param array $params keys: + * - 'cms_name' + * - 'cms_pass' plaintext password + * - 'notify' boolean + * @param string $mail + * Email id for cms user. + * + * @return int|bool + * uid if user was created, false otherwise */ public function createUser(&$params, $mail) { - return FALSE; + if ($this->missingStandaloneExtension()) { + return FALSE; + } + return Security::singleton()->createUser($params, $mail); } /** * @inheritDoc */ public function updateCMSName($ufID, $email) { + if ($this->missingStandaloneExtension()) { + return FALSE; + } + return Security::singleton()->updateCMSName($ufID, $email); } /** @@ -49,7 +88,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { */ public function getLoginURL($destination = '') { $query = $destination ? ['destination' => $destination] : []; - return \Drupal\Core\Url::fromRoute('user.login', [], ['query' => $query])->toString(); + return CRM_Utils_System::url('civicrm/login', $query, TRUE); } /** @@ -106,12 +145,12 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { } /** - * Check if a resource url is within the drupal directory and format appropriately. + * Check if a resource url is within the public webroot and format appropriately. * - * This seems to be a legacy function. We assume all resources are within the drupal - * directory and always return TRUE. As well, we clean up the $url. + * This seems to be a legacy function. We assume all resources are + * ok directory and always return TRUE. As well, we clean up the $url. * - * FIXME: This is not a legacy function and the above is not a safe assumption. + * @todo: This is not a legacy function and the above is not a safe assumption. * External urls are allowed by CRM_Core_Resources and this needs to return the correct value. * * @param $url @@ -126,13 +165,12 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { if (($pos = strpos($url, '?')) !== FALSE) { $url = substr($url, 0, $pos); } - // FIXME: Should not unconditionally return true + // @todo: Should not unconditionally return true return TRUE; } /** - * This function does nothing in Drupal 8. Changes to the base_url should be made - * in settings.php directly. + * Changes to the base_url should be made in settings.php directly. */ public function mapConfigToSSL() { } @@ -149,95 +187,87 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { $forceBackend = FALSE, $htmlize = TRUE ) { - // @todo Implement absolute etc $fragment = $fragment ? ('#' . $fragment) : ''; - $url = "/{$path}?{$query}$fragment"; - return $url; - } - - /** - * @inheritDoc - */ - public function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) { - $system = new CRM_Utils_System_Drupal8(); - $system->loadBootStrap([], FALSE); - - $uid = \Drupal::service('user.auth')->authenticate($name, $password); - if ($uid) { - if ($this->loadUser($name)) { - $contact_id = CRM_Core_BAO_UFMatch::getContactId($uid); - return [$contact_id, $uid, mt_rand()]; - } + if ($absolute) { + return Civi::paths()->getUrl("[cms.root]/{$path}?{$query}$fragment"); + } + else { + return "/{$path}?{$query}$fragment"; } - - return FALSE; } /** * @inheritDoc + * Authenticate the user against the CMS db. + * + * @param string $name + * The user name. + * @param string $password + * The password for the above user. + * @param bool $loadCMSBootstrap + * Load cms bootstrap?. + * @param string $realPath + * Filename of script + * + * @return array|bool + * [contactID, ufID, unique string] else false if no auth + * @throws \CRM_Core_Exception. */ - public function loadUser($username) { - $user = user_load_by_name($username); - if (!$user) { + public function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) { + if ($this->missingStandaloneExtension()) { return FALSE; } - - // Set Drupal's current user to the loaded user. - \Drupal::currentUser()->setAccount($user); - - $uid = $user->id(); - $contact_id = CRM_Core_BAO_UFMatch::getContactId($uid); - - // Store the contact id and user id in the session - $session = CRM_Core_Session::singleton(); - $session->set('ufID', $uid); - $session->set('userID', $contact_id); - return TRUE; + return Security::singleton()->authenticate($name, $password, $loadCMSBootstrap, $realPath); } /** - * Determine the native ID of the CMS user. + * Determine the CMS-native ID from the user name + * + * In standalone this means the User ID. * * @param string $username * @return int|null */ public function getUfId($username) { - if ($id = user_load_by_name($username)->id()) { - return $id; + if ($this->missingStandaloneExtension()) { + return NULL; } + return Security::singleton()->getUserIDFromUsername($username); } /** - * @inheritDoc - */ - public function permissionDenied() { - die('Standalone permissionDenied'); - } - - /** - * @inheritDoc + * Immediately stop script execution, log out the user and redirect to the home page. + * + * @deprecated + * This function should be removed in favor of linking to the CMS's logout page */ public function logout() { - // @todo + if ($this->missingStandaloneExtension()) { + return; + } + return Security::singleton()->logoutUser(); } /** * @inheritDoc */ public function theme(&$content, $print = FALSE, $maintenance = FALSE) { + + // Q. what does this do? Why do we only include this for maintenance? if ($maintenance) { $smarty = CRM_Core_Smarty::singleton(); echo implode('', $smarty->_tpl_vars['pageHTMLHead']); } // @todo Add variables from the body tag? (for Shoreditch) - print $content; return NULL; } /** - * Load drupal bootstrap. + * Bootstrap Standalone. + * + * This is used by cv and civix, but not I (artfulrobot) think, in the main http requests. * * @param array $params * Either uid, or name & pass. @@ -251,57 +281,75 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { * @Todo Handle setting cleanurls configuration for CiviCRM? */ public function loadBootStrap($params = [], $loadUser = TRUE, $throwError = TRUE, $realPath = NULL) { - static $run_once = FALSE; - if ($run_once) { + static $runOnce; + + if (!isset($runOnce)) { + $runOnce = TRUE; return TRUE; } - else { - $run_once = TRUE; - } - if (!($root = $this->cmsRootPath())) { + $root = rtrim($this->cmsRootPath(), '/' . DIRECTORY_SEPARATOR); + if (empty($root) || !is_dir($root) || !chdir($root)) { return FALSE; } - chdir($root); - // Create a mock $request object - $autoloader = require_once $root . '/autoload.php'; - if ($autoloader === TRUE) { - $autoloader = ComposerAutoloaderInitDrupal8::getLoader(); - } - // @Todo: do we need to handle case where $_SERVER has no HTTP_HOST key, ie. when run via cli? - $request = new \Symfony\Component\HttpFoundation\Request([], [], [], [], [], $_SERVER); + require_once $root . '/../vendor/autoload.php'; /* assumes $root to be the _web_ root path, not the project root path. */ - // Create a kernel and boot it. - $kernel = \Drupal\Core\DrupalKernel::createFromRequest($request, $autoloader, 'prod'); - $kernel->boot(); - $kernel->preHandle($request); - $container = $kernel->rebuildContainer(); - // Add our request to the stack and route context. - $request->attributes->set(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT, new \Symfony\Component\Routing\Route('<none>')); - $request->attributes->set(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_NAME, '<none>'); - $container->get('request_stack')->push($request); - $container->get('router.request_context')->fromRequest($request); + // seems like we've bootstrapped drupal + $config = CRM_Core_Config::singleton(); + $config->cleanURL = 1; - // Initialize Civicrm - \Drupal::service('civicrm')->initialize(); + // I don't *think* this applies to Standalone: + // + // we need to call the config hook again, since we now know + // all the modules that are listening on it, does not apply + // to J! and WP as yet + // CRM-8655 + // CRM_Utils_Hook::config($config); - // We need to call the config hook again, since we now know - // all the modules that are listening on it (CRM-8655). - $config = CRM_Core_Config::singleton(); - CRM_Utils_Hook::config($config); + if (!$loadUser) { + return TRUE; + } - if ($loadUser) { - if (!empty($params['uid']) && $username = \Drupal\user\Entity\User::load($params['uid'])->getAccountName()) { - $this->loadUser($username); - } - elseif (!empty($params['name']) && !empty($params['pass']) && \Drupal::service('user.auth')->authenticate($params['name'], $params['pass'])) { - $this->loadUser($params['name']); + if ($this->missingStandaloneExtension()) { + return FALSE; + } + + $security = \Civi\Standalone\Security::singleton(); + if (!empty($params['uid'])) { + $user = $security->loadUserByID($params['uid']); + } + elseif (!empty($params['name'] && !empty($params['pass']))) { + // It seems from looking at the Drupal implementation, that + // if given username we expect a correct password. + $user = $security->loadUserByName($params['name']); + if ($user) { + if (!$security->checkPassword($params['pass'], $user['password'] ?? '')) { + return FALSE; + } } } + if (!$user) { + return FALSE; + } + + $security->loginAuthenticatedUserRecord($user, FALSE); + return TRUE; } + public function loadUser($username) { + $security = \Civi\Standalone\Security::singleton(); + $user = $security->loadUserByName($username); + if ($user) { + $security->loginAuthenticatedUserRecord($user, TRUE); + return TRUE; + } + else { + return FALSE; + } + } + /** * @inheritdoc */ @@ -330,49 +378,25 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { if (!empty($civicrm_paths['cms.root']['path'])) { return $civicrm_paths['cms.root']['path']; } - - if (defined('DRUPAL_ROOT')) { - return DRUPAL_ROOT; - } - - // It looks like Drupal hasn't been bootstrapped. - // We're going to attempt to discover the root Drupal path - // by climbing out of the folder hierarchy and looking around to see - // if we've found the Drupal root directory. - if (!$path) { - $path = $_SERVER['SCRIPT_FILENAME']; - } - - // Normalize and explode path into its component paths. - $paths = explode(DIRECTORY_SEPARATOR, realpath($path)); - - // Remove script filename from array of directories. - array_pop($paths); - - while (count($paths)) { - $candidate = implode('/', $paths); - if (file_exists($candidate . "/core/includes/bootstrap.inc")) { - return $candidate; - } - - array_pop($paths); - } + throw new \RuntimeException("Standalone requires the path is set for now. Set \$civicrm_paths['cms.root']['path'] in civicrm.settings.php to the webroot."); } /** * @inheritDoc */ public function isUserLoggedIn() { - // @todo - return TRUE; + if ($this->missingStandaloneExtension()) { + return TRUE; + } + return Security::singleton()->isUserLoggedIn(); } /** * @inheritDoc */ public function isUserRegistrationPermitted() { - // @todo Have a setting - return TRUE; + // We don't support user registration in Standalone. + return FALSE; } /** @@ -395,55 +419,31 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { * @inheritDoc */ public function getLoggedInUfID() { - // @todo Not implemented - // This helps towards getting the CiviCRM menu to display - return 1; - } - - /** - * @inheritDoc - */ - public function getDefaultBlockLocation() { - // @todo No sidebars, no blocks - return 'sidebar_first'; - } - - /** - * @inheritDoc - */ - public function flush() { - } - /** - * @inheritDoc - */ - public function getUser($contactID) { - $user_details = parent::getUser($contactID); - $user_details['name'] = $user_details['name']->value; - $user_details['email'] = $user_details['email']->value; - return $user_details; - } - - /** - * @inheritDoc - */ - public function getUniqueIdentifierFromUserObject($user) { - return $user->get('mail')->value; + if ($this->missingStandaloneExtension()) { + // This helps towards getting the CiviCRM menu to display + return 1; + } + return Security::singleton()->getLoggedInUfID(); } /** * @inheritDoc + * + * In Standalone our user object is just an array from a User::get() call. */ public function getUserIDFromUserObject($user) { - return $user->get('uid')->value; + return $user['id'] ?? NULL; } /** * @inheritDoc */ public function synchronizeUsers() { - // @todo - Civi::log()->debug('CRM_Utils_System_Standalone::synchronizeUsers: not implemented'); + if ($this->missingStandaloneExtension()) { + return parent::synchronizeUsers(); + } + return Security::singleton()->synchronizeUsers(); } /** @@ -456,17 +456,20 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { } /** - * Function to return current language of Drupal8 + * Function to return current language. * * @return string */ public function getCurrentLanguage() { - // @todo FIXME - Civi::log()->debug('CRM_Utils_System_Standalone::getCurrentLanguage: not implemented'); - return NULL; + if ($this->missingStandaloneExtension()) { + return NULL; + } + return Security::singleton()->getCurrentLanguage(); } /** + * I don't know why this needs to be here? Does it even? + * * Helper function to extract path, query and route name from Civicrm URLs. * * For example, 'civicrm/contact/view?reset=1&cid=66' will be returned as: @@ -511,7 +514,7 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { } /** - * Append Drupal8 js to coreResourcesList. + * Append any Standalone js to coreResourcesList. * * @param \Civi\Core\Event\GenericHookEvent $e */ @@ -526,28 +529,6 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { return $timezone; } - /** - * @inheritDoc - */ - public function setUFLocale($civicrm_language) { - $langcode = substr(str_replace('_', '', $civicrm_language), 0, 2); - $languageManager = \Drupal::languageManager(); - $languages = $languageManager->getLanguages(); - - if (isset($languages[$langcode])) { - $languageManager->setConfigOverrideLanguage($languages[$langcode]); - - // Config must be re-initialized to reset the base URL - // otherwise links will have the wrong language prefix/domain. - $config = CRM_Core_Config::singleton(); - $config->free(); - - return TRUE; - } - - return FALSE; - } - /** * @inheritDoc */ @@ -556,58 +537,12 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { return $url; } - // Drupal might not be bootstrapped if being called by the REST API. - if (!class_exists('Drupal') || !\Drupal::hasContainer()) { + // Notice: we CANNOT call log here, it creates a nasty crash. + // \Civi::log()->warning("Standalone languageNegotiationURL is not written, but was called"); + if ($this->missingStandaloneExtension()) { return $url; } - - $language = $this->getCurrentLanguage(); - if (\Drupal::service('module_handler')->moduleExists('language')) { - $config = \Drupal::config('language.negotiation')->get('url'); - - //does user configuration allow language - //support from the URL (Path prefix or domain) - $enabledLanguageMethods = \Drupal::config('language.types')->get('negotiation.language_interface.enabled') ?: []; - if (array_key_exists(\Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::METHOD_ID, $enabledLanguageMethods)) { - $urlType = $config['source']; - - //url prefix - if ($urlType == \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::CONFIG_PATH_PREFIX) { - if (!empty($language)) { - if ($addLanguagePart && !empty($config['prefixes'][$language])) { - $url .= $config['prefixes'][$language] . '/'; - } - if ($removeLanguagePart && !empty($config['prefixes'][$language])) { - $url = str_replace("/" . $config['prefixes'][$language] . "/", '/', $url); - } - } - } - //domain - if ($urlType == \Drupal\language\Plugin\LanguageNegotiation\LanguageNegotiationUrl::CONFIG_DOMAIN) { - if (isset($language->domain) && $language->domain) { - if ($addLanguagePart) { - $url = (CRM_Utils_System::isSSL() ? 'https' : 'http') . '://' . $config['domains'][$language] . base_path(); - } - if ($removeLanguagePart && defined('CIVICRM_UF_BASEURL')) { - $url = str_replace('\\', '/', $url); - $parseUrl = parse_url($url); - - //kinda hackish but not sure how to do it right - //hope http_build_url() will help at some point. - if (is_array($parseUrl) && !empty($parseUrl)) { - $urlParts = explode('/', $url); - $hostKey = array_search($parseUrl['host'], $urlParts); - $ufUrlParts = parse_url(CIVICRM_UF_BASEURL); - $urlParts[$hostKey] = $ufUrlParts['host']; - $url = implode('/', $urlParts); - } - } - } - } - } - } - - return $url; + return Security::singleton()->languageNegotiationURL($url, $addLanguagePart = TRUE, $removeLanguagePart = FALSE); } /** @@ -615,31 +550,16 @@ class CRM_Utils_System_Standalone extends CRM_Utils_System_Base { * @return array */ public function getCMSPermissionsUrlParams() { - return ['ufAccessURL' => \Drupal\Core\Url::fromRoute('user.admin_permissions')->toString()]; - } - - /** - * Start a new session. - */ - public function sessionStart() { - session_start(); - // @todo This helps towards getting the CiviCRM menu to display - // but obviously should be replaced once we have user management - CRM_Core_Session::singleton()->set('userID', 1); - } - - /** - * @inheritdoc - */ - public function getSessionId() { - return session_id(); + if ($this->missingStandaloneExtension()) { + return ['ufAccessURL' => '/fixme/standalone/permissions/url/params']; + } + return Security::singleton()->getCMSPermissionsUrlParams(); } - /** - * Helper function to rebuild the Drupal 8 or 9 dynamic routing cache. - * We need to do this after enabling extensions that add routes and it's worth doing when we reset Civi paths. - */ - public function invalidateRouteCache() { + public function permissionDenied() { + http_response_code(403); + echo "403 Forbidden: You do not have permission to access this resource.\n"; + // TODO: Prettier error page } } diff --git a/civicrm/CRM/Utils/System/WordPress.php b/civicrm/CRM/Utils/System/WordPress.php index a9e462eeb6..30b29cf720 100644 --- a/civicrm/CRM/Utils/System/WordPress.php +++ b/civicrm/CRM/Utils/System/WordPress.php @@ -710,7 +710,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { } /** - * Load wordpress bootstrap. + * Tries to bootstrap WordPress. * * @param array $params * Optional credentials @@ -733,6 +733,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { define('WP_USE_THEMES', FALSE); } + // Load bootstrap file. $cmsRootPath = $this->cmsRootPath(); if (!$cmsRootPath) { throw new CRM_Core_Exception("Could not find the install directory for WordPress"); @@ -747,12 +748,20 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { else { throw new CRM_Core_Exception("Could not find the bootstrap file for WordPress"); } - $wpUserTimezone = get_option('timezone_string'); - if ($wpUserTimezone) { - date_default_timezone_set($wpUserTimezone); + + // Match CiviCRM timezone to WordPress site timezone. + $wpSiteTimezone = $this->getTimeZoneString(); + if ($wpSiteTimezone) { + date_default_timezone_set($wpSiteTimezone); CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone(); } - require_once $cmsRootPath . DIRECTORY_SEPARATOR . 'wp-includes/pluggable.php'; + + // Make sure pluggable WordPress functions are available. + if (!function_exists('wp_set_current_user')) { + require_once $cmsRootPath . DIRECTORY_SEPARATOR . 'wp-includes/pluggable.php'; + } + + // Maybe login user. $uid = $params['uid'] ?? NULL; if (!$uid) { $name = $name ? $name : trim(CRM_Utils_Array::value('name', $_REQUEST)); @@ -781,6 +790,7 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { return TRUE; } } + return TRUE; } @@ -1153,7 +1163,37 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { * @inheritDoc */ public function getTimeZoneString() { - return get_option('timezone_string'); + // Return the timezone string when set. + $tzstring = get_option('timezone_string'); + if (!empty($tzstring)) { + return $tzstring; + } + + /* + * Try and build a deprecated (but currently valid) timezone string + * from the GMT offset value. + * + * Note: manual offsets should be discouraged. WordPress works more + * reliably when setting an actual timezone (e.g. "Europe/London") + * because of support for Daylight Saving changes. + * + * Note: the IANA timezone database that provides PHP's timezone + * support uses (reversed) POSIX style signs. + * + * @see https://www.php.net/manual/en/timezones.others.php + */ + $offset = get_option('gmt_offset'); + if (0 != $offset && floor($offset) == $offset) { + $offset_string = $offset > 0 ? "-$offset" : '+' . abs((int) $offset); + $tzstring = 'Etc/GMT' . $offset_string; + } + + // Default to "UTC" if the timezone string is still empty. + if (empty($tzstring)) { + $tzstring = 'UTC'; + } + + return $tzstring; } /** @@ -1211,10 +1251,10 @@ class CRM_Utils_System_WordPress extends CRM_Utils_System_Base { $contactMatching = 0; // Previously used the $wpdb global - which means WordPress *must* be bootstrapped. - $wpUsers = get_users(array( + $wpUsers = get_users([ 'blog_id' => get_current_blog_id(), 'number' => -1, - )); + ]); foreach ($wpUsers as $wpUserData) { $contactCount++; diff --git a/civicrm/CRM/Utils/Token.php b/civicrm/CRM/Utils/Token.php index 4101d9be3c..bc4bfd9838 100644 --- a/civicrm/CRM/Utils/Token.php +++ b/civicrm/CRM/Utils/Token.php @@ -1711,7 +1711,7 @@ class CRM_Utils_Token { else { $entity = 'Contact'; } - $sorted[ts($entity)][] = ['id' => $k, 'text' => $v]; + $sorted[_ts($entity)][] = ['id' => $k, 'text' => $v]; } } diff --git a/civicrm/CRM/Utils/Type.php b/civicrm/CRM/Utils/Type.php index 87087711d0..510718060b 100644 --- a/civicrm/CRM/Utils/Type.php +++ b/civicrm/CRM/Utils/Type.php @@ -391,7 +391,7 @@ class CRM_Utils_Type { 'Color', ]; if (!in_array($type, $possibleTypes)) { - throw new CRM_Core_Exception(ts('Invalid type, must be one of : ' . implode($possibleTypes))); + throw new CRM_Core_Exception('Invalid type, must be one of : ' . implode($possibleTypes)); } switch ($type) { case 'Integer': diff --git a/civicrm/Civi/API/Request.php b/civicrm/Civi/API/Request.php index 8b7a087f2e..c26d230a88 100644 --- a/civicrm/Civi/API/Request.php +++ b/civicrm/Civi/API/Request.php @@ -48,12 +48,7 @@ class Request { $className = CoreUtil::getApiClass($entity); $callable = [$className, $action]; if (!$className || !is_callable($callable)) { - throw new \Civi\API\Exception\NotImplementedException("API ($entity, $action) does not exist (join the API team and implement it!)"); - } - // Check enabled components - $daoName = \CRM_Core_DAO_AllCoreTables::getFullName($entity); - if ($daoName && !$daoName::isComponentEnabled()) { - throw new \Civi\API\Exception\NotImplementedException("$entity API is not available because " . $daoName::COMPONENT . " component is disabled"); + throw new \Civi\API\Exception\NotImplementedException("API ($entity, $action) does not exist (or the extension it belongs to is not enabled)."); } // Extra arguments used e.g. by dynamic entities like Multi-Record custom groups & the ECK extension $args = (array) CoreUtil::getInfoItem($entity, 'class_args'); diff --git a/civicrm/Civi/ActionSchedule/Mapping.php b/civicrm/Civi/ActionSchedule/Mapping.php index 2c092ddcea..948fcf5389 100644 --- a/civicrm/Civi/ActionSchedule/Mapping.php +++ b/civicrm/Civi/ActionSchedule/Mapping.php @@ -37,6 +37,7 @@ namespace Civi\ActionSchedule; * The new MappingInterface makes no pretense of database-driven * configuration. The dozen places have been consolidated and * replaced with functions in MappingInterface. + * The unused `civicrm_action_mapping` table has been dropped. * * This "Mapping" implementation is a refactoring of the old * hard-coded bits. Internally, it uses the concepts from diff --git a/civicrm/Civi/Angular/Manager.php b/civicrm/Civi/Angular/Manager.php index 5be75c18aa..3fb77b0f5d 100644 --- a/civicrm/Civi/Angular/Manager.php +++ b/civicrm/Civi/Angular/Manager.php @@ -313,7 +313,7 @@ class Manager { foreach ($strings as $string) { // TODO: should we pass translation domain based on $module[ext] or $module[tsDomain]? // It doesn't look like client side really supports the domain right now... - $translated = ts($string, [ + $translated = _ts($string, [ 'domain' => [$module['ext'], NULL], ]); if ($translated != $string) { diff --git a/civicrm/Civi/Api4/ACL.php b/civicrm/Civi/Api4/ACL.php index 700aed13e8..2416179ee0 100644 --- a/civicrm/Civi/Api4/ACL.php +++ b/civicrm/Civi/Api4/ACL.php @@ -10,6 +10,8 @@ */ namespace Civi\Api4; +use Civi\Api4\Generic\Traits\SortableEntity; + /** * ACL (Access Control List). * @@ -21,11 +23,12 @@ namespace Civi\Api4; * * Creating a new ACL requires at minimum an entity table, entity ID and object_table. * - * @searchable none * @see https://docs.civicrm.org/user/en/latest/initial-set-up/permissions-and-access-control * @since 5.19 + * @orderBy priority * @package Civi\Api4 */ class ACL extends Generic\DAOEntity { + use SortableEntity; } diff --git a/civicrm/Civi/Api4/Action/Entity/Get.php b/civicrm/Civi/Api4/Action/Entity/Get.php index d6e80485c9..3c799ca8ae 100644 --- a/civicrm/Civi/Api4/Action/Entity/Get.php +++ b/civicrm/Civi/Api4/Action/Entity/Get.php @@ -15,7 +15,7 @@ namespace Civi\Api4\Action\Entity; /** * Get the names & docblocks of all APIv4 entities. * - * Scans for api entities in core, enabled components & enabled extensions. + * Scans for api entities in core & enabled extensions. * * Also includes pseudo-entities from multi-record custom groups. */ @@ -28,15 +28,11 @@ class Get extends \Civi\Api4\Generic\BasicGetAction { protected $includeCustom; /** - * Returns all APIv4 entities from core, enabled components and enabled extensions. + * Returns all APIv4 entities from core & enabled extensions. */ protected function getRecords() { $provider = \Civi::service('action_object_provider'); return array_filter($provider->getEntities(), function($entity) { - // Only include DAO entities from enabled components - if (!empty($entity['dao']) && !$entity['dao']::isComponentEnabled()) { - return FALSE; - } // Check custom group permissions if ($this->checkPermissions && in_array('CustomValue', $entity['type']) && !\CRM_Core_Permission::customGroupAdmin()) { // Hack to get the id from the "view" url. If that url changes tests should catch it and we'll think of a better way to get that id diff --git a/civicrm/Civi/Api4/Action/EntitySet/Get.php b/civicrm/Civi/Api4/Action/EntitySet/Get.php new file mode 100644 index 0000000000..d39e9250f6 --- /dev/null +++ b/civicrm/Civi/Api4/Action/EntitySet/Get.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\Action\EntitySet; + +use Civi\Api4\Generic\DAOGetAction; +use Civi\Api4\Generic\Result; +use Civi\Api4\Generic\Traits\GroupAndHavingParamTrait; +use Civi\Api4\Generic\Traits\SelectParamTrait; +use Civi\Api4\Query\Api4EntitySetQuery; + +/** + * @method array getSets() + * @method setSets(array $sets) + */ +class Get extends \Civi\Api4\Generic\AbstractQueryAction { + + use SelectParamTrait; + use GroupAndHavingParamTrait; + + /** + * Api queries to combine using UNION DISTINCT or UNION ALL + * + * The SQL rules of unions apply: each query must SELECT the same number of fields + * with matching types (in order). Field names do not have to match; (returned fields + * will use the name from the first query). + * + * @var array + */ + protected $sets = []; + + /** + * @param string $type + * 'UNION DISTINCT' or 'UNION ALL' + * @param \Civi\Api4\Generic\DAOGetAction $apiRequest + * @return $this + */ + public function addSet(string $type, DAOGetAction $apiRequest) { + $this->sets[] = [$type, $apiRequest->getEntityName(), $apiRequest->getActionName(), $apiRequest->getParams()]; + return $this; + } + + /** + * @throws \CRM_Core_Exception + */ + public function _run(Result $result) { + $query = new Api4EntitySetQuery($this); + $rows = $query->run(); + \CRM_Utils_API_HTMLInputCoder::singleton()->decodeRows($rows); + $result->exchangeArray($rows); + } + +} diff --git a/civicrm/Civi/Api4/CustomValue.php b/civicrm/Civi/Api4/CustomValue.php index 722d6713dd..2ea7a3274a 100644 --- a/civicrm/Civi/Api4/CustomValue.php +++ b/civicrm/Civi/Api4/CustomValue.php @@ -142,9 +142,10 @@ class CustomValue { public static function getInfo() { return [ 'class' => __CLASS__, - 'type' => ['CustomValue'], + 'type' => ['CustomValue', 'DAOEntity'], 'searchable' => 'secondary', 'primary_key' => ['id'], + 'dao' => 'CRM_Core_BAO_CustomValue', 'see' => [ 'https://docs.civicrm.org/user/en/latest/organising-your-data/creating-custom-fields/#multiple-record-fieldsets', '\Civi\Api4\CustomGroup', diff --git a/civicrm/Civi/Api4/EntitySet.php b/civicrm/Civi/Api4/EntitySet.php new file mode 100644 index 0000000000..d8a82fcb05 --- /dev/null +++ b/civicrm/Civi/Api4/EntitySet.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; + +use Civi\Api4\Generic\BasicGetFieldsAction; + +/** + * API to query multiple entities with a UNION. + * + * @searchable none + * @since 5.64 + * @package Civi\Api4 + */ +class EntitySet extends Generic\AbstractEntity { + + /** + * @return \Civi\Api4\Action\EntitySet\Get + */ + public static function get($checkPermissions = TRUE) { + return (new Action\EntitySet\Get('EntitySet', __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @param bool $checkPermissions + * @return Generic\AutocompleteAction + */ + public static function autocomplete($checkPermissions = TRUE) { + return (new Generic\AutocompleteAction('EntitySet', __FUNCTION__)) + ->setCheckPermissions($checkPermissions); + } + + /** + * @return \Civi\Api4\Generic\BasicGetFieldsAction + */ + public static function getFields($checkPermissions = TRUE) { + return (new BasicGetFieldsAction('EntitySet', __FUNCTION__, function() { + return []; + }))->setCheckPermissions($checkPermissions); + } + + public static function permissions() { + return []; + } + + /** + * @param bool $plural + * @return string + */ + protected static function getEntityTitle($plural = FALSE) { + return $plural ? ts('Entity Sets') : ts('Entity Set'); + } + +} diff --git a/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php b/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php index 99038ce0da..5096b3af08 100644 --- a/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php +++ b/civicrm/Civi/Api4/Event/PostSelectQueryEvent.php @@ -12,63 +12,14 @@ namespace Civi\Api4\Event; -use Civi\Api4\Query\Api4SelectQuery; use Civi\Core\Event\GenericHookEvent; +/** + * Unused event. + * Kept around because of https://lab.civicrm.org/dev/joomla/-/issues/28 + * @see Events::POST_SELECT_QUERY + * @deprecated + */ class PostSelectQueryEvent extends GenericHookEvent { - /** - * @var array - */ - protected $results; - - /** - * @var \Civi\Api4\Query\Api4SelectQuery - */ - protected $query; - - /** - * PostSelectQueryEvent constructor. - * @param array $results - * @param \Civi\Api4\Query\Api4SelectQuery $query - */ - public function __construct(array $results, Api4SelectQuery $query) { - $this->results = $results; - $this->query = $query; - } - - /** - * @return array - */ - public function getResults() { - return $this->results; - } - - /** - * @param array $results - * @return $this - */ - public function setResults($results) { - $this->results = $results; - - return $this; - } - - /** - * @return \Civi\Api4\Query\Api4SelectQuery - */ - public function getQuery() { - return $this->query; - } - - /** - * @param \Civi\Api4\Query\Api4SelectQuery $query - * @return $this - */ - public function setQuery($query) { - $this->query = $query; - - return $this; - } - } diff --git a/civicrm/Civi/Api4/Generic/AbstractAction.php b/civicrm/Civi/Api4/Generic/AbstractAction.php index 7a45503fca..bef7843610 100644 --- a/civicrm/Civi/Api4/Generic/AbstractAction.php +++ b/civicrm/Civi/Api4/Generic/AbstractAction.php @@ -511,23 +511,22 @@ abstract class AbstractAction implements \ArrayAccess { if ($field) { $optionFields[$fieldName] = [ 'val' => $record[$expr], + 'name' => $fieldName, 'expr' => $expr, 'field' => $field, 'suffix' => substr($expr, $suffix + 1), - 'depends' => $field['input_attrs']['control_field'] ?? NULL, + 'input_attrs' => $field['input_attrs'] ?? [], ]; unset($record[$expr]); } } } - // Sort option lookups by dependency, so e.g. country_id is processed first, then state_province_id, then county_id - uasort($optionFields, function ($a, $b) { - return $a['field']['name'] === $b['depends'] ? -1 : 1; - }); + // Sort lookups by `input_attrs.control_field`, so e.g. country_id is processed first, then state_province_id, then county_id + CoreUtil::topSortFields($optionFields); // Replace pseudoconstants. Note this is a reverse lookup as we are evaluating input not output. - foreach ($optionFields as $fieldName => $info) { + foreach ($optionFields as $info) { $options = FormattingUtil::getPseudoconstantList($info['field'], $info['expr'], $record, 'create'); - $record[$fieldName] = FormattingUtil::replacePseudoconstant($options, $info['val'], TRUE); + $record[$info['name']] = FormattingUtil::replacePseudoconstant($options, $info['val'], TRUE); } // The DAO works better with ints than booleans. See https://github.com/civicrm/civicrm-core/pull/23970 foreach ($record as $key => $value) { diff --git a/civicrm/Civi/Api4/Generic/AutocompleteAction.php b/civicrm/Civi/Api4/Generic/AutocompleteAction.php index 874e965420..8842355c9d 100644 --- a/civicrm/Civi/Api4/Generic/AutocompleteAction.php +++ b/civicrm/Civi/Api4/Generic/AutocompleteAction.php @@ -29,6 +29,8 @@ use Civi\Core\Event\GenericHookEvent; * @method string getFormName() * @method $this setFieldName(string $fieldName) Set fieldName. * @method string getFieldName() + * @method $this setKey(string $key) Set keyField used as unique identifier. + * @method string getKey() * @method $this setFilters(array $filters) * @method array getFilters() */ @@ -123,6 +125,8 @@ class AutocompleteAction extends AbstractAction { // Allow the default search to be modified \Civi::dispatcher()->dispatch('civi.search.autocompleteDefault', GenericHookEvent::create([ 'savedSearch' => &$this->savedSearch, + 'formName' => $this->formName, + 'fieldName' => $this->fieldName, ])); } $this->loadSavedSearch(); @@ -137,7 +141,7 @@ class AutocompleteAction extends AbstractAction { // Render mode: fetch by id if ($this->ids) { - $this->savedSearch['api_params']['where'][] = [$keyField, 'IN', $this->ids]; + $this->addFilter($keyField, ['IN' => $this->ids]); unset($this->display['settings']['pager']); $return = NULL; } @@ -188,8 +192,8 @@ class AutocompleteAction extends AbstractAction { foreach (array_slice($row['columns'], 1) as $col) { $item['description'][] = $col['val']; } - if (!empty($this->display['settings']['color'])) { - $item['color'] = $row['data'][$this->display['settings']['color']] ?? NULL; + foreach ($this->display['settings']['extra'] ?? [] as $name => $key) { + $item[$key] = $row['data'][$name] ?? $item[$key] ?? NULL; } $result[] = $item; } @@ -232,16 +236,33 @@ class AutocompleteAction extends AbstractAction { * @param array $displayFields */ private function augmentSelectClause(string $idField, array $displayFields) { - $select = array_merge([$idField], $displayFields); + // Don't mess with aggregated queries + if ($this->savedSearch['api_entity'] === 'EntitySet' || !empty($this->savedSearch['api_params']['groupBy'])) { + return; + } + // Original select params. Key by alias to avoid duplication. + $originalSelect = []; + foreach ($this->savedSearch['api_params']['select'] ?? [] as $item) { + $alias = explode(' AS ', $item)[1] ?? $item; + $originalSelect[$alias] = $item; + } + // Add any missing fields which should be selected + $additions = array_merge([$idField], $displayFields); // Add trustedFilters to the SELECT clause so that SearchDisplay::run will trust them foreach ($this->trustedFilters as $fields => $val) { - $select = array_merge($select, explode(',', $fields)); - } - if (!empty($this->display['settings']['color'])) { - $select[] = $this->display['settings']['color']; + $additions = array_merge($additions, explode(',', $fields)); } - $select = array_merge($select, array_column($this->display['settings']['sort'] ?? [], 0)); - $this->savedSearch['api_params']['select'] = array_unique(array_merge($this->savedSearch['api_params']['select'], $select)); + // Add 'extra' fields defined by the display + $additions = array_merge($additions, array_keys($this->display['settings']['extra'] ?? [])); + // Add 'sort' fields + $additions = array_merge($additions, array_column($this->display['settings']['sort'] ?? [], 0)); + + // Key by field name and combine with original SELECT + $additions = array_unique($additions); + $additions = array_combine($additions, $additions); + + // Maintain original order (important when using UNIONs in the query) + $this->savedSearch['api_params']['select'] = array_values($originalSelect + $additions); } /** @@ -265,7 +286,7 @@ class AutocompleteAction extends AbstractAction { } } } - return CoreUtil::getIdFieldName($entityName); + return $this->display['settings']['keyField'] ?? CoreUtil::getIdFieldName($entityName); } /** diff --git a/civicrm/Civi/Api4/Generic/BasicBatchAction.php b/civicrm/Civi/Api4/Generic/BasicBatchAction.php index e9c02e6940..a033602d52 100644 --- a/civicrm/Civi/Api4/Generic/BasicBatchAction.php +++ b/civicrm/Civi/Api4/Generic/BasicBatchAction.php @@ -54,6 +54,9 @@ class BasicBatchAction extends AbstractBatchAction { \CRM_Core_Error::deprecatedWarning(__CLASS__ . ' constructor received $doer as 4th param; it should be the 3rd as the $select param has been removed'); } else { + if ($doer && !is_callable($doer)) { + \CRM_Core_Error::deprecatedWarning(__CLASS__ . ' constructor received $doer as a non-callable; the 3rd param as the $select param has been removed'); + } $this->doer = $doer; } } diff --git a/civicrm/Civi/Api4/Generic/BasicGetAction.php b/civicrm/Civi/Api4/Generic/BasicGetAction.php index 95639ae36f..15c9951d8a 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetAction.php @@ -116,9 +116,9 @@ class BasicGetAction extends AbstractGetAction { } } } + // Swap raw values with pseudoconstants + FormattingUtil::formatOutputValues($values, $fields, $this->getActionName()); } - // Swap raw values with pseudoconstants - FormattingUtil::formatOutputValues($records, $fields, $this->getActionName()); } } diff --git a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php index 26780be1ee..c3f34416f6 100644 --- a/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php +++ b/civicrm/Civi/Api4/Generic/BasicGetFieldsAction.php @@ -321,13 +321,14 @@ class BasicGetFieldsAction extends BasicGetAction { 'ChainSelect' => ts('Chain-Select'), 'CheckBox' => ts('Checkboxes'), 'Date' => ts('Date Picker'), + 'Email' => ts('Email'), 'EntityRef' => ts('Autocomplete Entity'), 'File' => ts('File'), + 'Location' => ts('Address Location'), 'Number' => ts('Number'), 'Radio' => ts('Radio Buttons'), 'Select' => ts('Select'), 'Text' => ts('Text'), - 'Location' => ts('Address Location'), ], ], [ diff --git a/civicrm/Civi/Api4/Generic/DAOGetAction.php b/civicrm/Civi/Api4/Generic/DAOGetAction.php index 0e85f84d7b..b2620759a3 100644 --- a/civicrm/Civi/Api4/Generic/DAOGetAction.php +++ b/civicrm/Civi/Api4/Generic/DAOGetAction.php @@ -22,13 +22,12 @@ use Civi\Api4\Utils\CoreUtil; * * Perform joins on other related entities using a dot notation. * - * @method $this setHaving(array $clauses) - * @method array getHaving() * @method $this setTranslationMode(string|null $mode) * @method string|null getTranslationMode() */ class DAOGetAction extends AbstractGetAction { use Traits\DAOActionTrait; + use Traits\GroupAndHavingParamTrait; /** * Fields to return. Defaults to all standard (non-custom, non-extra) fields `['*']`. @@ -66,22 +65,6 @@ class DAOGetAction extends AbstractGetAction { */ protected $join = []; - /** - * Field(s) by which to group the results. - * - * @var array - */ - protected $groupBy = []; - - /** - * Clause for filtering results after grouping and filters are applied. - * - * Each expression should correspond to an item from the SELECT array. - * - * @var array - */ - protected $having = []; - /** * Should we automatically overload the result with translated data? * How do we pick the suitable translation? @@ -160,46 +143,6 @@ class DAOGetAction extends AbstractGetAction { return $this; } - /** - * @return array - */ - public function getGroupBy(): array { - return $this->groupBy; - } - - /** - * @param array $groupBy - * @return $this - */ - public function setGroupBy(array $groupBy) { - $this->groupBy = $groupBy; - return $this; - } - - /** - * @param string $field - * @return $this - */ - public function addGroupBy(string $field) { - $this->groupBy[] = $field; - return $this; - } - - /** - * @param string $expr - * @param string $op - * @param mixed $value - * @return $this - * @throws \CRM_Core_Exception - */ - public function addHaving(string $expr, string $op, $value = NULL) { - if (!in_array($op, CoreUtil::getOperators())) { - throw new \CRM_Core_Exception('Unsupported operator'); - } - $this->having[] = [$expr, $op, $value]; - return $this; - } - /** * @param string $entity * @param string|bool $type diff --git a/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php index e194ef6af4..14159ad18c 100644 --- a/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/CustomValueActionTrait.php @@ -65,6 +65,8 @@ trait CustomValueActionTrait { */ protected function writeObjects($items) { $fields = $this->entityFields(); + // Note: Some parts of this loop mutate $item for purposes of internal processing only + // so we do not loop through $items by reference as to preserve the original structure for output. foreach ($items as $idx => $item) { FormattingUtil::formatWriteParams($item, $fields); @@ -83,8 +85,8 @@ trait CustomValueActionTrait { $tableName = CoreUtil::getTableName($this->getEntityName()); $items[$idx]['id'] = (int) \CRM_Core_DAO::singleValueQuery('SELECT MAX(id) FROM ' . $tableName); } + FormattingUtil::formatOutputValues($items[$idx], $fields, 'create'); } - FormattingUtil::formatOutputValues($items, $this->entityFields(), 'create'); return $items; } diff --git a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php index 55785c8af0..3de18daa7c 100644 --- a/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/DAOActionTrait.php @@ -140,7 +140,9 @@ trait DAOActionTrait { } \CRM_Utils_API_HTMLInputCoder::singleton()->decodeRows($result); - FormattingUtil::formatOutputValues($result, $this->entityFields()); + foreach ($result as &$row) { + FormattingUtil::formatOutputValues($row, $this->entityFields()); + } return $result; } diff --git a/civicrm/Civi/Api4/Generic/Traits/GroupAndHavingParamTrait.php b/civicrm/Civi/Api4/Generic/Traits/GroupAndHavingParamTrait.php new file mode 100644 index 0000000000..73233c1355 --- /dev/null +++ b/civicrm/Civi/Api4/Generic/Traits/GroupAndHavingParamTrait.php @@ -0,0 +1,66 @@ +<?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\Generic\Traits; + +use Civi\Api4\Utils\CoreUtil; + +/** + * @method $this setHaving(array $clauses) + * @method array getHaving() + * @method $this setGroupBy(array $clauses) + * @method array getGroupBy() + * @package Civi\Api4\Generic + */ +trait GroupAndHavingParamTrait { + + /** + * Field(s) by which to group the results. + * + * @var array + */ + protected $groupBy = []; + + /** + * Clause for filtering results after grouping and filters are applied. + * + * Each expression should correspond to an item from the SELECT array. + * + * @var array + */ + protected $having = []; + + /** + * @param string $field + * @return $this + */ + public function addGroupBy(string $field) { + $this->groupBy[] = $field; + return $this; + } + + /** + * @param string $expr + * @param string $op + * @param mixed $value + * @return $this + * @throws \CRM_Core_Exception + */ + public function addHaving(string $expr, string $op, $value = NULL) { + if (!in_array($op, CoreUtil::getOperators())) { + throw new \CRM_Core_Exception('Unsupported operator'); + } + $this->having[] = [$expr, $op, $value]; + return $this; + } + +} diff --git a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php index ce6cbb325b..fbef3dffb9 100644 --- a/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/SavedSearchInspectorTrait.php @@ -87,6 +87,11 @@ trait SavedSearchInspectorTrait { $this->display = \Civi\Api4\SearchDisplay::getDefault(FALSE) ->addSelect('*', 'type:name') ->setSavedSearch($this->savedSearch) + ->setContext([ + 'filters' => $this->filters ?? NULL, + 'formName' => $this->formName ?? NULL, + 'fieldName' => $this->fieldName ?? NULL, + ]) // Set by AutocompleteAction ->setType($this->_displayType ?? 'table') ->execute()->first(); diff --git a/civicrm/Civi/Api4/Generic/Traits/SelectParamTrait.php b/civicrm/Civi/Api4/Generic/Traits/SelectParamTrait.php index e2a3c7fbae..7e0b63a862 100644 --- a/civicrm/Civi/Api4/Generic/Traits/SelectParamTrait.php +++ b/civicrm/Civi/Api4/Generic/Traits/SelectParamTrait.php @@ -52,7 +52,7 @@ trait SelectParamTrait { * * @throws \CRM_Core_Exception */ - protected function expandSelectClauseWildcards() { + public function expandSelectClauseWildcards() { if (!$this->select) { $this->select = ['*']; } diff --git a/civicrm/Civi/Api4/Provider/CustomEntityProvider.php b/civicrm/Civi/Api4/Provider/CustomEntityProvider.php index c24a707968..b454a55eed 100644 --- a/civicrm/Civi/Api4/Provider/CustomEntityProvider.php +++ b/civicrm/Civi/Api4/Provider/CustomEntityProvider.php @@ -14,8 +14,23 @@ namespace Civi\Api4\Provider; use Civi\Api4\CustomValue; use Civi\Api4\Service\Schema\Joinable\CustomGroupJoinable; use Civi\Core\Event\GenericHookEvent; +use Civi\Core\Service\AutoService; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; -class CustomEntityProvider { +/** + * @service + * @internal + */ +class CustomEntityProvider extends AutoService implements EventSubscriberInterface { + + /** + * @return array + */ + public static function getSubscribedEvents() { + return [ + 'civi.api4.entityTypes' => ['addCustomEntities', 100], + ]; + } /** * Get custom-field pseudo-entities diff --git a/civicrm/Civi/Api4/Query/Api4EntitySetQuery.php b/civicrm/Civi/Api4/Query/Api4EntitySetQuery.php new file mode 100644 index 0000000000..5e553f2217 --- /dev/null +++ b/civicrm/Civi/Api4/Query/Api4EntitySetQuery.php @@ -0,0 +1,196 @@ +<?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\Query; + +use Civi\API\Request; +use Civi\Api4\Utils\FormattingUtil; + +/** + * Constructs queries for set operations (UNION, etc). + */ +class Api4EntitySetQuery extends Api4Query { + + private $subqueries = []; + + /** + * @param \Civi\Api4\Action\EntitySet\Get $api + */ + public function __construct($api) { + parent::__construct($api); + + $this->query = \CRM_Utils_SQL_Select::fromSet(['setAlias' => static::MAIN_TABLE_ALIAS]); + $isAggregate = $this->isAggregateQuery(); + + foreach ($api->getSets() as $index => $set) { + [$type, $entity, $action, $params] = $set + [NULL, NULL, 'get', []]; + $params['checkPermissions'] = $api->getCheckPermissions(); + $params['version'] = 4; + $apiRequest = Request::create($entity, $action, $params); + // For non-aggregated queries, add a tracking id so the rows can be identified + // for output-formatting purposes + if (!$isAggregate) { + if (!$apiRequest->getSelect()) { + $apiRequest->addSelect('*'); + } + $apiRequest->addSelect($index . ' AS _api_set_index'); + } + $apiRequest->expandSelectClauseWildcards(); + $subQuery = new Api4SelectQuery($apiRequest); + $subQuery->forceSelectId = FALSE; + $subQuery->getSql(); + // Update field aliases of all subqueries to match the first query + if ($index) { + $subQuery->selectAliases = array_combine(array_keys($this->getSubquery()->selectAliases), $subQuery->selectAliases); + } + $this->subqueries[] = [$type, $subQuery]; + } + } + + /** + * Why walk when you can + * + * @return array + */ + public function run(): array { + $results = $this->getResults(); + foreach ($results as &$result) { + // Format fields based on which set this row belongs to + // This index is only available for non-aggregated queries + $index = $result['_api_set_index'] ?? NULL; + unset($result['_api_set_index']); + if (isset($index)) { + $fieldSpec = $this->getSubquery($index)->apiFieldSpec; + $selectAliases = $this->getSubquery($index)->selectAliases; + } + // Aggregated queries will have to make due with limited field info + else { + $fieldSpec = $this->apiFieldSpec; + $selectAliases = $this->selectAliases; + } + FormattingUtil::formatOutputValues($result, $fieldSpec, 'get', $selectAliases); + } + return $results; + } + + private function getSubquery(int $index = 0): Api4SelectQuery { + return $this->subqueries[$index][1]; + } + + /** + * Select * from all sets + */ + protected function buildSelectClause() { + // Default is to SELECT * FROM (subqueries) + $select = $this->api->getSelect(); + if ($select === ['*']) { + $select = []; + } + // Add all subqueries to the FROM clause + foreach ($this->subqueries as $index => $set) { + [$type, $selectQuery] = $set; + $this->query->setOp($type, [$selectQuery->getQuery()]); + } + // Build apiFieldSpec from the select clause of the first query + foreach ($this->getSubquery()->selectAliases as $alias => $sql) { + // If this outer query uses the default of SELECT * then effectively we are selecting + // all the fields of the first subquery + if (!$select) { + $this->selectAliases[$alias] = $alias; + } + $expr = SqlExpression::convert($sql); + $field = $expr->getType() === 'SqlField' ? $this->getSubquery()->getField($expr->getFields()[0]) : NULL; + $this->addSpecField($alias, [ + 'sql_name' => "`$alias`", + 'entity' => $field['entity'] ?? NULL, + 'data_type' => $field['data_type'] ?? $expr::getDataType(), + ]); + } + // Parse select clause if not using default of * + foreach ($select as $item) { + $expr = SqlExpression::convert($item, TRUE); + $alias = $expr->getAlias(); + $this->selectAliases[$alias] = $expr->getExpr(); + $this->query->select($expr->render($this) . " AS `$alias`"); + } + } + + /** + * @param string $expr + * @return array|null + */ + public function getField($expr) { + $col = strpos($expr, ':'); + $fieldName = $col ? substr($expr, 0, $col) : $expr; + return $this->apiFieldSpec[$fieldName] ?? NULL; + } + + protected function buildWhereClause() { + foreach ($this->getWhere() as $clause) { + $sql = $this->treeWalkClauses($clause, 'WHERE'); + if ($sql) { + $this->query->where($sql); + } + } + } + + /** + * Add HAVING clause to query + * + * Every expression referenced must also be in the SELECT clause. + */ + protected function buildHavingClause() { + foreach ($this->getHaving() as $clause) { + $sql = $this->treeWalkClauses($clause, 'HAVING'); + if ($sql) { + $this->query->having($sql); + } + } + } + + /** + * Add ORDER BY to query + */ + protected function buildOrderBy() { + foreach ($this->getOrderBy() as $item => $dir) { + if ($dir !== 'ASC' && $dir !== 'DESC') { + throw new \CRM_Core_Exception("Invalid sort direction. Cannot order by $item $dir"); + } + if (!empty($this->selectAliases[$item])) { + $column = '`' . $item . '`'; + } + else { + $expr = $this->getExpression($item); + $column = $this->renderExpr($expr); + } + $this->query->orderBy("$column $dir"); + } + } + + /** + * Returns rendered expression or alias if it is already aliased in the SELECT clause. + * + * @param $expr + * @return mixed|string + */ + protected function renderExpr($expr) { + $exprVal = explode(':', $expr->getExpr())[0]; + // If this expression is already aliased in the select clause, use the existing alias. + foreach ($this->selectAliases as $alias => $selectVal) { + $selectVal = explode(':', $selectVal)[0]; + if ($exprVal === $selectVal) { + return "`$alias`"; + } + } + return $expr->render($this); + } + +} diff --git a/civicrm/Civi/Api4/Query/Api4Query.php b/civicrm/Civi/Api4/Query/Api4Query.php new file mode 100644 index 0000000000..15f7050cf3 --- /dev/null +++ b/civicrm/Civi/Api4/Query/Api4Query.php @@ -0,0 +1,501 @@ +<?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\Query; + +use Civi\API\Exception\UnauthorizedException; +use Civi\Api4\Utils\CoreUtil; +use Civi\Api4\Utils\FormattingUtil; + +/** + * A query `node` may be in one of three formats: + * + * * leaf: [$fieldName, $operator, $criteria] + * * negated: ['NOT', $node] + * * branch: ['OR|NOT', [$node, $node, ...]] + * + * Leaf operators are one of: + * + * * '=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=", + * * 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', + * * 'IS NOT NULL', 'IS NULL', 'CONTAINS', 'NOT CONTAINS', + * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP'. + */ +abstract class Api4Query { + + const + MAIN_TABLE_ALIAS = 'a', + UNLIMITED = '18446744073709551615'; + + /** + * @var \CRM_Utils_SQL_Select + */ + protected $query; + + /** + * @var \Civi\Api4\Generic\AbstractQueryAction + */ + protected $api; + + /** + * @var array + * [alias => expr][] + */ + public $selectAliases = []; + + /** + * @var array + */ + protected $entityValues = []; + + /** + * @var array[] + */ + public $apiFieldSpec = []; + + /** + * @param \Civi\Api4\Generic\AbstractQueryAction $api + */ + public function __construct($api) { + $this->api = $api; + } + + /** + * Builds main final sql statement after initialization. + * + * @return string + * @throws \CRM_Core_Exception + */ + public function getSql() { + $this->buildSelectClause(); + $this->buildWhereClause(); + $this->buildOrderBy(); + $this->buildLimit(); + $this->buildGroupBy(); + $this->buildHavingClause(); + return $this->query->toSQL(); + } + + public function getResults(): array { + $results = []; + $sql = $this->getSql(); + $this->debug('sql', $sql); + $query = \CRM_Core_DAO::executeQuery($sql); + while ($query->fetch()) { + $result = []; + foreach ($this->selectAliases as $alias => $expr) { + $returnName = $alias; + $alias = str_replace(['.', ' '], '_', $alias); + $result[$returnName] = property_exists($query, $alias) ? $query->$alias : NULL; + } + $results[] = $result; + } + return $results; + } + + protected function isAggregateQuery() { + if ($this->getGroupBy()) { + return TRUE; + } + foreach ($this->getSelect() as $sql) { + $classname = get_class(SqlExpression::convert($sql, TRUE)); + if (method_exists($classname, 'getCategory') && $classname::getCategory() === SqlFunction::CATEGORY_AGGREGATE) { + return TRUE; + } + } + return FALSE; + } + + /** + * Add LIMIT to query + * + * @throws \CRM_Core_Exception + */ + protected function buildLimit() { + if ($this->getLimit() || $this->getOffset()) { + // If limit is 0, mysql will actually return 0 results. Instead set to maximum possible. + $this->query->limit($this->getLimit() ?: self::UNLIMITED, $this->getOffset()); + } + } + + /** + * Add GROUP BY clause to query + */ + protected function buildGroupBy() { + foreach ($this->getGroupBy() as $item) { + $this->query->groupBy($this->renderExpr($this->getExpression($item))); + } + } + + /** + * @param string $path + * @param array $field + */ + public function addSpecField($path, $field) { + // Only add field to spec if we have permission + if ($this->getCheckPermissions() && !empty($field['permission']) && !\CRM_Core_Permission::check($field['permission'])) { + $this->apiFieldSpec[$path] = FALSE; + return; + } + $this->apiFieldSpec[$path] = $field + [ + 'name' => $path, + 'type' => 'Extra', + 'entity' => NULL, + 'implicit_join' => NULL, + 'explicit_join' => NULL, + ]; + } + + /** + * @param string $expr + * @param array $allowedTypes + * @return SqlExpression + * @throws \CRM_Core_Exception + */ + protected function getExpression(string $expr, $allowedTypes = NULL) { + $sqlExpr = SqlExpression::convert($expr, FALSE, $allowedTypes); + foreach ($sqlExpr->getFields() as $fieldName) { + $this->getField($fieldName, TRUE); + } + return $sqlExpr; + } + + /** + * Recursively validate and transform a branch or leaf clause array to SQL. + * + * @param array $clause + * @param string $type + * WHERE|HAVING|ON + * @param int $depth + * @return string SQL where clause + * + * @throws \CRM_Core_Exception + * @uses composeClause() to generate the SQL etc. + */ + public function treeWalkClauses($clause, $type, $depth = 0) { + // Skip empty leaf. + if (in_array($clause[0], ['AND', 'OR', 'NOT']) && empty($clause[1])) { + return ''; + } + switch ($clause[0]) { + case 'OR': + case 'AND': + // handle branches + if (count($clause[1]) === 1) { + // a single set so AND|OR is immaterial + return $this->treeWalkClauses($clause[1][0], $type, $depth + 1); + } + else { + $sql_subclauses = []; + foreach ($clause[1] as $subclause) { + $sql_subclauses[] = $this->treeWalkClauses($subclause, $type, $depth + 1); + } + return '(' . implode("\n" . $clause[0] . ' ', $sql_subclauses) . ')'; + } + + case 'NOT': + // If we get a group of clauses with no operator, assume AND + if (!is_string($clause[1][0])) { + $clause[1] = ['AND', $clause[1]]; + } + return 'NOT (' . $this->treeWalkClauses($clause[1], $type, $depth + 1) . ')'; + + default: + try { + return $this->composeClause($clause, $type, $depth); + } + // Silently ignore fields the user lacks permission to see + catch (UnauthorizedException $e) { + return ''; + } + } + } + + /** + * Validate and transform a leaf clause array to SQL. + * @param array $clause [$fieldName, $operator, $criteria, $isExpression] + * @param string $type + * WHERE|HAVING|ON + * @param int $depth + * @return string SQL + * @throws \CRM_Core_Exception + * @throws \Exception + */ + public function composeClause(array $clause, string $type, int $depth) { + $field = NULL; + // Pad array for unary operators + [$expr, $operator, $value] = array_pad($clause, 3, NULL); + $isExpression = $clause[3] ?? FALSE; + if (!in_array($operator, CoreUtil::getOperators(), TRUE)) { + throw new \CRM_Core_Exception('Illegal operator'); + } + + // For WHERE clause, expr must be the name of a field. + if ($type === 'WHERE' && !$isExpression) { + $expr = $this->getExpression($expr, ['SqlField', 'SqlFunction', 'SqlEquation']); + if ($expr->getType() === 'SqlField') { + $fieldName = count($expr->getFields()) === 1 ? $expr->getFields()[0] : NULL; + $field = $this->getField($fieldName, TRUE); + FormattingUtil::formatInputValue($value, $fieldName, $field, $this->entityValues, $operator); + } + elseif ($expr->getType() === 'SqlFunction') { + $fauxField = [ + 'name' => NULL, + 'data_type' => $expr::getDataType(), + ]; + FormattingUtil::formatInputValue($value, NULL, $fauxField, $this->entityValues, $operator); + } + $fieldAlias = $expr->render($this); + } + // For HAVING, expr must be an item in the SELECT clause + elseif ($type === 'HAVING') { + // Expr references a fieldName or alias + if (isset($this->selectAliases[$expr])) { + $fieldAlias = $expr; + // Attempt to format if this is a real field + if (isset($this->apiFieldSpec[$expr])) { + $field = $this->getField($expr); + FormattingUtil::formatInputValue($value, $expr, $field, $this->entityValues, $operator); + } + } + // Expr references a non-field expression like a function; convert to alias + elseif (in_array($expr, $this->selectAliases)) { + $fieldAlias = array_search($expr, $this->selectAliases); + } + // If either the having or select field contains a pseudoconstant suffix, match and perform substitution + else { + [$fieldName] = explode(':', $expr); + foreach ($this->selectAliases as $selectAlias => $selectExpr) { + [$selectField] = explode(':', $selectAlias); + if ($selectAlias === $selectExpr && $fieldName === $selectField && isset($this->apiFieldSpec[$fieldName])) { + $field = $this->getField($fieldName); + FormattingUtil::formatInputValue($value, $expr, $field, $this->entityValues, $operator); + $fieldAlias = $selectAlias; + break; + } + } + } + if (!isset($fieldAlias)) { + if (in_array($expr, $this->getSelect())) { + throw new UnauthorizedException("Unauthorized field '$expr'"); + } + else { + throw new \CRM_Core_Exception("Invalid expression in HAVING clause: '$expr'. Must use a value from SELECT clause."); + } + } + $fieldAlias = '`' . $fieldAlias . '`'; + } + elseif ($type === 'ON' || ($type === 'WHERE' && $isExpression)) { + $expr = $this->getExpression($expr); + $fieldName = count($expr->getFields()) === 1 ? $expr->getFields()[0] : NULL; + $fieldAlias = $expr->render($this); + if (is_string($value)) { + $valExpr = $this->getExpression($value); + // Format string input + if ($expr->getType() === 'SqlField' && $valExpr->getType() === 'SqlString') { + // Strip surrounding quotes + $value = substr($valExpr->getExpr(), 1, -1); + FormattingUtil::formatInputValue($value, $fieldName, $this->apiFieldSpec[$fieldName], $this->entityValues, $operator); + return $this->createSQLClause($fieldAlias, $operator, $value, $this->apiFieldSpec[$fieldName], $depth); + } + else { + $value = $valExpr->render($this); + return sprintf('%s %s %s', $fieldAlias, $operator, $value); + } + } + elseif ($expr->getType() === 'SqlField') { + $field = $this->getField($fieldName); + FormattingUtil::formatInputValue($value, $fieldName, $field, $this->entityValues, $operator); + } + } + + $sqlClause = $this->createSQLClause($fieldAlias, $operator, $value, $field, $depth); + if ($sqlClause === NULL) { + throw new \CRM_Core_Exception("Invalid value in $type clause for '$expr'"); + } + return $sqlClause; + } + + /** + * @param string $fieldAlias + * @param string $operator + * @param mixed $value + * @param array|null $field + * @param int $depth + * @return array|string|NULL + * @throws \Exception + */ + protected function createSQLClause($fieldAlias, $operator, $value, $field, int $depth) { + if (!empty($field['operators']) && !in_array($operator, $field['operators'], TRUE)) { + throw new \CRM_Core_Exception('Illegal operator for ' . $field['name']); + } + // Some fields use a callback to generate their sql + if (!empty($field['sql_filters'])) { + $sql = []; + foreach ($field['sql_filters'] as $filter) { + $clause = is_callable($filter) ? $filter($field, $fieldAlias, $operator, $value, $this, $depth) : NULL; + if ($clause) { + $sql[] = $clause; + } + } + return $sql ? implode(' AND ', $sql) : NULL; + } + + // The CONTAINS and NOT CONTAINS operators match a substring for strings. + // For arrays & serialized fields, they only match a complete (not partial) string within the array. + if ($operator === 'CONTAINS' || $operator === 'NOT CONTAINS') { + $sep = \CRM_Core_DAO::VALUE_SEPARATOR; + switch ($field['serialize'] ?? NULL) { + + case \CRM_Core_DAO::SERIALIZE_JSON: + $operator = ($operator === 'CONTAINS') ? 'LIKE' : 'NOT LIKE'; + $value = '%"' . $value . '"%'; + // FIXME: Use this instead of the above hack once MIN_INSTALL_MYSQL_VER is bumped to 5.7. + // return sprintf('JSON_SEARCH(%s, "one", "%s") IS NOT NULL', $fieldAlias, \CRM_Core_DAO::escapeString($value)); + break; + + case \CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND: + $operator = ($operator === 'CONTAINS') ? 'LIKE' : 'NOT LIKE'; + // This is easy to query because the string is always bookended by separators. + $value = '%' . $sep . $value . $sep . '%'; + break; + + case \CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED: + $operator = ($operator === 'CONTAINS') ? 'REGEXP' : 'NOT REGEXP'; + // This is harder to query because there's no bookend. + // Use regex to match string within separators or content boundary + // Escaping regex per https://stackoverflow.com/questions/3782379/whats-the-best-way-to-escape-user-input-for-regular-expressions-in-mysql + $value = "(^|$sep)" . preg_quote($value, '&') . "($sep|$)"; + break; + + case \CRM_Core_DAO::SERIALIZE_COMMA: + $operator = ($operator === 'CONTAINS') ? 'REGEXP' : 'NOT REGEXP'; + // Match string within commas or content boundary + // Escaping regex per https://stackoverflow.com/questions/3782379/whats-the-best-way-to-escape-user-input-for-regular-expressions-in-mysql + $value = '(^|,)' . preg_quote($value, '&') . '(,|$)'; + break; + + default: + $operator = ($operator === 'CONTAINS') ? 'LIKE' : 'NOT LIKE'; + $value = '%' . $value . '%'; + break; + } + } + + if ($operator === 'IS EMPTY' || $operator === 'IS NOT EMPTY') { + // If field is not a string or number, this will pass through and use IS NULL/IS NOT NULL + $operator = str_replace('EMPTY', 'NULL', $operator); + // For strings & numbers, create an OR grouping of empty value OR null + if (in_array($field['data_type'] ?? NULL, ['String', 'Integer', 'Float'], TRUE)) { + $emptyVal = $field['data_type'] === 'String' ? '""' : '0'; + $isEmptyClause = $operator === 'IS NULL' ? "= $emptyVal OR" : "<> $emptyVal AND"; + return "($fieldAlias $isEmptyClause $fieldAlias $operator)"; + } + } + + if ($operator == 'REGEXP' || $operator == 'NOT REGEXP') { + return sprintf('%s %s "%s"', $fieldAlias, $operator, \CRM_Core_DAO::escapeString($value)); + } + + if (!$value && ($operator === 'IN' || $operator === 'NOT IN')) { + $value[] = FALSE; + } + + if (is_bool($value)) { + $value = (int) $value; + } + + return \CRM_Core_DAO::createSQLFilter($fieldAlias, [$operator => $value]); + } + + /** + * @return array + */ + public function getSelect() { + return $this->api->getSelect(); + } + + /** + * @return array + */ + public function getWhere() { + return $this->api->getWhere(); + } + + /** + * @return array + */ + public function getHaving() { + return $this->api->getHaving(); + } + + /** + * @return array + */ + public function getJoin() { + return $this->api->getJoin(); + } + + /** + * @return array + */ + public function getGroupBy() { + return $this->api->getGroupBy(); + } + + /** + * @return array + */ + public function getOrderBy() { + return $this->api->getOrderBy(); + } + + /** + * @return mixed + */ + public function getLimit() { + return $this->api->getLimit(); + } + + /** + * @return mixed + */ + public function getOffset() { + return $this->api->getOffset(); + } + + /** + * @return \CRM_Utils_SQL_Select + */ + public function getQuery() { + return $this->query; + } + + /** + * @return bool|string + */ + public function getCheckPermissions() { + return $this->api->getCheckPermissions(); + } + + /** + * Add something to the api's debug output if debugging is enabled + * + * @param $key + * @param $item + */ + public function debug($key, $item) { + if ($this->api->getDebug()) { + $this->api->_debugOutput[$key][] = $item; + } + } + +} diff --git a/civicrm/Civi/Api4/Query/Api4SelectQuery.php b/civicrm/Civi/Api4/Query/Api4SelectQuery.php index fa400f66f2..26d09e1897 100644 --- a/civicrm/Civi/Api4/Query/Api4SelectQuery.php +++ b/civicrm/Civi/Api4/Query/Api4SelectQuery.php @@ -19,29 +19,9 @@ use Civi\Api4\Utils\CoreUtil; use Civi\Api4\Utils\SelectUtil; /** - * A query `node` may be in one of three formats: - * - * * leaf: [$fieldName, $operator, $criteria] - * * negated: ['NOT', $node] - * * branch: ['OR|NOT', [$node, $node, ...]] - * - * Leaf operators are one of: - * - * * '=', '<=', '>=', '>', '<', 'LIKE', "<>", "!=", - * * 'NOT LIKE', 'IN', 'NOT IN', 'BETWEEN', 'NOT BETWEEN', - * * 'IS NOT NULL', 'IS NULL', 'CONTAINS', 'NOT CONTAINS', - * * 'IS EMPTY', 'IS NOT EMPTY', 'REGEXP', 'NOT REGEXP'. + * Constructs SELECT FROM queries for API4 GET actions. */ -class Api4SelectQuery { - - const - MAIN_TABLE_ALIAS = 'a', - UNLIMITED = '18446744073709551615'; - - /** - * @var \CRM_Utils_SQL_Select - */ - protected $query; +class Api4SelectQuery extends Api4Query { /** * Used to keep track of implicit join table aliases @@ -55,27 +35,11 @@ class Api4SelectQuery { */ protected $autoJoinSuffix = 0; - /** - * @var array[] - */ - protected $apiFieldSpec; - /** * @var array */ protected $aclFields = []; - /** - * @var \Civi\Api4\Generic\DAOGetAction - */ - private $api; - - /** - * @var array - * [alias => expr][] - */ - protected $selectAliases = []; - /** * @var bool */ @@ -92,15 +56,16 @@ class Api4SelectQuery { private $entityAccess = []; /** + * Explicit join currently being processed * @var array */ - private $entityValues = []; + private $openJoin; /** - * @param \Civi\Api4\Generic\DAOGetAction $apiGet + * @param \Civi\Api4\Generic\DAOGetAction $api */ - public function __construct($apiGet) { - $this->api = $apiGet; + public function __construct($api) { + parent::__construct($api); // Always select ID of main table unless grouping by something else $keys = CoreUtil::getInfoItem($this->getEntity(), 'primary_key'); @@ -127,55 +92,16 @@ class Api4SelectQuery { $this->addExplicitJoins(); } - protected function isAggregateQuery() { - if ($this->getGroupBy()) { - return TRUE; - } - foreach ($this->getSelect() as $sql) { - $classname = get_class(SqlExpression::convert($sql, TRUE)); - if (method_exists($classname, 'getCategory') && $classname::getCategory() === SqlFunction::CATEGORY_AGGREGATE) { - return TRUE; - } - } - return FALSE; - } - - /** - * Builds main final sql statement after initialization. - * - * @return string - * @throws \CRM_Core_Exception - */ - public function getSql() { - $this->buildSelectClause(); - $this->buildWhereClause(); - $this->buildOrderBy(); - $this->buildLimit(); - $this->buildGroupBy(); - $this->buildHavingClause(); - return $this->query->toSQL(); - } - /** * Why walk when you can * * @return array */ - public function run() { - $results = []; - $sql = $this->getSql(); - $this->debug('sql', $sql); - $query = \CRM_Core_DAO::executeQuery($sql); - while ($query->fetch()) { - $result = []; - foreach ($this->selectAliases as $alias => $expr) { - $returnName = $alias; - $alias = str_replace('.', '_', $alias); - $result[$returnName] = property_exists($query, $alias) ? $query->$alias : NULL; - } - $results[] = $result; + public function run(): array { + $results = $this->getResults(); + foreach ($results as &$result) { + FormattingUtil::formatOutputValues($result, $this->apiFieldSpec, 'get', $this->selectAliases); } - FormattingUtil::formatOutputValues($results, $this->apiFieldSpec, 'get', $this->selectAliases); return $results; } @@ -233,7 +159,7 @@ class Api4SelectQuery { ], ['custom_group' => 'custom_group']); $customSelect = []; foreach ($customGroups as $groupName) { - $customSelect[] = "$groupName.*"; + $customSelect[] = str_replace([' '], '_', $groupName) . '.*'; } array_splice($select, $customStar, 1, $customSelect); } @@ -360,27 +286,6 @@ class Api4SelectQuery { } } - /** - * Add LIMIT to query - * - * @throws \CRM_Core_Exception - */ - protected function buildLimit() { - if ($this->getLimit() || $this->getOffset()) { - // If limit is 0, mysql will actually return 0 results. Instead set to maximum possible. - $this->query->limit($this->getLimit() ?: self::UNLIMITED, $this->getOffset()); - } - } - - /** - * Add GROUP BY clause to query - */ - protected function buildGroupBy() { - foreach ($this->getGroupBy() as $item) { - $this->query->groupBy($this->renderExpr($this->getExpression($item))); - } - } - /** * This takes all the where clauses that use `=` to build an array of known values which every record must have. * @@ -414,266 +319,6 @@ class Api4SelectQuery { } } - /** - * Recursively validate and transform a branch or leaf clause array to SQL. - * - * @param array $clause - * @param string $type - * WHERE|HAVING|ON - * @param int $depth - * @return string SQL where clause - * - * @throws \CRM_Core_Exception - * @uses composeClause() to generate the SQL etc. - */ - protected function treeWalkClauses($clause, $type, $depth = 0) { - // Skip empty leaf. - if (in_array($clause[0], ['AND', 'OR', 'NOT']) && empty($clause[1])) { - return ''; - } - switch ($clause[0]) { - case 'OR': - case 'AND': - // handle branches - if (count($clause[1]) === 1) { - // a single set so AND|OR is immaterial - return $this->treeWalkClauses($clause[1][0], $type, $depth + 1); - } - else { - $sql_subclauses = []; - foreach ($clause[1] as $subclause) { - $sql_subclauses[] = $this->treeWalkClauses($subclause, $type, $depth + 1); - } - return '(' . implode("\n" . $clause[0] . ' ', $sql_subclauses) . ')'; - } - - case 'NOT': - // If we get a group of clauses with no operator, assume AND - if (!is_string($clause[1][0])) { - $clause[1] = ['AND', $clause[1]]; - } - return 'NOT (' . $this->treeWalkClauses($clause[1], $type, $depth + 1) . ')'; - - default: - try { - return $this->composeClause($clause, $type, $depth); - } - // Silently ignore fields the user lacks permission to see - catch (UnauthorizedException $e) { - return ''; - } - } - } - - /** - * Validate and transform a leaf clause array to SQL. - * @param array $clause [$fieldName, $operator, $criteria, $isExpression] - * @param string $type - * WHERE|HAVING|ON - * @param int $depth - * @return string SQL - * @throws \CRM_Core_Exception - * @throws \Exception - */ - public function composeClause(array $clause, string $type, int $depth) { - $field = NULL; - // Pad array for unary operators - [$expr, $operator, $value] = array_pad($clause, 3, NULL); - $isExpression = $clause[3] ?? FALSE; - if (!in_array($operator, CoreUtil::getOperators(), TRUE)) { - throw new \CRM_Core_Exception('Illegal operator'); - } - - // For WHERE clause, expr must be the name of a field. - if ($type === 'WHERE' && !$isExpression) { - $expr = $this->getExpression($expr, ['SqlField', 'SqlFunction', 'SqlEquation']); - if ($expr->getType() === 'SqlField') { - $fieldName = count($expr->getFields()) === 1 ? $expr->getFields()[0] : NULL; - $field = $this->getField($fieldName, TRUE); - FormattingUtil::formatInputValue($value, $fieldName, $field, $this->entityValues, $operator); - } - elseif ($expr->getType() === 'SqlFunction') { - $fauxField = [ - 'name' => NULL, - 'data_type' => $expr::getDataType(), - ]; - FormattingUtil::formatInputValue($value, NULL, $fauxField, $this->entityValues, $operator); - } - $fieldAlias = $expr->render($this); - } - // For HAVING, expr must be an item in the SELECT clause - elseif ($type === 'HAVING') { - // Expr references a fieldName or alias - if (isset($this->selectAliases[$expr])) { - $fieldAlias = $expr; - // Attempt to format if this is a real field - if (isset($this->apiFieldSpec[$expr])) { - $field = $this->getField($expr); - FormattingUtil::formatInputValue($value, $expr, $field, $this->entityValues, $operator); - } - } - // Expr references a non-field expression like a function; convert to alias - elseif (in_array($expr, $this->selectAliases)) { - $fieldAlias = array_search($expr, $this->selectAliases); - } - // If either the having or select field contains a pseudoconstant suffix, match and perform substitution - else { - [$fieldName] = explode(':', $expr); - foreach ($this->selectAliases as $selectAlias => $selectExpr) { - [$selectField] = explode(':', $selectAlias); - if ($selectAlias === $selectExpr && $fieldName === $selectField && isset($this->apiFieldSpec[$fieldName])) { - $field = $this->getField($fieldName); - FormattingUtil::formatInputValue($value, $expr, $field, $this->entityValues, $operator); - $fieldAlias = $selectAlias; - break; - } - } - } - if (!isset($fieldAlias)) { - if (in_array($expr, $this->getSelect())) { - throw new UnauthorizedException("Unauthorized field '$expr'"); - } - else { - throw new \CRM_Core_Exception("Invalid expression in HAVING clause: '$expr'. Must use a value from SELECT clause."); - } - } - $fieldAlias = '`' . $fieldAlias . '`'; - } - elseif ($type === 'ON' || ($type === 'WHERE' && $isExpression)) { - $expr = $this->getExpression($expr); - $fieldName = count($expr->getFields()) === 1 ? $expr->getFields()[0] : NULL; - $fieldAlias = $expr->render($this); - if (is_string($value)) { - $valExpr = $this->getExpression($value); - if ($expr->getType() === 'SqlField' && $valExpr->getType() === 'SqlString') { - $value = $valExpr->getExpr(); - FormattingUtil::formatInputValue($value, $fieldName, $this->apiFieldSpec[$fieldName], $this->entityValues, $operator); - return $this->createSQLClause($fieldAlias, $operator, $value, $this->apiFieldSpec[$fieldName], $depth); - } - else { - $value = $valExpr->render($this); - return sprintf('%s %s %s', $fieldAlias, $operator, $value); - } - } - elseif ($expr->getType() === 'SqlField') { - $field = $this->getField($fieldName); - FormattingUtil::formatInputValue($value, $fieldName, $field, $this->entityValues, $operator); - } - } - - $sqlClause = $this->createSQLClause($fieldAlias, $operator, $value, $field, $depth); - if ($sqlClause === NULL) { - throw new \CRM_Core_Exception("Invalid value in $type clause for '$expr'"); - } - return $sqlClause; - } - - /** - * @param string $fieldAlias - * @param string $operator - * @param mixed $value - * @param array|null $field - * @param int $depth - * @return array|string|NULL - * @throws \Exception - */ - protected function createSQLClause($fieldAlias, $operator, $value, $field, int $depth) { - if (!empty($field['operators']) && !in_array($operator, $field['operators'], TRUE)) { - throw new \CRM_Core_Exception('Illegal operator for ' . $field['name']); - } - // Some fields use a callback to generate their sql - if (!empty($field['sql_filters'])) { - $sql = []; - foreach ($field['sql_filters'] as $filter) { - $clause = is_callable($filter) ? $filter($field, $fieldAlias, $operator, $value, $this, $depth) : NULL; - if ($clause) { - $sql[] = $clause; - } - } - return $sql ? implode(' AND ', $sql) : NULL; - } - - // The CONTAINS and NOT CONTAINS operators match a substring for strings. - // For arrays & serialized fields, they only match a complete (not partial) string within the array. - if ($operator === 'CONTAINS' || $operator === 'NOT CONTAINS') { - $sep = \CRM_Core_DAO::VALUE_SEPARATOR; - switch ($field['serialize'] ?? NULL) { - - case \CRM_Core_DAO::SERIALIZE_JSON: - $operator = ($operator === 'CONTAINS') ? 'LIKE' : 'NOT LIKE'; - $value = '%"' . $value . '"%'; - // FIXME: Use this instead of the above hack once MIN_INSTALL_MYSQL_VER is bumped to 5.7. - // return sprintf('JSON_SEARCH(%s, "one", "%s") IS NOT NULL', $fieldAlias, \CRM_Core_DAO::escapeString($value)); - break; - - case \CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND: - $operator = ($operator === 'CONTAINS') ? 'LIKE' : 'NOT LIKE'; - // This is easy to query because the string is always bookended by separators. - $value = '%' . $sep . $value . $sep . '%'; - break; - - case \CRM_Core_DAO::SERIALIZE_SEPARATOR_TRIMMED: - $operator = ($operator === 'CONTAINS') ? 'REGEXP' : 'NOT REGEXP'; - // This is harder to query because there's no bookend. - // Use regex to match string within separators or content boundary - // Escaping regex per https://stackoverflow.com/questions/3782379/whats-the-best-way-to-escape-user-input-for-regular-expressions-in-mysql - $value = "(^|$sep)" . preg_quote($value, '&') . "($sep|$)"; - break; - - case \CRM_Core_DAO::SERIALIZE_COMMA: - $operator = ($operator === 'CONTAINS') ? 'REGEXP' : 'NOT REGEXP'; - // Match string within commas or content boundary - // Escaping regex per https://stackoverflow.com/questions/3782379/whats-the-best-way-to-escape-user-input-for-regular-expressions-in-mysql - $value = '(^|,)' . preg_quote($value, '&') . '(,|$)'; - break; - - default: - $operator = ($operator === 'CONTAINS') ? 'LIKE' : 'NOT LIKE'; - $value = '%' . $value . '%'; - break; - } - } - - if ($operator === 'IS EMPTY' || $operator === 'IS NOT EMPTY') { - // If field is not a string or number, this will pass through and use IS NULL/IS NOT NULL - $operator = str_replace('EMPTY', 'NULL', $operator); - // For strings & numbers, create an OR grouping of empty value OR null - if (in_array($field['data_type'] ?? NULL, ['String', 'Integer', 'Float'], TRUE)) { - $emptyVal = $field['data_type'] === 'String' ? '""' : '0'; - $isEmptyClause = $operator === 'IS NULL' ? "= $emptyVal OR" : "<> $emptyVal AND"; - return "($fieldAlias $isEmptyClause $fieldAlias $operator)"; - } - } - - if ($operator == 'REGEXP' || $operator == 'NOT REGEXP') { - return sprintf('%s %s "%s"', $fieldAlias, $operator, \CRM_Core_DAO::escapeString($value)); - } - - if (!$value && ($operator === 'IN' || $operator === 'NOT IN')) { - $value[] = FALSE; - } - - if (is_bool($value)) { - $value = (int) $value; - } - - return \CRM_Core_DAO::createSQLFilter($fieldAlias, [$operator => $value]); - } - - /** - * @param string $expr - * @param array $allowedTypes - * @return SqlExpression - * @throws \CRM_Core_Exception - */ - protected function getExpression(string $expr, $allowedTypes = NULL) { - $sqlExpr = SqlExpression::convert($expr, FALSE, $allowedTypes); - foreach ($sqlExpr->getFields() as $fieldName) { - $this->getField($fieldName, TRUE); - } - return $sqlExpr; - } - /** * Get acl clause for an entity * @@ -804,6 +449,7 @@ class Api4SelectQuery { $this->addSpecField($alias . '.' . $field['name'], $field); } $tableName = CoreUtil::getTableName($entity); + $this->startNewJoin($tableName, $alias); // Save join info to be retrieved by $this->getExplicitJoin() $joinOn = array_filter(array_filter($join, 'is_array')); $this->explicitJoins[$alias] = [ @@ -815,15 +461,15 @@ class Api4SelectQuery { ]; // If the first condition is a string, it's the name of a bridge entity if (!empty($join[0]) && is_string($join[0]) && \CRM_Utils_Rule::alphanumeric($join[0])) { - $this->addBridgeJoin($join, $entity, $alias, $side); + $conditions = $this->addBridgeJoin($join, $entity, $alias); } else { $conditions = $this->getJoinConditions($join, $entity, $alias, $joinEntityFields); foreach ($joinOn as $clause) { $conditions[] = $this->treeWalkClauses($clause, 'ON'); } - $this->join($side, $tableName, $alias, $conditions); } + $this->finishJoin($side, $conditions); } } @@ -893,10 +539,9 @@ class Api4SelectQuery { * @param array $joinTree * @param string $joinEntity * @param string $alias - * @param string $side * @throws \CRM_Core_Exception */ - protected function addBridgeJoin($joinTree, $joinEntity, $alias, $side) { + protected function addBridgeJoin($joinTree, $joinEntity, $alias) { $bridgeEntity = array_shift($joinTree); $this->explicitJoins[$alias]['bridge'] = $bridgeEntity; @@ -909,21 +554,25 @@ class Api4SelectQuery { $linkConditions = $this->getBridgeLinkConditions($bridgeAlias, $alias, $joinTable, $joinRef); - $bridgeConditions = $this->getBridgeJoinConditions($joinTree, $baseRef, $alias, $bridgeAlias, $bridgeEntity, $side); + $bridgeConditions = $this->getBridgeJoinConditions($joinTree, $baseRef, $alias, $bridgeAlias, $bridgeEntity); $acls = array_values($this->getAclClause($alias, CoreUtil::getBAOFromApiName($joinEntity), [NULL, NULL])); - $joinConditions = []; + $outerConditions = []; foreach (array_filter($joinTree) as $clause) { - $joinConditions[] = $this->treeWalkClauses($clause, 'ON'); + $outerConditions[] = $this->treeWalkClauses($clause, 'ON'); } // Info needed for joining custom fields extending the bridge entity $this->explicitJoins[$alias]['bridge_table_alias'] = $bridgeAlias; + // Invert the join + $this->openJoin['table'] = $bridgeTable; + $this->openJoin['alias'] = $bridgeAlias; - $outerConditions = array_merge($joinConditions, $bridgeConditions); + // Add main table as inner join $innerConditions = array_merge($linkConditions, $acls); - $this->query->join($alias, "$side JOIN (`$bridgeTable` AS `$bridgeAlias` INNER JOIN `$joinTable` AS `$alias` ON (" . implode(' AND ', $innerConditions) . ")) ON " . implode(' AND ', $outerConditions)); + $this->addJoin('INNER', $joinTable, $alias, $bridgeAlias, $innerConditions); + return array_merge($outerConditions, $bridgeConditions); } /** @@ -1159,7 +808,7 @@ class Api4SelectQuery { if ($bao) { $conditions = array_merge($conditions, $this->getAclClause($tableAlias, $bao, $joinPath)); } - $this->join('LEFT', $target, $tableAlias, $conditions); + $this->addJoin('LEFT', $target, $tableAlias, $baseTableAlias, $conditions); } } @@ -1168,14 +817,47 @@ class Api4SelectQuery { } } + /** + * Begins a new join; as long as it's "open" then additional joins will nest inside it. + */ + private function startNewJoin(string $tableName, string $joinAlias): void { + $this->openJoin = [ + 'table' => $tableName, + 'alias' => $joinAlias, + 'subjoins' => [], + ]; + } + + private function finishJoin(string $side, $conditions): void { + $tableAlias = $this->openJoin['alias']; + $tableName = $this->openJoin['table']; + $subjoinClause = ''; + foreach ($this->openJoin['subjoins'] as $subjoin) { + $subjoinClause .= " INNER JOIN `{$subjoin['table']}` `{$subjoin['alias']}` ON (" . implode(' AND ', $subjoin['conditions']) . ")"; + } + $this->query->join($tableAlias, "$side JOIN (`$tableName` `$tableAlias`$subjoinClause) ON " . implode(' AND ', $conditions)); + $this->openJoin = NULL; + } + /** * @param string $side * @param string $tableName * @param string $tableAlias + * @param string $baseTableAlias * @param array $conditions */ - private function join(string $side, string $tableName, string $tableAlias, array $conditions): void { - $this->query->join($tableAlias, "$side JOIN `$tableName` `$tableAlias` ON " . implode(' AND ', $conditions)); + private function addJoin(string $side, string $tableName, string $tableAlias, string $baseTableAlias, array $conditions): void { + // If this join is based off the current open join, incorporate it + if ($baseTableAlias === ($this->openJoin['alias'] ?? NULL)) { + $this->openJoin['subjoins'][] = [ + 'table' => $tableName, + 'alias' => $tableAlias, + 'conditions' => $conditions, + ]; + } + else { + $this->query->join($tableAlias, "$side JOIN `$tableName` `$tableAlias` ON " . implode(' AND ', $conditions)); + } } /** @@ -1213,76 +895,6 @@ class Api4SelectQuery { return $this->api->getEntityName(); } - /** - * @return array - */ - public function getSelect() { - return $this->api->getSelect(); - } - - /** - * @return array - */ - public function getWhere() { - return $this->api->getWhere(); - } - - /** - * @return array - */ - public function getHaving() { - return $this->api->getHaving(); - } - - /** - * @return array - */ - public function getJoin() { - return $this->api->getJoin(); - } - - /** - * @return array - */ - public function getGroupBy() { - return $this->api->getGroupBy(); - } - - /** - * @return array - */ - public function getOrderBy() { - return $this->api->getOrderBy(); - } - - /** - * @return mixed - */ - public function getLimit() { - return $this->api->getLimit(); - } - - /** - * @return mixed - */ - public function getOffset() { - return $this->api->getOffset(); - } - - /** - * @return \CRM_Utils_SQL_Select - */ - public function getQuery() { - return $this->query; - } - - /** - * @return bool|string - */ - public function getCheckPermissions() { - return $this->api->getCheckPermissions(); - } - /** * @param string $alias * @return array{entity: string, alias: string, table: string, bridge: string|NULL}|NULL @@ -1298,22 +910,6 @@ class Api4SelectQuery { return $this->explicitJoins; } - /** - * @param string $path - * @param array $field - */ - private function addSpecField($path, $field) { - // Only add field to spec if we have permission - if ($this->getCheckPermissions() && !empty($field['permission']) && !\CRM_Core_Permission::check($field['permission'])) { - $this->apiFieldSpec[$path] = FALSE; - return; - } - $this->apiFieldSpec[$path] = $field + [ - 'implicit_join' => NULL, - 'explicit_join' => NULL, - ]; - } - /** * Returns rendered expression or alias if it is already aliased in the SELECT clause. * @@ -1333,16 +929,4 @@ class Api4SelectQuery { return $expr->render($this); } - /** - * Add something to the api's debug output if debugging is enabled - * - * @param $key - * @param $item - */ - public function debug($key, $item) { - if ($this->api->getDebug()) { - $this->api->_debugOutput[$key][] = $item; - } - } - } diff --git a/civicrm/Civi/Api4/Query/SqlBool.php b/civicrm/Civi/Api4/Query/SqlBool.php new file mode 100644 index 0000000000..36aeb3ee1f --- /dev/null +++ b/civicrm/Civi/Api4/Query/SqlBool.php @@ -0,0 +1,32 @@ +<?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\Query; + +/** + * Boolean sql expression + */ +class SqlBool extends SqlExpression { + + protected static $dataType = 'Boolean'; + + protected function initialize() { + } + + public function render(Api4Query $query): string { + return $this->expr === 'TRUE' ? '1' : '0'; + } + + public static function getTitle(): string { + return ts('Boolean'); + } + +} diff --git a/civicrm/Civi/Api4/Query/SqlEquation.php b/civicrm/Civi/Api4/Query/SqlEquation.php index da5e9d2f1c..a6dd5f564f 100644 --- a/civicrm/Civi/Api4/Query/SqlEquation.php +++ b/civicrm/Civi/Api4/Query/SqlEquation.php @@ -76,10 +76,10 @@ class SqlEquation extends SqlExpression { /** * Render the expression for insertion into the sql query * - * @param \Civi\Api4\Query\Api4SelectQuery $query + * @param \Civi\Api4\Query\Api4Query $query * @return string */ - public function render(Api4SelectQuery $query): string { + public function render(Api4Query $query): string { $output = []; foreach ($this->args as $i => $arg) { // Just an operator diff --git a/civicrm/Civi/Api4/Query/SqlExpression.php b/civicrm/Civi/Api4/Query/SqlExpression.php index f4192477d3..9416a9aa3a 100644 --- a/civicrm/Civi/Api4/Query/SqlExpression.php +++ b/civicrm/Civi/Api4/Query/SqlExpression.php @@ -21,7 +21,8 @@ namespace Civi\Api4\Query; abstract class SqlExpression { /** - * @var array + * Field names used in this expression + * @var string[] */ protected $fields = []; @@ -102,6 +103,9 @@ abstract class SqlExpression { elseif ($expr === 'NULL') { $className = 'SqlNull'; } + elseif ($expr === 'TRUE' || $expr === 'FALSE') { + $className = 'SqlBool'; + } elseif ($expr === '*') { $className = 'SqlWild'; } @@ -140,10 +144,10 @@ abstract class SqlExpression { /** * Renders expression to a sql string, replacing field names with column names. * - * @param \Civi\Api4\Query\Api4SelectQuery $query + * @param \Civi\Api4\Query\Api4Query $query * @return string */ - abstract public function render(Api4SelectQuery $query): string; + abstract public function render(Api4Query $query): string; /** * @return string @@ -224,7 +228,7 @@ abstract class SqlExpression { protected function captureExpressions(string &$arg, array $mustBe, int $max) { $captured = []; $arg = ltrim($arg); - while ($arg) { + while (strlen($arg)) { $item = $this->captureExpression($arg); $arg = ltrim(substr($arg, strlen($item))); $expr = self::convert($item, FALSE, $mustBe); diff --git a/civicrm/Civi/Api4/Query/SqlField.php b/civicrm/Civi/Api4/Query/SqlField.php index a921dabfaa..862f67aea0 100644 --- a/civicrm/Civi/Api4/Query/SqlField.php +++ b/civicrm/Civi/Api4/Query/SqlField.php @@ -19,13 +19,13 @@ class SqlField extends SqlExpression { public $supportsExpansion = TRUE; protected function initialize() { - if ($this->alias && $this->alias !== $this->expr) { + if ($this->alias && $this->alias !== $this->expr && !strpos($this->expr, ':')) { throw new \CRM_Core_Exception("Aliasing field names is not allowed, only expressions can have an alias."); } $this->fields[] = $this->expr; } - public function render(Api4SelectQuery $query): string { + public function render(Api4Query $query): string { $field = $query->getField($this->expr, TRUE); if (!empty($field['sql_renderer'])) { $renderer = $field['sql_renderer']; diff --git a/civicrm/Civi/Api4/Query/SqlFunction.php b/civicrm/Civi/Api4/Query/SqlFunction.php index ffb9506e52..a766e95bbd 100644 --- a/civicrm/Civi/Api4/Query/SqlFunction.php +++ b/civicrm/Civi/Api4/Query/SqlFunction.php @@ -142,10 +142,10 @@ abstract class SqlFunction extends SqlExpression { /** * Render the expression for insertion into the sql query * - * @param \Civi\Api4\Query\Api4SelectQuery $query + * @param \Civi\Api4\Query\Api4Query $query * @return string */ - public function render(Api4SelectQuery $query): string { + public function render(Api4Query $query): string { $output = ''; foreach ($this->args as $arg) { $rendered = $this->renderArg($arg, $query); @@ -168,10 +168,10 @@ abstract class SqlFunction extends SqlExpression { /** * @param array $arg - * @param \Civi\Api4\Query\Api4SelectQuery $query + * @param \Civi\Api4\Query\Api4Query $query * @return string */ - private function renderArg($arg, Api4SelectQuery $query): string { + private function renderArg($arg, Api4Query $query): string { $rendered = implode(' ', $arg['prefix']); foreach ($arg['expr'] ?? [] as $idx => $expr) { if (strlen($rendered) || $idx) { diff --git a/civicrm/Civi/Api4/Query/SqlFunctionIF.php b/civicrm/Civi/Api4/Query/SqlFunctionIF.php index 31187b5f39..77f26a0372 100644 --- a/civicrm/Civi/Api4/Query/SqlFunctionIF.php +++ b/civicrm/Civi/Api4/Query/SqlFunctionIF.php @@ -24,17 +24,17 @@ class SqlFunctionIF extends SqlFunction { return [ [ 'optional' => FALSE, - 'must_be' => ['SqlEquation', 'SqlField'], + 'must_be' => ['SqlEquation', 'SqlField', 'SqlFunction'], 'label' => ts('If'), ], [ 'optional' => FALSE, - 'must_be' => ['SqlField', 'SqlString', 'SqlNumber', 'SqlNull'], + 'must_be' => ['SqlField', 'SqlString', 'SqlNumber', 'SqlNull', 'SqlFunction'], 'label' => ts('Then'), ], [ 'optional' => FALSE, - 'must_be' => ['SqlField', 'SqlString', 'SqlNumber', 'SqlNull'], + 'must_be' => ['SqlField', 'SqlString', 'SqlNumber', 'SqlNull', 'SqlFunction'], 'label' => ts('Else'), ], ]; diff --git a/civicrm/Civi/Api4/Query/SqlFunctionLEFT.php b/civicrm/Civi/Api4/Query/SqlFunctionLEFT.php new file mode 100644 index 0000000000..08a341a4e5 --- /dev/null +++ b/civicrm/Civi/Api4/Query/SqlFunctionLEFT.php @@ -0,0 +1,52 @@ +<?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\Query; + +/** + * Sql function + */ +class SqlFunctionLEFT extends SqlFunction { + + protected static $category = self::CATEGORY_STRING; + + protected static $dataType = 'String'; + + protected static function params(): array { + return [ + [ + 'optional' => FALSE, + 'must_be' => ['SqlField', 'SqlString'], + 'label' => ts('Source'), + ], + [ + 'optional' => FALSE, + 'must_be' => ['SqlNumber'], + 'label' => ts('Number of characters'), + ], + ]; + } + + /** + * @return string + */ + public static function getTitle(): string { + return ts('Left part of text'); + } + + /** + * @return string + */ + public static function getDescription(): string { + return ts('Extracts a number of characters from text starting from the left.'); + } + +} diff --git a/civicrm/Civi/Api4/Query/SqlFunctionRIGHT.php b/civicrm/Civi/Api4/Query/SqlFunctionRIGHT.php new file mode 100644 index 0000000000..71015c0bec --- /dev/null +++ b/civicrm/Civi/Api4/Query/SqlFunctionRIGHT.php @@ -0,0 +1,52 @@ +<?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\Query; + +/** + * Sql function + */ +class SqlFunctionRIGHT extends SqlFunction { + + protected static $category = self::CATEGORY_STRING; + + protected static $dataType = 'String'; + + protected static function params(): array { + return [ + [ + 'optional' => FALSE, + 'must_be' => ['SqlField', 'SqlString'], + 'label' => ts('Source'), + ], + [ + 'optional' => FALSE, + 'must_be' => ['SqlNumber'], + 'label' => ts('Number of characters'), + ], + ]; + } + + /** + * @return string + */ + public static function getTitle(): string { + return ts('Right part of text'); + } + + /** + * @return string + */ + public static function getDescription(): string { + return ts('Extracts a number of characters from text starting from the right.'); + } + +} diff --git a/civicrm/Civi/Api4/Query/SqlFunctionSUBSTRING.php b/civicrm/Civi/Api4/Query/SqlFunctionSUBSTRING.php new file mode 100644 index 0000000000..b9e7332731 --- /dev/null +++ b/civicrm/Civi/Api4/Query/SqlFunctionSUBSTRING.php @@ -0,0 +1,57 @@ +<?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\Query; + +/** + * Sql function + */ +class SqlFunctionSUBSTRING extends SqlFunction { + + protected static $category = self::CATEGORY_STRING; + + protected static $dataType = 'String'; + + protected static function params(): array { + return [ + [ + 'optional' => FALSE, + 'must_be' => ['SqlField', 'SqlString'], + 'label' => ts('Source'), + ], + [ + 'optional' => FALSE, + 'must_be' => ['SqlNumber'], + 'label' => ts('Starting position in string. Negative numbers count from the end of the string.'), + ], + [ + 'optional' => TRUE, + 'must_be' => ['SqlNumber'], + 'label' => ts('Number of characters'), + ], + ]; + } + + /** + * @return string + */ + public static function getTitle(): string { + return ts('Extract part of text'); + } + + /** + * @return string + */ + public static function getDescription(): string { + return ts('Extracts a number of characters from text starting from a given position.'); + } + +} diff --git a/civicrm/Civi/Api4/Query/SqlNull.php b/civicrm/Civi/Api4/Query/SqlNull.php index a56720f3d5..312f01fa4b 100644 --- a/civicrm/Civi/Api4/Query/SqlNull.php +++ b/civicrm/Civi/Api4/Query/SqlNull.php @@ -19,7 +19,7 @@ class SqlNull extends SqlExpression { protected function initialize() { } - public function render(Api4SelectQuery $query): string { + public function render(Api4Query $query): string { return 'NULL'; } diff --git a/civicrm/Civi/Api4/Query/SqlNumber.php b/civicrm/Civi/Api4/Query/SqlNumber.php index 14025f707c..82c784a845 100644 --- a/civicrm/Civi/Api4/Query/SqlNumber.php +++ b/civicrm/Civi/Api4/Query/SqlNumber.php @@ -22,7 +22,7 @@ class SqlNumber extends SqlExpression { \CRM_Utils_Type::validate($this->expr, 'Float'); } - public function render(Api4SelectQuery $query): string { + public function render(Api4Query $query): string { return $this->expr; } diff --git a/civicrm/Civi/Api4/Query/SqlString.php b/civicrm/Civi/Api4/Query/SqlString.php index 51b5422c98..1efcaf15bb 100644 --- a/civicrm/Civi/Api4/Query/SqlString.php +++ b/civicrm/Civi/Api4/Query/SqlString.php @@ -27,10 +27,17 @@ class SqlString extends SqlExpression { $this->expr = str_replace(['\\\\', "\\$quot", $backslash], [$backslash, $quot, '\\\\'], $str); } - public function render(Api4SelectQuery $query): string { + public function render(Api4Query $query): string { return '"' . \CRM_Core_DAO::escapeString($this->expr) . '"'; } + /** + * @return string + */ + public function getExpr(): string { + return '"' . $this->expr . '"'; + } + public static function getTitle(): string { return ts('Text'); } diff --git a/civicrm/Civi/Api4/Query/SqlWild.php b/civicrm/Civi/Api4/Query/SqlWild.php index 090f864f5f..972c47f1d8 100644 --- a/civicrm/Civi/Api4/Query/SqlWild.php +++ b/civicrm/Civi/Api4/Query/SqlWild.php @@ -19,7 +19,7 @@ class SqlWild extends SqlExpression { protected function initialize() { } - public function render(Api4SelectQuery $query): string { + public function render(Api4Query $query): string { return '*'; } diff --git a/civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php b/civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php new file mode 100644 index 0000000000..6e687e1582 --- /dev/null +++ b/civicrm/Civi/Api4/Service/Autocomplete/MailingRecipientsAutocompleteProvider.php @@ -0,0 +1,165 @@ +<?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\Service\AutoService; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * Provide autocomplete searches tailored to the CiviMail recipients widget + * @service + * @internal + */ +class MailingRecipientsAutocompleteProvider extends AutoService implements EventSubscriberInterface { + + /** + * @return array + */ + public static function getSubscribedEvents() { + return [ + 'civi.search.autocompleteDefault' => ['mailingAutocompleteDefaultSearch', 50], + 'civi.search.defaultDisplay' => ['mailingAutocompleteDefaultDisplay', 50], + ]; + } + + /** + * Construct a special-purpose SavedSearch for the Mailing.recipients autocomplete + * + * It uses a UNION to combine groups with mailings + * + * @param \Civi\Core\Event\GenericHookEvent $e + * @return void + */ + public function mailingAutocompleteDefaultSearch(GenericHookEvent $e) { + if ( + !is_array($e->savedSearch) || + $e->savedSearch['api_entity'] !== 'EntitySet' || + ($e->fieldName !== 'Mailing.recipients_include' && $e->fieldName !== 'Mailing.recipients_exclude') || + strpos($e->formName ?? '', 'crmMailing.') !== 0 + ) { + return; + } + $mailingId = (int) (explode('.', $e->formName)[1] ?? 0); + // Mode is "include" or "exclude" + $mode = explode('_', $e->fieldName)[1]; + $e->savedSearch['api_params'] = [ + 'version' => 4, + 'select' => ['key', 'label', 'description', 'type', 'icon', 'date', '(is_hidden = 1) AS locked'], + 'sets' => [ + [ + 'UNION ALL', 'Group', 'get', [ + 'select' => [ + 'CONCAT("groups_", id) AS key', + 'IF(is_hidden, "' . ts('Search Results') . '", title) AS label', + 'description', + '"group" AS entity', + 'NULL AS type', + 'IF(saved_search_id, "fa-lightbulb-o", "fa-group") AS icon', + 'DATE(saved_search_id.created_date) AS date', + 'is_hidden', + ], + 'join' => [], + 'where' => [ + ['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']]], + ], + ], + ], + [ + 'UNION ALL', 'Mailing', 'get', [ + 'select' => [ + 'CONCAT("mailings_", id) AS key', + 'name', + 'subject', + '"mailing" AS entity', + 'IF(is_archived, "' . ts('Archived Mailing') . '", IF(is_completed, "' . ts('Sent Mailing') . '", "' . ts('Unsent Mailing') . '")) AS type', + 'IF(is_archived, "fa-archive", IF(is_completed, "fa-envelope", "fa-file-o")) AS icon', + 'COALESCE(DATE(scheduled_date), DATE(created_date))', + '0', + ], + 'where' => [ + ['id', '!=', $mailingId], + ['domain_id', '=', 'current_domain'], + ], + ], + ], + ], + ]; + // Join is only needed for "include" mode to fetch the hidden search group if any + if ($mode === 'include') { + $e->savedSearch['api_params']['sets'][0][3]['join'][] = ['MailingGroup AS mailing_group', 'LEFT', + ['id', '=', 'mailing_group.entity_id'], + ['mailing_group.group_type', '=', '"Include"'], + ['mailing_group.entity_table', '=', '"civicrm_group"'], + ['is_hidden', '=', TRUE], + ['mailing_group.mailing_id', '=', $mailingId], + ]; + } + } + + /** + * Construct a SearchDisplay for the above SavedSearch + * + * @param \Civi\Core\Event\GenericHookEvent $e + * @return void + */ + public function mailingAutocompleteDefaultDisplay(GenericHookEvent $e) { + if ( + // Early return if display has already been overridden + $e->display['settings'] || + // Check display type + $e->display['type'] !== 'autocomplete' + // Check entity + || $e->savedSearch['api_entity'] !== 'EntitySet' || + // Check that this is the correct SavedSearch + $e->savedSearch['api_params']['sets'][0][3]['select'][0] !== 'CONCAT("groups_", id) AS key' + ) { + return; + } + $e->display['settings'] = [ + 'sort' => [ + ['entity', 'ASC'], + ['label', 'ASC'], + ], + 'keyField' => 'key', + 'extra' => [ + 'locked' => 'locked', + ], + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'label', + 'empty_value' => '(' . ts('no name') . ')', + 'icons' => [ + [ + 'field' => 'icon', + 'side' => 'left', + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'type', + 'rewrite' => '[type] ([date])', + 'empty_value' => '', + ], + [ + 'type' => 'field', + 'key' => 'description', + ], + ], + ]; + } + +} diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/MailingGetSpecProvider.php b/civicrm/Civi/Api4/Service/Spec/Provider/MailingGetSpecProvider.php new file mode 100644 index 0000000000..c66482debd --- /dev/null +++ b/civicrm/Civi/Api4/Service/Spec/Provider/MailingGetSpecProvider.php @@ -0,0 +1,268 @@ +<?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\FieldSpec; +use Civi\Api4\Service\Spec\RequestSpec; + +/** + * @service + * @internal + */ +class MailingGetSpecProvider extends \Civi\Core\Service\AutoService implements Generic\SpecProviderInterface { + + /** + * @param \Civi\Api4\Service\Spec\RequestSpec $spec + * + * @throws \CRM_Core_Exception + */ + public function modifySpec(RequestSpec $spec): void { + $field = new FieldSpec('stats_intended_recipients', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Intended Recipients')) + ->setDescription(ts('Total emails sent')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countIntendedRecipients']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_successful', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Succesful Deliveries')) + ->setDescription(ts('Total emails delivered minus bounces')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countSuccessfulDeliveries']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_opens_total', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Total Opens')) + ->setDescription(ts('Total tracked mailing opens')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_opens_unique', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Unique Opens')) + ->setDescription(ts('Total unique tracked mailing opens')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_clicks_total', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Total Clicks')) + ->setDescription(ts('Total mailing clicks')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_clicks_unique', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Unique Clicks')) + ->setDescription(ts('Total unique mailing clicks')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_bounces', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Bounces')) + ->setDescription(ts('Total mailing bounces')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_unsubscribes', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Unsubscribes')) + ->setDescription(ts('Total mailing unsubscribes')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_optouts', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Opt Outs')) + ->setDescription(ts('Total mailing opt outs')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_optouts_and_unsubscribes', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Opt Outs & Unsubscribes')) + ->setDescription(ts('Total contacts who opted out or unsubscribed from a mailing')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_forwards', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Forwards')) + ->setDescription(ts('Total mailing forwards')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + + $field = new FieldSpec('stats_replies', 'Mailing', 'Integer'); + $field->setLabel(ts('Stats: Replies')) + ->setDescription(ts('Total mailing replies')) + ->setColumnName('id') + ->setReadonly(TRUE) + ->setSqlRenderer([__CLASS__, 'countMailingEvents']); + $spec->addFieldSpec($field); + } + + /** + * @param string $entity + * @param string $action + * + * @return bool + */ + public function applies($entity, $action): bool { + return $entity === 'Mailing' && $action === 'get'; + } + + /** + * Generate SQL for counting mailing events + * + * @return string + */ + public static function countMailingEvents(array $field): string { + $unsubscribeType = $count = NULL; + $queue = \CRM_Mailing_Event_BAO_MailingEventQueue::getTableName(); + $job = \CRM_Mailing_BAO_MailingJob::getTableName(); + $mailing = \CRM_Mailing_BAO_Mailing::getTableName(); + + switch ($field['name']) { + case 'stats_opens_total': + $tableName = \CRM_Mailing_Event_BAO_MailingEventOpened::getTableName(); + break; + + case 'stats_opens_unique': + $tableName = \CRM_Mailing_Event_BAO_MailingEventOpened::getTableName(); + $count = "DISTINCT $tableName.event_queue_id"; + break; + + case 'stats_clicks_total': + $tableName = \CRM_Mailing_Event_BAO_MailingEventTrackableURLOpen::getTableName(); + break; + + case 'stats_clicks_unique': + $tableName = \CRM_Mailing_Event_BAO_MailingEventTrackableURLOpen::getTableName(); + $count = "DISTINCT $tableName.event_queue_id,$tableName.trackable_url_id"; + break; + + case 'stats_bounces': + $tableName = \CRM_Mailing_Event_BAO_MailingEventBounce::getTableName(); + break; + + case 'stats_unsubscribes': + $tableName = \CRM_Mailing_Event_BAO_MailingEventUnsubscribe::getTableName(); + $unsubscribeType = 0; + $count = "DISTINCT $tableName.event_queue_id,$tableName.org_unsubscribe"; + break; + + case 'stats_optouts': + $tableName = \CRM_Mailing_Event_BAO_MailingEventUnsubscribe::getTableName(); + $unsubscribeType = 1; + $count = "DISTINCT $tableName.event_queue_id,$tableName.org_unsubscribe"; + break; + + case 'stats_optouts_and_unsubscribes': + $tableName = \CRM_Mailing_Event_BAO_MailingEventUnsubscribe::getTableName(); + $count = "DISTINCT $tableName.event_queue_id"; + break; + + case 'stats_forwards': + $tableName = \CRM_Mailing_Event_BAO_MailingEventForward::getTableName(); + break; + + case 'stats_replies': + $tableName = \CRM_Mailing_Event_BAO_MailingEventReply::getTableName(); + break; + + } + + $count = $count ?? "$tableName.event_queue_id"; + $query = "( + SELECT COUNT($count) + FROM $tableName + INNER JOIN $queue + ON $tableName.event_queue_id = $queue.id + INNER JOIN $job + ON $queue.job_id = $job.id + INNER JOIN $mailing + ON $job.mailing_id = $mailing.id + AND $job.is_test = 0 + WHERE $mailing.id = {$field['sql_name']} + "; + if (!is_null($unsubscribeType)) { + $query .= " AND $tableName.org_unsubscribe = $unsubscribeType"; + } + return $query . ")"; + } + + /** + * Generate SQL for counting total intended recipients + * + * @return string + */ + public static function countIntendedRecipients(array $field): string { + $queue = \CRM_Mailing_Event_BAO_MailingEventQueue::getTableName(); + $mailing = \CRM_Mailing_BAO_Mailing::getTableName(); + $job = \CRM_Mailing_BAO_MailingJob::getTableName(); + + return "( + SELECT COUNT($queue.id) + FROM $queue + INNER JOIN $job + ON $queue.job_id = $job.id + INNER JOIN $mailing + ON $job.mailing_id = $mailing.id + AND $job.is_test = 0 + WHERE $mailing.id = {$field['sql_name']} + )"; + } + + /** + * Generate SQL for counting total successful deliveries + * + * @return string + */ + public static function countSuccessfulDeliveries(array $field): string { + $delivered = \CRM_Mailing_Event_BAO_MailingEventDelivered::getTableName(); + $bounce = \CRM_Mailing_Event_BAO_MailingEventBounce::getTableName(); + $queue = \CRM_Mailing_Event_BAO_MailingEventQueue::getTableName(); + $mailing = \CRM_Mailing_BAO_Mailing::getTableName(); + $job = \CRM_Mailing_BAO_MailingJob::getTableName(); + + return "( + SELECT COUNT($delivered.id) + FROM $delivered + INNER JOIN $queue + ON $delivered.event_queue_id = $queue.id + LEFT JOIN $bounce + ON $delivered.event_queue_id = $bounce.event_queue_id + INNER JOIN $job + ON $queue.job_id = $job.id + AND $job.is_test = 0 + INNER JOIN $mailing + ON $job.mailing_id = $mailing.id + WHERE $bounce.id IS null + AND $mailing.id = {$field['sql_name']} + )"; + } + +} diff --git a/civicrm/Civi/Api4/Survey.php b/civicrm/Civi/Api4/Survey.php index c4cb0d433f..3aad822743 100644 --- a/civicrm/Civi/Api4/Survey.php +++ b/civicrm/Civi/Api4/Survey.php @@ -13,9 +13,11 @@ namespace Civi\Api4; /** * Survey entity. * + * Surveys are used as both surveys and petitions. + * * @see https://docs.civicrm.org/user/en/latest/survey/what-is-civisurvey/ * @searchable secondary - * @since 5.43 + * @since 5.64 * @package Civi\Api4 */ class Survey extends Generic\DAOEntity { diff --git a/civicrm/Civi/Api4/Utils/CoreUtil.php b/civicrm/Civi/Api4/Utils/CoreUtil.php index 835d1347bc..37f1ef6125 100644 --- a/civicrm/Civi/Api4/Utils/CoreUtil.php +++ b/civicrm/Civi/Api4/Utils/CoreUtil.php @@ -386,4 +386,31 @@ class CoreUtil { return $fns; } + /** + * Sorts fields so that control fields are ordered before the fields they control. + * + * @param array[] $fields + * @return void + */ + public static function topSortFields(array &$fields): void { + $indexedFields = array_column($fields, NULL, 'name'); + $needsSort = []; + foreach ($indexedFields as $fieldName => $field) { + if (!empty($field['input_attrs']['control_field']) && array_key_exists($field['input_attrs']['control_field'], $indexedFields)) { + $needsSort[$fieldName] = [$field['input_attrs']['control_field']]; + } + } + // Only fire up the Topological sorter if we actually need it... + if ($needsSort) { + $fields = []; + $sorter = new \MJS\TopSort\Implementations\FixedArraySort(); + foreach ($indexedFields as $fieldName => $field) { + $sorter->add($fieldName, $needsSort[$fieldName] ?? []); + } + foreach ($sorter->sort() as $fieldName) { + $fields[] = $indexedFields[$fieldName]; + } + } + } + } diff --git a/civicrm/Civi/Api4/Utils/FormattingUtil.php b/civicrm/Civi/Api4/Utils/FormattingUtil.php index d91138107c..380a7afc94 100644 --- a/civicrm/Civi/Api4/Utils/FormattingUtil.php +++ b/civicrm/Civi/Api4/Utils/FormattingUtil.php @@ -213,56 +213,64 @@ class FormattingUtil { /** * Unserialize raw DAO values and convert to correct type * - * @param array $results + * @param array $result * @param array $fields * @param string $action * @param array $selectAliases * @throws \CRM_Core_Exception */ - public static function formatOutputValues(&$results, $fields, $action = 'get', $selectAliases = []) { - foreach ($results as &$result) { - $contactTypePaths = []; - foreach ($result as $key => $value) { - $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 - if (method_exists($fieldExpr, 'formatOutputValue') && is_string($value)) { - $result[$key] = $value = $fieldExpr->formatOutputValue($value, $dataType); - } - if (!empty($field['output_formatters'])) { - self::applyFormatters($result, $fieldName, $field, $value); - $dataType = NULL; - } - // Evaluate pseudoconstant suffixes - $suffix = strrpos(($fieldName ?? ''), ':'); - $fieldOptions = NULL; - if (isset($value) && $suffix) { - $fieldOptions = self::getPseudoconstantList($field, $fieldName, $result, $action); - $dataType = NULL; - } - // Store contact_type value before replacing pseudoconstant (e.g. transforming it to contact_type:label) - // Used by self::contactFieldsToRemove below - if ($value && isset($field['entity']) && $field['entity'] === 'Contact' && $field['name'] === 'contact_type') { - $prefix = strrpos($fieldName, '.'); - $contactTypePaths[$prefix ? substr($fieldName, 0, $prefix + 1) : ''] = $value; + public static function formatOutputValues(&$result, $fields, $action = 'get', $selectAliases = []) { + $contactTypePaths = []; + // Save an array of unprocessed values which are useful when replacing pseudocontants + $rawValues = $result; + foreach ($rawValues as $key => $value) { + // Pseudoconstants haven't been replaced yet so strip suffixes from raw values + if (strpos($key, ':') > strrpos($key, ')')) { + [$fieldName] = explode(':', $key); + $rawValues[$fieldName] = $value; + unset($rawValues[$key]); + } + } + foreach ($result as $key => $value) { + $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 + if (method_exists($fieldExpr, 'formatOutputValue') && is_string($value)) { + $result[$key] = $value = $fieldExpr->formatOutputValue($value, $dataType); + } + if (!empty($field['output_formatters'])) { + self::applyFormatters($result, $fieldName, $field, $value); + $dataType = NULL; + } + // Evaluate pseudoconstant suffixes + $suffix = strrpos(($fieldName ?? ''), ':'); + $fieldOptions = NULL; + if (isset($value) && $suffix) { + $fieldOptions = self::getPseudoconstantList($field, $fieldName, $rawValues, $action); + $dataType = NULL; + } + // Store contact_type value before replacing pseudoconstant (e.g. transforming it to contact_type:label) + // Used by self::contactFieldsToRemove below + if ($value && isset($field['entity']) && $field['entity'] === 'Contact' && $field['name'] === 'contact_type') { + $prefix = strrpos($fieldName, '.'); + $contactTypePaths[$prefix ? substr($fieldName, 0, $prefix + 1) : ''] = $value; + } + if ($fieldExpr->supportsExpansion) { + if (!empty($field['serialize']) && is_string($value)) { + $value = \CRM_Core_DAO::unSerializeField($value, $field['serialize']); } - if ($fieldExpr->supportsExpansion) { - if (!empty($field['serialize']) && is_string($value)) { - $value = \CRM_Core_DAO::unSerializeField($value, $field['serialize']); - } - if (isset($fieldOptions)) { - $value = self::replacePseudoconstant($fieldOptions, $value); - } + if (isset($fieldOptions)) { + $value = self::replacePseudoconstant($fieldOptions, $value); } - $result[$key] = self::convertDataType($value, $dataType); - } - // Remove inapplicable contact fields - foreach ($contactTypePaths as $prefix => $contactType) { - \CRM_Utils_Array::remove($result, self::contactFieldsToRemove($contactType, $prefix)); } + $result[$key] = self::convertDataType($value, $dataType); + } + // Remove inapplicable contact fields + foreach ($contactTypePaths as $prefix => $contactType) { + \CRM_Utils_Array::remove($result, self::contactFieldsToRemove($contactType, $prefix)); } } @@ -272,13 +280,13 @@ class FormattingUtil { * @param array $field * @param string $fieldAlias * Field path plus pseudoconstant suffix, e.g. 'contact.employer_id.contact_sub_type:label' - * @param array $params + * @param array $values * Other values for this object * @param string $action * @return array * @throws \CRM_Core_Exception */ - public static function getPseudoconstantList(array $field, string $fieldAlias, $params = [], $action = 'get') { + public static function getPseudoconstantList(array $field, string $fieldAlias, $values = [], $action = 'get') { [$fieldPath, $valueType] = explode(':', $fieldAlias); $context = self::$pseudoConstantContexts[$valueType] ?? NULL; // For create actions, only unique identifiers can be used. @@ -290,7 +298,7 @@ class FormattingUtil { // Use BAO::buildOptions if possible if ($baoName) { $fieldName = empty($field['custom_field_id']) ? $field['name'] : 'custom_' . $field['custom_field_id']; - $options = $baoName::buildOptions($fieldName, $context, self::filterByPath($params, $fieldPath, $field['name'])); + $options = $baoName::buildOptions($fieldName, $context, self::filterByPath($values, $fieldPath, $field['name'])); } // Fallback for option lists that exist in the api but not the BAO if (!isset($options) || $options === FALSE) { diff --git a/civicrm/Civi/Core/CiviEventDispatcher.php b/civicrm/Civi/Core/CiviEventDispatcher.php index 2ddb8634c0..a1ef3329a0 100644 --- a/civicrm/Civi/Core/CiviEventDispatcher.php +++ b/civicrm/Civi/Core/CiviEventDispatcher.php @@ -253,6 +253,9 @@ class CiviEventDispatcher implements CiviEventDispatcherInterface { } } + if (is_a($event, '\\Symfony\\Component\\EventDispatcher\\Event')) { + \CRM_Core_Error::deprecatedWarning('\\Symfony\\Component\\EventDispatcher\\Event is deprecated. Consider using \\Civi\\Core\\Event\\GenericHookEvent. For more information see ' . \CRM_Utils_System::docURL2('dev/hooks/usage/symfony/#events', TRUE)); + } $this->bindPatterns($eventName); if ($event === NULL) { $event = GenericHookEvent::create([]); diff --git a/civicrm/Civi/Core/Container.php b/civicrm/Civi/Core/Container.php index a4fb4aa275..e4ec975ee0 100644 --- a/civicrm/Civi/Core/Container.php +++ b/civicrm/Civi/Core/Container.php @@ -364,6 +364,14 @@ class Container { 'CRM_Contribute_RecurTokens', [] ))->addTag('kernel.event_subscriber')->setPublic(TRUE); + $container->setDefinition('crm_contribution_recur_tokens', new Definition( + 'CRM_Contribute_RecurTokens', + [] + ))->addTag('kernel.event_subscriber')->setPublic(TRUE); + $container->setDefinition('crm_survey_tokens', new Definition( + 'CRM_Campaign_SurveyTokens', + [] + ))->addTag('kernel.event_subscriber')->setPublic(TRUE); $container->setDefinition('crm_group_tokens', new Definition( 'CRM_Core_GroupTokens', [] @@ -432,7 +440,6 @@ class Container { $dispatcher->addListener('civi.api4.validate', $aliasMethodEvent('civi.api4.validate', 'getEntityName'), 100); $dispatcher->addListener('civi.api4.authorizeRecord', $aliasMethodEvent('civi.api4.authorizeRecord', 'getEntityName'), 100); - $dispatcher->addListener('civi.api4.entityTypes', ['\Civi\Api4\Provider\CustomEntityProvider', 'addCustomEntities'], 100); $dispatcher->addListener('civi.core.install', ['\Civi\Core\InstallationCanary', 'check']); $dispatcher->addListener('civi.core.install', ['\Civi\Core\DatabaseInitializer', 'initialize']); diff --git a/civicrm/Civi/Core/Themes.php b/civicrm/Civi/Core/Themes.php index baf07c7c75..ebf6982227 100644 --- a/civicrm/Civi/Core/Themes.php +++ b/civicrm/Civi/Core/Themes.php @@ -176,7 +176,7 @@ class Themes extends \Civi\Core\Service\AutoService { } else { $result = Civi\Core\Resolver::singleton() - ->call($all[$themeKey]['url_callback'], array($this, $themeKey, $cssExt, $cssFile)); + ->call($all[$themeKey]['url_callback'], [$this, $themeKey, $cssExt, $cssFile]); } if ($result !== self::PASSTHRU) { @@ -195,35 +195,35 @@ class Themes extends \Civi\Core\Service\AutoService { * @see CRM_Utils_Hook::themes */ protected function buildAll() { - $themes = array( - 'default' => array( + $themes = [ + 'default' => [ 'ext' => 'civicrm', 'title' => ts('Automatic'), 'help' => ts('Determine a system default automatically'), // This is an alias. url_callback, search_order don't matter. - ), - 'greenwich' => array( + ], + 'greenwich' => [ 'ext' => 'civicrm', 'title' => 'Greenwich', 'help' => ts('CiviCRM 4.x look-and-feel'), - ), - 'none' => array( + ], + 'none' => [ 'ext' => 'civicrm', 'title' => ts('None (Unstyled)'), 'help' => ts('Disable CiviCRM\'s built-in CSS files.'), - 'search_order' => array('none', self::FALLBACK_THEME), - 'excludes' => array( + 'search_order' => ['none', self::FALLBACK_THEME], + 'excludes' => [ "css/civicrm.css", "css/bootstrap.css", - ), - ), - self::FALLBACK_THEME => array( + ], + ], + self::FALLBACK_THEME => [ 'ext' => 'civicrm', 'title' => 'Fallback (Abstract Base Theme)', 'url_callback' => '\Civi\Core\Themes\Resolvers::fallback', - 'search_order' => array(self::FALLBACK_THEME), - ), - ); + 'search_order' => [self::FALLBACK_THEME], + ], + ]; \CRM_Utils_Hook::themes($themes); @@ -246,11 +246,11 @@ class Themes extends \Civi\Core\Service\AutoService { * @see CRM_Utils_Hook::themes */ protected function build($themeKey, $theme) { - $defaults = array( + $defaults = [ 'name' => $themeKey, 'url_callback' => '\Civi\Core\Themes\Resolvers::simple', - 'search_order' => array($themeKey, self::FALLBACK_THEME), - ); + 'search_order' => [$themeKey, self::FALLBACK_THEME], + ]; $theme = array_merge($defaults, $theme); return $theme; diff --git a/civicrm/Civi/Core/Themes/Resolvers.php b/civicrm/Civi/Core/Themes/Resolvers.php index 194f88e7e2..ffebd99059 100644 --- a/civicrm/Civi/Core/Themes/Resolvers.php +++ b/civicrm/Civi/Core/Themes/Resolvers.php @@ -51,7 +51,7 @@ class Resolvers { $file = $res->filterMinify($theme['ext'], $file); if ($res->getPath($theme['ext'], $file)) { - return array($res->getUrl($theme['ext'], $file, TRUE)); + return [$res->getUrl($theme['ext'], $file, TRUE)]; } else { return Civi\Core\Themes::PASSTHRU; @@ -75,7 +75,7 @@ class Resolvers { */ public static function fallback($themes, $themeKey, $cssExt, $cssFile) { $res = Civi::resources(); - return array($res->getUrl($cssExt, $cssFile, TRUE)); + return [$res->getUrl($cssExt, $cssFile, TRUE)]; } } diff --git a/civicrm/Civi/Test.php b/civicrm/Civi/Test.php index cd01116417..f5e09b2740 100644 --- a/civicrm/Civi/Test.php +++ b/civicrm/Civi/Test.php @@ -125,6 +125,7 @@ class Test { ->callback(function ($ctx) { \Civi\Test::data()->populate(); }, 'populate'); + $builder->install(['org.civicrm.search_kit']); return $builder; } diff --git a/civicrm/Civi/Test/ACLPermissionTrait.php b/civicrm/Civi/Test/ACLPermissionTrait.php index 91b6681cf6..415a8f6aae 100644 --- a/civicrm/Civi/Test/ACLPermissionTrait.php +++ b/civicrm/Civi/Test/ACLPermissionTrait.php @@ -17,6 +17,7 @@ namespace Civi\Test; * Trait for working with ACLs in tests */ trait ACLPermissionTrait { + use EventTestTrait; /** * ContactID of allowed Contact @@ -46,10 +47,12 @@ trait ACLPermissionTrait { * @param array $tables * @param array $whereTables * @param int $contactID - * @param string $where + * @param string|null $where + * + * @noinspection PhpUnusedParameterInspection */ - public function aclWhereHookAllResults($type, &$tables, &$whereTables, &$contactID, &$where) { - $where = " (1) "; + public function aclWhereHookAllResults(string $type, array &$tables, array &$whereTables, int &$contactID, ?string &$where): void { + $where = ' (1) '; } /** @@ -61,9 +64,9 @@ trait ACLPermissionTrait { * @param array $tables * @param array $whereTables * @param int $contactID - * @param string $where + * @param string|null $where */ - public function aclWhereHookNoResults($type, &$tables, &$whereTables, &$contactID, &$where) { + public function aclWhereHookNoResults(string $type, array &$tables, array &$whereTables, int &$contactID, ?string &$where): void { } /** @@ -75,10 +78,12 @@ trait ACLPermissionTrait { * @param array $tables * @param array $whereTables * @param int $contactID - * @param string $where + * @param string|null $where + * + * @noinspection PhpUnusedParameterInspection */ - public function aclWhereOnlySecond($type, &$tables, &$whereTables, &$contactID, &$where) { - $where = " contact_a.id > 1"; + public function aclWhereOnlySecond(string $type, array &$tables, array &$whereTables, int &$contactID, ?string &$where): void { + $where = ' contact_a.id > 1'; } /** @@ -90,10 +95,12 @@ trait ACLPermissionTrait { * @param array $tables * @param array $whereTables * @param int $contactID - * @param string $where + * @param string|null $where + * + * @noinspection PhpUnusedParameterInspection */ - public function aclWhereOnlyOne($type, &$tables, &$whereTables, &$contactID, &$where) { - $where = " contact_a.id = " . $this->allowedContactId; + public function aclWhereOnlyOne(string $type, array &$tables, array &$whereTables, int &$contactID, ?string &$where): void { + $where = ' contact_a.id = ' . $this->allowedContactId; } /** @@ -105,10 +112,12 @@ trait ACLPermissionTrait { * @param array $tables * @param array $whereTables * @param int $contactID - * @param string $where + * @param string|null $where + * + * @noinspection PhpUnusedParameterInspection */ - public function aclWhereGreaterThan($type, &$tables, &$whereTables, &$contactID, &$where) { - $where = " contact_a.id > " . $this->allowedContactId; + public function aclWhereGreaterThan(string $type, array &$tables, array &$whereTables, int &$contactID, ?string &$where): void { + $where = ' contact_a.id > ' . $this->allowedContactId; } /** @@ -121,21 +130,19 @@ trait ACLPermissionTrait { * An ID of 0 means that 'Everyone' can access the group. * @param string $operation View|Edit|Create|Delete|Search|All * @param string $entity Group|CustomGroup|Profile|Event - * - * @throws CRM_Core_Exception */ - public function setupCoreACLPermittedAcl($permissionedEntities = [], $groupAllowedAccess = 'Everyone', $operation = 'View', $entity = 'Group') { - $tableMap = ['Group' => 'civicrm_saved_search', 'CustomGroup' => 'civicrm_custom_group', 'Profile' => 'civicrm_uf_match', 'Event' => 'civicrm_event']; + public function setupCoreACLPermittedAcl(array $permissionedEntities = [], $groupAllowedAccess = 'Everyone', string $operation = 'View', string $entity = 'Group'): void { + $tableMap = ['Group' => 'civicrm_group', 'CustomGroup' => 'civicrm_custom_group', 'Profile' => 'civicrm_uf_group', 'Event' => 'civicrm_event']; $entityTable = $tableMap[$entity]; $permittedRoleID = ($groupAllowedAccess === 'Everyone') ? 0 : $groupAllowedAccess; if ($permittedRoleID !== 0) { - throw new \CRM_Core_Exception('only handling everyone group as yet'); + $this->fail('only handling everyone group as yet'); } foreach ($permissionedEntities as $permissionedEntityID) { - $this->callAPISuccess('Acl', 'create', [ - 'name' => uniqid(), + $this->createTestEntity('ACL', [ + 'name' => 'test acl' . $permissionedEntityID, 'operation' => $operation, 'entity_id' => $permittedRoleID, 'object_id' => $permissionedEntityID, @@ -156,11 +163,11 @@ trait ACLPermissionTrait { * $this->scenarioIDs['Contact'] = ['permitted_contact' => x, 'non_permitted_contact' => y] * $this->scenarioIDs['Group'] = ['permitted_group' => x] */ - public function setupScenarioCoreACLEveryonePermittedToGroup() { + public function setupScenarioCoreACLEveryonePermittedToGroup(): void { $this->quickCleanup(['civicrm_acl_cache', 'civicrm_acl_contact_cache']); $this->scenarioIDs['Group']['permitted_group'] = $this->groupCreate(); $this->scenarioIDs['Contact']['permitted_contact'] = $this->individualCreate(); - $result = $this->callAPISuccess('GroupContact', 'create', ['group_id' => $this->scenarioIDs['Group']['permitted_group'], 'contact_id' => $this->scenarioIDs['Contact']['permitted_contact'], 'status' => 'Added']); + $this->callAPISuccess('GroupContact', 'create', ['group_id' => $this->scenarioIDs['Group']['permitted_group'], 'contact_id' => $this->scenarioIDs['Contact']['permitted_contact'], 'status' => 'Added']); $this->scenarioIDs['Contact']['non_permitted_contact'] = $this->individualCreate(); \CRM_Core_Config::singleton()->userPermissionClass->permissions = []; $this->setupCoreACLPermittedAcl([$this->scenarioIDs['Group']['permitted_group']]); @@ -169,18 +176,20 @@ trait ACLPermissionTrait { /** * Set up a scenario where everyone can access the permissioned group. * - * A scenario in this class involves multiple defined assets. In this case we create + * A scenario in this class involves multiple defined assets. In this case we + * create * - a group to which the everyone has permission * - a contact in the group * - a contact not in the group * * These are arrayed as follows - * $this->scenarioIDs['Contact'] = ['permitted_contact' => x, 'non_permitted_contact' => y] + * $this->scenarioIDs['Contact'] = ['permitted_contact' => x, + * 'non_permitted_contact' => y] * $this->scenarioIDs['Group'] = ['permitted_group' => x] */ - public function setupScenarioCoreACLEveryonePermittedToEvent() { + public function setupScenarioCoreACLEveryonePermittedToEvent(): void { $this->quickCleanup(['civicrm_acl_cache', 'civicrm_acl_contact_cache']); - $this->scenarioIDs['Event']['permitted_event'] = $this->eventCreate()['id']; + $this->scenarioIDs['Event']['permitted_event'] = $this->eventCreateUnpaid()['id']; $this->scenarioIDs['Contact']['permitted_contact'] = $this->individualCreate(); \CRM_Core_Config::singleton()->userPermissionClass->permissions = ['view event info']; $this->setupCoreACLPermittedAcl([$this->scenarioIDs['Event']['permitted_event']], 'Everyone', 'View', 'Event'); @@ -188,8 +197,10 @@ trait ACLPermissionTrait { /** * Clean up places where permissions get cached. + * + * @noinspection PhpUnhandledExceptionInspection */ - protected function cleanupCachedPermissions() { + protected function cleanupCachedPermissions(): void { if (isset(\Civi::$statics['CRM_Contact_BAO_Contact_Permission'])) { unset(\Civi::$statics['CRM_Contact_BAO_Contact_Permission']); } diff --git a/civicrm/Civi/Test/Api4TestTrait.php b/civicrm/Civi/Test/Api4TestTrait.php index 4e5cf31e69..88d52ce210 100644 --- a/civicrm/Civi/Test/Api4TestTrait.php +++ b/civicrm/Civi/Test/Api4TestTrait.php @@ -244,6 +244,14 @@ trait Api4TestTrait { return $this->getFkID('Contact'); } } + // If there are no options but the field is supposed to have them, we may need to + // create a new option + if (!empty($field['suffixes']) && !empty($field['table_name'])) { + $optionValue = $this->createOptionValue($field['table_name'], $field['name']); + if ($optionValue) { + return $optionValue; + } + } $randomValue = $this->getRandomValue($field['data_type']); @@ -254,6 +262,26 @@ trait Api4TestTrait { throw new \CRM_Core_Exception('Could not provide default value'); } + /** + * Creates a dummy option value when one is required but the option list is empty + * + * @param string $tableName + * @param string $fieldName + * @return mixed|null + */ + private function createOptionValue(string $tableName, string $fieldName) { + $daoName = \CRM_Core_DAO_AllCoreTables::getClassForTable($tableName); + $pseudoconstant = $daoName::getSupportedFields()[$fieldName]['pseudoconstant'] ?? NULL; + if (!empty($pseudoconstant['optionGroupName'])) { + $newOption = $this->createTestRecord('OptionValue', [ + 'option_group_id:name' => $pseudoconstant['optionGroupName'], + ]); + return $newOption['value']; + } + // Other types of + return NULL; + } + /** * Delete records previously created by the `saveTestRecords` function. * diff --git a/civicrm/Civi/Test/ContactTestTrait.php b/civicrm/Civi/Test/ContactTestTrait.php index 39ae9acb8a..3d752d8e3a 100644 --- a/civicrm/Civi/Test/ContactTestTrait.php +++ b/civicrm/Civi/Test/ContactTestTrait.php @@ -15,6 +15,8 @@ namespace Civi\Test; */ trait ContactTestTrait { + use EntityTrait; + /** * API version to use for any api calls. * @@ -34,11 +36,11 @@ trait ContactTestTrait { public function createLoggedInUser(): int { $params = [ 'first_name' => 'Logged In', - 'last_name' => 'User ' . rand(), + 'last_name' => 'User ' . mt_rand(), 'contact_type' => 'Individual', 'domain_id' => \CRM_Core_Config::domainID(), ]; - $contactID = $this->individualCreate($params); + $contactID = $this->individualCreate($params, 'logged_in'); $this->callAPISuccess('UFMatch', 'get', ['uf_id' => 6, 'api.UFMatch.delete' => []]); $this->callAPISuccess('UFMatch', 'create', [ 'contact_id' => $contactID, @@ -201,11 +203,12 @@ trait ContactTestTrait { * Add a Group. * * @param array $params + * @param string $identifier * * @return int * groupId of created group */ - public function groupCreate(array $params = []): int { + public function groupCreate(array $params = [], string $identifier = 'group'): int { $params = array_merge([ 'name' => 'Test Group 1', 'domain_id' => 1, @@ -219,7 +222,7 @@ trait ContactTestTrait { ], ], $params); - $result = $this->callAPISuccess('Group', 'create', $params); + $result = $this->createTestEntity('Group', $params, $identifier); return $result['id']; } diff --git a/civicrm/Civi/Test/EntityTrait.php b/civicrm/Civi/Test/EntityTrait.php new file mode 100644 index 0000000000..1dfe24cbfa --- /dev/null +++ b/civicrm/Civi/Test/EntityTrait.php @@ -0,0 +1,92 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\Test; + +/** + * Helper for tracking entities created in tests. + */ +trait EntityTrait { + + /** + * Array of IDs created to support the test. + * + * e.g + * $this->ids = ['Event' => ['descriptive_key' => $eventID], 'Group' => [$groupID]]; + * + * @var array + */ + protected $ids = []; + + /** + * Records created which will be deleted during tearDown + * + * @var array + */ + protected $testRecords = []; + + /** + * Track tables we have modified during a test. + * + * Set up functions that add entities can register the relevant tables here for + * the cleanup process. + * + * @var array + */ + protected $tablesToCleanUp = []; + + /** + * Create an entity, recording it's details for tearDown. + * + * @param string $entity + * @param array $params + * @param string $identifier + * + * @return array + */ + protected function createTestEntity(string $entity, array $params, string $identifier = 'default'): array { + $result = NULL; + try { + $result = \civicrm_api4($entity, 'create', ['values' => $params, 'checkPermissions' => FALSE])->first(); + $this->setTestEntityID($entity, $result['id'], $identifier); + } + catch (\CRM_Core_Exception $e) { + $this->fail('Failed to create ' . $entity . ' : ' . $e->getMessage()); + } + return $result; + } + + /** + * Set the test entity on the class for access. + * + * This follows the ids patter and also the api4TestTrait pattern. + * + * @param string $entity + * @param array $values + * @param string $identifier + */ + protected function setTestEntity(string $entity, array $values, string $identifier): void { + $this->ids[$entity][$identifier] = $values['id']; + $this->testRecords[] = [$entity, [[$values['id'] => $values]]]; + $tableName = \CRM_Core_DAO_AllCoreTables::getTableForEntityName($entity); + $this->tablesToCleanUp[$tableName] = $tableName; + } + + /** + * @param string $entity + * @param int $id + * @param string $identifier + */ + protected function setTestEntityID(string $entity, int $id, string $identifier): void { + $this->setTestEntity($entity, ['id' => $id], $identifier); + } + +} diff --git a/civicrm/Civi/Test/EventTestTrait.php b/civicrm/Civi/Test/EventTestTrait.php index 33b8d5e76e..93b711faff 100644 --- a/civicrm/Civi/Test/EventTestTrait.php +++ b/civicrm/Civi/Test/EventTestTrait.php @@ -39,33 +39,7 @@ use Civi\Api4\UFJoin; * profiles and price set data as appropriate. */ trait EventTestTrait { - - /** - * Array of IDs created to support the test. - * - * e.g - * $this->ids = ['Event' => ['descriptive_key' => $eventID], 'Group' => [$groupID]]; - * - * @var array - */ - protected $ids = []; - - /** - * Records created which will be deleted during tearDown - * - * @var array - */ - protected $testRecords = []; - - /** - * Track tables we have modified during a test. - * - * Set up functions that add entities can register the relevant tables here for - * the cleanup process. - * - * @var array - */ - protected $tablesToCleanUp = []; + use EntityTrait; /** * Create a paid event. @@ -120,31 +94,6 @@ trait EventTestTrait { return $this->eventCreate($eventParameters, $identifier); } - /** - * Set the test entity on the class for access. - * - * This follows the ids patter and also the api4TestTrait pattern. - * - * @param string $entity - * @param array $values - * @param string $identifier - */ - protected function setTestEntity(string $entity, array $values, string $identifier): void { - $this->ids[$entity][$identifier] = $values['id']; - $this->testRecords[] = [$entity, [[$values['id'] => $values]]]; - $tableName = \CRM_Core_DAO_AllCoreTables::getTableForEntityName($entity); - $this->tablesToCleanUp[$tableName] = $tableName; - } - - /** - * @param string $entity - * @param int $id - * @param string $identifier - */ - protected function setTestEntityID(string $entity, int $id, string $identifier): void { - $this->setTestEntity($entity, ['id' => $id], $identifier); - } - /** * Get the event id of the event created in set up. * @@ -214,7 +163,7 @@ trait EventTestTrait { * * @return array */ - protected function eventCreate(array $params = [], string $identifier = 'event'): array { + public function eventCreate(array $params = [], string $identifier = 'event'): array { try { $event = Event::create(FALSE)->setValues($params)->execute()->first(); $this->setTestEntity('Event', $event, $identifier); @@ -383,6 +332,7 @@ trait EventTestTrait { } return [ 'free' => ['name' => 'free', 'label' => 'Complementary', 'amount' => 0], + 'student_early' => ['name' => 'student_early', 'label' => 'Student early bird', 'amount' => 50], 'student' => ['name' => 'student', 'label' => 'Student Rate', 'amount' => 100], 'student_plus' => ['name' => 'student_plus', 'label' => 'Student Deluxe', 'amount' => 200], 'standard' => ['name' => 'standard', 'label' => 'Standard Rate', 'amount' => 300], diff --git a/civicrm/Civi/Test/MailingTestTrait.php b/civicrm/Civi/Test/MailingTestTrait.php index b6ee14d872..17f1320254 100644 --- a/civicrm/Civi/Test/MailingTestTrait.php +++ b/civicrm/Civi/Test/MailingTestTrait.php @@ -19,12 +19,12 @@ trait MailingTestTrait { * @return int */ public function createMailing($params = []) { - $params = array_merge(array( + $params = array_merge([ 'subject' => 'maild' . rand(), 'body_text' => 'bdkfhdskfhduew{domain.address}{action.optOutUrl}', 'name' => 'mailing name' . rand(), 'created_id' => 1, - ), $params); + ], $params); $result = $this->callAPISuccess('Mailing', 'create', $params); return $result['id']; @@ -35,9 +35,9 @@ trait MailingTestTrait { * @param $id */ public function deleteMailing($id) { - $params = array( + $params = [ 'id' => $id, - ); + ]; $this->callAPISuccess('Mailing', 'delete', $params); } diff --git a/civicrm/Civi/Test/TAP7.php b/civicrm/Civi/Test/TAP7.php index 3497167e02..fe233b73ad 100644 --- a/civicrm/Civi/Test/TAP7.php +++ b/civicrm/Civi/Test/TAP7.php @@ -70,20 +70,20 @@ class TAP7 extends \PHPUnit\Util\Printer implements \PHPUnit\Framework\TestListe $this ->writeNotOk($test, 'Failure'); $message = explode("\n", \PHPUnit\Framework\TestFailure::exceptionToString($e)); - $diagnostic = array( + $diagnostic = [ 'message' => $message[0], 'severity' => 'fail', - ); + ]; if ($e instanceof \PHPUnit\Framework\ExpectationFailedException) { $cf = $e ->getComparisonFailure(); if ($cf !== NULL) { - $diagnostic['data'] = array( + $diagnostic['data'] = [ 'got' => $cf ->getActual(), 'expected' => $cf ->getExpected(), - ); + ]; } } diff --git a/civicrm/Civi/Test/TAP9.php b/civicrm/Civi/Test/TAP9.php index 7b39c6bbfe..d177848622 100644 --- a/civicrm/Civi/Test/TAP9.php +++ b/civicrm/Civi/Test/TAP9.php @@ -78,20 +78,20 @@ class TAP9 extends Printer implements ResultPrinter { $this ->writeNotOk($test, 'Failure'); $message = explode("\n", \PHPUnit\Framework\TestFailure::exceptionToString($e)); - $diagnostic = array( + $diagnostic = [ 'message' => $message[0], 'severity' => 'fail', - ); + ]; if ($e instanceof \PHPUnit\Framework\ExpectationFailedException) { $cf = $e ->getComparisonFailure(); if ($cf !== NULL) { - $diagnostic['data'] = array( + $diagnostic['data'] = [ 'got' => $cf ->getActual(), 'expected' => $cf ->getExpected(), - ); + ]; } } diff --git a/civicrm/Civi/Test/TAPLegacy.php b/civicrm/Civi/Test/TAPLegacy.php index 7da5659f54..36a6fcfa61 100644 --- a/civicrm/Civi/Test/TAPLegacy.php +++ b/civicrm/Civi/Test/TAPLegacy.php @@ -67,20 +67,20 @@ class TAPLegacy extends \PHPUnit\Util\Printer implements \PHPUnit\Framework\Test $this ->writeNotOk($test, 'Failure'); $message = explode("\n", \PHPUnit\Framework\TestFailure::exceptionToString($e)); - $diagnostic = array( + $diagnostic = [ 'message' => $message[0], 'severity' => 'fail', - ); + ]; if ($e instanceof \PHPUnit\Framework\ExpectationFailedException) { $cf = $e ->getComparisonFailure(); if ($cf !== NULL) { - $diagnostic['data'] = array( + $diagnostic['data'] = [ 'got' => $cf ->getActual(), 'expected' => $cf ->getExpected(), - ); + ]; } } diff --git a/civicrm/Civi/Test/WorkflowMessageTestTrait.php b/civicrm/Civi/Test/WorkflowMessageTestTrait.php index 8adf4e5038..6ddbe3f75d 100644 --- a/civicrm/Civi/Test/WorkflowMessageTestTrait.php +++ b/civicrm/Civi/Test/WorkflowMessageTestTrait.php @@ -71,6 +71,7 @@ trait WorkflowMessageTestTrait { if ($prefix === NULL) { $prefix = sprintf('[%s] ', $this->getWorkflowName()); } + $this->assertEquals($refInstance->getWorkflowName(), $cmpInstance->getWorkflowName(), "{$prefix}Should have same workflow name)"); $this->assertEquals($refInstance->export('tplParams'), $cmpInstance->export('tplParams'), "{$prefix}Should have same export(tplParams)"); $this->assertEquals($refInstance->export('tokenContext'), $cmpInstance->export('tokenContext'), "{$prefix}should have same export(tokenContext)"); $this->assertEquals($refInstance->export('envelope'), $cmpInstance->export('envelope'), "{$prefix}Should have same export(envelope)"); diff --git a/civicrm/Civi/Token/StandardFilters.php b/civicrm/Civi/Token/StandardFilters.php index 5b77e1cd82..9604e2e7eb 100644 --- a/civicrm/Civi/Token/StandardFilters.php +++ b/civicrm/Civi/Token/StandardFilters.php @@ -65,6 +65,40 @@ class StandardFilters { } } + /** + * Convert to title case (each word is capitalized). + * + * The use of the verb 'capitalize' is to align with smarty + * @see https://www.smarty.net/docsv2/en/language.modifiers.tpl#language.modifier.capitalize + * + * @param string $value + * @param array $filter + * @param string $format + * + * @return string + * + * @throws \CRM_Core_Exception + * @noinspection PhpUnusedParameterInspection + */ + public static function capitalize($value, array $filter, string $format): string { + // Note that Smarty says capitalize equates to ucwords. + // ucwords is not multibyte proof and this alternative messes a bit with + // intentionally capitalization (DVD => Dvd) but the trade off seems OK. + // https://gist.github.com/burakerdem/1007450 + switch ($format) { + case 'text/plain': + return mb_convert_case($value, MB_CASE_TITLE); + + case 'text/html': + return \CRM_Utils_XML::filterMarkupText((string) $value, function($s) { + return mb_convert_case($s, MB_CASE_TITLE); + }); + + default: + throw new \CRM_Core_Exception(sprintf('Filter %s does not support format %s', __FUNCTION__, $format)); + } + } + /** * Convert to boolean. * diff --git a/civicrm/Civi/Token/TokenProcessor.php b/civicrm/Civi/Token/TokenProcessor.php index c19ca59aef..09bcbb080c 100644 --- a/civicrm/Civi/Token/TokenProcessor.php +++ b/civicrm/Civi/Token/TokenProcessor.php @@ -477,7 +477,7 @@ class TokenProcessor { switch ($filter[0] ?? NULL) { case NULL: case 'crmMoney': - return \Civi::format()->money($value->getAmount(), $value->getCurrency()); + return \Civi::format()->money($value->getAmount(), $value->getCurrency(), $filter[1] ?? NULL); case 'boolean': // We resolve boolean to 0 or 1 or smarty chokes on FALSE. diff --git a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php index 7eb6a59b1c..efec672168 100644 --- a/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php +++ b/civicrm/Civi/WorkflowMessage/GenericWorkflowMessage.php @@ -17,6 +17,7 @@ use Civi\WorkflowMessage\Traits\AddressingTrait; use Civi\WorkflowMessage\Traits\FinalHelperTrait; use Civi\WorkflowMessage\Traits\LocalizationTrait; use Civi\WorkflowMessage\Traits\ReflectiveWorkflowTrait; +use Civi\WorkflowMessage\Traits\TemplateTrait; /** * Generic base-class for describing the inputs for a workflow email template. @@ -48,6 +49,9 @@ class GenericWorkflowMessage implements WorkflowMessageInterface { // Implement setLocale(), etc use LocalizationTrait; + // Implement setTemplate(), etc + use TemplateTrait; + /** * WorkflowMessage constructor. * diff --git a/civicrm/Civi/WorkflowMessage/TestBanner.php b/civicrm/Civi/WorkflowMessage/TestBanner.php new file mode 100644 index 0000000000..9480b3c22c --- /dev/null +++ b/civicrm/Civi/WorkflowMessage/TestBanner.php @@ -0,0 +1,56 @@ +<?php + +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\WorkflowMessage; + +use Civi\Api4\MessageTemplate; +use Civi\Core\Service\AutoService; +use Symfony\Component\EventDispatcher\EventSubscriberInterface; + +/** + * If someone sends an automated message for a test record (e.g. Contribution with `is_test=1`), + * then we add a banner to the automated message. + * + * @service + * @internal + */ +class TestBanner extends AutoService implements EventSubscriberInterface { + + public static function getSubscribedEvents() { + return [ + '&hook_civicrm_alterMailContent' => ['onAlterMailContent', -1000], + ]; + } + + public function onAlterMailContent(array &$mailContent): void { + // Only alter workflow-messages -- not CiviMail messages + if (!empty($mailContent['mailingID'])) { + return; + } + + // Only alter test messages + if (empty($mailContent['isTest'])) { + return; + } + + $testText = MessageTemplate::get(FALSE) + ->setSelect(['msg_subject', 'msg_text', 'msg_html']) + ->addWhere('workflow_name', '=', 'test_preview') + ->addWhere('is_default', '=', TRUE) + ->execute()->first(); + + $mailContent['subject'] = $testText['msg_subject'] . $mailContent['subject']; + $mailContent['text'] = $testText['msg_text'] . $mailContent['text']; + $mailContent['html'] = preg_replace('/<body(.*)$/im', "<body\\1\n{$testText['msg_html']}", $mailContent['html']); + } + +} diff --git a/civicrm/Civi/WorkflowMessage/Traits/LocalizationTrait.php b/civicrm/Civi/WorkflowMessage/Traits/LocalizationTrait.php index 51aa90503f..d5974630b9 100644 --- a/civicrm/Civi/WorkflowMessage/Traits/LocalizationTrait.php +++ b/civicrm/Civi/WorkflowMessage/Traits/LocalizationTrait.php @@ -19,6 +19,27 @@ trait LocalizationTrait { */ protected $locale; + /** + * The language that was requested to be rendered. + * + * This may not be the rendered locale - as the requested language + * might be available. This is primarily for extensions to use in + * custom workflow messages. + * + * The use-case is a bit like this: + * + * 1. Your organization serves many similar locales (eg es_MX+es_CR+es_HN or en_GB+en_US+en_NZ). + * 2. You want to write one message (es_MX) for several locales (es_MX+es_CR+es_HN) + * 3. You want to include some conditional content that adapts the recipient's requested locale + * (es_CR) -- _even though_ the template was stored as es_MX. For example your front end + * website has more nuanced translations than your workflow messages and you wish + * to redirect the user to a page on your website. + * + * @var string|null + * @scope tokenContext + */ + protected $requestedLocale; + /** * @return string */ @@ -35,6 +56,31 @@ trait LocalizationTrait { return $this; } + /** + * Get the requested locale. + * + * This may differ from the rendered locale (e.g. if a translation is not + * available). It is not used in core but extensions may leverage this + * information. + * + * @return string + */ + public function getRequestedLocale(): ?string { + return $this->locale; + } + + /** + * Set the requested locale. + * + * @param string|null $requestedLocale + * + * @return $this + */ + public function setRequestedLocale(?string $requestedLocale): self { + $this->requestedLocale = $requestedLocale; + return $this; + } + protected function validateExtra_localization(&$errors) { $allLangs = \CRM_Core_I18n::languages(); if ($this->locale !== NULL && !isset($allLangs[$this->locale])) { diff --git a/civicrm/Civi/WorkflowMessage/Traits/ReflectiveWorkflowTrait.php b/civicrm/Civi/WorkflowMessage/Traits/ReflectiveWorkflowTrait.php index fd2fa3920d..f768cc2d9d 100644 --- a/civicrm/Civi/WorkflowMessage/Traits/ReflectiveWorkflowTrait.php +++ b/civicrm/Civi/WorkflowMessage/Traits/ReflectiveWorkflowTrait.php @@ -39,6 +39,20 @@ use Civi\Api4\Utils\ReflectionUtils; */ trait ReflectiveWorkflowTrait { + public function getWorkflowName(): ?string { + return $this->_extras['envelope']['workflow'] ?? \CRM_Utils_Constant::value(static::CLASS . '::WORKFLOW'); + } + + /** + * @return string|null + * @deprecated + * It is not recommended that new things depend on the group-name. However, the plumbing still + * passes-through the group-name. + */ + public function getGroupName(): ?string { + return $this->_extras['envelope']['groupName'] ?? \CRM_Utils_Constant::value(static::CLASS . '::GROUP'); + } + /** * The extras are an open-ended list of fields that will be passed-through to * tpl, tokenContext, etc. This is the storage of last-resort for imported diff --git a/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php b/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php new file mode 100644 index 0000000000..73d6f41272 --- /dev/null +++ b/civicrm/Civi/WorkflowMessage/Traits/TemplateTrait.php @@ -0,0 +1,139 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +namespace Civi\WorkflowMessage\Traits; + +use Civi\Api4\Contact; +use Civi\Api4\MessageTemplate; + +/** + * @method getTemplate(): ?array + * @method setTemplate(?array $value): $this + * @method getTemplateId(): ?int + * @method setTemplateId(?int $value): $this + * @method getIsTest(): ?bool + * @method setIsTest(?bool $value): $this + */ +trait TemplateTrait { + + abstract public function getLocale(): ?string; + + abstract public function setLocale(?string $locale); + + /** + * The content of the message-template. + * + * Ex: [ + * 'msg_subject' => 'Hello {contact.first_name}', + * 'msg_html' => '<p>Greetings and salutations, {contact.display_name}!</p>' + * ] + * + * @var array|null + * @scope envelope as messageTemplate + */ + protected $template; + + /** + * @var int|null + * @scope envelope as messageTemplateID + */ + protected $templateId; + + /** + * @var bool + * @scope envelope + */ + protected $isTest; + + public function resolveContent(): array { + $model = $this; + $language = $model->getLocale(); + if (empty($language) && !empty($model->getContactID())) { + $language = Contact::get(FALSE)->addWhere('id', '=', $this->getContactID())->addSelect('preferred_language')->execute()->first()['preferred_language']; + } + [$mailContent, $translatedLanguage] = self::loadTemplate((string) $model->getWorkflowName(), $model->getIsTest(), $model->getTemplateId(), $model->getGroupName(), $model->getTemplate(), $language); + $model->setLocale($translatedLanguage ?? $model->getLocale()); + $model->setRequestedLocale($language); + return $mailContent; + } + + /** + * Load the specified template. + * + * @param string $workflowName + * @param bool $isTest + * @param int|null $messageTemplateID + * @param string $groupName + * @param array|null $messageTemplateOverride + * Optionally, record with msg_subject, msg_text, msg_html. + * If omitted, the record will be loaded from workflowName/messageTemplateID. + * @param string|null $language + * + * @return array + * @throws \CRM_Core_Exception + * @internal + */ + private static function loadTemplate(string $workflowName, bool $isTest, int $messageTemplateID = NULL, $groupName = NULL, ?array $messageTemplateOverride = NULL, ?string $language = NULL): array { + $base = ['msg_subject' => NULL, 'msg_text' => NULL, 'msg_html' => NULL, 'pdf_format_id' => NULL]; + if (!$workflowName && !$messageTemplateID && !$messageTemplateOverride) { + throw new CRM_Core_Exception(ts("Message template not specified. No option value, ID, or template content.")); + } + + $apiCall = MessageTemplate::get(FALSE) + ->setLanguage($language) + ->setTranslationMode('fuzzy') + ->addSelect('msg_subject', 'msg_text', 'msg_html', 'pdf_format_id', 'id') + ->addWhere('is_default', '=', 1); + + if ($messageTemplateID) { + $apiCall->addWhere('id', '=', (int) $messageTemplateID); + $result = $apiCall->execute(); + } + elseif ($workflowName) { + $apiCall->addWhere('workflow_name', '=', $workflowName); + $result = $apiCall->execute(); + } + else { + // Don't bother with query. We know there's nothing. + $result = new \Civi\Api4\Generic\Result(); + } + $messageTemplate = array_merge($base, $result->first() ?: [], $messageTemplateOverride ?: []); + if (empty($messageTemplate['id']) && empty($messageTemplateOverride)) { + if ($messageTemplateID) { + throw new CRM_Core_Exception(ts('No such message template: id=%1.', [1 => $messageTemplateID])); + } + throw new CRM_Core_Exception(ts('No message template with workflow name %1.', [1 => $workflowName])); + } + + $mailContent = [ + 'subject' => $messageTemplate['msg_subject'], + 'text' => $messageTemplate['msg_text'], + 'html' => $messageTemplate['msg_html'], + 'format' => $messageTemplate['pdf_format_id'], + // Workflow name is the field in the message templates table that denotes the + // workflow the template is used for. This is intended to eventually + // replace the non-standard option value/group implementation - see + // https://github.com/civicrm/civicrm-core/pull/17227 and the longer + // discussion on https://github.com/civicrm/civicrm-core/pull/17180 + 'workflow_name' => $workflowName, + // Note messageTemplateID is the id but when present we also know it was specifically requested. + 'messageTemplateID' => $messageTemplateID, + // Group name & valueName are deprecated parameters. At some point it will not be passed out. + // https://github.com/civicrm/civicrm-core/pull/17180 + 'groupName' => $groupName, + 'workflow' => $workflowName, + 'isTest' => $isTest, + ]; + + return [$mailContent, $messageTemplate['actual_language'] ?? NULL]; + } + +} diff --git a/civicrm/Civi/WorkflowMessage/WorkflowMessage.php b/civicrm/Civi/WorkflowMessage/WorkflowMessage.php index 8d9296b67e..d15def34bc 100644 --- a/civicrm/Civi/WorkflowMessage/WorkflowMessage.php +++ b/civicrm/Civi/WorkflowMessage/WorkflowMessage.php @@ -126,12 +126,17 @@ class WorkflowMessage { public static function exportAll(WorkflowMessageInterface $model): array { // The format is defined to match the traditional format of CRM_Core_BAO_MessageTemplate::sendTemplate(). // At the top level, it is an "envelope", but it also has keys for other sections. + $swapLocale = !$model->getLocale() ? NULL : \CRM_Utils_AutoClean::swapLocale($model->getLocale()); + $values = $model->export('envelope'); $values['tplParams'] = $model->export('tplParams'); $values['tokenContext'] = $model->export('tokenContext'); if (isset($values['tokenContext']['contactId'])) { $values['contactId'] = $values['tokenContext']['contactId']; } + if ($swapLocale) { + $swapLocale->cleanup(); + } return $values; } diff --git a/civicrm/Civi/WorkflowMessage/WorkflowMessageInterface.php b/civicrm/Civi/WorkflowMessage/WorkflowMessageInterface.php index c3d4438ce8..198f5d5268 100644 --- a/civicrm/Civi/WorkflowMessage/WorkflowMessageInterface.php +++ b/civicrm/Civi/WorkflowMessage/WorkflowMessageInterface.php @@ -13,6 +13,11 @@ namespace Civi\WorkflowMessage; interface WorkflowMessageInterface { + /** + * @return string + */ + public function getWorkflowName(): ?string; + /** * @return \Civi\WorkflowMessage\FieldSpec[] * A list of field-specs that are used in the given format, keyed by their name in that format. @@ -73,6 +78,13 @@ interface WorkflowMessageInterface { */ public function assertValid($strict = FALSE); + /** + * Get the locale in use, if set. + * + * @return string|null + */ + public function getLocale(): ?string; + /** * Render a message template. * diff --git a/civicrm/ang/api4Explorer.ang.php b/civicrm/ang/api4Explorer.ang.php index e539892ca5..b7bfc25923 100644 --- a/civicrm/ang/api4Explorer.ang.php +++ b/civicrm/ang/api4Explorer.ang.php @@ -14,6 +14,6 @@ return [ ], 'basePages' => [], 'bundles' => ['bootstrap3'], - 'permissions' => ['access debug output', 'edit groups', 'administer reserved groups'], + 'permissions' => ['view debug output', 'edit groups', 'administer reserved groups'], 'requires' => ['crmUi', 'crmUtil', 'ngRoute', 'crmRouteBinder', 'ui.sortable', 'api4', 'ngSanitize'], ]; diff --git a/civicrm/ang/api4Explorer/Explorer.html b/civicrm/ang/api4Explorer/Explorer.html index e6d1e4a0f7..db7057d3bb 100644 --- a/civicrm/ang/api4Explorer/Explorer.html +++ b/civicrm/ang/api4Explorer/Explorer.html @@ -161,6 +161,14 @@ <a href class="crm-hover-button" title="Clear" ng-click="clearParam('limit');clearParam('offset');" ng-show="!!params.limit || !!params.offset"><i class="crm-i fa-times" aria-hidden="true"></i></a> </div> </fieldset> + <fieldset ng-if="::availableParams.sets" ng-mouseenter="help('sets', availableParams.sets)" ng-mouseleave="help()"> + <legend>sets</legend> + <api4-exp-set class="api4-input form-inline" ng-repeat="clause in params.sets" set="clause" entities="entities" delete-row="clearParam('sets', $index)" > + </api4-exp-set> + <div class="api4-input form-inline"> + <input class="form-control" ng-model="controls.sets" crm-ui-select="::{data: entities}" placeholder="Add set" /> + </div> + </fieldset> <fieldset ng-if="::availableParams.chain" ng-mouseenter="help('chain', availableParams.chain)" ng-mouseleave="help()"> <legend>chain</legend> <div class="api4-input form-inline" ng-repeat="clause in params.chain" api4-exp-chain="clause" entities="::entities" main-entity="::entity" > @@ -258,7 +266,7 @@ <span>{{:: ts('Result') }}</span> </a> </li> - <li role="presentation" ng-if="::perm.accessDebugOutput" ng-class="{active: selectedTab.result === 'debug'}"> + <li role="presentation" ng-if="::perm.viewDebugOutput" ng-class="{active: selectedTab.result === 'debug'}"> <a href ng-click="selectedTab.result = 'debug'"> <i class="fa fa-fw fa-{{ debug ? (status === 'warning' || status === 'danger' ? 'warning' : 'bug') : 'circle-o' }}"></i> <span>{{:: ts('Debug') }}</span> @@ -278,7 +286,7 @@ <pre class="prettyprint" id="api4-result-{{ $index }}" ng-bind-html="code"></pre> </div> </div> - <div ng-if="::perm.accessDebugOutput" ng-show="selectedTab.result === 'debug'"> + <div ng-if="::perm.viewDebugOutput" ng-show="selectedTab.result === 'debug'"> <pre ng-if="debug" class="prettyprint" ng-bind-html="debug"></pre> <div ng-if="!debug"> <p> diff --git a/civicrm/ang/api4Explorer/Explorer.js b/civicrm/ang/api4Explorer/Explorer.js index 5f031ca28b..5e13dcb626 100644 --- a/civicrm/ang/api4Explorer/Explorer.js +++ b/civicrm/ang/api4Explorer/Explorer.js @@ -36,7 +36,7 @@ $scope.selectedTab = {result: 'result'}; $scope.crmUrl = CRM.url; $scope.perm = { - accessDebugOutput: CRM.checkPerm('access debug output'), + viewDebugOutput: CRM.checkPerm('view debug output'), }; marked.setOptions({highlight: prettyPrintOne}); var getMetaParams = {}, @@ -352,7 +352,7 @@ if (_.isEmpty($scope.availableParams)) { return; } - var specialParams = ['select', 'fields', 'action', 'where', 'values', 'defaults', 'orderBy', 'chain', 'groupBy', 'having', 'join']; + var specialParams = ['select', 'fields', 'action', 'where', 'values', 'defaults', 'orderBy', 'chain', 'groupBy', 'having', 'join', 'sets']; if ($scope.availableParams.limit && $scope.availableParams.offset) { specialParams.push('limit', 'offset'); } @@ -611,7 +611,7 @@ }); }); } - if (typeof objectParams[name] !== 'undefined' || name === 'groupBy' || name === 'select' || name === 'join') { + if (typeof objectParams[name] !== 'undefined' || name === 'groupBy' || name === 'select' || name === 'join' || name === 'sets') { $scope.$watch('controls.' + name, function(value) { var field = value; $timeout(function() { @@ -620,6 +620,10 @@ $scope.params[name].push([field + ' AS ' + _.snakeCase(field), 'LEFT']); ctrl.buildFieldList(); } + else if (name === 'sets') { + var select = $scope.params.select && $scope.params.select.length ? $scope.params.select : ['id']; + $scope.params[name].push(['UNION ALL', field, 'get', '{select: [' + select.join(', ') + '], where: []}']); + } else if (typeof objectParams[name] === 'undefined') { $scope.params[name].push(field); } else { @@ -734,6 +738,8 @@ break; case 'php': + // Always shows implicit true permissions check for PHP + params.checkPermissions = (params.checkPermissions === false) ? false : true; // Write php code code.php = '$' + results + " = civicrm_api4('" + entity + "', '" + action + "', ["; _.each(params, function(param, key) { @@ -876,9 +882,8 @@ newLine = "\n" + _.repeat(' ', indent), code = '\\' + info.class + '::' + action + '(', args = _.cloneDeep(info.class_args || []); - if (params.checkPermissions === false) { - args.push(false); - } + // Always shows implicit true permissions check for PHP + args.push((params.checkPermissions === false) ? false : true); code += _.map(args, phpFormat).join(', ') + ')'; _.each(params, function(param, key) { var val = ''; @@ -914,6 +919,11 @@ code += newLine + "->addChain('" + name + "', " + formatOOP(chain[0], chain[1], chain[2], 2 + indent); code += (chain.length > 3 ? ',' : '') + (!_.isEmpty(chain[2]) ? newLine : ' ') + (chain.length > 3 ? phpFormat(chain[3]) : '') + ')'; }); + } else if (key === 'sets') { + _.each(param, function(set) { + code += newLine + "->addSet(" + phpFormat(set[0]) + ', ' + formatOOP(set[1], set[2], set[3], 2 + indent); + code += newLine + ')'; + }); } else if (key === 'join') { _.each(param, function(join) { code += newLine + "->addJoin(" + phpFormat(join).slice(1, -1) + ')'; @@ -1421,6 +1431,24 @@ }; }); + angular.module('api4Explorer').component('api4ExpSet', { + bindings: { + set: '<', + deleteRow: '&', + entities: '<' + }, + templateUrl: '~/api4Explorer/Set.html', + controller: function($scope) { + var ctrl = this; + + $scope.$watch('$ctrl.set[1]', function(entity) { + if (!entity) { + ctrl.deleteRow(); + } + }); + } + }); + function getEntity(entityName) { return _.findWhere(schema, {name: entityName}); } diff --git a/civicrm/ang/api4Explorer/Set.html b/civicrm/ang/api4Explorer/Set.html new file mode 100644 index 0000000000..1f0e5335f7 --- /dev/null +++ b/civicrm/ang/api4Explorer/Set.html @@ -0,0 +1,7 @@ +<select class="form-control api4-sets-type" ng-model="$ctrl.set[0]" placeholder="{{:: ts('Type') }}" > + <option value="UNION DISTINCT">UNION DISTINCT</option> + <option value="UNION ALL">UNION ALL</option> +</select> +<input class="form-control" ng-model="$ctrl.set[1]" crm-ui-select="{data: $ctrl.entities, allowClear: true, placeholder: 'None'}" /> +<input class="form-control api4-sets-action" readonly value="get" > +<input class="form-control api4-sets-params" ng-model="$ctrl.set[3]" placeholder="{{:: ts('Params') }}" > diff --git a/civicrm/ang/crmCaseType/list.html b/civicrm/ang/crmCaseType/list.html index c9ebc7e60d..847c4bcc8e 100644 --- a/civicrm/ang/crmCaseType/list.html +++ b/civicrm/ang/crmCaseType/list.html @@ -74,6 +74,6 @@ Required vars: caseTypes </table> <div class="crm-submit-buttons"> - <a ng-href="#/caseType/new" class="button"><span><i class="crm-i fa-plus-circle" aria-hidden="true"></i> {{:: ts('New Case Type') }}</span></a> + <a href="#/caseType/new" class="button"><span><i class="crm-i fa-plus-circle" aria-hidden="true"></i> {{:: ts('New Case Type') }}</span></a> </div> </div> diff --git a/civicrm/ang/crmMailing.css b/civicrm/ang/crmMailing.css index 4dc0a0ed24..a04e930501 100644 --- a/civicrm/ang/crmMailing.css +++ b/civicrm/ang/crmMailing.css @@ -23,17 +23,6 @@ text-align: center; } -span.crmMailing-include { - color: #060; -} -span.crmMailing-exclude { - color: #600; - text-decoration: line-through; -} -span.crmMailing-mandatory { - color: #866304; -} - .crmMailing input[name=preview_test_email], .crmMailing-preview select[name=preview_test_group] { width: 80%; @@ -53,12 +42,9 @@ span.crmMailing-mandatory { .crmMailing .preview-contact { border-right: 1px solid black; } -.crmMailing .preview-group, -.crmMailing .preview-contact { -} .crmMailing .crmMailing-schedule-outer { - width: 98% + width: 98%; } .crmMailing .crmMailing-schedule-inner { width: 40em; @@ -79,8 +65,8 @@ input[name=preview_test_email]::-webkit-input-placeholder { input[name=preview_test_email]:-ms-input-placeholder { text-align: center; } -.crmMailing-active { -} + +/* .crmMailing-active {} */ .crmMailing-inactive { text-decoration: line-through; } diff --git a/civicrm/ang/crmMailing/BlockMailing.html b/civicrm/ang/crmMailing/BlockMailing.html index 3f6c7ca44a..8b87a3dd0c 100644 --- a/civicrm/ang/crmMailing/BlockMailing.html +++ b/civicrm/ang/crmMailing/BlockMailing.html @@ -36,9 +36,7 @@ It could perhaps be thinned by 30-60% by making more directives. </select> </div> </div> - <div crm-ui-field="{name: 'subform.recipients', title: ts('Recipients'), required: true}"> - <div crm-mailing-block-recipients="{name: 'recipients', id: 'subform.recipients'}" crm-mailing="mailing" cm-ui-id="subform.recipients"></div> - </div> + <div crm-mailing-block-recipients-multiline="{name: 'recipients'}" crm-mailing="mailing"></div> <span ng-controller="EditUnsubGroupCtrl"> <div crm-ui-field="{name: 'subform.baseGroup', title: ts('Unsubscribe Group')}" ng-if="isUnsubGroupRequired(mailing)"> <input diff --git a/civicrm/ang/crmMailing/BlockRecipients.html b/civicrm/ang/crmMailing/BlockRecipients.html index 8803868453..90be26287c 100644 --- a/civicrm/ang/crmMailing/BlockRecipients.html +++ b/civicrm/ang/crmMailing/BlockRecipients.html @@ -1,12 +1,8 @@ <div ng-controller="EditRecipCtrl" class="crm-mailing-recipients-row"> - <input - type="hidden" - crm-mailing-recipients - ng-model="mailing.recipients" - crm-mandatory-groups="crmMailingConst.groupNames | filter:{is_hidden:1}" - crm-ui-id="{{crmMailingBlockRecipients.id}}" - name="{{crmMailingBlockRecipients.name}}" - ng-required="true" /> + <i class="crm-i fa-plus-square-o"></i> + <crm-mailing-recipients-autocomplete ng-if="mailing" crm-recipients="mailing.recipients" crm-mailing-id="mailing.id" crm-mode="include"></crm-mailing-recipients-autocomplete> + <i class="crm-i fa-minus-square-o"></i> + <crm-mailing-recipients-autocomplete ng-if="mailing" crm-recipients="mailing.recipients" crm-mailing-id="mailing.id" crm-mode="exclude"></crm-mailing-recipients-autocomplete> <a crm-icon="fa-wrench" ng-click="editOptions(mailing)" class="crm-hover-button" title="{{:: ts('Edit Recipient Options') }}"></a> <div ng-style="{display: permitRecipientRebuild ? '' : 'inline-block'}"> <button ng-click="rebuildRecipients()" ng-show="permitRecipientRebuild" class="crm-button" title="{{:: ts('Click to refresh recipient count') }}">{{getRecipientsEstimate()}}</button> diff --git a/civicrm/ang/crmMailing/BlockRecipientsMultiline.html b/civicrm/ang/crmMailing/BlockRecipientsMultiline.html new file mode 100644 index 0000000000..3fbb50350b --- /dev/null +++ b/civicrm/ang/crmMailing/BlockRecipientsMultiline.html @@ -0,0 +1,13 @@ +<div ng-controller="EditRecipCtrl" class="crm-mailing-recipients-row"> + <div crm-ui-field="{name: 'subform.recipients_include', title: ts('Recipients'), required: true}"> + <crm-mailing-recipients-autocomplete ng-if="mailing" crm-recipients="mailing.recipients" crm-mailing-id="mailing.id" crm-mode="include"></crm-mailing-recipients-autocomplete> + <div ng-style="{display: permitRecipientRebuild ? '' : 'inline-block'}"> + <button ng-click="rebuildRecipients()" ng-show="permitRecipientRebuild" class="crm-button" title="{{:: ts('Click to refresh recipient count') }}">{{getRecipientsEstimate()}}</button> + <a ng-click="previewRecipients()" class="crm-hover-button" title="{{:: ts('Preview a List of Recipients') }}" style="font-weight: bold;">{{getRecipientCount()}}</a> + </div> + </div> + <div crm-ui-field="{name: 'subform.recipients_exclude', title: ts('Exclude')}"> + <crm-mailing-recipients-autocomplete ng-if="mailing" crm-recipients="mailing.recipients" crm-mailing-id="mailing.id" crm-mode="exclude"></crm-mailing-recipients-autocomplete> + <a crm-icon="fa-wrench" ng-click="editOptions(mailing)" class="crm-hover-button" title="{{:: ts('Edit Recipient Options') }}">{{:: ts('Advanced') }}</a> + </div> +</div> diff --git a/civicrm/ang/crmMailing/BlockRecipientsMultiline.js b/civicrm/ang/crmMailing/BlockRecipientsMultiline.js new file mode 100644 index 0000000000..f4431e48e9 --- /dev/null +++ b/civicrm/ang/crmMailing/BlockRecipientsMultiline.js @@ -0,0 +1,5 @@ +(function(angular, $, _) { + angular.module('crmMailing').directive('crmMailingBlockRecipientsMultiline', function(crmMailingSimpleDirective) { + return crmMailingSimpleDirective('crmMailingBlockRecipientsMultiline', '~/crmMailing/BlockRecipientsMultiline.html'); + }); +})(angular, CRM.$, CRM._); diff --git a/civicrm/ang/crmMailing/EditRecipCtrl.js b/civicrm/ang/crmMailing/EditRecipCtrl.js index 304b56959e..cc02c4dea2 100644 --- a/civicrm/ang/crmMailing/EditRecipCtrl.js +++ b/civicrm/ang/crmMailing/EditRecipCtrl.js @@ -11,12 +11,7 @@ var SETTING_DEBOUNCE_MS = 5000; var RECIPIENTS_PREVIEW_LIMIT = 50; - var ts = $scope.ts = CRM.ts(null); - - $scope.isMailingList = function isMailingList(group) { - var GROUP_TYPE_MAILING_LIST = '2'; - return _.contains(group.group_type, GROUP_TYPE_MAILING_LIST); - }; + var ts = $scope.ts = CRM.ts(); $scope.recipients = null; $scope.outdated = null; diff --git a/civicrm/ang/crmMailing/Recipients.js b/civicrm/ang/crmMailing/Recipients.js deleted file mode 100644 index 133efacdca..0000000000 --- a/civicrm/ang/crmMailing/Recipients.js +++ /dev/null @@ -1,345 +0,0 @@ -(function(angular, $, _) { - // example: <select multiple crm-mailing-recipients crm-mailing="mymailing" crm-avail-groups="myGroups" crm-avail-mailings="myMailings"></select> - // FIXME: participate in ngModel's validation cycle - angular.module('crmMailing').directive('crmMailingRecipients', function(crmUiAlert) { - return { - restrict: 'AE', - require: 'ngModel', - scope: { - ngRequired: '@' - }, - link: function(scope, element, attrs, ngModel) { - scope.recips = ngModel.$viewValue; - scope.groups = scope.$parent.$eval(attrs.crmAvailGroups); - scope.mailings = scope.$parent.$eval(attrs.crmAvailMailings); - refreshMandatory(); - - var ts = scope.ts = CRM.ts(null); - - /// Convert MySQL date ("yyyy-mm-dd hh:mm:ss") to JS date object - scope.parseDate = function(date) { - if (!angular.isString(date)) { - return date; - } - var p = date.split(/[\- :]/); - return new Date(parseInt(p[0]), parseInt(p[1]) - 1, parseInt(p[2]), parseInt(p[3]), parseInt(p[4]), parseInt(p[5])); - }; - - /// Remove {value} from {array} - function arrayRemove(array, value) { - var idx = array.indexOf(value); - if (idx >= 0) { - array.splice(idx, 1); - } - } - - // @param string id an encoded string like "4 civicrm_mailing include" - // @return Object keys: entity_id, entity_type, mode - function convertValueToObj(id) { - var a = id.split(" "); - return {entity_id: parseInt(a[0]), entity_type: a[1], mode: a[2]}; - } - - // @param Object mailing - // @return array list of values like "4 civicrm_mailing include" - function convertMailingToValues(recipients) { - var r = []; - angular.forEach(recipients.groups.include, function(v) { - r.push(v + " civicrm_group include"); - }); - angular.forEach(recipients.groups.exclude, function(v) { - r.push(v + " civicrm_group exclude"); - }); - angular.forEach(recipients.mailings.include, function(v) { - r.push(v + " civicrm_mailing include"); - }); - angular.forEach(recipients.mailings.exclude, function(v) { - r.push(v + " civicrm_mailing exclude"); - }); - return r; - } - - function refreshMandatory() { - if (ngModel.$viewValue && ngModel.$viewValue.groups) { - scope.mandatoryGroups = _.filter(scope.$parent.$eval(attrs.crmMandatoryGroups), function(grp) { - return _.contains(ngModel.$viewValue.groups.include, parseInt(grp.id)); - }); - scope.mandatoryIds = _.map(_.pluck(scope.$parent.$eval(attrs.crmMandatoryGroups), 'id'), function(n) { - return parseInt(n); - }); - } - else { - scope.mandatoryGroups = []; - scope.mandatoryIds = []; - } - } - - function isMandatory(grpId) { - return _.contains(scope.mandatoryIds, parseInt(grpId)); - } - - var refreshUI = ngModel.$render = function refresuhUI() { - scope.recips = ngModel.$viewValue; - if (ngModel.$viewValue) { - $(element).select2('val', convertMailingToValues(ngModel.$viewValue)); - validate(); - refreshMandatory(); - } - }; - - // @return string HTML representing an option - function formatItem(item) { - if (!item.id) { - // return `text` for optgroup - return item.text; - } - var option = convertValueToObj(item.id); - var icon = (option.entity_type === 'civicrm_mailing') ? 'fa-envelope' : 'fa-users'; - var smartGroupMarker = item.is_smart ? '* ' : ''; - var spanClass = (option.mode == 'exclude') ? 'crmMailing-exclude' : 'crmMailing-include'; - if (option.entity_type != 'civicrm_mailing' && isMandatory(option.entity_id)) { - spanClass = 'crmMailing-mandatory'; - } - return '<i class="crm-i '+icon+'"></i> <span class="' + spanClass + '">' + smartGroupMarker + item.text + '</span>'; - } - - function validate() { - if (scope.$parent.$eval(attrs.ngRequired)) { - var empty = (_.isEmpty(ngModel.$viewValue.groups.include) && _.isEmpty(ngModel.$viewValue.mailings.include)); - ngModel.$setValidity('empty', !empty); - } - else { - ngModel.$setValidity('empty', true); - } - } - - var rcpAjaxState = { - input: '', - entity: 'civicrm_group', - type: 'include', - page_n: 0, - page_i: 0, - }; - - $(element).select2({ - width: '36em', - dropdownAutoWidth: true, - placeholder: "Groups or Past Recipients", - formatResult: formatItem, - formatSelection: formatItem, - escapeMarkup: function(m) { - return m; - }, - multiple: true, - initSelection: function(el, cb) { - var values = el.val().split(','); - - var gids = []; - var mids = []; - - for (var i = 0; i < values.length; i++) { - var dv = convertValueToObj(values[i]); - if (dv.entity_type == 'civicrm_group') { - gids.push(dv.entity_id); - } - else if (dv.entity_type == 'civicrm_mailing') { - mids.push(dv.entity_id); - } - } - // push non existant 0 group/mailing id in order when no recipents group or prior mailing is selected - // this will allow to resuse the below code to handle datamap - if (gids.length === 0) { - gids.push(0); - } - if (mids.length === 0) { - mids.push(0); - } - - CRM.api3('Group', 'getlist', { params: { id: { IN: gids }, options: { limit: 0 } }, extra: ["is_hidden"] }).then( - function(glist) { - CRM.api3('Mailing', 'getlist', { params: { id: { IN: mids }, options: { limit: 0 } } }).then( - function(mlist) { - var datamap = []; - - var groupNames = []; - var civiMails = []; - - $(glist.values).each(function (idx, group) { - var key = group.id + ' civicrm_group include'; - - groupNames.push({id: parseInt(group.id), title: group.label, is_hidden: group.extra.is_hidden}); - if (values.indexOf(key) >= 0) { - datamap.push({id: key, text: group.label}); - } - - key = group.id + ' civicrm_group exclude'; - if (values.indexOf(key) >= 0) { - datamap.push({id: key, text: group.label}); - } - }); - - $(mlist.values).each(function (idx, group) { - var key = group.id + ' civicrm_mailing include'; - civiMails.push({id: parseInt(group.id), name: group.label}); - - if (values.indexOf(key) >= 0) { - datamap.push({id: key, text: group.label}); - } - - key = group.id + ' civicrm_mailing exclude'; - if (values.indexOf(key) >= 0) { - datamap.push({id: key, text: group.label}); - } - }); - - scope.$parent.crmMailingConst.groupNames = groupNames; - scope.$parent.crmMailingConst.civiMails = civiMails; - - refreshMandatory(); - - cb(datamap); - }); - }); - }, - ajax: { - url: CRM.url('civicrm/ajax/rest'), - quietMillis: 300, - data: function(input, page_num) { - if (page_num <= 1) { - rcpAjaxState = { - input: input, - entity: 'civicrm_group', - type: 'include', - page_n: 0, - }; - } - - rcpAjaxState.page_i = page_num - rcpAjaxState.page_n; - var filterParams = {}; - switch(rcpAjaxState.entity) { - case 'civicrm_group': - filterParams = { is_hidden: 0, is_active: 1, group_type: {"LIKE": "%2%"} }; - break; - - case 'civicrm_mailing': - filterParams = { is_hidden: 0, is_active: 1, id: {"!=": scope.$parent.mailing.id} }; - break; - } - var params = { - input: input, - page_num: rcpAjaxState.page_i, - params: filterParams, - }; - - if('civicrm_mailing' === rcpAjaxState.entity) { - params["api.MailingRecipients.getcount"] = {}; - } - else if ('civicrm_group' === rcpAjaxState.entity) { - params.extra = ["saved_search_id"]; - } - - return params; - }, - transport: function(params) { - switch(rcpAjaxState.entity) { - case 'civicrm_group': - CRM.api3('Group', 'getlist', params.data).then(params.success, params.error); - break; - - case 'civicrm_mailing': - params.data.params.options = { sort: "is_archived asc, scheduled_date desc" }; - CRM.api3('Mailing', 'getlist', params.data).then(params.success, params.error); - break; - } - }, - results: function(data) { - var results = { - children: $.map(data.values, function(obj) { - if('civicrm_mailing' === rcpAjaxState.entity) { - return obj["api.MailingRecipients.getcount"] > 0 ? { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type, - text: obj.label } : ''; - } - else { - return { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type, text: obj.label, - is_smart: (!_.isEmpty(obj.extra.saved_search_id)) }; - } - }) - }; - - if (rcpAjaxState.page_i == 1 && data.count && results.children.length > 0) { - results.text = ts((rcpAjaxState.type == 'include'? 'Include ' : 'Exclude ') + - (rcpAjaxState.entity == 'civicrm_group'? 'Group' : 'Mailing')); - } - - var more = data.more_results || !(rcpAjaxState.entity == 'civicrm_mailing' && rcpAjaxState.type == 'exclude'); - - if (more && !data.more_results) { - if (rcpAjaxState.type == 'include') { - rcpAjaxState.type = 'exclude'; - } else { - rcpAjaxState.type = 'include'; - rcpAjaxState.entity = 'civicrm_mailing'; - } - rcpAjaxState.page_n += rcpAjaxState.page_i; - } - - return { more: more, results: [ results ] }; - }, - }, - }); - - $(element).on('select2-selecting', function(e) { - var option = convertValueToObj(e.val); - var typeKey = option.entity_type == 'civicrm_mailing' ? 'mailings' : 'groups'; - if (option.mode == 'exclude') { - ngModel.$viewValue[typeKey].exclude.push(option.entity_id); - arrayRemove(ngModel.$viewValue[typeKey].include, option.entity_id); - } - else { - ngModel.$viewValue[typeKey].include.push(option.entity_id); - arrayRemove(ngModel.$viewValue[typeKey].exclude, option.entity_id); - } - scope.$apply(); - $(element).select2('close'); - validate(); - e.preventDefault(); - }); - - $(element).on("select2-removing", function(e) { - var option = convertValueToObj(e.val); - var typeKey = option.entity_type == 'civicrm_mailing' ? 'mailings' : 'groups'; - if (typeKey == 'groups' && isMandatory(option.entity_id)) { - crmUiAlert({ - text: ts('This mailing was generated based on search results. The search results cannot be removed.'), - title: ts('Required') - }); - e.preventDefault(); - return; - } - scope.$parent.$apply(function() { - arrayRemove(ngModel.$viewValue[typeKey][option.mode], option.entity_id); - }); - validate(); - e.preventDefault(); - }); - - scope.$watchCollection("recips.groups.include", refreshUI); - scope.$watchCollection("recips.groups.exclude", refreshUI); - scope.$watchCollection("recips.mailings.include", refreshUI); - scope.$watchCollection("recips.mailings.exclude", refreshUI); - setTimeout(refreshUI, 50); - - scope.$watchCollection(attrs.crmAvailGroups, function() { - scope.groups = scope.$parent.$eval(attrs.crmAvailGroups); - }); - scope.$watchCollection(attrs.crmAvailMailings, function() { - scope.mailings = scope.$parent.$eval(attrs.crmAvailMailings); - }); - scope.$watchCollection(attrs.crmMandatoryGroups, function() { - refreshMandatory(); - }); - } - }; - }); - -})(angular, CRM.$, CRM._); diff --git a/civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js b/civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js new file mode 100644 index 0000000000..5e7424a028 --- /dev/null +++ b/civicrm/ang/crmMailing/crmMailingRecipientsAutocomplete.component.js @@ -0,0 +1,61 @@ +(function(angular, $, _) { + // Ex: <crm-mailing-recipients-autocomplete crm-recipients="mymailing.recipients" crm-mailing-id="mymailing.id" mode="include"> + angular.module('crmMailing').component('crmMailingRecipientsAutocomplete', { + bindings: { + recipients: '<crmRecipients', + mailingId: '<crmMailingId', + mode: '@crmMode', + }, + template: '<input type="text" crm-autocomplete="\'EntitySet\'" ' + + 'crm-autocomplete-params="$ctrl.autocompleteParams" ' + + 'ng-required="$ctrl.mode === \'include\'" ' + + 'ng-model="$ctrl.getSetValue" ' + + 'ng-model-options="{getterSetter: true}" ' + + 'multi="true" ' + + 'auto-open="true" ' + + 'placeholder="{{ $ctrl.placeholder }}" ' + + 'title="{{ $ctrl.title }}" ' + + '>', + controller: function($timeout) { + var ctrl = this; + + this.$onInit = function() { + this.placeholder = this.mode === 'include' ? ts('Include Groups & Mailings') : ts('Exclude Groups & Mailings'); + this.title = this.mode === 'include' ? ts('Include recipents from groups and past mailings.') : ts('Exclude recipents from groups and past mailings.'); + ctrl.autocompleteParams = { + formName: 'crmMailing.' + ctrl.mailingId, + fieldName: 'Mailing.recipients_' + ctrl.mode + }; + }; + + // Getter/setter for the select's ng-model + // Converts between a munged string e.g. 'mailings_3,groups_2,groups_5' + // and the mailing.recipients object e.g. {groups: {include: [2,5]}, mailings: {include: [3]}} + this.getSetValue = function(val) { + var selectValues = ''; + if (arguments.length) { + ctrl.recipients.groups[ctrl.mode].length = 0; + ctrl.recipients.mailings[ctrl.mode].length = 0; + _.each(val, function(munged) { + var entityType = munged.split('_')[0], + id = parseInt(munged.split('_')[1], 10), + oppositeMode = ctrl.mode === 'include' ? 'exclude' : 'include'; + ctrl.recipients[entityType][ctrl.mode].push(id); + // Items cannot be both include and exclude so remove from opposite collection + _.pull(ctrl.recipients[entityType][oppositeMode], id); + }); + } + else { + _.each(ctrl.recipients, function (items, entityType) { + _.each(items[ctrl.mode], function (id) { + selectValues += (selectValues.length ? ',' : '') + entityType + '_' + id; + }); + }); + + } + return selectValues; + }; + } + }); + +})(angular, CRM.$, CRM._); diff --git a/civicrm/ang/crmUi.js b/civicrm/ang/crmUi.js index 462d547a8d..718bf22b0a 100644 --- a/civicrm/ang/crmUi.js +++ b/civicrm/ang/crmUi.js @@ -755,15 +755,15 @@ }; if (ctrl.ngModel) { - var oldValue; // Ensure widget is updated when model changes ctrl.ngModel.$render = function() { - element.val(ctrl.ngModel.$viewValue || ''); // Trigger change so the Select2 renders the current value, // but only if the value has actually changed (to avoid recursion) - if (!angular.equals(ctrl.ngModel.$viewValue, oldValue)) { - oldValue = ctrl.ngModel.$viewValue; - element.change(); + // We need to coerce null|false in the model to '' and numbers to strings. + // We need 0 not to be equivalent to null|false|'' + const newValue = (ctrl.ngModel.$viewValue === null || ctrl.ngModel.$viewValue === undefined || ctrl.ngModel.$viewValue === false) ? '' : ctrl.ngModel.$viewValue.toString(); + if (newValue !== element.val().toString()) { + element.val(newValue).change(); } }; diff --git a/civicrm/api/Exception.php b/civicrm/api/Exception.php index 78498fb901..ebad7426a4 100644 --- a/civicrm/api/Exception.php +++ b/civicrm/api/Exception.php @@ -10,5 +10,11 @@ // These two classes were basically equivalent +/** + * @deprecated in CiviCRM 5.52, will be removed around 5.92. Use CRM_Core_Exception + */ class_alias('CRM_Core_Exception', 'API_Exception'); +/** + * @deprecated in CiviCRM 5.52, will be removed around 5.92. Use CRM_Core_Exception + */ class_alias('CRM_Core_Exception', 'CiviCRM_API3_Exception'); diff --git a/civicrm/api/v3/Contribution.php b/civicrm/api/v3/Contribution.php index dd1ea77efc..8f95f781fe 100644 --- a/civicrm/api/v3/Contribution.php +++ b/civicrm/api/v3/Contribution.php @@ -665,12 +665,9 @@ function civicrm_api3_contribution_repeattransaction($params) { $input['receipt_from_email'] = ($params['receipt_from_email'] ?? NULL) ?: $domainFromEmail; } - // @todo this should call CRM_Contribute_BAO_Contribution::repeatTransaction - some minor cleanup needed to separate - // from completeOrder - return CRM_Contribute_BAO_Contribution::completeOrder($input, - $templateContribution['contribution_recur_id'], - NULL, - $params['is_post_payment_create'] ?? NULL); + return CRM_Contribute_BAO_Contribution::repeatTransaction($input, + $templateContribution['contribution_recur_id'] + ); } /** diff --git a/civicrm/api/v3/System/setting-whitelist.txt b/civicrm/api/v3/System/setting-whitelist.txt index a367414635..b4ac494107 100644 --- a/civicrm/api/v3/System/setting-whitelist.txt +++ b/civicrm/api/v3/System/setting-whitelist.txt @@ -14,8 +14,6 @@ disable_mandatory_tokens_check editor_id enableSSL enable_cart -enable_innodb_fts -fts_query_mode includeAlphabeticalPager includeEmailInName includeNickNameInName diff --git a/civicrm/api/v3/UFGroup.php b/civicrm/api/v3/UFGroup.php index 2d25eedea0..784c007011 100644 --- a/civicrm/api/v3/UFGroup.php +++ b/civicrm/api/v3/UFGroup.php @@ -28,6 +28,8 @@ function _civicrm_api3_uf_group_create_spec(&$params) { // Default to the logged in user. $params['created_id']['api.default'] = 'user_contact_id'; $params['created_date']['api.default'] = 'now'; + $params['post_url']['api.aliases'] = ['post_URL']; + $params['cancel_url']['api.aliases'] = ['cancel_URL']; } /** diff --git a/civicrm/api/v3/examples/Setting/GetFields.ex.php b/civicrm/api/v3/examples/Setting/GetFields.ex.php index 803d0898f4..5a8e31280a 100644 --- a/civicrm/api/v3/examples/Setting/GetFields.ex.php +++ b/civicrm/api/v3/examples/Setting/GetFields.ex.php @@ -2931,24 +2931,6 @@ function setting_getfields_expectedresult() { ], ], ], - 'fts_query_mode' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'fts_query_mode', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 64, - ], - 'html_type' => 'text', - 'default' => 'simple', - 'add' => '4.5', - 'title' => 'How to handle full-text queries', - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => '', - ], 'includeOrderByClause' => [ 'group_name' => 'Search Preferences', 'group' => 'Search Preferences', diff --git a/civicrm/api/v3/examples/UFGroup/Create.ex.php b/civicrm/api/v3/examples/UFGroup/Create.ex.php index d4ea27b181..baab92ae8c 100644 --- a/civicrm/api/v3/examples/UFGroup/Create.ex.php +++ b/civicrm/api/v3/examples/UFGroup/Create.ex.php @@ -15,7 +15,7 @@ function uf_group_create_example() { 'add_captcha' => 1, 'add_contact_to_group' => 1, 'group' => 1, - 'cancel_URL' => 'http://example.org/cancel', + 'cancel_url' => 'http://example.org/cancel', 'created_date' => '2009-06-27 00:00:00', 'created_id' => 1, 'group_type' => 'Individual,Contact', @@ -30,7 +30,7 @@ function uf_group_create_example() { 'is_update_dupe' => 1, 'name' => 'Test_Group', 'notify' => 'admin@example.org', - 'post_URL' => 'http://example.org/post', + 'post_url' => 'http://example.org/post', 'title' => 'Test Group', ]; @@ -77,14 +77,14 @@ function uf_group_create_expectedresult() { 'help_pre' => 'help pre', 'help_post' => 'help post', 'limit_listings_group_id' => '1', - 'post_URL' => 'http://example.org/post', + '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', + 'cancel_url' => 'http://example.org/cancel', 'is_cms_user' => '1', 'notify' => 'admin@example.org', 'is_reserved' => '1', diff --git a/civicrm/api/v3/examples/UFGroup/Get.ex.php b/civicrm/api/v3/examples/UFGroup/Get.ex.php index 25127e0bc9..274b7c0c46 100644 --- a/civicrm/api/v3/examples/UFGroup/Get.ex.php +++ b/civicrm/api/v3/examples/UFGroup/Get.ex.php @@ -56,7 +56,7 @@ function uf_group_get_expectedresult() { 'help_pre' => 'help pre', 'help_post' => 'help post', 'limit_listings_group_id' => '1', - 'post_URL' => 'http://example.org/post', + 'post_url' => 'http://example.org/post', 'add_to_group_id' => '1', 'add_captcha' => '1', 'is_map' => '1', diff --git a/civicrm/civicrm-version.php b/civicrm/civicrm-version.php index 13b933a413..7e1d7a1896 100644 --- a/civicrm/civicrm-version.php +++ b/civicrm/civicrm-version.php @@ -1,7 +1,7 @@ <?php /** @deprecated */ function civicrmVersion( ) { - return array( 'version' => '5.63.2', + return array( 'version' => '5.64.0', 'cms' => 'Wordpress', 'revision' => '' ); } diff --git a/civicrm/css/api4-explorer.css b/civicrm/css/api4-explorer.css index 1cd4635d4d..75791ea4cb 100644 --- a/civicrm/css/api4-explorer.css +++ b/civicrm/css/api4-explorer.css @@ -133,10 +133,13 @@ } #bootstrap-theme.api4-explorer-page .api4-operator, +#bootstrap-theme.api4-explorer-page .api4-sets-action, +#bootstrap-theme.api4-explorer-page .api4-sets-type, #bootstrap-theme.api4-explorer-page .api4-chain-index, #bootstrap-theme.api4-explorer-page .api4-chain-action { width: 90px; } +#bootstrap-theme.api4-explorer-page .api4-sets-params, #bootstrap-theme.api4-explorer-page .api4-chain-params { width: calc(100% - 390px); } diff --git a/civicrm/css/civicrm.css b/civicrm/css/civicrm.css index 9e39faf6a9..eeb74ca080 100644 --- a/civicrm/css/civicrm.css +++ b/civicrm/css/civicrm.css @@ -3375,6 +3375,7 @@ span.crm-select-item-color { } /* in place edit */ +.crm-container .crm-editable-disabled, .crm-container .crm-editable-enabled { padding-left: 2px; border: 2px dashed transparent; @@ -3396,6 +3397,7 @@ span.crm-select-item-color { .crm-container span.crm-editable-textarea-enabled { width: 96%; } +.crm-container span.crm-editable-disabled, .crm-container span.crm-editable-enabled { display: inline-block !important; padding-right: 2px; diff --git a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php index ed1ef31e78..e788dfa74f 100644 --- a/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php +++ b/civicrm/ext/afform/admin/Civi/AfformAdmin/AfformAdminMeta.php @@ -31,6 +31,7 @@ class AfformAdminMeta { } return [ 'afform_type' => $afformTypes, + 'search_operators' => \Civi\Afform\Utils::getSearchOperators(), ]; } @@ -88,7 +89,7 @@ class AfformAdminMeta { 'checkPermissions' => FALSE, 'loadOptions' => ['id', 'label'], 'action' => 'create', - 'select' => ['name', 'label', 'input_type', 'input_attrs', 'required', 'options', 'help_pre', 'help_post', 'serialize', 'data_type', 'entity', 'fk_entity', 'readonly'], + 'select' => ['name', 'label', 'input_type', 'input_attrs', 'required', 'options', 'help_pre', 'help_post', 'serialize', 'data_type', 'entity', 'fk_entity', 'readonly', 'operators'], 'where' => [['deprecated', '=', FALSE], ['input_type', 'IS NOT NULL']], ]; if (in_array($entityName, \CRM_Contact_BAO_ContactType::basicTypes(TRUE), TRUE)) { diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js index 17c2ef2960..73ab209afe 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/afGuiEditor.component.js @@ -44,8 +44,8 @@ }; this.securityModes = [ - {id: 'RBAC', icon: 'fa-lock', text: ts('Enforce Permissions')}, - {id: 'FBAC', icon: 'fa-unlock', text: ts('Open Access')}, + {id: 'RBAC', icon: 'fa-user', text: ts('User-Based'), description: ts('Inherit permissions based on the current user or role')}, + {id: 'FBAC', icon: 'fa-file-text', text: ts('Form-Based'), description: ts('Allow access to any fields listed on the form')}, ]; // Above mode for use with getterSetter 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 61a5a76c14..7e729c1842 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField-menu.html @@ -92,10 +92,18 @@ {{:: ts('Search by range') }} </a> </li> -<li ng-if="$ctrl.isSearch()"> - <div href ng-click="$event.stopPropagation()" class="af-gui-field-select-in-dropdown"> +<li ng-if="$ctrl.isSearch()" ng-click="$event.stopPropagation()"> + <div href class="af-gui-field-select-in-dropdown"> <label>{{:: ts('Operator:') }}</label> - <select class="form-control" ng-model="getSet('search_operator')" ng-model-options="{getterSetter: true}" title="{{:: ts('Field type') }}"> + <select class="form-control" ng-model="getSetOperator" ng-model-options="{getterSetter: true}" title="{{:: ts('Set the search operator for this field or allow the user to select it on the form') }}"> + <option value="">{{:: ts('Auto') }}</option> + <option value="_EXPOSE_">{{:: ts('User Select') }}</option> + <option ng-repeat="(name, label) in $ctrl.searchOperators" value="{{ name }}">{{ label }}</option> + </select> + </div> + <div href class="af-gui-field-select-in-dropdown" ng-if="$ctrl.getSet('expose_operator')"> + <label>{{:: ts('Default:') }}</label> + <select class="form-control" ng-model="getSet('search_operator')" ng-model-options="{getterSetter: true}" title="{{:: ts('Default search operator for the user to select') }}"> <option ng-repeat="(name, label) in $ctrl.searchOperators" value="{{ name }}">{{ label }}</option> </select> </div> diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js index 087b27832e..69c304e5ab 100644 --- a/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/elements/afGuiField.component.js @@ -47,6 +47,11 @@ inputTypes.push(type); } }); + this.searchOperators = CRM.afAdmin.search_operators; + // If field has limited operators, set appropriately + if (ctrl.fieldDefn.operators && ctrl.fieldDefn.operators.length) { + this.searchOperators = _.pick(this.searchOperators, ctrl.fieldDefn.operators); + } setDateOptions(); }; @@ -290,7 +295,24 @@ } }; - // Getter/setter for definition props + // Getter/setter for search_operator and expose_operator combo-field + // The expose_operator flag changes the behavior of the search_operator field + // to either set the value on the backend, or set the default value for the user-select list on the form + $scope.getSetOperator = function(val) { + if (arguments.length) { + // _EXPOSE_ is not a real option for search_operator, instead it sets the expose_operator boolean + getSet('expose_operator', val === '_EXPOSE_'); + if (val === '_EXPOSE_') { + getSet('search_operator', _.keys(ctrl.searchOperators)[0]); + } else { + getSet('search_operator', val); + } + return val; + } + return getSet('expose_operator') ? '_EXPOSE_' : getSet('search_operator'); + }; + + // Generic getter/setter for definition props $scope.getSet = function(propName) { return _.wrap(propName, getSet); }; @@ -344,24 +366,6 @@ $scope.editingOptions = val; }; - this.searchOperators = { - '': ts('Auto'), - '=': '=', - '!=': '≠', - '>': '>', - '<': '<', - '>=': '≥', - '<=': '≤', - '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"), - }; - // Returns a reference to a path n-levels deep within an object function drillDown(parent, path) { var container = parent; diff --git a/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Email.html b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Email.html new file mode 100644 index 0000000000..e515ba3c46 --- /dev/null +++ b/civicrm/ext/afform/admin/ang/afGuiEditor/inputType/Email.html @@ -0,0 +1,6 @@ +<div class="form-inline"> + <div class="form-group" ng-repeat="i in $ctrl.getRangeElements('Text')"> + <span class="af-field-range-sep" ng-if="i">-</span> + <input autocomplete="off" class="form-control" ng-model="getSet('input_attrs.placeholder' + i)" ng-model-options="$ctrl.editor.debounceWithGetterSetter" type="text" title="{{:: ts('Click to add placeholder text') }}"/> + </div> +</div> diff --git a/civicrm/ext/afform/admin/info.xml b/civicrm/ext/afform/admin/info.xml index 571188e97f..b5a7291146 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.63.2</version> + <version>5.64.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>FormBuilder provides a UI to administer and edit forms. It is an optional admin tool and not required for the forms to function.</comments> <requires> diff --git a/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php b/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php index bd6634a37e..6f80f032b9 100644 --- a/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php +++ b/civicrm/ext/afform/admin/managed/FormSubmissionSavedSearch.mgd.php @@ -27,6 +27,9 @@ return [ ], ], ], + 'match' => [ + 'name', + ], ], ], [ @@ -99,6 +102,10 @@ return [ ], ], ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php b/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php index 2425de090a..92a2caca84 100644 --- a/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php +++ b/civicrm/ext/afform/core/CRM/Afform/ArrayHtml.php @@ -111,7 +111,7 @@ class CRM_Afform_ArrayHtml { continue; } if (!preg_match('/^[a-zA-Z0-9\-]+$/', $attrName)) { - throw new \RuntimeException("Malformed HTML attribute"); + throw new \RuntimeException("Malformed HTML attribute $attrName → $attrValue"); } $type = $this->pickAttrType($tag, $attrName); diff --git a/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php b/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php index 0d6df28eb2..d793f59082 100644 --- a/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php +++ b/civicrm/ext/afform/core/Civi/Afform/AfformMetadataInjector.php @@ -121,6 +121,19 @@ class AfformMetadataInjector { // On a search form, search_range will present a pair of fields (or possibly 3 fields for date select + range) $isSearchRange = !empty($fieldDefn['search_range']) && \CRM_Utils_JS::decode($fieldDefn['search_range']); + // On a search form, the exposed operator requires a list of options. + if (!empty($fieldDefn['expose_operator'])) { + $operators = Utils::getSearchOperators(); + // If 'operators' is present in the field definition, use it as a limiter + // Afform expects 'operators' in the fieldDefn to be associative key/label, not just a flat array + // like it is in the schema. + if (!empty($fieldInfo['operators'])) { + $operators = array_intersect_key($operators, array_flip($fieldInfo['operators'])); + } + $fieldDefn['operators'] = \CRM_Utils_JS::encode($operators); + } + unset($fieldInfo['operators']); + // Default placeholder for select inputs if ($inputType === 'Select' || $inputType === 'ChainSelect') { $fieldInfo['input_attrs']['placeholder'] = E::ts('Select'); diff --git a/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php b/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php index 646f2641f5..a5e07402ea 100644 --- a/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php +++ b/civicrm/ext/afform/core/Civi/Afform/FormDataModel.php @@ -207,10 +207,14 @@ class FormDataModel { if ($action === 'get' && strpos($fieldName, '.')) { $namesToMatch[] = substr($fieldName, 0, strrpos($fieldName, '.')); } + $select = ['name', 'label', 'input_type', 'input_attrs', 'help_pre', 'help_post', 'options', 'fk_entity', 'required']; + if ($action === 'get') { + $select[] = 'operators'; + } $params = [ 'action' => $action, 'where' => [['name', 'IN', $namesToMatch]], - 'select' => ['name', 'label', 'input_type', 'input_attrs', 'help_pre', 'help_post', 'options', 'fk_entity', 'required'], + 'select' => $select, 'loadOptions' => ['id', 'label'], // If the admin included this field on the form, then it's OK to get metadata about the field regardless of user permissions. 'checkPermissions' => FALSE, diff --git a/civicrm/ext/afform/core/Civi/Afform/Utils.php b/civicrm/ext/afform/core/Civi/Afform/Utils.php index c183ae6794..2dc219cb75 100644 --- a/civicrm/ext/afform/core/Civi/Afform/Utils.php +++ b/civicrm/ext/afform/core/Civi/Afform/Utils.php @@ -49,4 +49,31 @@ class Utils { return $sorter->sort(); } + /** + * Subset of APIv4 operators that are appropriate for use on Afforms + * + * This list may be further reduced by fields which declare a limited number of + * operators in their metadata. + * + * @return array + */ + public static function getSearchOperators() { + return [ + '=' => '=', + '!=' => '≠', + '>' => '>', + '<' => '<', + '>=' => '≥', + '<=' => '≤', + '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"), + ]; + } + } diff --git a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php index 44dc9a5d9d..1bde2e3ff2 100644 --- a/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php +++ b/civicrm/ext/afform/core/Civi/Api4/Action/Afform/Submit.php @@ -68,6 +68,7 @@ class Submit extends AbstractProcessor { \Civi::dispatcher()->dispatch('civi.afform.validate', $event); $errors = $event->getErrors(); if ($errors) { + \Civi::log('afform')->error('Afform Validation errors: ' . print_r($errors, TRUE)); throw new \CRM_Core_Exception(ts('Validation Error', ['plural' => '%1 Validation Errors', 'count' => count($errors)]), 0, ['validation' => $errors]); } @@ -210,7 +211,7 @@ class Submit extends AbstractProcessor { $isRequired = $attributes['defn']['required'] ?? $fullDefn['required'] ?? FALSE; if ($isRequired) { - $label = $attributes['defn']['label'] ?? $fullDefn['label']; + $label = $attributes['defn']['label'] ?? $fullDefn['label'] ?? $fieldName; return E::ts('%1 is a required field.', [1 => $label]); } return NULL; @@ -330,6 +331,7 @@ class Submit extends AbstractProcessor { catch (\CRM_Core_Exception $e) { // What to do here? Sometimes we should silently ignore errors, e.g. an optional entity // intentionally left blank. Other times it's a real error the user should know about. + \Civi::log('afform')->debug("Silently ignoring exception in Afform processGenericEntity call: " . $e->getMessage()); } } } diff --git a/civicrm/ext/afform/core/afform.php b/civicrm/ext/afform/core/afform.php index 5cb43af6f8..97dc6143c6 100644 --- a/civicrm/ext/afform/core/afform.php +++ b/civicrm/ext/afform/core/afform.php @@ -508,26 +508,6 @@ function _afform_angular_module_name($fileBaseName, $format = 'camel') { } } -/** - * Implements hook_civicrm_alterApiRoutePermissions(). - * - * @see CRM_Utils_Hook::alterApiRoutePermissions - */ -function afform_civicrm_alterApiRoutePermissions(&$permissions, $entity, $action) { - if ($entity == 'Afform') { - // These actions should be accessible to anonymous users; permissions are checked internally - $allowedActions = ['prefill', 'submit', 'submitFile', 'getOptions']; - if (in_array($action, $allowedActions, TRUE)) { - $permissions = CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION; - } - } - // This is temporarily stuck here, but probably belongs in core (until this hook is finally abolished) - elseif ($action === 'autocomplete') { - // Autocomplete widget must be accessible by anonymous users. Permissions are checked internally. - $permissions = CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION; - } -} - /** * Implements hook_civicrm_preProcess(). * diff --git a/civicrm/ext/afform/core/ang/af/afField.component.js b/civicrm/ext/afform/core/ang/af/afField.component.js index 1e6173d58a..f579eedb79 100644 --- a/civicrm/ext/afform/core/ang/af/afField.component.js +++ b/civicrm/ext/afform/core/ang/af/afField.component.js @@ -37,6 +37,10 @@ namePrefix = this.fieldName.substr(0, this.fieldName.length - this.defn.name.length); } + if (this.defn.search_operator) { + this.search_operator = this.defn.search_operator; + } + // is_primary field - watch others in this afRepeat block to ensure only one is selected if (ctrl.fieldName === 'is_primary' && 'repeatIndex' in $scope.dataProvider) { $scope.$watch('dataProvider.afRepeat.getEntityController().getData()', function (items, prev) { @@ -226,22 +230,26 @@ }; }; + this.onChangeOperator = function() { + $scope.dataProvider.getFieldData()[ctrl.fieldName] = {}; + }; + // Getter/Setter function for most fields (except select & entityRef) $scope.getSetValue = function(val) { var currentVal = $scope.dataProvider.getFieldData()[ctrl.fieldName]; // Setter if (arguments.length) { - if (ctrl.defn.search_operator) { + if (ctrl.search_operator) { if (typeof currentVal !== 'object') { $scope.dataProvider.getFieldData()[ctrl.fieldName] = {}; } - return ($scope.dataProvider.getFieldData()[ctrl.fieldName][ctrl.defn.search_operator] = val); + return ($scope.dataProvider.getFieldData()[ctrl.fieldName][ctrl.search_operator] = val); } return ($scope.dataProvider.getFieldData()[ctrl.fieldName] = val); } // Getter - if (ctrl.defn.search_operator) { - return (currentVal || {})[ctrl.defn.search_operator]; + if (ctrl.search_operator) { + return (currentVal || {})[ctrl.search_operator]; } return currentVal; }; @@ -261,11 +269,11 @@ else if (ctrl.defn.search_range) { return ($scope.dataProvider.getFieldData()[ctrl.fieldName]['>='] = val); } - else if (ctrl.defn.search_operator) { + else if (ctrl.search_operator) { if (typeof currentVal !== 'object') { $scope.dataProvider.getFieldData()[ctrl.fieldName] = {}; } - return ($scope.dataProvider.getFieldData()[ctrl.fieldName][ctrl.defn.search_operator] = val); + return ($scope.dataProvider.getFieldData()[ctrl.fieldName][ctrl.search_operator] = val); } return ($scope.dataProvider.getFieldData()[ctrl.fieldName] = val); } @@ -277,8 +285,8 @@ else if (ctrl.defn.search_range) { return currentVal['>=']; } - else if (ctrl.defn.search_operator) { - return (currentVal || {})[ctrl.defn.search_operator]; + else if (ctrl.search_operator) { + return (currentVal || {})[ctrl.search_operator]; } return currentVal; }; diff --git a/civicrm/ext/afform/core/ang/af/afField.html b/civicrm/ext/afform/core/ang/af/afField.html index 1965f74c7f..9b67c98b41 100644 --- a/civicrm/ext/afform/core/ang/af/afField.html +++ b/civicrm/ext/afform/core/ang/af/afField.html @@ -3,5 +3,6 @@ <span class="crm-marker" title="{{:: ts('Required') }}" ng-if=":: $ctrl.defn.required">*</span> </label> <p class="crm-af-field-help-pre" ng-if=":: $ctrl.defn.help_pre">{{:: $ctrl.defn.help_pre }}</p> -<div class="crm-af-field" ng-include="'~/af/fields/' + $ctrl.defn.input_type + '.html'"></div> +<div class="crm-af-field" ng-if="!$ctrl.defn.expose_operator" ng-include="'~/af/fields/' + $ctrl.defn.input_type + '.html'"></div> +<div class="input-group" ng-if="$ctrl.defn.expose_operator" ng-include="'~/af/afFieldWithSearchOperator.html'"></div> <p class="crm-af-field-help-post" ng-if=":: $ctrl.defn.help_post">{{:: $ctrl.defn.help_post }}</p> diff --git a/civicrm/ext/afform/core/ang/af/afFieldWithSearchOperator.html b/civicrm/ext/afform/core/ang/af/afFieldWithSearchOperator.html new file mode 100644 index 0000000000..3260716756 --- /dev/null +++ b/civicrm/ext/afform/core/ang/af/afFieldWithSearchOperator.html @@ -0,0 +1,4 @@ +<select class="form-control" crm-ui-select ng-model="$ctrl.search_operator" ng-change="$ctrl.onChangeOperator()"> + <option ng-repeat="(name, label) in $ctrl.defn.operators" value="{{ name }}">{{ label }}</option> +</select> +<div class="crm-af-field" ng-include="'~/af/fields/' + $ctrl.defn.input_type + '.html'"></div> diff --git a/civicrm/ext/afform/core/ang/af/afForm.component.js b/civicrm/ext/afform/core/ang/af/afForm.component.js index 9951e5ddbd..6584171873 100644 --- a/civicrm/ext/afform/core/ang/af/afForm.component.js +++ b/civicrm/ext/afform/core/ang/af/afForm.component.js @@ -116,7 +116,9 @@ if (url.indexOf('civicrm/') === 0) { url = CRM.url(url); } else if (url.indexOf('/') === 0) { - url = $location.protocol() + '://' + $location.host() + url; + let port = $location.port(); + port = port ? `:${port}` : ''; + url = `${$location.protocol()}://${$location.host()}${port}${url}`; } $window.location.href = url; } diff --git a/civicrm/ext/afform/core/ang/af/fields/Email.html b/civicrm/ext/afform/core/ang/af/fields/Email.html new file mode 100644 index 0000000000..b3eefdfc0f --- /dev/null +++ b/civicrm/ext/afform/core/ang/af/fields/Email.html @@ -0,0 +1,6 @@ +<input ng-if=":: !$ctrl.defn.search_range" class="form-control" type="email" ng-required="$ctrl.defn.required" id="{{:: fieldId }}" ng-model="getSetValue" ng-model-options="{getterSetter: true}" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" > +<div ng-if=":: $ctrl.defn.search_range" class="form-inline"> + <input class="form-control" type="email" id="{{:: fieldId }}" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['>=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder }}" > + <span class="af-field-range-sep">-</span> + <input class="form-control" type="email" id="{{:: fieldId }}2" ng-model="dataProvider.getFieldData()[$ctrl.fieldName]['<=']" placeholder="{{:: $ctrl.defn.input_attrs.placeholder2 }}" > +</div> diff --git a/civicrm/ext/afform/core/ang/afCore.css b/civicrm/ext/afform/core/ang/afCore.css index f0ce53c951..35e095925c 100644 --- a/civicrm/ext/afform/core/ang/afCore.css +++ b/civicrm/ext/afform/core/ang/afCore.css @@ -30,6 +30,10 @@ af-form { display: block; } +#bootstrap-theme .input-group .crm-af-field { + display: inline-block; +} + [af-repeat-item] { position: relative; } diff --git a/civicrm/ext/afform/core/info.xml b/civicrm/ext/afform/core/info.xml index 5fe92ec4a5..69b576d5ef 100644 --- a/civicrm/ext/afform/core/info.xml +++ b/civicrm/ext/afform/core/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.63.2</version> + <version>5.64.0</version> <develStage>beta</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</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> diff --git a/civicrm/ext/afform/html/info.xml b/civicrm/ext/afform/html/info.xml index 3dd31db5b5..6b9af6f9eb 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.63.2</version> + <version>5.64.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/afform/mock/info.xml b/civicrm/ext/afform/mock/info.xml index 6c71c1516e..4362ca127d 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.63.2</version> + <version>5.64.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>alpha</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/authx/info.xml b/civicrm/ext/authx/info.xml index afc9d7139c..d713d826b6 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</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/Civi/Api4/Action/Campaign/Get.php b/civicrm/ext/civi_campaign/Civi/Api4/Action/Campaign/Get.php similarity index 100% rename from civicrm/Civi/Api4/Action/Campaign/Get.php rename to civicrm/ext/civi_campaign/Civi/Api4/Action/Campaign/Get.php diff --git a/civicrm/Civi/Api4/Campaign.php b/civicrm/ext/civi_campaign/Civi/Api4/Campaign.php similarity index 100% rename from civicrm/Civi/Api4/Campaign.php rename to civicrm/ext/civi_campaign/Civi/Api4/Campaign.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php b/civicrm/ext/civi_campaign/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php rename to civicrm/ext/civi_campaign/Civi/Api4/Service/Spec/Provider/CampaignCreationSpecProvider.php diff --git a/civicrm/ext/civi_campaign/Civi/Api4/Survey.php b/civicrm/ext/civi_campaign/Civi/Api4/Survey.php new file mode 100644 index 0000000000..c4cb0d433f --- /dev/null +++ b/civicrm/ext/civi_campaign/Civi/Api4/Survey.php @@ -0,0 +1,23 @@ +<?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; + +/** + * Survey entity. + * + * @see https://docs.civicrm.org/user/en/latest/survey/what-is-civisurvey/ + * @searchable secondary + * @since 5.43 + * @package Civi\Api4 + */ +class Survey extends Generic\DAOEntity { + +} diff --git a/civicrm/ext/civi_campaign/info.xml b/civicrm/ext/civi_campaign/info.xml index b62977c1c7..b3a9eda988 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Campaign</namespace> <format>23.02.1</format> diff --git a/civicrm/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php b/civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php similarity index 100% rename from civicrm/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php rename to civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/CiviCaseSaveTrait.php diff --git a/civicrm/Civi/Api4/Action/CiviCase/Create.php b/civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/Create.php similarity index 100% rename from civicrm/Civi/Api4/Action/CiviCase/Create.php rename to civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/Create.php diff --git a/civicrm/Civi/Api4/Action/CiviCase/Save.php b/civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/Save.php similarity index 100% rename from civicrm/Civi/Api4/Action/CiviCase/Save.php rename to civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/Save.php diff --git a/civicrm/Civi/Api4/Action/CiviCase/Update.php b/civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/Update.php similarity index 100% rename from civicrm/Civi/Api4/Action/CiviCase/Update.php rename to civicrm/ext/civi_case/Civi/Api4/Action/CiviCase/Update.php diff --git a/civicrm/Civi/Api4/CaseActivity.php b/civicrm/ext/civi_case/Civi/Api4/CaseActivity.php similarity index 100% rename from civicrm/Civi/Api4/CaseActivity.php rename to civicrm/ext/civi_case/Civi/Api4/CaseActivity.php diff --git a/civicrm/Civi/Api4/CaseContact.php b/civicrm/ext/civi_case/Civi/Api4/CaseContact.php similarity index 100% rename from civicrm/Civi/Api4/CaseContact.php rename to civicrm/ext/civi_case/Civi/Api4/CaseContact.php diff --git a/civicrm/Civi/Api4/CaseType.php b/civicrm/ext/civi_case/Civi/Api4/CaseType.php similarity index 100% rename from civicrm/Civi/Api4/CaseType.php rename to civicrm/ext/civi_case/Civi/Api4/CaseType.php diff --git a/civicrm/Civi/Api4/CiviCase.php b/civicrm/ext/civi_case/Civi/Api4/CiviCase.php similarity index 100% rename from civicrm/Civi/Api4/CiviCase.php rename to civicrm/ext/civi_case/Civi/Api4/CiviCase.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php b/civicrm/ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php similarity index 92% rename from civicrm/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php rename to civicrm/ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php index 08445cd24b..32c6c95f9b 100644 --- a/civicrm/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php +++ b/civicrm/ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseCreationSpecProvider.php @@ -14,6 +14,7 @@ namespace Civi\Api4\Service\Spec\Provider; use Civi\Api4\Service\Spec\FieldSpec; use Civi\Api4\Service\Spec\RequestSpec; +use Civi\Api4\Utils\CoreUtil; /** * @service @@ -51,6 +52,9 @@ class CaseCreationSpecProvider extends \Civi\Core\Service\AutoService implements $medium_id = new FieldSpec('medium_id', $spec->getEntity(), 'Integer'); $medium_id->setTitle(ts('Activity Medium')); $medium_id->setDescription('Open Case activity medium.'); + $medium_id->setOptionsCallback(['Civi\Api4\Service\Spec\SpecFormatter', 'getOptions']); + $suffixes = CoreUtil::getOptionValueFields('encounter_medium', 'name'); + $medium_id->setSuffixes($suffixes); $spec->addFieldSpec($medium_id); $duration = new FieldSpec('duration', $spec->getEntity(), 'Integer'); diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php b/civicrm/ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php rename to civicrm/ext/civi_case/Civi/Api4/Service/Spec/Provider/CaseTypeGetSpecProvider.php diff --git a/civicrm/ext/civi_case/info.xml b/civicrm/ext/civi_case/info.xml index fe7ce69f42..7722cf3052 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Case</namespace> <format>23.02.1</format> diff --git a/civicrm/Civi/Api4/Action/Contribution/ContributionSaveTrait.php b/civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/ContributionSaveTrait.php similarity index 100% rename from civicrm/Civi/Api4/Action/Contribution/ContributionSaveTrait.php rename to civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/ContributionSaveTrait.php diff --git a/civicrm/Civi/Api4/Action/Contribution/Create.php b/civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/Create.php similarity index 100% rename from civicrm/Civi/Api4/Action/Contribution/Create.php rename to civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/Create.php diff --git a/civicrm/Civi/Api4/Action/Contribution/Save.php b/civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/Save.php similarity index 100% rename from civicrm/Civi/Api4/Action/Contribution/Save.php rename to civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/Save.php diff --git a/civicrm/Civi/Api4/Action/Contribution/Update.php b/civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/Update.php similarity index 100% rename from civicrm/Civi/Api4/Action/Contribution/Update.php rename to civicrm/ext/civi_contribute/Civi/Api4/Action/Contribution/Update.php diff --git a/civicrm/Civi/Api4/Contribution.php b/civicrm/ext/civi_contribute/Civi/Api4/Contribution.php similarity index 100% rename from civicrm/Civi/Api4/Contribution.php rename to civicrm/ext/civi_contribute/Civi/Api4/Contribution.php diff --git a/civicrm/Civi/Api4/ContributionPage.php b/civicrm/ext/civi_contribute/Civi/Api4/ContributionPage.php similarity index 100% rename from civicrm/Civi/Api4/ContributionPage.php rename to civicrm/ext/civi_contribute/Civi/Api4/ContributionPage.php diff --git a/civicrm/Civi/Api4/ContributionProduct.php b/civicrm/ext/civi_contribute/Civi/Api4/ContributionProduct.php similarity index 100% rename from civicrm/Civi/Api4/ContributionProduct.php rename to civicrm/ext/civi_contribute/Civi/Api4/ContributionProduct.php diff --git a/civicrm/Civi/Api4/ContributionRecur.php b/civicrm/ext/civi_contribute/Civi/Api4/ContributionRecur.php similarity index 100% rename from civicrm/Civi/Api4/ContributionRecur.php rename to civicrm/ext/civi_contribute/Civi/Api4/ContributionRecur.php diff --git a/civicrm/Civi/Api4/ContributionSoft.php b/civicrm/ext/civi_contribute/Civi/Api4/ContributionSoft.php similarity index 100% rename from civicrm/Civi/Api4/ContributionSoft.php rename to civicrm/ext/civi_contribute/Civi/Api4/ContributionSoft.php diff --git a/civicrm/Civi/Api4/EntityFinancialAccount.php b/civicrm/ext/civi_contribute/Civi/Api4/EntityFinancialAccount.php similarity index 100% rename from civicrm/Civi/Api4/EntityFinancialAccount.php rename to civicrm/ext/civi_contribute/Civi/Api4/EntityFinancialAccount.php diff --git a/civicrm/Civi/Api4/EntityFinancialTrxn.php b/civicrm/ext/civi_contribute/Civi/Api4/EntityFinancialTrxn.php similarity index 100% rename from civicrm/Civi/Api4/EntityFinancialTrxn.php rename to civicrm/ext/civi_contribute/Civi/Api4/EntityFinancialTrxn.php diff --git a/civicrm/Civi/Api4/FinancialAccount.php b/civicrm/ext/civi_contribute/Civi/Api4/FinancialAccount.php similarity index 100% rename from civicrm/Civi/Api4/FinancialAccount.php rename to civicrm/ext/civi_contribute/Civi/Api4/FinancialAccount.php diff --git a/civicrm/Civi/Api4/FinancialItem.php b/civicrm/ext/civi_contribute/Civi/Api4/FinancialItem.php similarity index 100% rename from civicrm/Civi/Api4/FinancialItem.php rename to civicrm/ext/civi_contribute/Civi/Api4/FinancialItem.php diff --git a/civicrm/Civi/Api4/FinancialTrxn.php b/civicrm/ext/civi_contribute/Civi/Api4/FinancialTrxn.php similarity index 100% rename from civicrm/Civi/Api4/FinancialTrxn.php rename to civicrm/ext/civi_contribute/Civi/Api4/FinancialTrxn.php diff --git a/civicrm/Civi/Api4/FinancialType.php b/civicrm/ext/civi_contribute/Civi/Api4/FinancialType.php similarity index 100% rename from civicrm/Civi/Api4/FinancialType.php rename to civicrm/ext/civi_contribute/Civi/Api4/FinancialType.php diff --git a/civicrm/Civi/Api4/LineItem.php b/civicrm/ext/civi_contribute/Civi/Api4/LineItem.php similarity index 100% rename from civicrm/Civi/Api4/LineItem.php rename to civicrm/ext/civi_contribute/Civi/Api4/LineItem.php diff --git a/civicrm/Civi/Api4/PCP.php b/civicrm/ext/civi_contribute/Civi/Api4/PCP.php similarity index 100% rename from civicrm/Civi/Api4/PCP.php rename to civicrm/ext/civi_contribute/Civi/Api4/PCP.php diff --git a/civicrm/Civi/Api4/PCPBlock.php b/civicrm/ext/civi_contribute/Civi/Api4/PCPBlock.php similarity index 100% rename from civicrm/Civi/Api4/PCPBlock.php rename to civicrm/ext/civi_contribute/Civi/Api4/PCPBlock.php diff --git a/civicrm/Civi/Api4/PaymentProcessor.php b/civicrm/ext/civi_contribute/Civi/Api4/PaymentProcessor.php similarity index 100% rename from civicrm/Civi/Api4/PaymentProcessor.php rename to civicrm/ext/civi_contribute/Civi/Api4/PaymentProcessor.php diff --git a/civicrm/Civi/Api4/PaymentProcessorType.php b/civicrm/ext/civi_contribute/Civi/Api4/PaymentProcessorType.php similarity index 100% rename from civicrm/Civi/Api4/PaymentProcessorType.php rename to civicrm/ext/civi_contribute/Civi/Api4/PaymentProcessorType.php diff --git a/civicrm/Civi/Api4/PaymentToken.php b/civicrm/ext/civi_contribute/Civi/Api4/PaymentToken.php similarity index 100% rename from civicrm/Civi/Api4/PaymentToken.php rename to civicrm/ext/civi_contribute/Civi/Api4/PaymentToken.php diff --git a/civicrm/Civi/Api4/PriceField.php b/civicrm/ext/civi_contribute/Civi/Api4/PriceField.php similarity index 100% rename from civicrm/Civi/Api4/PriceField.php rename to civicrm/ext/civi_contribute/Civi/Api4/PriceField.php diff --git a/civicrm/Civi/Api4/PriceFieldValue.php b/civicrm/ext/civi_contribute/Civi/Api4/PriceFieldValue.php similarity index 100% rename from civicrm/Civi/Api4/PriceFieldValue.php rename to civicrm/ext/civi_contribute/Civi/Api4/PriceFieldValue.php diff --git a/civicrm/Civi/Api4/PriceSet.php b/civicrm/ext/civi_contribute/Civi/Api4/PriceSet.php similarity index 100% rename from civicrm/Civi/Api4/PriceSet.php rename to civicrm/ext/civi_contribute/Civi/Api4/PriceSet.php diff --git a/civicrm/Civi/Api4/PriceSetEntity.php b/civicrm/ext/civi_contribute/Civi/Api4/PriceSetEntity.php similarity index 100% rename from civicrm/Civi/Api4/PriceSetEntity.php rename to civicrm/ext/civi_contribute/Civi/Api4/PriceSetEntity.php diff --git a/civicrm/Civi/Api4/Product.php b/civicrm/ext/civi_contribute/Civi/Api4/Product.php similarity index 100% rename from civicrm/Civi/Api4/Product.php rename to civicrm/ext/civi_contribute/Civi/Api4/Product.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionCreationSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionGetSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/ContributionRecurCreationSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialItemCreationSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/FinancialTrxnCreationSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorCreationSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PaymentProcessorTypeCreationSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php b/civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php rename to civicrm/ext/civi_contribute/Civi/Api4/Service/Spec/Provider/PriceFieldValueCreationSpecProvider.php diff --git a/civicrm/ext/civi_contribute/info.xml b/civicrm/ext/civi_contribute/info.xml index 9315549d5d..ed7877c53a 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Contribute</namespace> <format>23.02.1</format> diff --git a/civicrm/Civi/Api4/Action/Event/Get.php b/civicrm/ext/civi_event/Civi/Api4/Action/Event/Get.php similarity index 100% rename from civicrm/Civi/Api4/Action/Event/Get.php rename to civicrm/ext/civi_event/Civi/Api4/Action/Event/Get.php diff --git a/civicrm/Civi/Api4/Event.php b/civicrm/ext/civi_event/Civi/Api4/Event.php similarity index 100% rename from civicrm/Civi/Api4/Event.php rename to civicrm/ext/civi_event/Civi/Api4/Event.php diff --git a/civicrm/Civi/Api4/Participant.php b/civicrm/ext/civi_event/Civi/Api4/Participant.php similarity index 100% rename from civicrm/Civi/Api4/Participant.php rename to civicrm/ext/civi_event/Civi/Api4/Participant.php diff --git a/civicrm/Civi/Api4/ParticipantStatusType.php b/civicrm/ext/civi_event/Civi/Api4/ParticipantStatusType.php similarity index 100% rename from civicrm/Civi/Api4/ParticipantStatusType.php rename to civicrm/ext/civi_event/Civi/Api4/ParticipantStatusType.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php b/civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php rename to civicrm/ext/civi_event/Civi/Api4/Service/Spec/Provider/EventCreationSpecProvider.php diff --git a/civicrm/ext/civi_event/info.xml b/civicrm/ext/civi_event/info.xml index a76d8c375a..e92f9f409f 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Event</namespace> <format>23.02.1</format> diff --git a/civicrm/Civi/Api4/Action/MailSettings/TestConnection.php b/civicrm/ext/civi_mail/Civi/Api4/Action/MailSettings/TestConnection.php similarity index 85% rename from civicrm/Civi/Api4/Action/MailSettings/TestConnection.php rename to civicrm/ext/civi_mail/Civi/Api4/Action/MailSettings/TestConnection.php index 344ef57a3d..04822bf373 100644 --- a/civicrm/Civi/Api4/Action/MailSettings/TestConnection.php +++ b/civicrm/ext/civi_mail/Civi/Api4/Action/MailSettings/TestConnection.php @@ -12,12 +12,14 @@ namespace Civi\Api4\Action\MailSettings; use Civi\Api4\Generic\BasicBatchAction; -use Civi\Api4\MailSettings; class TestConnection extends BasicBatchAction { - public function __construct($entityName, $actionName) { - parent::__construct($entityName, $actionName, ['id', 'name']); + /** + * @return string[] + */ + protected function getSelect() { + return ['id', 'name']; } /** @@ -25,13 +27,8 @@ class TestConnection extends BasicBatchAction { * @return array */ protected function doTask($item) { - $mailingName = MailSettings::get(FALSE) - ->addSelect('name') - ->addWhere('id', '=', $item['id']) - ->execute() - ->first()['name']; try { - $mailStore = \CRM_Mailing_MailStore::getStore($mailingName); + $mailStore = \CRM_Mailing_MailStore::getStore($item['name']); } catch (\Throwable $t) { \Civi::log()->warning('MailSettings: Failed to establish test connection', [ diff --git a/civicrm/Civi/Api4/MailSettings.php b/civicrm/ext/civi_mail/Civi/Api4/MailSettings.php similarity index 97% rename from civicrm/Civi/Api4/MailSettings.php rename to civicrm/ext/civi_mail/Civi/Api4/MailSettings.php index 89bc970e99..1d1bc01c5d 100644 --- a/civicrm/Civi/Api4/MailSettings.php +++ b/civicrm/ext/civi_mail/Civi/Api4/MailSettings.php @@ -13,7 +13,7 @@ namespace Civi\Api4; /** * MailSettings entity. * - * @searchable none + * @searchable secondary * @since 5.19 * @package Civi\Api4 */ diff --git a/civicrm/Civi/Api4/Mailing.php b/civicrm/ext/civi_mail/Civi/Api4/Mailing.php similarity index 100% rename from civicrm/Civi/Api4/Mailing.php rename to civicrm/ext/civi_mail/Civi/Api4/Mailing.php diff --git a/civicrm/Civi/Api4/MailingEventBounce.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventBounce.php similarity index 100% rename from civicrm/Civi/Api4/MailingEventBounce.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingEventBounce.php diff --git a/civicrm/Civi/Api4/MailingEventConfirm.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventConfirm.php similarity index 100% rename from civicrm/Civi/Api4/MailingEventConfirm.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingEventConfirm.php diff --git a/civicrm/ext/civi_mail/Civi/Api4/MailingEventDelivered.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventDelivered.php new file mode 100644 index 0000000000..08d38df771 --- /dev/null +++ b/civicrm/ext/civi_mail/Civi/Api4/MailingEventDelivered.php @@ -0,0 +1,23 @@ +<?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; + +/** + * Tracks when a queued email is actually delivered to the MTA. + * + * @see \Civi\Api4\Mailing + * @since 5.64 + * @package Civi\Api4 + */ +class MailingEventDelivered extends Generic\DAOEntity { + use Generic\Traits\ReadOnlyEntity; + +} diff --git a/civicrm/ext/civi_mail/Civi/Api4/MailingEventForward.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventForward.php new file mode 100644 index 0000000000..9459c4df6b --- /dev/null +++ b/civicrm/ext/civi_mail/Civi/Api4/MailingEventForward.php @@ -0,0 +1,23 @@ +<?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; + +/** + * Tracks when a contact forwards a mailing to a (new) contact + * + * @see \Civi\Api4\Mailing + * @since 5.64 + * @package Civi\Api4 + */ +class MailingEventForward extends Generic\DAOEntity { + use Generic\Traits\ReadOnlyEntity; + +} diff --git a/civicrm/Civi/Api4/MailingEventOpened.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventOpened.php similarity index 100% rename from civicrm/Civi/Api4/MailingEventOpened.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingEventOpened.php diff --git a/civicrm/Civi/Api4/MailingEventQueue.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventQueue.php similarity index 100% rename from civicrm/Civi/Api4/MailingEventQueue.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingEventQueue.php diff --git a/civicrm/ext/civi_mail/Civi/Api4/MailingEventReply.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventReply.php new file mode 100644 index 0000000000..2c515e3ada --- /dev/null +++ b/civicrm/ext/civi_mail/Civi/Api4/MailingEventReply.php @@ -0,0 +1,23 @@ +<?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; + +/** + * Tracks when a contact replies to a mailing. + * + * @see \Civi\Api4\Mailing + * @since 5.64 + * @package Civi\Api4 + */ +class MailingEventReply extends Generic\DAOEntity { + use Generic\Traits\ReadOnlyEntity; + +} diff --git a/civicrm/Civi/Api4/MailingEventSubscribe.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventSubscribe.php similarity index 100% rename from civicrm/Civi/Api4/MailingEventSubscribe.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingEventSubscribe.php diff --git a/civicrm/Civi/Api4/MailingEventTrackableURLOpen.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventTrackableURLOpen.php similarity index 100% rename from civicrm/Civi/Api4/MailingEventTrackableURLOpen.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingEventTrackableURLOpen.php diff --git a/civicrm/Civi/Api4/MailingEventUnsubscribe.php b/civicrm/ext/civi_mail/Civi/Api4/MailingEventUnsubscribe.php similarity index 100% rename from civicrm/Civi/Api4/MailingEventUnsubscribe.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingEventUnsubscribe.php diff --git a/civicrm/Civi/Api4/MailingGroup.php b/civicrm/ext/civi_mail/Civi/Api4/MailingGroup.php similarity index 100% rename from civicrm/Civi/Api4/MailingGroup.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingGroup.php diff --git a/civicrm/Civi/Api4/MailingJob.php b/civicrm/ext/civi_mail/Civi/Api4/MailingJob.php similarity index 100% rename from civicrm/Civi/Api4/MailingJob.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingJob.php diff --git a/civicrm/Civi/Api4/MailingTrackableURL.php b/civicrm/ext/civi_mail/Civi/Api4/MailingTrackableURL.php similarity index 100% rename from civicrm/Civi/Api4/MailingTrackableURL.php rename to civicrm/ext/civi_mail/Civi/Api4/MailingTrackableURL.php diff --git a/civicrm/ext/civi_mail/info.xml b/civicrm/ext/civi_mail/info.xml index 1f69a6bbf4..ab7b5d5253 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Mailing</namespace> <format>23.02.1</format> diff --git a/civicrm/Civi/Api4/Membership.php b/civicrm/ext/civi_member/Civi/Api4/Membership.php similarity index 100% rename from civicrm/Civi/Api4/Membership.php rename to civicrm/ext/civi_member/Civi/Api4/Membership.php diff --git a/civicrm/Civi/Api4/MembershipBlock.php b/civicrm/ext/civi_member/Civi/Api4/MembershipBlock.php similarity index 100% rename from civicrm/Civi/Api4/MembershipBlock.php rename to civicrm/ext/civi_member/Civi/Api4/MembershipBlock.php diff --git a/civicrm/Civi/Api4/MembershipStatus.php b/civicrm/ext/civi_member/Civi/Api4/MembershipStatus.php similarity index 100% rename from civicrm/Civi/Api4/MembershipStatus.php rename to civicrm/ext/civi_member/Civi/Api4/MembershipStatus.php diff --git a/civicrm/Civi/Api4/MembershipType.php b/civicrm/ext/civi_member/Civi/Api4/MembershipType.php similarity index 100% rename from civicrm/Civi/Api4/MembershipType.php rename to civicrm/ext/civi_member/Civi/Api4/MembershipType.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php b/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php rename to civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipCreationSpecProvider.php diff --git a/civicrm/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php b/civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php similarity index 100% rename from civicrm/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php rename to civicrm/ext/civi_member/Civi/Api4/Service/Spec/Provider/MembershipTypeCreationSpecProvider.php diff --git a/civicrm/ext/civi_member/info.xml b/civicrm/ext/civi_member/info.xml index 5feacc2b28..897df97629 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Member</namespace> <format>23.02.1</format> diff --git a/civicrm/Civi/Api4/Pledge.php b/civicrm/ext/civi_pledge/Civi/Api4/Pledge.php similarity index 100% rename from civicrm/Civi/Api4/Pledge.php rename to civicrm/ext/civi_pledge/Civi/Api4/Pledge.php diff --git a/civicrm/Civi/Api4/PledgePayment.php b/civicrm/ext/civi_pledge/Civi/Api4/PledgePayment.php similarity index 100% rename from civicrm/Civi/Api4/PledgePayment.php rename to civicrm/ext/civi_pledge/Civi/Api4/PledgePayment.php diff --git a/civicrm/ext/civi_pledge/info.xml b/civicrm/ext/civi_pledge/info.xml index 6e5b7dde6f..a83bb97994 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Pledge</namespace> <format>23.02.1</format> diff --git a/civicrm/Civi/Api4/ReportInstance.php b/civicrm/ext/civi_report/Civi/Api4/ReportInstance.php similarity index 100% rename from civicrm/Civi/Api4/ReportInstance.php rename to civicrm/ext/civi_report/Civi/Api4/ReportInstance.php diff --git a/civicrm/ext/civi_report/info.xml b/civicrm/ext/civi_report/info.xml index 2ae5faca4a..71cc6df076 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>component</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core Component</comments> <upgrader>CRM_Extension_Upgrader_Component</upgrader> @@ -27,6 +27,9 @@ <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> </classloader> + <mixins> + <mixin>scan-classes@1.0.0</mixin> + </mixins> <civix> <namespace>CRM/Report</namespace> <format>23.02.1</format> diff --git a/civicrm/ext/civicrm_admin_ui/CRM/CivicrmAdminUi/Upgrader.php b/civicrm/ext/civicrm_admin_ui/CRM/CivicrmAdminUi/Upgrader.php new file mode 100644 index 0000000000..09dd44c6b6 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/CRM/CivicrmAdminUi/Upgrader.php @@ -0,0 +1,44 @@ +<?php +// phpcs:disable +use CRM_CivicrmAdminUi_ExtensionUtil as E; +// phpcs:enable + +/** + * Collection of upgrade steps. + */ +class CRM_CivicrmAdminUi_Upgrader extends CRM_Extension_Upgrader_Base { + + protected function replaceFindContactMenuPath($path) { + // point Find Contacts menu to the FB/SK version or back to the original path + // this is temporary until everything is in FB/SK and we can use the original path + $results = \Civi\Api4\Navigation::update(FALSE) + ->addValue('url', $path) + ->addWhere('name', '=', 'Find Contacts') + ->execute(); + } + + /** + * @todo "install" and "uninstall" may not be needed if enable and disable are present. See https://github.com/civicrm/civicrm-core/pull/26669 + */ + public function install(): void { + $this->replaceFindContactMenuPath('civicrm/adminui/contact/search'); + } + + public function uninstall(): void { + $this->replaceFindContactMenuPath('civicrm/contact/search'); + } + + public function enable(): void { + $this->replaceFindContactMenuPath('civicrm/adminui/contact/search'); + } + + public function disable(): void { + $this->replaceFindContactMenuPath('civicrm/contact/search'); + } + + public function upgrade_1000(): bool { + $this->replaceFindContactMenuPath('civicrm/adminui/contact/search'); + return TRUE; + } + +} diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.html index b4ce20e8f0..e8464a6d25 100644 --- a/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.html +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchAdminCustomGroups.aff.html @@ -10,11 +10,5 @@ <af-field name="extends" defn="{input_attrs: {multiple: true}, label: 'Used For'}" /> <af-field name="CustomGroup_CustomField_custom_group_id_01.label" defn="{required: false, input_attrs: {}, label: 'Field'}" /> </div> - <div class="btn-group pull-right"> - <a class="btn btn-primary" ng-href="{{:: crmUrl('civicrm/admin/custom/group/edit', {reset: 1}) }}"> - <i class="crm-i fa-plus"/> - {{:: ts('Add Set of Custom Fields') }} - </a> - </div> <crm-search-display-table search-name="Administer_Custom_Groups" display-name="Table"></crm-search-display-table> </div> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.html new file mode 100644 index 0000000000..95b940f2f9 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.html @@ -0,0 +1,12 @@ +<div af-fieldset=""> + <div class="af-container"> + <div class="af-container af-layout-inline"> + <af-field name="display_name,sort_name,email_primary.email" defn="{label: 'Name or Email', input_type: 'Text'}" /> + <af-field name="contact_type" defn="{input_attrs: {multiple: true, placeholder: '-any contact type-'}}" /> + <af-field name="contact_sub_type" defn="{input_attrs: {multiple: true, placeholder: '-any contact subtype-'}}" /> + <af-field name="groups" defn="{input_attrs: {multiple: true, placeholder: '-any group-'}}" /> + <af-field name="tags" defn="{input_attrs: {multiple: true, placeholder: '-any tag-'}}" /> + </div> + </div> + <crm-search-display-table search-name="Find_Contacts" display-name="Find_Contacts_Table_1"></crm-search-display-table> +</div> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.json b/civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.json new file mode 100644 index 0000000000..9e3865e50a --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchContactSearch.aff.json @@ -0,0 +1,19 @@ +{ + "type": "search", + "title": "Find Contacts", + "icon": "fa-list-alt", + "server_route": "civicrm/adminui/contact/search", + "permission": "access CiviCRM", + "navigation": null, + "requires": [], + "description": "", + "is_dashlet": false, + "is_public": false, + "is_token": false, + "entity_type": null, + "join_entity": null, + "contact_summary": null, + "summary_contact_type": null, + "redirect": null, + "create_submission": null +} diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.html new file mode 100644 index 0000000000..d7ec641d68 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.html @@ -0,0 +1,3 @@ +<div af-fieldset=""> + <crm-search-display-table search-name="Mail_Accounts" display-name="Mail_Accounts_Table_1"></crm-search-display-table> +</div> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.json b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.json new file mode 100644 index 0000000000..19168345da --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchMailAccounts.aff.json @@ -0,0 +1,19 @@ +{ + "type": "search", + "title": "Mail Accounts", + "icon": "fa-list-alt", + "server_route": "civicrm/admin/mailSettings", + "permission": "administer CiviCRM", + "requires": [], + "description": "", + "is_dashlet": false, + "is_public": false, + "is_token": false, + "entity_type": null, + "join_entity": null, + "contact_summary": null, + "summary_contact_type": null, + "redirect": null, + "create_submission": null, + "navigation": null +} diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.html new file mode 100644 index 0000000000..7fc2077942 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.html @@ -0,0 +1,8 @@ +<div af-fieldset=""> + <div class="help"> + <p>{{:: ts('ACLs allow you to control access to CiviCRM data. An ACL consists of an Operation (e.g. "View" or "Edit"), a set of data the operation can be performed on (e.g. a group of contacts), and a user Role the ACL applies to.') }}</p> + <p>{{:: ts('Depending on the chosen mode, each ACL either Allows or Denies permission. When multiple rules contradict each other (e.g. one rule allows and the second rule denies access to the same contacts) the rule with the highest priority takes precidence.') }}</p> + <p><a href="https://docs.civicrm.org/user/en/latest/initial-set-up/permissions-and-access-control/" target="_blank">{{:: ts('Learn more...') }}</a></p> + </div> + <crm-search-display-table search-name="Manage_ACLs" display-name="Manage_ACLs_Table_1"></crm-search-display-table> +</div> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.json b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.json new file mode 100644 index 0000000000..9c7f2567ab --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchManageACLs.aff.json @@ -0,0 +1,8 @@ +{ + "type": "search", + "title": "Manage ACLs", + "icon": "fa-list-alt", + "server_route": "civicrm/acl", + "permission": "administer CiviCRM", + "navigation": null +} diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.html b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.html new file mode 100644 index 0000000000..c29768ddc1 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.html @@ -0,0 +1,13 @@ +<div af-fieldset=""> + <div class="btn-group pull-right"> + + + <a class="btn btn-primary" ng-href="{{:: crmUrl('civicrm/admin/job', {reset: 1}) }}"> + <i class="crm-i fa-list-alt"/> + {{:: ts('Scheduled Jobs Listing') }} + </a> + + + </div> + <crm-search-display-table search-name="Scheduled_Jobs_Log" display-name="Scheduled_Jobs_Log_Table_1"></crm-search-display-table> +</div> diff --git a/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.json b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.json new file mode 100644 index 0000000000..3bde1de42d --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/ang/afsearchScheduledJobsLog.aff.json @@ -0,0 +1,19 @@ +{ + "type": "search", + "requires": [], + "entity_type": null, + "join_entity": null, + "title": "Scheduled Jobs Log", + "description": "", + "is_dashlet": false, + "is_public": false, + "is_token": false, + "contact_summary": null, + "summary_contact_type": null, + "icon": "fa-list-alt", + "server_route": "civicrm/admin/joblog", + "permission": "admin CiviCRM", + "redirect": null, + "create_submission": false, + "navigation": null +} diff --git a/civicrm/ext/civicrm_admin_ui/civicrm_admin_ui.civix.php b/civicrm/ext/civicrm_admin_ui/civicrm_admin_ui.civix.php index 69a952d2b2..ff765700fe 100644 --- a/civicrm/ext/civicrm_admin_ui/civicrm_admin_ui.civix.php +++ b/civicrm/ext/civicrm_admin_ui/civicrm_admin_ui.civix.php @@ -133,8 +133,8 @@ function _civicrm_admin_ui_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/civicrm_admin_ui/civicrm_admin_ui.php b/civicrm/ext/civicrm_admin_ui/civicrm_admin_ui.php index 85db9c3277..da9a2b631f 100644 --- a/civicrm/ext/civicrm_admin_ui/civicrm_admin_ui.php +++ b/civicrm/ext/civicrm_admin_ui/civicrm_admin_ui.php @@ -13,3 +13,50 @@ use CRM_CivicrmAdminUi_ExtensionUtil as E; function civicrm_admin_ui_civicrm_config(&$config) { _civicrm_admin_ui_civix_civicrm_config($config); } + +/** + * Implements hook_civicrm_postProcess(). + */ +function civicrm_admin_ui_civicrm_postProcess($className, $form) { + // Alter core forms to redirect to the new AdminUI afform pages + switch ($className) { + case 'CRM_Custom_Form_Group': + if ($form->getAction() & CRM_Core_Action::ADD) { + $redirect = "civicrm/admin/custom/group/fields#/?gid=$form->_id"; + } + else { + $redirect = 'civicrm/admin/custom/group'; + } + break; + + case 'CRM_Custom_Form_Field': + $buttonName = $form->controller->getButtonName(); + // Redirect to field list unless "Save and New" was clicked + if ($buttonName != $form->getButtonName('next', 'new')) { + $redirect = "civicrm/admin/custom/group/fields#/?gid=$form->_gid"; + } + break; + + case 'CRM_UF_Form_Group': + if ($form->getAction() & CRM_Core_Action::ADD) { + $redirect = "civicrm/admin/uf/group/field#/?uf_group_id=$form->_id"; + } + else { + $redirect = 'civicrm/admin/uf/group'; + } + break; + + case 'CRM_UF_Form_Field': + $buttonName = $form->controller->getButtonName(); + // Redirect to field list unless "Save and New" was clicked + if ($buttonName != $form->getButtonName('next', 'new')) { + $redirect = "civicrm/admin/uf/group/field#/?uf_group_id=$form->_gid"; + } + break; + } + + if (isset($redirect)) { + $url = CRM_Utils_System::url($redirect, '', FALSE, NULL, FALSE); + CRM_Core_Session::singleton()->replaceUserContext($url); + } +} diff --git a/civicrm/ext/civicrm_admin_ui/info.xml b/civicrm/ext/civicrm_admin_ui/info.xml index 9b7fabb709..d378cb8f8a 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.63.2</version> + <version>5.64.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <requires> <ext>org.civicrm.search_kit</ext> @@ -32,9 +32,10 @@ <civix> <namespace>CRM/CivicrmAdminUi</namespace> <angularModule>crmCivicrmAdminUi</angularModule> - <format>23.02.0</format> + <format>23.02.1</format> </civix> <mixins> <mixin>mgd-php@1.0.0</mixin> </mixins> + <upgrader>CRM_CivicrmAdminUi_Upgrader</upgrader> </extension> diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php index 3db5c377aa..1515549640 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Assigned_Financial_Accounts.mgd.php @@ -46,6 +46,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -169,6 +172,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php index 50264c35c8..af94d309c7 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Contact_Types.mgd.php @@ -32,6 +32,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -150,6 +153,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php index e53e178a8d..b81900cb6d 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Fields.mgd.php @@ -29,7 +29,7 @@ return [ 'option_group_id:label', ], 'orderBy' => [], - 'where' => [], + 'where' => [['custom_group_id.is_reserved', '=', FALSE]], 'groupBy' => [], 'join' => [], 'having' => [], @@ -163,7 +163,7 @@ return [ ], [ 'entity' => 'CustomField', - 'action' => 'move', + 'action' => 'detach', 'join' => '', 'target' => 'crm-popup', 'icon' => 'fa-random', @@ -201,6 +201,7 @@ return [ 'path' => 'civicrm/admin/custom/group/field/add?reset=1&action=add&gid=[custom_group_id]', 'text' => E::ts('Add Custom Field'), 'icon' => 'fa-plus', + 'autoOpen' => TRUE, ], 'placeholder' => 5, ], diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php index 293f579751..1be5dafc78 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Custom_Groups.mgd.php @@ -25,11 +25,12 @@ return [ 'extends:label', 'extends_entity_column_id:label', 'style:label', + 'is_reserved', 'COUNT(CustomGroup_CustomField_custom_group_id_01.id) AS COUNT_CustomGroup_CustomField_custom_group_id_01_id', 'GROUP_CONCAT(DISTINCT CustomGroup_CustomField_custom_group_id_01.label) AS GROUP_CONCAT_CustomGroup_CustomField_custom_group_id_01_label', ], 'orderBy' => [], - 'where' => [], + 'where' => [['is_reserved', '=', FALSE]], 'groupBy' => [ 'id', ], @@ -197,6 +198,12 @@ return [ ], ], 'placeholder' => 5, + 'addButton' => [ + 'path' => 'civicrm/admin/custom/group/edit?reset=1', + 'text' => E::ts('Add Set of Custom Fields'), + 'icon' => 'fa-plus', + 'autoOpen' => TRUE, + ], ], 'acl_bypass' => FALSE, ], diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php index 266cb98cb5..b94aeaa155 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Accounts.mgd.php @@ -38,6 +38,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -183,6 +186,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php index ce6dd6194f..a662009461 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Financial_Types.mgd.php @@ -54,6 +54,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -189,6 +192,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php index fa7b505056..0fda40d0fc 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Location_Types.mgd.php @@ -36,6 +36,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -167,6 +170,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php index ed14230c57..18f1937130 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Payment_Processors.mgd.php @@ -61,6 +61,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -207,6 +210,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php index e7b55d55dc..5d0bb2698f 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_ProfileFields.mgd.php @@ -37,6 +37,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -174,6 +177,7 @@ return [ 'path' => 'civicrm/admin/uf/group/field/add?reset=1&action=add&gid=[uf_group_id]', 'text' => E::ts('Add Field'), 'icon' => 'fa-plus', + 'autoOpen' => TRUE, ], 'cssRules' => [ [ @@ -186,6 +190,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php index 7c422e2adc..b40b6c7aae 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Profiles.mgd.php @@ -50,6 +50,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -257,6 +260,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php index 118ffe232f..499913b983 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Administer_Relationship_Types.mgd.php @@ -34,6 +34,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -158,6 +161,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Contact_Search.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Contact_Search.mgd.php new file mode 100644 index 0000000000..f6884f933f --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Contact_Search.mgd.php @@ -0,0 +1,245 @@ +<?php + +use CRM_CivicrmAdminUi_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_Find_Contacts', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Find_Contacts', + 'label' => E::ts('Find Contacts'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'Contact', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'contact_type:label', + 'contact_sub_type:label', + 'display_name', + 'sort_name', + 'address_primary.street_address', + 'address_primary.city', + 'address_primary.state_province_id:label', + 'address_primary.postal_code', + 'address_primary.country_id:label', + 'email_primary.email', + 'phone_primary.phone', + 'do_not_email', + 'do_not_phone', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Find_Contacts_SearchDisplay_Find_Contacts_Table_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Find_Contacts_Table_1', + 'label' => E::ts('Find Contacts'), + 'saved_search_id.name' => 'Find_Contacts', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + [ + 'sort_name', + 'ASC', + ], + ], + 'limit' => 50, + 'pager' => [ + 'show_count' => TRUE, + 'expose_limit' => TRUE, + ], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'contact_type', + 'dataType' => 'String', + 'label' => '', + 'sortable' => FALSE, + 'rewrite' => '', + 'icons' => [ + [ + 'field' => 'contact_sub_type:icon', + 'side' => 'left', + ], + [ + 'field' => 'contact_type:icon', + 'side' => 'left', + ], + ], + ], + [ + 'type' => 'field', + 'key' => 'sort_name', + 'dataType' => 'String', + 'label' => E::ts('Name'), + 'sortable' => TRUE, + 'link' => [ + 'path' => '', + 'entity' => 'Contact', + 'action' => 'view', + 'join' => '', + 'target' => '_blank', + ], + 'title' => E::ts('View Contact'), + ], + [ + 'type' => 'field', + 'key' => 'address_primary.street_address', + 'dataType' => 'String', + 'label' => E::ts('Address'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'address_primary.city', + 'dataType' => 'String', + 'label' => E::ts('City'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'address_primary.state_province_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('State'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'address_primary.postal_code', + 'dataType' => 'String', + 'label' => E::ts('Postal Code'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'address_primary.country_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Country'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'email_primary.email', + 'dataType' => 'String', + 'label' => E::ts('Email'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'icon' => 'fa-ban', + 'side' => 'right', + 'if' => [ + 'do_not_email', + '=', + TRUE, + ], + ], + ], + 'title' => E::ts('Do not email: %1', [1 => '[do_not_email]']), + ], + [ + 'type' => 'field', + 'key' => 'phone_primary.phone', + 'dataType' => 'String', + 'label' => E::ts('Phone'), + 'sortable' => TRUE, + 'icons' => [ + [ + 'icon' => 'fa-ban', + 'side' => 'right', + 'if' => [ + 'do_not_phone', + '=', + TRUE, + ], + ], + ], + 'title' => E::ts('Do not phone: %1', [1 => '[do_not_phone]']), + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'Contact', + 'action' => 'view', + 'join' => '', + 'target' => '_blank', + 'icon' => 'fa-external-link', + 'text' => E::ts('View'), + 'style' => 'default', + 'path' => '', + 'condition' => [], + ], + [ + 'entity' => 'Contact', + 'action' => 'update', + 'join' => '', + 'target' => '_blank', + 'icon' => 'fa-pencil', + 'text' => E::ts('Edit'), + 'style' => 'default', + 'path' => '', + 'condition' => [], + ], + [ + 'entity' => 'Contact', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-trash', + 'text' => E::ts('Delete Contact'), + 'style' => 'danger', + 'path' => '', + 'condition' => [], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'headerCount' => TRUE, + 'button' => NULL, + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php new file mode 100644 index 0000000000..388e7aa526 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_ACLs.mgd.php @@ -0,0 +1,179 @@ +<?php + +use CRM_CivicrmAdminUi_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_Manage_ACLs', + 'entity' => 'SavedSearch', + 'cleanup' => 'unused', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Manage_ACLs', + 'label' => E::ts('Manage ACLs'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'ACL', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'entity_id:label', + 'operation:label', + 'object_table:label', + 'object_id:label', + 'name', + 'is_active', + 'deny', + 'priority', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Manage_ACLs_SearchDisplay_Manage_ACLs_Table_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'unused', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Manage_ACLs_Table_1', + 'label' => E::ts('Manage ACLs'), + 'saved_search_id.name' => 'Manage_ACLs', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + [ + 'priority', + 'ASC', + ], + ], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'entity_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Role'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'operation:label', + 'dataType' => 'String', + 'label' => E::ts('Operation'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'object_table:label', + 'dataType' => 'String', + 'label' => E::ts('Type of Data'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'object_id:label', + 'dataType' => 'Integer', + 'label' => E::ts('Which Data'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'name', + 'dataType' => 'String', + 'label' => E::ts('Description'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'is_active', + 'dataType' => 'Boolean', + 'label' => E::ts('Enabled'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'deny', + 'dataType' => 'Boolean', + 'label' => E::ts('Mode'), + 'sortable' => TRUE, + 'rewrite' => '{if "[deny]" eq "1"}' . E::ts('Deny') . '{else}' . E::ts('Allow') . '{/if}', + ], + [ + 'type' => 'field', + 'key' => 'priority', + 'dataType' => 'Integer', + 'label' => E::ts('Priority'), + 'sortable' => TRUE, + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'ACL', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-pencil', + 'text' => E::ts('Edit ACL'), + 'style' => 'default', + 'path' => '', + 'condition' => [], + ], + [ + 'entity' => 'ACL', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-trash', + 'text' => E::ts('Delete ACL'), + 'style' => 'danger', + 'path' => '', + 'condition' => [], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'classes' => [ + 'table', + 'table-striped', + 'crm-sticky-header', + ], + 'addButton' => [ + 'path' => 'civicrm/acl/edit?reset=1&action=add', + 'text' => E::ts('Add ACL'), + 'icon' => 'fa-plus', + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php index 6898d3eff2..214cc31475 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Contribution_Pages.mgd.php @@ -33,6 +33,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -227,6 +230,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; 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 new file mode 100644 index 0000000000..e76d2daa72 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Mail_Accounts.mgd.php @@ -0,0 +1,194 @@ +<?php + +use CRM_CivicrmAdminUi_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_Mail_Accounts', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Mail_Accounts', + 'label' => E::ts('Mail Accounts'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'MailSettings', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'name', + 'server', + 'username', + 'localpart', + 'domain', + 'return_path', + 'protocol:label', + 'source', + 'is_ssl', + 'is_default', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Mail_Accounts_SearchDisplay_Mail_Accounts_Table_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Mail_Accounts_Table_1', + 'label' => E::ts('Mail Accounts Table 1'), + 'saved_search_id.name' => 'Mail_Accounts', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'name', + 'dataType' => 'String', + 'label' => E::ts('Name'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'server', + 'dataType' => 'String', + 'label' => E::ts('Server'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'username', + 'dataType' => 'String', + 'label' => E::ts('Username'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'localpart', + 'dataType' => 'String', + 'label' => E::ts('Localpart'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'domain', + 'dataType' => 'String', + 'label' => E::ts('Domain'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'return_path', + 'dataType' => 'String', + 'label' => E::ts('Return-Path'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'protocol:label', + 'dataType' => 'String', + 'label' => E::ts('Protocol'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'source', + 'dataType' => 'String', + 'label' => E::ts('Mail Folder'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'is_ssl', + 'dataType' => 'Boolean', + 'label' => E::ts('Use SSL?'), + 'sortable' => TRUE, + ], + [ + 'type' => 'html', + 'key' => 'is_default', + 'dataType' => 'Boolean', + 'label' => E::ts('Used For'), + 'sortable' => TRUE, + 'rewrite' => '{if "[is_default]" == "' . E::ts('Yes') . '"}' . E::ts('Bounce Processing <strong>(Default)</strong>') . '{else}' . E::ts('Email-to-Activity') . '{/if}', + ], + [ + 'text' => '', + 'style' => 'default', + 'size' => 'btn-xs', + 'icon' => 'fa-bars', + 'links' => [ + [ + 'entity' => 'MailSettings', + 'action' => 'update', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-pencil', + 'text' => E::ts('Edit'), + 'style' => 'default', + 'path' => '', + 'condition' => [], + ], + [ + 'entity' => 'MailSettings', + 'action' => 'delete', + 'join' => '', + 'target' => 'crm-popup', + 'icon' => 'fa-trash', + 'text' => E::ts('Delete'), + 'style' => 'danger', + 'path' => '', + 'condition' => [ + 'is_default', + '=', + FALSE, + ], + ], + ], + 'type' => 'menu', + 'alignment' => 'text-right', + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + 'addButton' => [ + 'path' => 'civicrm/admin/mailSettings/edit?action=add&reset=1', + 'text' => E::ts('Add Mail Account'), + 'icon' => 'fa-plus', + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php index 059775f0fa..7af0832ab0 100644 --- a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Manage_Scheduled_Jobs.mgd.php @@ -229,6 +229,7 @@ return [ ], 'match' => [ 'name', + 'saved_search_id', ], ], ], diff --git a/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php new file mode 100644 index 0000000000..dc47e1ce49 --- /dev/null +++ b/civicrm/ext/civicrm_admin_ui/managed/SavedSearch_Scheduled_Jobs_Log.mgd.php @@ -0,0 +1,105 @@ +<?php + +use CRM_CivicrmAdminUi_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_Scheduled_Jobs_Log', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Scheduled_Jobs_Log', + 'label' => E::ts('Scheduled Jobs Log'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'JobLog', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'run_time', + 'name', + 'command', + 'description', + 'data', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Scheduled_Jobs_Log_SearchDisplay_Scheduled_Jobs_Log_Table_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Scheduled_Jobs_Log_Table_1', + 'label' => E::ts('Scheduled Jobs Log Table 1'), + 'saved_search_id.name' => 'Scheduled_Jobs_Log', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [ + [ + 'run_time', + 'DESC', + ], + ], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'run_time', + 'dataType' => 'Timestamp', + 'label' => E::ts('Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'html', + 'key' => 'name', + 'dataType' => 'String', + 'label' => E::ts('Job Name and Command'), + 'sortable' => TRUE, + 'rewrite' => '[name]<br><br>[command]', + ], + [ + 'type' => 'html', + 'key' => 'description', + 'dataType' => 'String', + 'label' => E::ts('Output'), + 'sortable' => TRUE, + 'rewrite' => '<b>' . E::ts("Summary:") . '</b> [description]<br><b>' . E::ts("Details:") . '</b><pre>[data]</pre>', + ], + ], + 'actions' => FALSE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php b/civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php new file mode 100644 index 0000000000..e5c0388126 --- /dev/null +++ b/civicrm/ext/civigrant/Civi/Api4/Service/Autocomplete/GrantAutocompleteProvider.php @@ -0,0 +1,83 @@ +<?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/info.xml b/civicrm/ext/civigrant/info.xml index 0d61b2fbfb..2b878c4e30 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>CiviGrant was originally a core component before migrating to an extension</comments> <requires> @@ -34,6 +34,7 @@ <mixin>afform-entity-php@1.0.0</mixin> <mixin>smarty-v2@1.0.1</mixin> <mixin>entity-types-php@1.0.0</mixin> + <mixin>scan-classes@1.0.0</mixin> </mixins> <civix> <namespace>CRM/Grant</namespace> diff --git a/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php b/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php index 2c0d94417d..e104463480 100644 --- a/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php +++ b/civicrm/ext/civigrant/managed/OptionGroup_recent_items_providers_OptionValue_Grant.mgd.php @@ -26,6 +26,10 @@ return [ 'is_reserved' => TRUE, 'is_active' => TRUE, ], + 'match' => [ + 'name', + 'option_group_id', + ], ], ], ]; diff --git a/civicrm/ext/civigrant/managed/OptionValue_cg_extends_objects_grant.mgd.php b/civicrm/ext/civigrant/managed/OptionValue_cg_extends_objects_grant.mgd.php index 3ce34ab566..7c9aaa76e8 100644 --- a/civicrm/ext/civigrant/managed/OptionValue_cg_extends_objects_grant.mgd.php +++ b/civicrm/ext/civigrant/managed/OptionValue_cg_extends_objects_grant.mgd.php @@ -19,6 +19,10 @@ return [ 'is_active' => TRUE, 'grouping' => 'grant_type_id', ], + 'match' => [ + 'name', + 'option_group_id', + ], ], ], ]; diff --git a/civicrm/ext/civigrant/managed/SavedSearch_CiviGrant_Summary.mgd.php b/civicrm/ext/civigrant/managed/SavedSearch_CiviGrant_Summary.mgd.php index e182af1bba..727974d0df 100644 --- a/civicrm/ext/civigrant/managed/SavedSearch_CiviGrant_Summary.mgd.php +++ b/civicrm/ext/civigrant/managed/SavedSearch_CiviGrant_Summary.mgd.php @@ -36,6 +36,9 @@ return [ 'description' => NULL, 'mapping_id' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -150,6 +153,10 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civiimport/Managed/ImportSearches.mgd.php b/civicrm/ext/civiimport/Managed/ImportSearches.mgd.php index 845b2add89..c75eb46b42 100644 --- a/civicrm/ext/civiimport/Managed/ImportSearches.mgd.php +++ b/civicrm/ext/civiimport/Managed/ImportSearches.mgd.php @@ -45,6 +45,9 @@ foreach ($importEntities as $importEntity) { 'description' => ts('Temporary import data'), 'mapping_id' => NULL, ], + 'match' => [ + 'name', + ], ], ]; $managedEntities[] = [ @@ -73,6 +76,9 @@ foreach ($importEntities as $importEntity) { 'description' => ts('Temporary import data'), 'mapping_id' => NULL, ], + 'match' => [ + 'name', + ], ], ]; $columns = []; @@ -115,6 +121,10 @@ foreach ($importEntities as $importEntity) { ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ]; @@ -169,6 +179,10 @@ foreach ($importEntities as $importEntity) { ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ]; } diff --git a/civicrm/ext/civiimport/Managed/UserJobSearches.mgd.php b/civicrm/ext/civiimport/Managed/UserJobSearches.mgd.php index 5acf8248f9..bf676b082c 100644 --- a/civicrm/ext/civiimport/Managed/UserJobSearches.mgd.php +++ b/civicrm/ext/civiimport/Managed/UserJobSearches.mgd.php @@ -50,6 +50,9 @@ return [ 'expires_date' => NULL, 'description' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -90,6 +93,9 @@ return [ ], 'expires_date' => NULL, ], + 'match' => [ + 'name', + ], ], ], [ @@ -162,6 +168,136 @@ return [ ], 'acl_bypass' => FALSE, ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], + [ + 'name' => 'SavedSearch_Imports', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'all_imports', + 'label' => 'Imports', + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'UserJob', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'created_id.display_name', + 'created_date', + 'job_type:label', + 'start_date', + 'end_date', + 'status_id:label', + ], + 'orderBy' => [], + 'where' => [ + [ + 'is_template', + '=', + FALSE, + ], + [ + 'is_current', + '=', + TRUE, + ], + ], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Import_Templates_SearchDisplay_AllImports', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'all_imports', + 'label' => E::ts('All Imports'), + 'saved_search_id.name' => 'all_imports', + 'type' => 'table', + 'settings' => [ + 'description' => E::ts('All import jobs'), + 'sort' => [], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'dataType' => 'Integer', + 'label' => E::ts('ID'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'created_id.display_name', + 'dataType' => 'String', + 'label' => E::ts('Created By'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'name', + 'dataType' => 'String', + 'label' => E::ts('Import Name'), + 'sortable' => TRUE, + 'link' => [ + 'path' => 'civicrm/import/contribution?reset=1&template_id=[id]', + 'entity' => '', + 'action' => '', + 'join' => '', + 'target' => '', + ], + ], + [ + 'type' => 'field', + 'key' => 'created_date', + 'dataType' => 'Timestamp', + 'label' => E::ts('Created Date'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'job_type:label', + 'dataType' => 'String', + 'label' => E::ts('Type'), + 'sortable' => TRUE, + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], ], ], ]; diff --git a/civicrm/ext/civiimport/ang/afsearchAllImports.aff.html b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.html new file mode 100644 index 0000000000..58cde45f2e --- /dev/null +++ b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.html @@ -0,0 +1,3 @@ +<div af-fieldset=""> + <crm-search-display-table search-name="all_imports" display-name="all_imports"></crm-search-display-table> +</div> diff --git a/civicrm/ext/civiimport/ang/afsearchAllImports.aff.json b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.json new file mode 100644 index 0000000000..92f44df974 --- /dev/null +++ b/civicrm/ext/civiimport/ang/afsearchAllImports.aff.json @@ -0,0 +1,23 @@ +{ + "type": "search", + "requires": [], + "entity_type": null, + "join_entity": null, + "title": "All Imports", + "description": "", + "is_dashlet": false, + "is_public": false, + "is_token": false, + "contact_summary": null, + "summary_contact_type": null, + "icon": "fa-list-alt", + "server_route": "civicrm/imports/all-imports", + "permission": "administer queues", + "redirect": null, + "create_submission": false, + "navigation": { + "parent": "Reports", + "label": "All imports", + "weight": 17 + } +} diff --git a/civicrm/ext/civiimport/civiimport.php b/civicrm/ext/civiimport/civiimport.php index b12f5a296c..b094f62788 100644 --- a/civicrm/ext/civiimport/civiimport.php +++ b/civicrm/ext/civiimport/civiimport.php @@ -109,7 +109,7 @@ function _civiimport_civicrm_get_import_tables(): array { if (!CRM_Utils_Rule::alphanumeric($tableName) || !CRM_Core_DAO::singleValueQuery('SHOW TABLES LIKE %1', [1 => [$tableName, 'String']])) { continue; } - $createdBy = $tables->display_name ? '' : ' (' . E::ts('Created by %1', [$tables->display_name, 'String']) . ')'; + $createdBy = !$tables->display_name ? '' : ' (' . E::ts('created by %1', [1 => $tables->display_name]) . ')'; $importEntities[$tables->id] = [ 'table_name' => $tableName, 'created_by' => $tables->display_name, @@ -118,7 +118,7 @@ function _civiimport_civicrm_get_import_tables(): array { 'user_job_id' => (int) $tables->id, 'created_date' => $tables->created_date, 'expires_date' => $tables->expires_date, - 'title' => ts('Import Job') . (int) $tables->id, + 'title' => E::ts('Import Job %1', [1 => $tables->id]), 'description' => $tables->created_date . $createdBy, ]; } diff --git a/civicrm/ext/civiimport/info.xml b/civicrm/ext/civiimport/info.xml index 62d5020880..25e55a38a0 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.63.2</version> + <version>5.64.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>Core extension for us to start moving import logic into, has more functionality</comments> <requires> diff --git a/civicrm/ext/ckeditor4/info.xml b/civicrm/ext/ckeditor4/info.xml index 36384e6674..72c68b9585 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</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 8f1820181a..edc985f498 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>This code has been moved from core to a separate extension in 5.32. Note that if you disable it failed or cancelled contributions will not cause related memberships and participant records to be updated</comments> <classloader> diff --git a/civicrm/ext/elavon/info.xml b/civicrm/ext/elavon/info.xml index 97d8155da9..577030701d 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments/> <classloader> diff --git a/civicrm/ext/eventcart/info.xml b/civicrm/ext/eventcart/info.xml index 12f50cd004..e4be3891d7 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.63.2</version> + <version>5.64.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/ewaysingle/CRM/Core/Payment/eWAY.mgd.php b/civicrm/ext/ewaysingle/CRM/Core/Payment/eWAY.mgd.php index 978303bc60..323874a3f8 100644 --- a/civicrm/ext/ewaysingle/CRM/Core/Payment/eWAY.mgd.php +++ b/civicrm/ext/ewaysingle/CRM/Core/Payment/eWAY.mgd.php @@ -3,11 +3,11 @@ // The record will be automatically inserted, updated, or deleted from the // database as appropriate. For more details, see "hook_civicrm_managed" at: // http://wiki.civicrm.org/confluence/display/CRMDOC42/Hook+Reference -return array( - 0 => array( +return [ + 0 => [ 'name' => 'eWAY', 'entity' => 'PaymentProcessorType', - 'params' => array( + 'params' => [ 'version' => 3, 'name' => 'eWAY', 'title' => 'eWAY (Single Currency)', @@ -19,6 +19,6 @@ return array( 'payment_type' => 1, 'is_recur' => 0, 'url_site_test_default' => 'https://www.eway.com.au/gateway_cvn/xmltest/testpage.asp', - ), - ), -); + ], + ], +]; diff --git a/civicrm/ext/ewaysingle/info.xml b/civicrm/ext/ewaysingle/info.xml index 21f19ac43f..a645be084e 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.63.2</version> + <version>5.64.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>This is an extension to contain the eWAY Single Currency Payment Processor</comments> <classloader> diff --git a/civicrm/ext/financialacls/info.xml b/civicrm/ext/financialacls/info.xml index 30d77b0a14..911eb7468f 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <tags> <tag>mgmt:hidden</tag> diff --git a/civicrm/ext/flexmailer/info.xml b/civicrm/ext/flexmailer/info.xml index fd56ef5fc0..bbf38a6c62 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.63.2</version> + <version>5.64.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.63</ver> + <ver>5.64</ver> </compatibility> <tags> <tag>mgmt:required</tag> diff --git a/civicrm/ext/flexmailer/src/Listener/Abdicator.php b/civicrm/ext/flexmailer/src/Listener/Abdicator.php index 3c1a1e2fd8..e5761cc12a 100644 --- a/civicrm/ext/flexmailer/src/Listener/Abdicator.php +++ b/civicrm/ext/flexmailer/src/Listener/Abdicator.php @@ -30,15 +30,8 @@ class Abdicator { * @return bool */ public static function isFlexmailPreferred($mailing) { - if ($mailing->sms_provider_id) { - return FALSE; - } - - // Use FlexMailer for new-style email blasts (with custom `template_type`). - if ($mailing->template_type && $mailing->template_type !== 'traditional') { - return TRUE; - } - return TRUE; + // Yes for CiviMail - no for CiviSMS + return empty($mailing->sms_provider_id); } /** diff --git a/civicrm/ext/flexmailer/src/Listener/OpenTracker.php b/civicrm/ext/flexmailer/src/Listener/OpenTracker.php index 1e0dc84609..75c9c4e0ef 100644 --- a/civicrm/ext/flexmailer/src/Listener/OpenTracker.php +++ b/civicrm/ext/flexmailer/src/Listener/OpenTracker.php @@ -24,20 +24,12 @@ class OpenTracker extends BaseListener { return; } - $config = \CRM_Core_Config::singleton(); - - // TODO: After v5.21 goes EOL, remove the $isLegacy check. - $isLegacy = version_compare(\CRM_Utils_System::version(), '5.23.alpha', '<'); - foreach ($e->getTasks() as $task) { /** @var \Civi\FlexMailer\FlexMailerTask $task */ $mailParams = $task->getMailParams(); if (!empty($mailParams) && !empty($mailParams['html'])) { - $openUrl = $isLegacy - ? $config->userFrameworkResourceURL . "extern/open.php?q=" . $task->getEventQueueId() - : \CRM_Utils_System::externUrl('extern/open', "q=" . $task->getEventQueueId()); - + $openUrl = \CRM_Utils_System::externUrl('extern/open', 'q=' . $task->getEventQueueId()); $mailParams['html'] .= "\n" . '<img src="' . htmlentities($openUrl) . "\" width='1' height='1' alt='' border='0'>"; $task->setMailParams($mailParams); diff --git a/civicrm/ext/greenwich/dist/bootstrap3.css b/civicrm/ext/greenwich/dist/bootstrap3.css index 0a26864d3e..6378b6ac51 100644 --- a/civicrm/ext/greenwich/dist/bootstrap3.css +++ b/civicrm/ext/greenwich/dist/bootstrap3.css @@ -263,8 +263,8 @@ @font-face { font-family: "Glyphicons Halflings"; - src: url("../fonts/glyphicons-halflings-regular.eot"); - src: url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"), url("../fonts/glyphicons-halflings-regular.woff") format("woff"), url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"), url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); + src: url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot"); + src: url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"), url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"), url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"), url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"), url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg"); } #bootstrap-theme .glyphicon { diff --git a/civicrm/ext/greenwich/dist/bootstrap3.min.css b/civicrm/ext/greenwich/dist/bootstrap3.min.css index 7dffaeb677..d59a5e99c2 100644 --- a/civicrm/ext/greenwich/dist/bootstrap3.min.css +++ b/civicrm/ext/greenwich/dist/bootstrap3.min.css @@ -1 +1 @@ -@charset "UTF-8";#bootstrap-theme html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#bootstrap-theme body{margin:0}#bootstrap-theme article,#bootstrap-theme aside,#bootstrap-theme details,#bootstrap-theme figcaption,#bootstrap-theme figure,#bootstrap-theme footer,#bootstrap-theme header,#bootstrap-theme hgroup,#bootstrap-theme main,#bootstrap-theme menu,#bootstrap-theme nav,#bootstrap-theme section,#bootstrap-theme summary{display:block}#bootstrap-theme audio,#bootstrap-theme canvas,#bootstrap-theme progress,#bootstrap-theme video{display:inline-block;vertical-align:baseline}#bootstrap-theme audio:not([controls]){display:none;height:0}#bootstrap-theme [hidden],#bootstrap-theme template{display:none}#bootstrap-theme a{background-color:transparent}#bootstrap-theme a:active,#bootstrap-theme a:hover{outline:0}#bootstrap-theme abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}#bootstrap-theme b,#bootstrap-theme strong{font-weight:700}#bootstrap-theme dfn{font-style:italic}#bootstrap-theme h1{font-size:2em;margin:.67em 0}#bootstrap-theme mark{background:#ff0;color:#000}#bootstrap-theme small{font-size:80%}#bootstrap-theme sub,#bootstrap-theme sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#bootstrap-theme sup{top:-.5em}#bootstrap-theme sub{bottom:-.25em}#bootstrap-theme img{border:0}#bootstrap-theme svg:not(:root){overflow:hidden}#bootstrap-theme figure{margin:1em 40px}#bootstrap-theme hr{box-sizing:content-box;height:0}#bootstrap-theme pre{overflow:auto}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:monospace,monospace;font-size:1em}#bootstrap-theme button,#bootstrap-theme input,#bootstrap-theme optgroup,#bootstrap-theme select,#bootstrap-theme textarea{color:inherit;font:inherit;margin:0}#bootstrap-theme button{overflow:visible}#bootstrap-theme button,#bootstrap-theme select{text-transform:none}#bootstrap-theme button,#bootstrap-theme html input[type=button],#bootstrap-theme input[type=reset],#bootstrap-theme input[type=submit]{-webkit-appearance:button;cursor:pointer}#bootstrap-theme button[disabled],#bootstrap-theme html input[disabled]{cursor:default}#bootstrap-theme button::-moz-focus-inner,#bootstrap-theme input::-moz-focus-inner{border:0;padding:0}#bootstrap-theme input{line-height:normal}#bootstrap-theme input[type=checkbox],#bootstrap-theme input[type=radio]{box-sizing:border-box;padding:0}#bootstrap-theme input[type=number]::-webkit-inner-spin-button,#bootstrap-theme input[type=number]::-webkit-outer-spin-button{height:auto}#bootstrap-theme input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#bootstrap-theme input[type=search]::-webkit-search-cancel-button,#bootstrap-theme input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bootstrap-theme fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#bootstrap-theme legend{border:0;padding:0}#bootstrap-theme textarea{overflow:auto}#bootstrap-theme optgroup{font-weight:700}#bootstrap-theme table{border-collapse:collapse;border-spacing:0}#bootstrap-theme td,#bootstrap-theme th{padding:0}@media print{#bootstrap-theme *,#bootstrap-theme *:before,#bootstrap-theme *:after{color:#000 !important;text-shadow:none !important;background:0 0 !important;box-shadow:none !important}#bootstrap-theme a,#bootstrap-theme a:visited{text-decoration:underline}#bootstrap-theme a[href]:after{content:" (" attr(href) ")"}#bootstrap-theme abbr[title]:after{content:" (" attr(title) ")"}#bootstrap-theme a[href^="#"]:after,#bootstrap-theme a[href^="javascript:"]:after{content:""}#bootstrap-theme pre,#bootstrap-theme blockquote{border:1px solid #999;page-break-inside:avoid}#bootstrap-theme thead{display:table-header-group}#bootstrap-theme tr,#bootstrap-theme img{page-break-inside:avoid}#bootstrap-theme img{max-width:100% !important}#bootstrap-theme p,#bootstrap-theme h2,#bootstrap-theme h3{orphans:3;widows:3}#bootstrap-theme h2,#bootstrap-theme h3{page-break-after:avoid}#bootstrap-theme .navbar{display:none}#bootstrap-theme .btn>.caret,#bootstrap-theme .dropup>.btn>.caret{border-top-color:#000 !important}#bootstrap-theme .label{border:1px solid #000}#bootstrap-theme .table{border-collapse:collapse !important}#bootstrap-theme .table td,#bootstrap-theme .table th{background-color:#fff !important}#bootstrap-theme .table-bordered th,#bootstrap-theme .table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../fonts/glyphicons-halflings-regular.eot");src:url("../fonts/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../fonts/glyphicons-halflings-regular.woff2") format("woff2"),url("../fonts/glyphicons-halflings-regular.woff") format("woff"),url("../fonts/glyphicons-halflings-regular.ttf") format("truetype"),url("../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}#bootstrap-theme .glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bootstrap-theme .glyphicon-asterisk:before{content:"*"}#bootstrap-theme .glyphicon-plus:before{content:"+"}#bootstrap-theme .glyphicon-euro:before,#bootstrap-theme .glyphicon-eur:before{content:"€"}#bootstrap-theme .glyphicon-minus:before{content:"−"}#bootstrap-theme .glyphicon-cloud:before{content:"â˜"}#bootstrap-theme .glyphicon-envelope:before{content:"✉"}#bootstrap-theme .glyphicon-pencil:before{content:"âœ"}#bootstrap-theme .glyphicon-glass:before{content:"î€"}#bootstrap-theme .glyphicon-music:before{content:""}#bootstrap-theme .glyphicon-search:before{content:""}#bootstrap-theme .glyphicon-heart:before{content:""}#bootstrap-theme .glyphicon-star:before{content:""}#bootstrap-theme .glyphicon-star-empty:before{content:""}#bootstrap-theme .glyphicon-user:before{content:""}#bootstrap-theme .glyphicon-film:before{content:""}#bootstrap-theme .glyphicon-th-large:before{content:"î€"}#bootstrap-theme .glyphicon-th:before{content:""}#bootstrap-theme .glyphicon-th-list:before{content:""}#bootstrap-theme .glyphicon-ok:before{content:""}#bootstrap-theme .glyphicon-remove:before{content:""}#bootstrap-theme .glyphicon-zoom-in:before{content:""}#bootstrap-theme .glyphicon-zoom-out:before{content:""}#bootstrap-theme .glyphicon-off:before{content:""}#bootstrap-theme .glyphicon-signal:before{content:""}#bootstrap-theme .glyphicon-cog:before{content:""}#bootstrap-theme .glyphicon-trash:before{content:"î€ "}#bootstrap-theme .glyphicon-home:before{content:""}#bootstrap-theme .glyphicon-file:before{content:""}#bootstrap-theme .glyphicon-time:before{content:""}#bootstrap-theme .glyphicon-road:before{content:""}#bootstrap-theme .glyphicon-download-alt:before{content:""}#bootstrap-theme .glyphicon-download:before{content:""}#bootstrap-theme .glyphicon-upload:before{content:""}#bootstrap-theme .glyphicon-inbox:before{content:""}#bootstrap-theme .glyphicon-play-circle:before{content:""}#bootstrap-theme .glyphicon-repeat:before{content:""}#bootstrap-theme .glyphicon-refresh:before{content:""}#bootstrap-theme .glyphicon-list-alt:before{content:""}#bootstrap-theme .glyphicon-lock:before{content:""}#bootstrap-theme .glyphicon-flag:before{content:""}#bootstrap-theme .glyphicon-headphones:before{content:""}#bootstrap-theme .glyphicon-volume-off:before{content:""}#bootstrap-theme .glyphicon-volume-down:before{content:""}#bootstrap-theme .glyphicon-volume-up:before{content:""}#bootstrap-theme .glyphicon-qrcode:before{content:""}#bootstrap-theme .glyphicon-barcode:before{content:"î€"}#bootstrap-theme .glyphicon-tag:before{content:"î"}#bootstrap-theme .glyphicon-tags:before{content:"î‚"}#bootstrap-theme .glyphicon-book:before{content:"îƒ"}#bootstrap-theme .glyphicon-bookmark:before{content:"î„"}#bootstrap-theme .glyphicon-print:before{content:"î…"}#bootstrap-theme .glyphicon-camera:before{content:"î†"}#bootstrap-theme .glyphicon-font:before{content:"î‡"}#bootstrap-theme .glyphicon-bold:before{content:"îˆ"}#bootstrap-theme .glyphicon-italic:before{content:"î‰"}#bootstrap-theme .glyphicon-text-height:before{content:"î"}#bootstrap-theme .glyphicon-text-width:before{content:"î‘"}#bootstrap-theme .glyphicon-align-left:before{content:"î’"}#bootstrap-theme .glyphicon-align-center:before{content:"î“"}#bootstrap-theme .glyphicon-align-right:before{content:"î”"}#bootstrap-theme .glyphicon-align-justify:before{content:"î•"}#bootstrap-theme .glyphicon-list:before{content:"î–"}#bootstrap-theme .glyphicon-indent-left:before{content:"î—"}#bootstrap-theme .glyphicon-indent-right:before{content:"î˜"}#bootstrap-theme .glyphicon-facetime-video:before{content:"î™"}#bootstrap-theme .glyphicon-picture:before{content:"î "}#bootstrap-theme .glyphicon-map-marker:before{content:"î¢"}#bootstrap-theme .glyphicon-adjust:before{content:"î£"}#bootstrap-theme .glyphicon-tint:before{content:"î¤"}#bootstrap-theme .glyphicon-edit:before{content:"î¥"}#bootstrap-theme .glyphicon-share:before{content:"î¦"}#bootstrap-theme .glyphicon-check:before{content:"î§"}#bootstrap-theme .glyphicon-move:before{content:"î¨"}#bootstrap-theme .glyphicon-step-backward:before{content:"î©"}#bootstrap-theme .glyphicon-fast-backward:before{content:"î°"}#bootstrap-theme .glyphicon-backward:before{content:"î±"}#bootstrap-theme .glyphicon-play:before{content:"î²"}#bootstrap-theme .glyphicon-pause:before{content:"î³"}#bootstrap-theme .glyphicon-stop:before{content:"î´"}#bootstrap-theme .glyphicon-forward:before{content:"îµ"}#bootstrap-theme .glyphicon-fast-forward:before{content:"î¶"}#bootstrap-theme .glyphicon-step-forward:before{content:"î·"}#bootstrap-theme .glyphicon-eject:before{content:"î¸"}#bootstrap-theme .glyphicon-chevron-left:before{content:"î¹"}#bootstrap-theme .glyphicon-chevron-right:before{content:"î‚€"}#bootstrap-theme .glyphicon-plus-sign:before{content:"î‚"}#bootstrap-theme .glyphicon-minus-sign:before{content:"î‚‚"}#bootstrap-theme .glyphicon-remove-sign:before{content:""}#bootstrap-theme .glyphicon-ok-sign:before{content:"î‚„"}#bootstrap-theme .glyphicon-question-sign:before{content:"î‚…"}#bootstrap-theme .glyphicon-info-sign:before{content:""}#bootstrap-theme .glyphicon-screenshot:before{content:""}#bootstrap-theme .glyphicon-remove-circle:before{content:""}#bootstrap-theme .glyphicon-ok-circle:before{content:""}#bootstrap-theme .glyphicon-ban-circle:before{content:"î‚"}#bootstrap-theme .glyphicon-arrow-left:before{content:"î‚‘"}#bootstrap-theme .glyphicon-arrow-right:before{content:"î‚’"}#bootstrap-theme .glyphicon-arrow-up:before{content:"î‚“"}#bootstrap-theme .glyphicon-arrow-down:before{content:"î‚”"}#bootstrap-theme .glyphicon-share-alt:before{content:"î‚•"}#bootstrap-theme .glyphicon-resize-full:before{content:"î‚–"}#bootstrap-theme .glyphicon-resize-small:before{content:"î‚—"}#bootstrap-theme .glyphicon-exclamation-sign:before{content:"î„"}#bootstrap-theme .glyphicon-gift:before{content:"î„‚"}#bootstrap-theme .glyphicon-leaf:before{content:""}#bootstrap-theme .glyphicon-fire:before{content:"î„„"}#bootstrap-theme .glyphicon-eye-open:before{content:"î„…"}#bootstrap-theme .glyphicon-eye-close:before{content:""}#bootstrap-theme .glyphicon-warning-sign:before{content:""}#bootstrap-theme .glyphicon-plane:before{content:""}#bootstrap-theme .glyphicon-calendar:before{content:""}#bootstrap-theme .glyphicon-random:before{content:"î„"}#bootstrap-theme .glyphicon-comment:before{content:"î„‘"}#bootstrap-theme .glyphicon-magnet:before{content:"î„’"}#bootstrap-theme .glyphicon-chevron-up:before{content:"î„“"}#bootstrap-theme .glyphicon-chevron-down:before{content:"î„”"}#bootstrap-theme .glyphicon-retweet:before{content:"î„•"}#bootstrap-theme .glyphicon-shopping-cart:before{content:"î„–"}#bootstrap-theme .glyphicon-folder-close:before{content:"î„—"}#bootstrap-theme .glyphicon-folder-open:before{content:""}#bootstrap-theme .glyphicon-resize-vertical:before{content:"î„™"}#bootstrap-theme .glyphicon-resize-horizontal:before{content:"î„ "}#bootstrap-theme .glyphicon-hdd:before{content:"î„¡"}#bootstrap-theme .glyphicon-bullhorn:before{content:"î„¢"}#bootstrap-theme .glyphicon-bell:before{content:"î„£"}#bootstrap-theme .glyphicon-certificate:before{content:""}#bootstrap-theme .glyphicon-thumbs-up:before{content:"î„¥"}#bootstrap-theme .glyphicon-thumbs-down:before{content:""}#bootstrap-theme .glyphicon-hand-right:before{content:""}#bootstrap-theme .glyphicon-hand-left:before{content:""}#bootstrap-theme .glyphicon-hand-up:before{content:"î„©"}#bootstrap-theme .glyphicon-hand-down:before{content:"î„°"}#bootstrap-theme .glyphicon-circle-arrow-right:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-left:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-up:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-down:before{content:"î„´"}#bootstrap-theme .glyphicon-globe:before{content:""}#bootstrap-theme .glyphicon-wrench:before{content:""}#bootstrap-theme .glyphicon-tasks:before{content:"î„·"}#bootstrap-theme .glyphicon-filter:before{content:""}#bootstrap-theme .glyphicon-briefcase:before{content:""}#bootstrap-theme .glyphicon-fullscreen:before{content:"î…€"}#bootstrap-theme .glyphicon-dashboard:before{content:"î…"}#bootstrap-theme .glyphicon-paperclip:before{content:"î…‚"}#bootstrap-theme .glyphicon-heart-empty:before{content:"î…ƒ"}#bootstrap-theme .glyphicon-link:before{content:"î…„"}#bootstrap-theme .glyphicon-phone:before{content:"î……"}#bootstrap-theme .glyphicon-pushpin:before{content:"î…†"}#bootstrap-theme .glyphicon-usd:before{content:"î…ˆ"}#bootstrap-theme .glyphicon-gbp:before{content:"î…‰"}#bootstrap-theme .glyphicon-sort:before{content:"î…"}#bootstrap-theme .glyphicon-sort-by-alphabet:before{content:"î…‘"}#bootstrap-theme .glyphicon-sort-by-alphabet-alt:before{content:"î…’"}#bootstrap-theme .glyphicon-sort-by-order:before{content:"î…“"}#bootstrap-theme .glyphicon-sort-by-order-alt:before{content:"î…”"}#bootstrap-theme .glyphicon-sort-by-attributes:before{content:"î…•"}#bootstrap-theme .glyphicon-sort-by-attributes-alt:before{content:"î…–"}#bootstrap-theme .glyphicon-unchecked:before{content:"î…—"}#bootstrap-theme .glyphicon-expand:before{content:"î…˜"}#bootstrap-theme .glyphicon-collapse-down:before{content:"î…™"}#bootstrap-theme .glyphicon-collapse-up:before{content:"î… "}#bootstrap-theme .glyphicon-log-in:before{content:"î…¡"}#bootstrap-theme .glyphicon-flash:before{content:"î…¢"}#bootstrap-theme .glyphicon-log-out:before{content:"î…£"}#bootstrap-theme .glyphicon-new-window:before{content:"î…¤"}#bootstrap-theme .glyphicon-record:before{content:"î…¥"}#bootstrap-theme .glyphicon-save:before{content:"î…¦"}#bootstrap-theme .glyphicon-open:before{content:"î…§"}#bootstrap-theme .glyphicon-saved:before{content:"î…¨"}#bootstrap-theme .glyphicon-import:before{content:"î…©"}#bootstrap-theme .glyphicon-export:before{content:"î…°"}#bootstrap-theme .glyphicon-send:before{content:"î…±"}#bootstrap-theme .glyphicon-floppy-disk:before{content:"î…²"}#bootstrap-theme .glyphicon-floppy-saved:before{content:"î…³"}#bootstrap-theme .glyphicon-floppy-remove:before{content:"î…´"}#bootstrap-theme .glyphicon-floppy-save:before{content:"î…µ"}#bootstrap-theme .glyphicon-floppy-open:before{content:"î…¶"}#bootstrap-theme .glyphicon-credit-card:before{content:"î…·"}#bootstrap-theme .glyphicon-transfer:before{content:"î…¸"}#bootstrap-theme .glyphicon-cutlery:before{content:"î…¹"}#bootstrap-theme .glyphicon-header:before{content:""}#bootstrap-theme .glyphicon-compressed:before{content:"î†"}#bootstrap-theme .glyphicon-earphone:before{content:""}#bootstrap-theme .glyphicon-phone-alt:before{content:""}#bootstrap-theme .glyphicon-tower:before{content:""}#bootstrap-theme .glyphicon-stats:before{content:""}#bootstrap-theme .glyphicon-sd-video:before{content:""}#bootstrap-theme .glyphicon-hd-video:before{content:""}#bootstrap-theme .glyphicon-subtitles:before{content:""}#bootstrap-theme .glyphicon-sound-stereo:before{content:""}#bootstrap-theme .glyphicon-sound-dolby:before{content:"î†"}#bootstrap-theme .glyphicon-sound-5-1:before{content:""}#bootstrap-theme .glyphicon-sound-6-1:before{content:""}#bootstrap-theme .glyphicon-sound-7-1:before{content:""}#bootstrap-theme .glyphicon-copyright-mark:before{content:""}#bootstrap-theme .glyphicon-registration-mark:before{content:""}#bootstrap-theme .glyphicon-cloud-download:before{content:""}#bootstrap-theme .glyphicon-cloud-upload:before{content:""}#bootstrap-theme .glyphicon-tree-conifer:before{content:""}#bootstrap-theme .glyphicon-tree-deciduous:before{content:""}#bootstrap-theme .glyphicon-cd:before{content:"îˆ"}#bootstrap-theme .glyphicon-save-file:before{content:""}#bootstrap-theme .glyphicon-open-file:before{content:""}#bootstrap-theme .glyphicon-level-up:before{content:""}#bootstrap-theme .glyphicon-copy:before{content:""}#bootstrap-theme .glyphicon-paste:before{content:""}#bootstrap-theme .glyphicon-alert:before{content:""}#bootstrap-theme .glyphicon-equalizer:before{content:"îˆ"}#bootstrap-theme .glyphicon-king:before{content:""}#bootstrap-theme .glyphicon-queen:before{content:""}#bootstrap-theme .glyphicon-pawn:before{content:""}#bootstrap-theme .glyphicon-bishop:before{content:""}#bootstrap-theme .glyphicon-knight:before{content:""}#bootstrap-theme .glyphicon-baby-formula:before{content:""}#bootstrap-theme .glyphicon-tent:before{content:"⛺"}#bootstrap-theme .glyphicon-blackboard:before{content:""}#bootstrap-theme .glyphicon-bed:before{content:""}#bootstrap-theme .glyphicon-apple:before{content:""}#bootstrap-theme .glyphicon-erase:before{content:""}#bootstrap-theme .glyphicon-hourglass:before{content:"⌛"}#bootstrap-theme .glyphicon-lamp:before{content:""}#bootstrap-theme .glyphicon-duplicate:before{content:""}#bootstrap-theme .glyphicon-piggy-bank:before{content:""}#bootstrap-theme .glyphicon-scissors:before{content:""}#bootstrap-theme .glyphicon-bitcoin:before{content:""}#bootstrap-theme .glyphicon-btc:before{content:""}#bootstrap-theme .glyphicon-xbt:before{content:""}#bootstrap-theme .glyphicon-yen:before{content:"Â¥"}#bootstrap-theme .glyphicon-jpy:before{content:"Â¥"}#bootstrap-theme .glyphicon-ruble:before{content:"₽"}#bootstrap-theme .glyphicon-rub:before{content:"₽"}#bootstrap-theme .glyphicon-scale:before{content:""}#bootstrap-theme .glyphicon-ice-lolly:before{content:""}#bootstrap-theme .glyphicon-ice-lolly-tasted:before{content:""}#bootstrap-theme .glyphicon-education:before{content:""}#bootstrap-theme .glyphicon-option-horizontal:before{content:""}#bootstrap-theme .glyphicon-option-vertical:before{content:""}#bootstrap-theme .glyphicon-menu-hamburger:before{content:""}#bootstrap-theme .glyphicon-modal-window:before{content:""}#bootstrap-theme .glyphicon-oil:before{content:""}#bootstrap-theme .glyphicon-grain:before{content:""}#bootstrap-theme .glyphicon-sunglasses:before{content:""}#bootstrap-theme .glyphicon-text-size:before{content:"î‰"}#bootstrap-theme .glyphicon-text-color:before{content:""}#bootstrap-theme .glyphicon-text-background:before{content:""}#bootstrap-theme .glyphicon-object-align-top:before{content:""}#bootstrap-theme .glyphicon-object-align-bottom:before{content:""}#bootstrap-theme .glyphicon-object-align-horizontal:before{content:""}#bootstrap-theme .glyphicon-object-align-left:before{content:""}#bootstrap-theme .glyphicon-object-align-vertical:before{content:""}#bootstrap-theme .glyphicon-object-align-right:before{content:""}#bootstrap-theme .glyphicon-triangle-right:before{content:"î‰"}#bootstrap-theme .glyphicon-triangle-left:before{content:""}#bootstrap-theme .glyphicon-triangle-bottom:before{content:""}#bootstrap-theme .glyphicon-triangle-top:before{content:""}#bootstrap-theme .glyphicon-console:before{content:""}#bootstrap-theme .glyphicon-superscript:before{content:""}#bootstrap-theme .glyphicon-subscript:before{content:""}#bootstrap-theme .glyphicon-menu-left:before{content:""}#bootstrap-theme .glyphicon-menu-right:before{content:""}#bootstrap-theme .glyphicon-menu-down:before{content:""}#bootstrap-theme .glyphicon-menu-up:before{content:"î‰ "}#bootstrap-theme *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme *:before,#bootstrap-theme *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}#bootstrap-theme body{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff}#bootstrap-theme input,#bootstrap-theme button,#bootstrap-theme select,#bootstrap-theme textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bootstrap-theme a{color:#2786c2;text-decoration:none}#bootstrap-theme a:hover,#bootstrap-theme a:focus{color:#1a5a82;text-decoration:underline}#bootstrap-theme a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme figure{margin:0}#bootstrap-theme img{vertical-align:middle}#bootstrap-theme .img-responsive{display:block;max-width:100%;height:auto}#bootstrap-theme .img-rounded{border-radius:6px}#bootstrap-theme .img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}#bootstrap-theme .img-circle{border-radius:50%}#bootstrap-theme hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}#bootstrap-theme .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bootstrap-theme .sr-only-focusable:active,#bootstrap-theme .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bootstrap-theme [role=button]{cursor:pointer}#bootstrap-theme h1,#bootstrap-theme h2,#bootstrap-theme h3,#bootstrap-theme h4,#bootstrap-theme h5,#bootstrap-theme h6,#bootstrap-theme .h1,#bootstrap-theme .h2,#bootstrap-theme .h3,#bootstrap-theme .h4,#bootstrap-theme .h5,#bootstrap-theme .h6{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:#000}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-weight:400;line-height:1;color:#999}#bootstrap-theme h1,#bootstrap-theme .h1,#bootstrap-theme h2,#bootstrap-theme .h2,#bootstrap-theme h3,#bootstrap-theme .h3{margin-top:20px;margin-bottom:10px}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small{font-size:65%}#bootstrap-theme h4,#bootstrap-theme .h4,#bootstrap-theme h5,#bootstrap-theme .h5,#bootstrap-theme h6,#bootstrap-theme .h6{margin-top:10px;margin-bottom:10px}#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-size:75%}#bootstrap-theme h1,#bootstrap-theme .h1{font-size:36px}#bootstrap-theme h2,#bootstrap-theme .h2{font-size:30px}#bootstrap-theme h3,#bootstrap-theme .h3{font-size:24px}#bootstrap-theme h4,#bootstrap-theme .h4{font-size:18px}#bootstrap-theme h5,#bootstrap-theme .h5{font-size:14px}#bootstrap-theme h6,#bootstrap-theme .h6{font-size:12px}#bootstrap-theme p{margin:0 0 10px}#bootstrap-theme .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){#bootstrap-theme .lead{font-size:21px}}#bootstrap-theme small,#bootstrap-theme .small{font-size:85%}#bootstrap-theme mark,#bootstrap-theme .mark{padding:.2em;background-color:#fcf8e3}#bootstrap-theme .text-left{text-align:left}#bootstrap-theme .text-right{text-align:right}#bootstrap-theme .text-center{text-align:center}#bootstrap-theme .text-justify{text-align:justify}#bootstrap-theme .text-nowrap{white-space:nowrap}#bootstrap-theme .text-lowercase{text-transform:lowercase}#bootstrap-theme .text-uppercase,#bootstrap-theme .initialism{text-transform:uppercase}#bootstrap-theme .text-capitalize{text-transform:capitalize}#bootstrap-theme .text-muted{color:#999}#bootstrap-theme .text-primary{color:#000}#bootstrap-theme a.text-primary:hover,#bootstrap-theme a.text-primary:focus{color:#000}#bootstrap-theme .text-success{color:#468847}#bootstrap-theme a.text-success:hover,#bootstrap-theme a.text-success:focus{color:#356635}#bootstrap-theme .text-info{color:#3a87ad}#bootstrap-theme a.text-info:hover,#bootstrap-theme a.text-info:focus{color:#2d6987}#bootstrap-theme .text-warning{color:#c09853}#bootstrap-theme a.text-warning:hover,#bootstrap-theme a.text-warning:focus{color:#a47e3c}#bootstrap-theme .text-danger{color:#b94a48}#bootstrap-theme a.text-danger:hover,#bootstrap-theme a.text-danger:focus{color:#953b39}#bootstrap-theme .bg-primary{color:#fff}#bootstrap-theme .bg-primary{background-color:#000}#bootstrap-theme a.bg-primary:hover,#bootstrap-theme a.bg-primary:focus{background-color:#000}#bootstrap-theme .bg-success{background-color:#dff0d8}#bootstrap-theme a.bg-success:hover,#bootstrap-theme a.bg-success:focus{background-color:#c1e2b3}#bootstrap-theme .bg-info{background-color:#d9edf7}#bootstrap-theme a.bg-info:hover,#bootstrap-theme a.bg-info:focus{background-color:#afd9ee}#bootstrap-theme .bg-warning{background-color:#fcf8e3}#bootstrap-theme a.bg-warning:hover,#bootstrap-theme a.bg-warning:focus{background-color:#f7ecb5}#bootstrap-theme .bg-danger{background-color:#f2dede}#bootstrap-theme a.bg-danger:hover,#bootstrap-theme a.bg-danger:focus{background-color:#e4b9b9}#bootstrap-theme .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}#bootstrap-theme ul,#bootstrap-theme ol{margin-top:0;margin-bottom:10px}#bootstrap-theme ul ul,#bootstrap-theme ul ol,#bootstrap-theme ol ul,#bootstrap-theme ol ol{margin-bottom:0}#bootstrap-theme .list-unstyled{padding-left:0;list-style:none}#bootstrap-theme .list-inline{padding-left:0;list-style:none;margin-left:-5px}#bootstrap-theme .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bootstrap-theme dl{margin-top:0;margin-bottom:20px}#bootstrap-theme dt,#bootstrap-theme dd{line-height:1.428571429}#bootstrap-theme dt{font-weight:700}#bootstrap-theme dd{margin-left:0}#bootstrap-theme .dl-horizontal dd:before,#bootstrap-theme .dl-horizontal dd:after{display:table;content:" "}#bootstrap-theme .dl-horizontal dd:after{clear:both}@media (min-width:768px){#bootstrap-theme .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bootstrap-theme .dl-horizontal dd{margin-left:180px}}#bootstrap-theme abbr[title],#bootstrap-theme abbr[data-original-title]{cursor:help}#bootstrap-theme .initialism{font-size:90%}#bootstrap-theme blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}#bootstrap-theme blockquote p:last-child,#bootstrap-theme blockquote ul:last-child,#bootstrap-theme blockquote ol:last-child{margin-bottom:0}#bootstrap-theme blockquote footer,#bootstrap-theme blockquote small,#bootstrap-theme blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}#bootstrap-theme blockquote footer:before,#bootstrap-theme blockquote small:before,#bootstrap-theme blockquote .small:before{content:"— "}#bootstrap-theme .blockquote-reverse,#bootstrap-theme blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}#bootstrap-theme .blockquote-reverse footer:before,#bootstrap-theme .blockquote-reverse small:before,#bootstrap-theme .blockquote-reverse .small:before,#bootstrap-theme blockquote.pull-right footer:before,#bootstrap-theme blockquote.pull-right small:before,#bootstrap-theme blockquote.pull-right .small:before{content:""}#bootstrap-theme .blockquote-reverse footer:after,#bootstrap-theme .blockquote-reverse small:after,#bootstrap-theme .blockquote-reverse .small:after,#bootstrap-theme blockquote.pull-right footer:after,#bootstrap-theme blockquote.pull-right small:after,#bootstrap-theme blockquote.pull-right .small:after{content:" —"}#bootstrap-theme address{margin-bottom:20px;font-style:normal;line-height:1.428571429}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}#bootstrap-theme code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bootstrap-theme kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bootstrap-theme kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}#bootstrap-theme pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;-ms-word-break:break-all;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bootstrap-theme pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bootstrap-theme .pre-scrollable{max-height:340px;overflow-y:scroll}#bootstrap-theme .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container:before,#bootstrap-theme .container:after{display:table;content:" "}#bootstrap-theme .container:after{clear:both}@media (min-width:768px){#bootstrap-theme .container{width:750px}}@media (min-width:992px){#bootstrap-theme .container{width:970px}}@media (min-width:1200px){#bootstrap-theme .container{width:1170px}}#bootstrap-theme .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container-fluid:before,#bootstrap-theme .container-fluid:after{display:table;content:" "}#bootstrap-theme .container-fluid:after{clear:both}#bootstrap-theme .row{margin-right:-15px;margin-left:-15px}#bootstrap-theme .row:before,#bootstrap-theme .row:after{display:table;content:" "}#bootstrap-theme .row:after{clear:both}#bootstrap-theme .row-no-gutters{margin-right:0;margin-left:0}#bootstrap-theme .row-no-gutters [class*=col-]{padding-right:0;padding-left:0}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-sm-1,#bootstrap-theme .col-md-1,#bootstrap-theme .col-lg-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-md-2,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-md-3,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-md-4,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-md-5,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-md-6,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-md-7,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-md-8,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-md-9,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-md-10,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-md-11,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-xs-12,#bootstrap-theme .col-sm-12,#bootstrap-theme .col-md-12,#bootstrap-theme .col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-xs-12{float:left}#bootstrap-theme .col-xs-1{width:8.3333333333%}#bootstrap-theme .col-xs-2{width:16.6666666667%}#bootstrap-theme .col-xs-3{width:25%}#bootstrap-theme .col-xs-4{width:33.3333333333%}#bootstrap-theme .col-xs-5{width:41.6666666667%}#bootstrap-theme .col-xs-6{width:50%}#bootstrap-theme .col-xs-7{width:58.3333333333%}#bootstrap-theme .col-xs-8{width:66.6666666667%}#bootstrap-theme .col-xs-9{width:75%}#bootstrap-theme .col-xs-10{width:83.3333333333%}#bootstrap-theme .col-xs-11{width:91.6666666667%}#bootstrap-theme .col-xs-12{width:100%}#bootstrap-theme .col-xs-pull-0{right:auto}#bootstrap-theme .col-xs-pull-1{right:8.3333333333%}#bootstrap-theme .col-xs-pull-2{right:16.6666666667%}#bootstrap-theme .col-xs-pull-3{right:25%}#bootstrap-theme .col-xs-pull-4{right:33.3333333333%}#bootstrap-theme .col-xs-pull-5{right:41.6666666667%}#bootstrap-theme .col-xs-pull-6{right:50%}#bootstrap-theme .col-xs-pull-7{right:58.3333333333%}#bootstrap-theme .col-xs-pull-8{right:66.6666666667%}#bootstrap-theme .col-xs-pull-9{right:75%}#bootstrap-theme .col-xs-pull-10{right:83.3333333333%}#bootstrap-theme .col-xs-pull-11{right:91.6666666667%}#bootstrap-theme .col-xs-pull-12{right:100%}#bootstrap-theme .col-xs-push-0{left:auto}#bootstrap-theme .col-xs-push-1{left:8.3333333333%}#bootstrap-theme .col-xs-push-2{left:16.6666666667%}#bootstrap-theme .col-xs-push-3{left:25%}#bootstrap-theme .col-xs-push-4{left:33.3333333333%}#bootstrap-theme .col-xs-push-5{left:41.6666666667%}#bootstrap-theme .col-xs-push-6{left:50%}#bootstrap-theme .col-xs-push-7{left:58.3333333333%}#bootstrap-theme .col-xs-push-8{left:66.6666666667%}#bootstrap-theme .col-xs-push-9{left:75%}#bootstrap-theme .col-xs-push-10{left:83.3333333333%}#bootstrap-theme .col-xs-push-11{left:91.6666666667%}#bootstrap-theme .col-xs-push-12{left:100%}#bootstrap-theme .col-xs-offset-0{margin-left:0}#bootstrap-theme .col-xs-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-xs-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-xs-offset-3{margin-left:25%}#bootstrap-theme .col-xs-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-xs-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-xs-offset-6{margin-left:50%}#bootstrap-theme .col-xs-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-xs-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-xs-offset-9{margin-left:75%}#bootstrap-theme .col-xs-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-xs-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-xs-offset-12{margin-left:100%}@media (min-width:768px){#bootstrap-theme .col-sm-1,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-sm-12{float:left}#bootstrap-theme .col-sm-1{width:8.3333333333%}#bootstrap-theme .col-sm-2{width:16.6666666667%}#bootstrap-theme .col-sm-3{width:25%}#bootstrap-theme .col-sm-4{width:33.3333333333%}#bootstrap-theme .col-sm-5{width:41.6666666667%}#bootstrap-theme .col-sm-6{width:50%}#bootstrap-theme .col-sm-7{width:58.3333333333%}#bootstrap-theme .col-sm-8{width:66.6666666667%}#bootstrap-theme .col-sm-9{width:75%}#bootstrap-theme .col-sm-10{width:83.3333333333%}#bootstrap-theme .col-sm-11{width:91.6666666667%}#bootstrap-theme .col-sm-12{width:100%}#bootstrap-theme .col-sm-pull-0{right:auto}#bootstrap-theme .col-sm-pull-1{right:8.3333333333%}#bootstrap-theme .col-sm-pull-2{right:16.6666666667%}#bootstrap-theme .col-sm-pull-3{right:25%}#bootstrap-theme .col-sm-pull-4{right:33.3333333333%}#bootstrap-theme .col-sm-pull-5{right:41.6666666667%}#bootstrap-theme .col-sm-pull-6{right:50%}#bootstrap-theme .col-sm-pull-7{right:58.3333333333%}#bootstrap-theme .col-sm-pull-8{right:66.6666666667%}#bootstrap-theme .col-sm-pull-9{right:75%}#bootstrap-theme .col-sm-pull-10{right:83.3333333333%}#bootstrap-theme .col-sm-pull-11{right:91.6666666667%}#bootstrap-theme .col-sm-pull-12{right:100%}#bootstrap-theme .col-sm-push-0{left:auto}#bootstrap-theme .col-sm-push-1{left:8.3333333333%}#bootstrap-theme .col-sm-push-2{left:16.6666666667%}#bootstrap-theme .col-sm-push-3{left:25%}#bootstrap-theme .col-sm-push-4{left:33.3333333333%}#bootstrap-theme .col-sm-push-5{left:41.6666666667%}#bootstrap-theme .col-sm-push-6{left:50%}#bootstrap-theme .col-sm-push-7{left:58.3333333333%}#bootstrap-theme .col-sm-push-8{left:66.6666666667%}#bootstrap-theme .col-sm-push-9{left:75%}#bootstrap-theme .col-sm-push-10{left:83.3333333333%}#bootstrap-theme .col-sm-push-11{left:91.6666666667%}#bootstrap-theme .col-sm-push-12{left:100%}#bootstrap-theme .col-sm-offset-0{margin-left:0}#bootstrap-theme .col-sm-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-sm-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-sm-offset-3{margin-left:25%}#bootstrap-theme .col-sm-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-sm-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-sm-offset-6{margin-left:50%}#bootstrap-theme .col-sm-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-sm-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-sm-offset-9{margin-left:75%}#bootstrap-theme .col-sm-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-sm-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-sm-offset-12{margin-left:100%}}@media (min-width:992px){#bootstrap-theme .col-md-1,#bootstrap-theme .col-md-2,#bootstrap-theme .col-md-3,#bootstrap-theme .col-md-4,#bootstrap-theme .col-md-5,#bootstrap-theme .col-md-6,#bootstrap-theme .col-md-7,#bootstrap-theme .col-md-8,#bootstrap-theme .col-md-9,#bootstrap-theme .col-md-10,#bootstrap-theme .col-md-11,#bootstrap-theme .col-md-12{float:left}#bootstrap-theme .col-md-1{width:8.3333333333%}#bootstrap-theme .col-md-2{width:16.6666666667%}#bootstrap-theme .col-md-3{width:25%}#bootstrap-theme .col-md-4{width:33.3333333333%}#bootstrap-theme .col-md-5{width:41.6666666667%}#bootstrap-theme .col-md-6{width:50%}#bootstrap-theme .col-md-7{width:58.3333333333%}#bootstrap-theme .col-md-8{width:66.6666666667%}#bootstrap-theme .col-md-9{width:75%}#bootstrap-theme .col-md-10{width:83.3333333333%}#bootstrap-theme .col-md-11{width:91.6666666667%}#bootstrap-theme .col-md-12{width:100%}#bootstrap-theme .col-md-pull-0{right:auto}#bootstrap-theme .col-md-pull-1{right:8.3333333333%}#bootstrap-theme .col-md-pull-2{right:16.6666666667%}#bootstrap-theme .col-md-pull-3{right:25%}#bootstrap-theme .col-md-pull-4{right:33.3333333333%}#bootstrap-theme .col-md-pull-5{right:41.6666666667%}#bootstrap-theme .col-md-pull-6{right:50%}#bootstrap-theme .col-md-pull-7{right:58.3333333333%}#bootstrap-theme .col-md-pull-8{right:66.6666666667%}#bootstrap-theme .col-md-pull-9{right:75%}#bootstrap-theme .col-md-pull-10{right:83.3333333333%}#bootstrap-theme .col-md-pull-11{right:91.6666666667%}#bootstrap-theme .col-md-pull-12{right:100%}#bootstrap-theme .col-md-push-0{left:auto}#bootstrap-theme .col-md-push-1{left:8.3333333333%}#bootstrap-theme .col-md-push-2{left:16.6666666667%}#bootstrap-theme .col-md-push-3{left:25%}#bootstrap-theme .col-md-push-4{left:33.3333333333%}#bootstrap-theme .col-md-push-5{left:41.6666666667%}#bootstrap-theme .col-md-push-6{left:50%}#bootstrap-theme .col-md-push-7{left:58.3333333333%}#bootstrap-theme .col-md-push-8{left:66.6666666667%}#bootstrap-theme .col-md-push-9{left:75%}#bootstrap-theme .col-md-push-10{left:83.3333333333%}#bootstrap-theme .col-md-push-11{left:91.6666666667%}#bootstrap-theme .col-md-push-12{left:100%}#bootstrap-theme .col-md-offset-0{margin-left:0}#bootstrap-theme .col-md-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-md-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-md-offset-3{margin-left:25%}#bootstrap-theme .col-md-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-md-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-md-offset-6{margin-left:50%}#bootstrap-theme .col-md-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-md-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-md-offset-9{margin-left:75%}#bootstrap-theme .col-md-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-md-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-md-offset-12{margin-left:100%}}@media (min-width:1200px){#bootstrap-theme .col-lg-1,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-lg-12{float:left}#bootstrap-theme .col-lg-1{width:8.3333333333%}#bootstrap-theme .col-lg-2{width:16.6666666667%}#bootstrap-theme .col-lg-3{width:25%}#bootstrap-theme .col-lg-4{width:33.3333333333%}#bootstrap-theme .col-lg-5{width:41.6666666667%}#bootstrap-theme .col-lg-6{width:50%}#bootstrap-theme .col-lg-7{width:58.3333333333%}#bootstrap-theme .col-lg-8{width:66.6666666667%}#bootstrap-theme .col-lg-9{width:75%}#bootstrap-theme .col-lg-10{width:83.3333333333%}#bootstrap-theme .col-lg-11{width:91.6666666667%}#bootstrap-theme .col-lg-12{width:100%}#bootstrap-theme .col-lg-pull-0{right:auto}#bootstrap-theme .col-lg-pull-1{right:8.3333333333%}#bootstrap-theme .col-lg-pull-2{right:16.6666666667%}#bootstrap-theme .col-lg-pull-3{right:25%}#bootstrap-theme .col-lg-pull-4{right:33.3333333333%}#bootstrap-theme .col-lg-pull-5{right:41.6666666667%}#bootstrap-theme .col-lg-pull-6{right:50%}#bootstrap-theme .col-lg-pull-7{right:58.3333333333%}#bootstrap-theme .col-lg-pull-8{right:66.6666666667%}#bootstrap-theme .col-lg-pull-9{right:75%}#bootstrap-theme .col-lg-pull-10{right:83.3333333333%}#bootstrap-theme .col-lg-pull-11{right:91.6666666667%}#bootstrap-theme .col-lg-pull-12{right:100%}#bootstrap-theme .col-lg-push-0{left:auto}#bootstrap-theme .col-lg-push-1{left:8.3333333333%}#bootstrap-theme .col-lg-push-2{left:16.6666666667%}#bootstrap-theme .col-lg-push-3{left:25%}#bootstrap-theme .col-lg-push-4{left:33.3333333333%}#bootstrap-theme .col-lg-push-5{left:41.6666666667%}#bootstrap-theme .col-lg-push-6{left:50%}#bootstrap-theme .col-lg-push-7{left:58.3333333333%}#bootstrap-theme .col-lg-push-8{left:66.6666666667%}#bootstrap-theme .col-lg-push-9{left:75%}#bootstrap-theme .col-lg-push-10{left:83.3333333333%}#bootstrap-theme .col-lg-push-11{left:91.6666666667%}#bootstrap-theme .col-lg-push-12{left:100%}#bootstrap-theme .col-lg-offset-0{margin-left:0}#bootstrap-theme .col-lg-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-lg-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-lg-offset-3{margin-left:25%}#bootstrap-theme .col-lg-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-lg-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-lg-offset-6{margin-left:50%}#bootstrap-theme .col-lg-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-lg-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-lg-offset-9{margin-left:75%}#bootstrap-theme .col-lg-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-lg-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-lg-offset-12{margin-left:100%}}#bootstrap-theme table{background-color:transparent}#bootstrap-theme table col[class*=col-]{position:static;display:table-column;float:none}#bootstrap-theme table td[class*=col-],#bootstrap-theme table th[class*=col-]{position:static;display:table-cell;float:none}#bootstrap-theme caption{padding-top:8px;padding-bottom:8px;color:#999;text-align:left}#bootstrap-theme th{text-align:left}#bootstrap-theme .table{width:100%;max-width:100%;margin-bottom:20px}#bootstrap-theme .table>thead>tr>th,#bootstrap-theme .table>thead>tr>td,#bootstrap-theme .table>tbody>tr>th,#bootstrap-theme .table>tbody>tr>td,#bootstrap-theme .table>tfoot>tr>th,#bootstrap-theme .table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}#bootstrap-theme .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}#bootstrap-theme .table>caption+thead>tr:first-child>th,#bootstrap-theme .table>caption+thead>tr:first-child>td,#bootstrap-theme .table>colgroup+thead>tr:first-child>th,#bootstrap-theme .table>colgroup+thead>tr:first-child>td,#bootstrap-theme .table>thead:first-child>tr:first-child>th,#bootstrap-theme .table>thead:first-child>tr:first-child>td{border-top:0}#bootstrap-theme .table>tbody+tbody{border-top:2px solid #ddd}#bootstrap-theme .table .table{background-color:#fff}#bootstrap-theme .table-condensed>thead>tr>th,#bootstrap-theme .table-condensed>thead>tr>td,#bootstrap-theme .table-condensed>tbody>tr>th,#bootstrap-theme .table-condensed>tbody>tr>td,#bootstrap-theme .table-condensed>tfoot>tr>th,#bootstrap-theme .table-condensed>tfoot>tr>td{padding:5px}#bootstrap-theme .table-bordered{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td,#bootstrap-theme .table-bordered>tbody>tr>th,#bootstrap-theme .table-bordered>tbody>tr>td,#bootstrap-theme .table-bordered>tfoot>tr>th,#bootstrap-theme .table-bordered>tfoot>tr>td{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td{border-bottom-width:2px}#bootstrap-theme .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bootstrap-theme .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bootstrap-theme .table>thead>tr>td.active,#bootstrap-theme .table>thead>tr>th.active,#bootstrap-theme .table>thead>tr.active>td,#bootstrap-theme .table>thead>tr.active>th,#bootstrap-theme .table>tbody>tr>td.active,#bootstrap-theme .table>tbody>tr>th.active,#bootstrap-theme .table>tbody>tr.active>td,#bootstrap-theme .table>tbody>tr.active>th,#bootstrap-theme .table>tfoot>tr>td.active,#bootstrap-theme .table>tfoot>tr>th.active,#bootstrap-theme .table>tfoot>tr.active>td,#bootstrap-theme .table>tfoot>tr.active>th{background-color:#f5f5f5}#bootstrap-theme .table-hover>tbody>tr>td.active:hover,#bootstrap-theme .table-hover>tbody>tr>th.active:hover,#bootstrap-theme .table-hover>tbody>tr.active:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.active,#bootstrap-theme .table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}#bootstrap-theme .table>thead>tr>td.success,#bootstrap-theme .table>thead>tr>th.success,#bootstrap-theme .table>thead>tr.success>td,#bootstrap-theme .table>thead>tr.success>th,#bootstrap-theme .table>tbody>tr>td.success,#bootstrap-theme .table>tbody>tr>th.success,#bootstrap-theme .table>tbody>tr.success>td,#bootstrap-theme .table>tbody>tr.success>th,#bootstrap-theme .table>tfoot>tr>td.success,#bootstrap-theme .table>tfoot>tr>th.success,#bootstrap-theme .table>tfoot>tr.success>td,#bootstrap-theme .table>tfoot>tr.success>th{background-color:#dff0d8}#bootstrap-theme .table-hover>tbody>tr>td.success:hover,#bootstrap-theme .table-hover>tbody>tr>th.success:hover,#bootstrap-theme .table-hover>tbody>tr.success:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.success,#bootstrap-theme .table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}#bootstrap-theme .table>thead>tr>td.info,#bootstrap-theme .table>thead>tr>th.info,#bootstrap-theme .table>thead>tr.info>td,#bootstrap-theme .table>thead>tr.info>th,#bootstrap-theme .table>tbody>tr>td.info,#bootstrap-theme .table>tbody>tr>th.info,#bootstrap-theme .table>tbody>tr.info>td,#bootstrap-theme .table>tbody>tr.info>th,#bootstrap-theme .table>tfoot>tr>td.info,#bootstrap-theme .table>tfoot>tr>th.info,#bootstrap-theme .table>tfoot>tr.info>td,#bootstrap-theme .table>tfoot>tr.info>th{background-color:#d9edf7}#bootstrap-theme .table-hover>tbody>tr>td.info:hover,#bootstrap-theme .table-hover>tbody>tr>th.info:hover,#bootstrap-theme .table-hover>tbody>tr.info:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.info,#bootstrap-theme .table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}#bootstrap-theme .table>thead>tr>td.warning,#bootstrap-theme .table>thead>tr>th.warning,#bootstrap-theme .table>thead>tr.warning>td,#bootstrap-theme .table>thead>tr.warning>th,#bootstrap-theme .table>tbody>tr>td.warning,#bootstrap-theme .table>tbody>tr>th.warning,#bootstrap-theme .table>tbody>tr.warning>td,#bootstrap-theme .table>tbody>tr.warning>th,#bootstrap-theme .table>tfoot>tr>td.warning,#bootstrap-theme .table>tfoot>tr>th.warning,#bootstrap-theme .table>tfoot>tr.warning>td,#bootstrap-theme .table>tfoot>tr.warning>th{background-color:#fcf8e3}#bootstrap-theme .table-hover>tbody>tr>td.warning:hover,#bootstrap-theme .table-hover>tbody>tr>th.warning:hover,#bootstrap-theme .table-hover>tbody>tr.warning:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.warning,#bootstrap-theme .table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}#bootstrap-theme .table>thead>tr>td.danger,#bootstrap-theme .table>thead>tr>th.danger,#bootstrap-theme .table>thead>tr.danger>td,#bootstrap-theme .table>thead>tr.danger>th,#bootstrap-theme .table>tbody>tr>td.danger,#bootstrap-theme .table>tbody>tr>th.danger,#bootstrap-theme .table>tbody>tr.danger>td,#bootstrap-theme .table>tbody>tr.danger>th,#bootstrap-theme .table>tfoot>tr>td.danger,#bootstrap-theme .table>tfoot>tr>th.danger,#bootstrap-theme .table>tfoot>tr.danger>td,#bootstrap-theme .table>tfoot>tr.danger>th{background-color:#f2dede}#bootstrap-theme .table-hover>tbody>tr>td.danger:hover,#bootstrap-theme .table-hover>tbody>tr>th.danger:hover,#bootstrap-theme .table-hover>tbody>tr.danger:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.danger,#bootstrap-theme .table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}#bootstrap-theme .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bootstrap-theme .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}#bootstrap-theme .table-responsive>.table{margin-bottom:0}#bootstrap-theme .table-responsive>.table>thead>tr>th,#bootstrap-theme .table-responsive>.table>thead>tr>td,#bootstrap-theme .table-responsive>.table>tbody>tr>th,#bootstrap-theme .table-responsive>.table>tbody>tr>td,#bootstrap-theme .table-responsive>.table>tfoot>tr>th,#bootstrap-theme .table-responsive>.table>tfoot>tr>td{white-space:nowrap}#bootstrap-theme .table-responsive>.table-bordered{border:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}#bootstrap-theme fieldset{min-width:0;padding:0;margin:0;border:0}#bootstrap-theme legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555;border:0;border-bottom:1px solid #e5e5e5}#bootstrap-theme label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}#bootstrap-theme input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}#bootstrap-theme input[type=radio][disabled],#bootstrap-theme input[type=radio].disabled,fieldset[disabled] #bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox][disabled],#bootstrap-theme input[type=checkbox].disabled,fieldset[disabled] #bootstrap-theme input[type=checkbox]{cursor:not-allowed}#bootstrap-theme input[type=file]{display:block}#bootstrap-theme input[type=range]{display:block;width:100%}#bootstrap-theme select[multiple],#bootstrap-theme select[size]{height:auto}#bootstrap-theme input[type=file]:focus,#bootstrap-theme input[type=radio]:focus,#bootstrap-theme input[type=checkbox]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme output{display:block;padding-top:5px;font-size:14px;line-height:1.428571429;color:#555}#bootstrap-theme .form-control{display:block;width:100%;height:30px;padding:4px 8px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bootstrap-theme .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#bootstrap-theme .form-control::-moz-placeholder{color:#999;opacity:1}#bootstrap-theme .form-control:-ms-input-placeholder{color:#999}#bootstrap-theme .form-control::-webkit-input-placeholder{color:#999}#bootstrap-theme .form-control::-ms-expand{background-color:transparent;border:0}#bootstrap-theme .form-control[disabled],#bootstrap-theme .form-control[readonly],fieldset[disabled] #bootstrap-theme .form-control{background-color:#eee;opacity:1}#bootstrap-theme .form-control[disabled],fieldset[disabled] #bootstrap-theme .form-control{cursor:not-allowed}#bootstrap-theme textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){#bootstrap-theme input[type=date].form-control,#bootstrap-theme input[type=time].form-control,#bootstrap-theme input[type=datetime-local].form-control,#bootstrap-theme input[type=month].form-control{line-height:30px}#bootstrap-theme input[type=date].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=date],#bootstrap-theme .input-group-sm>input.input-group-addon[type=date],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=date],.input-group-sm #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=time],#bootstrap-theme .input-group-sm>input.input-group-addon[type=time],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=time],.input-group-sm #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=datetime-local],#bootstrap-theme .input-group-sm>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=datetime-local],.input-group-sm #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=month],#bootstrap-theme .input-group-sm>input.input-group-addon[type=month],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=month],.input-group-sm #bootstrap-theme input[type=month]{line-height:30px}#bootstrap-theme input[type=date].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=date],#bootstrap-theme .input-group-lg>input.input-group-addon[type=date],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=date],.input-group-lg #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=time],#bootstrap-theme .input-group-lg>input.input-group-addon[type=time],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=time],.input-group-lg #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=datetime-local],#bootstrap-theme .input-group-lg>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=datetime-local],.input-group-lg #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=month],#bootstrap-theme .input-group-lg>input.input-group-addon[type=month],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=month],.input-group-lg #bootstrap-theme input[type=month]{line-height:54px}}#bootstrap-theme .form-group{margin-bottom:15px}#bootstrap-theme .radio,#bootstrap-theme .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}#bootstrap-theme .radio.disabled label,fieldset[disabled] #bootstrap-theme .radio label,#bootstrap-theme .checkbox.disabled label,fieldset[disabled] #bootstrap-theme .checkbox label{cursor:not-allowed}#bootstrap-theme .radio label,#bootstrap-theme .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bootstrap-theme .radio input[type=radio],#bootstrap-theme .radio-inline input[type=radio],#bootstrap-theme .checkbox input[type=checkbox],#bootstrap-theme .checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}#bootstrap-theme .radio+.radio,#bootstrap-theme .checkbox+.checkbox{margin-top:-5px}#bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bootstrap-theme .radio-inline.disabled,fieldset[disabled] #bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline.disabled,fieldset[disabled] #bootstrap-theme .checkbox-inline{cursor:not-allowed}#bootstrap-theme .radio-inline+.radio-inline,#bootstrap-theme .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}#bootstrap-theme .form-control-static{min-height:34px;padding-top:5px;padding-bottom:5px;margin-bottom:0}#bootstrap-theme .form-control-static.input-lg,#bootstrap-theme .input-group-lg>.form-control-static.form-control,#bootstrap-theme .input-group-lg>.form-control-static.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.form-control-static.btn,#bootstrap-theme .form-control-static.input-sm,#bootstrap-theme .input-group-sm>.form-control-static.form-control,#bootstrap-theme .input-group-sm>.form-control-static.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}#bootstrap-theme .input-sm,#bootstrap-theme .input-group-sm>.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme select.input-sm,#bootstrap-theme .input-group-sm>select.form-control,#bootstrap-theme .input-group-sm>select.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}#bootstrap-theme textarea.input-sm,#bootstrap-theme .input-group-sm>textarea.form-control,#bootstrap-theme .input-group-sm>textarea.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-sm,#bootstrap-theme .input-group-sm>select.form-control[multiple],#bootstrap-theme .input-group-sm>select.input-group-addon[multiple],#bootstrap-theme .input-group-sm>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .form-group-sm select.form-control{height:30px;line-height:30px}#bootstrap-theme .form-group-sm textarea.form-control,#bootstrap-theme .form-group-sm select[multiple].form-control{height:auto}#bootstrap-theme .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .input-lg,#bootstrap-theme .input-group-lg>.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme select.input-lg,#bootstrap-theme .input-group-lg>select.form-control,#bootstrap-theme .input-group-lg>select.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>select.btn{height:54px;line-height:54px}#bootstrap-theme textarea.input-lg,#bootstrap-theme .input-group-lg>textarea.form-control,#bootstrap-theme .input-group-lg>textarea.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-lg,#bootstrap-theme .input-group-lg>select.form-control[multiple],#bootstrap-theme .input-group-lg>select.input-group-addon[multiple],#bootstrap-theme .input-group-lg>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .form-group-lg select.form-control{height:54px;line-height:54px}#bootstrap-theme .form-group-lg textarea.form-control,#bootstrap-theme .form-group-lg select[multiple].form-control{height:auto}#bootstrap-theme .form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .has-feedback{position:relative}#bootstrap-theme .has-feedback .form-control{padding-right:37.5px}#bootstrap-theme .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:30px;height:30px;line-height:30px;text-align:center;pointer-events:none}#bootstrap-theme .input-lg+.form-control-feedback,#bootstrap-theme .input-group-lg>.form-control+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-lg+.form-control-feedback,#bootstrap-theme .form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}#bootstrap-theme .input-sm+.form-control-feedback,#bootstrap-theme .input-group-sm>.form-control+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-sm+.form-control-feedback,#bootstrap-theme .form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}#bootstrap-theme .has-success .help-block,#bootstrap-theme .has-success .control-label,#bootstrap-theme .has-success .radio,#bootstrap-theme .has-success .checkbox,#bootstrap-theme .has-success .radio-inline,#bootstrap-theme .has-success .checkbox-inline,#bootstrap-theme .has-success.radio label,#bootstrap-theme .has-success.checkbox label,#bootstrap-theme .has-success.radio-inline label,#bootstrap-theme .has-success.checkbox-inline label{color:#468847}#bootstrap-theme .has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}#bootstrap-theme .has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}#bootstrap-theme .has-success .form-control-feedback{color:#468847}#bootstrap-theme .has-warning .help-block,#bootstrap-theme .has-warning .control-label,#bootstrap-theme .has-warning .radio,#bootstrap-theme .has-warning .checkbox,#bootstrap-theme .has-warning .radio-inline,#bootstrap-theme .has-warning .checkbox-inline,#bootstrap-theme .has-warning.radio label,#bootstrap-theme .has-warning.checkbox label,#bootstrap-theme .has-warning.radio-inline label,#bootstrap-theme .has-warning.checkbox-inline label{color:#c09853}#bootstrap-theme .has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}#bootstrap-theme .has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}#bootstrap-theme .has-warning .form-control-feedback{color:#c09853}#bootstrap-theme .has-error .help-block,#bootstrap-theme .has-error .control-label,#bootstrap-theme .has-error .radio,#bootstrap-theme .has-error .checkbox,#bootstrap-theme .has-error .radio-inline,#bootstrap-theme .has-error .checkbox-inline,#bootstrap-theme .has-error.radio label,#bootstrap-theme .has-error.checkbox label,#bootstrap-theme .has-error.radio-inline label,#bootstrap-theme .has-error.checkbox-inline label{color:#b94a48}#bootstrap-theme .has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}#bootstrap-theme .has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}#bootstrap-theme .has-error .form-control-feedback{color:#b94a48}#bootstrap-theme .has-feedback label~.form-control-feedback{top:25px}#bootstrap-theme .has-feedback label.sr-only~.form-control-feedback{top:0}#bootstrap-theme .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){#bootstrap-theme .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .form-inline .form-control-static{display:inline-block}#bootstrap-theme .form-inline .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .form-inline .input-group .input-group-addon,#bootstrap-theme .form-inline .input-group .input-group-btn,#bootstrap-theme .form-inline .input-group .form-control{width:auto}#bootstrap-theme .form-inline .input-group>.form-control{width:100%}#bootstrap-theme .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio,#bootstrap-theme .form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio label,#bootstrap-theme .form-inline .checkbox label{padding-left:0}#bootstrap-theme .form-inline .radio input[type=radio],#bootstrap-theme .form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .form-inline .has-feedback .form-control-feedback{top:0}}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox,#bootstrap-theme .form-horizontal .radio-inline,#bootstrap-theme .form-horizontal .checkbox-inline{padding-top:5px;margin-top:0;margin-bottom:0}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox{min-height:25px}#bootstrap-theme .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}#bootstrap-theme .form-horizontal .form-group:before,#bootstrap-theme .form-horizontal .form-group:after{display:table;content:" "}#bootstrap-theme .form-horizontal .form-group:after{clear:both}@media (min-width:768px){#bootstrap-theme .form-horizontal .control-label{padding-top:5px;margin-bottom:0;text-align:right}}#bootstrap-theme .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}#bootstrap-theme .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:4px 8px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus,#bootstrap-theme .btn:active:focus,#bootstrap-theme .btn:active.focus,#bootstrap-theme .btn.active:focus,#bootstrap-theme .btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme .btn:hover,#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus{color:#fff;text-decoration:none}#bootstrap-theme .btn:active,#bootstrap-theme .btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn.disabled,#bootstrap-theme .btn[disabled],fieldset[disabled] #bootstrap-theme .btn{cursor:not-allowed;-webkit-filter:alpha(opacity=65);filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme a.btn.disabled,fieldset[disabled] #bootstrap-theme a.btn{pointer-events:none}#bootstrap-theme .btn-default{color:#fff;background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:focus,#bootstrap-theme .btn-default.focus{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:hover{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active,#bootstrap-theme .btn-default.active,.open>#bootstrap-theme .btn-default.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active:hover,#bootstrap-theme .btn-default:active:focus,#bootstrap-theme .btn-default:active.focus,#bootstrap-theme .btn-default.active:hover,#bootstrap-theme .btn-default.active:focus,#bootstrap-theme .btn-default.active.focus,.open>#bootstrap-theme .btn-default.dropdown-toggle:hover,.open>#bootstrap-theme .btn-default.dropdown-toggle:focus,.open>#bootstrap-theme .btn-default.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default.disabled:hover,#bootstrap-theme .btn-default.disabled:focus,#bootstrap-theme .btn-default.disabled.focus,#bootstrap-theme .btn-default[disabled]:hover,#bootstrap-theme .btn-default[disabled]:focus,#bootstrap-theme .btn-default[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-default:hover,fieldset[disabled] #bootstrap-theme .btn-default:focus,fieldset[disabled] #bootstrap-theme .btn-default.focus{background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-primary{color:#fff;background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary:focus,#bootstrap-theme .btn-primary.focus{color:#fff;background-color:#565752;border-color:#2f302d}#bootstrap-theme .btn-primary:hover{color:#fff;background-color:#565752;border-color:#51524d}#bootstrap-theme .btn-primary:active,#bootstrap-theme .btn-primary.active,.open>#bootstrap-theme .btn-primary.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:#51524d}#bootstrap-theme .btn-primary:active:hover,#bootstrap-theme .btn-primary:active:focus,#bootstrap-theme .btn-primary:active.focus,#bootstrap-theme .btn-primary.active:hover,#bootstrap-theme .btn-primary.active:focus,#bootstrap-theme .btn-primary.active.focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle:hover,.open>#bootstrap-theme .btn-primary.dropdown-toggle:focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:#2f302d}#bootstrap-theme .btn-primary.disabled:hover,#bootstrap-theme .btn-primary.disabled:focus,#bootstrap-theme .btn-primary.disabled.focus,#bootstrap-theme .btn-primary[disabled]:hover,#bootstrap-theme .btn-primary[disabled]:focus,#bootstrap-theme .btn-primary[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-primary:hover,fieldset[disabled] #bootstrap-theme .btn-primary:focus,fieldset[disabled] #bootstrap-theme .btn-primary.focus{background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-success{color:#fff;background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success:focus,#bootstrap-theme .btn-success.focus{color:#fff;background-color:#59822c;border-color:#324919}#bootstrap-theme .btn-success:hover{color:#fff;background-color:#59822c;border-color:#547a29}#bootstrap-theme .btn-success:active,#bootstrap-theme .btn-success.active,.open>#bootstrap-theme .btn-success.dropdown-toggle{color:#fff;background-color:#59822c;background-image:none;border-color:#547a29}#bootstrap-theme .btn-success:active:hover,#bootstrap-theme .btn-success:active:focus,#bootstrap-theme .btn-success:active.focus,#bootstrap-theme .btn-success.active:hover,#bootstrap-theme .btn-success.active:focus,#bootstrap-theme .btn-success.active.focus,.open>#bootstrap-theme .btn-success.dropdown-toggle:hover,.open>#bootstrap-theme .btn-success.dropdown-toggle:focus,.open>#bootstrap-theme .btn-success.dropdown-toggle.focus{color:#fff;background-color:#476723;border-color:#324919}#bootstrap-theme .btn-success.disabled:hover,#bootstrap-theme .btn-success.disabled:focus,#bootstrap-theme .btn-success.disabled.focus,#bootstrap-theme .btn-success[disabled]:hover,#bootstrap-theme .btn-success[disabled]:focus,#bootstrap-theme .btn-success[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-success:hover,fieldset[disabled] #bootstrap-theme .btn-success:focus,fieldset[disabled] #bootstrap-theme .btn-success.focus{background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success .badge{color:#73a839;background-color:#fff}#bootstrap-theme .btn-info{color:#fff;background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info:focus,#bootstrap-theme .btn-info.focus{color:#fff;background-color:#9bd1fd;border-color:#50affc}#bootstrap-theme .btn-info:hover{color:#fff;background-color:#9bd1fd;border-color:#91ccfd}#bootstrap-theme .btn-info:active,#bootstrap-theme .btn-info.active,.open>#bootstrap-theme .btn-info.dropdown-toggle{color:#fff;background-color:#9bd1fd;background-image:none;border-color:#91ccfd}#bootstrap-theme .btn-info:active:hover,#bootstrap-theme .btn-info:active:focus,#bootstrap-theme .btn-info:active.focus,#bootstrap-theme .btn-info.active:hover,#bootstrap-theme .btn-info.active:focus,#bootstrap-theme .btn-info.active.focus,.open>#bootstrap-theme .btn-info.dropdown-toggle:hover,.open>#bootstrap-theme .btn-info.dropdown-toggle:focus,.open>#bootstrap-theme .btn-info.dropdown-toggle.focus{color:#fff;background-color:#78c1fc;border-color:#50affc}#bootstrap-theme .btn-info.disabled:hover,#bootstrap-theme .btn-info.disabled:focus,#bootstrap-theme .btn-info.disabled.focus,#bootstrap-theme .btn-info[disabled]:hover,#bootstrap-theme .btn-info[disabled]:focus,#bootstrap-theme .btn-info[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-info:hover,fieldset[disabled] #bootstrap-theme .btn-info:focus,fieldset[disabled] #bootstrap-theme .btn-info.focus{background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info .badge{color:#cde8fe;background-color:#fff}#bootstrap-theme .btn-warning{color:#fff;background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning:focus,#bootstrap-theme .btn-warning.focus{color:#fff;background-color:#aa4200;border-color:#5e2400}#bootstrap-theme .btn-warning:hover{color:#fff;background-color:#aa4200;border-color:#a03e00}#bootstrap-theme .btn-warning:active,#bootstrap-theme .btn-warning.active,.open>#bootstrap-theme .btn-warning.dropdown-toggle{color:#fff;background-color:#aa4200;background-image:none;border-color:#a03e00}#bootstrap-theme .btn-warning:active:hover,#bootstrap-theme .btn-warning:active:focus,#bootstrap-theme .btn-warning:active.focus,#bootstrap-theme .btn-warning.active:hover,#bootstrap-theme .btn-warning.active:focus,#bootstrap-theme .btn-warning.active.focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle:hover,.open>#bootstrap-theme .btn-warning.dropdown-toggle:focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle.focus{color:#fff;background-color:#863400;border-color:#5e2400}#bootstrap-theme .btn-warning.disabled:hover,#bootstrap-theme .btn-warning.disabled:focus,#bootstrap-theme .btn-warning.disabled.focus,#bootstrap-theme .btn-warning[disabled]:hover,#bootstrap-theme .btn-warning[disabled]:focus,#bootstrap-theme .btn-warning[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-warning:hover,fieldset[disabled] #bootstrap-theme .btn-warning:focus,fieldset[disabled] #bootstrap-theme .btn-warning.focus{background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning .badge{color:#dd5600;background-color:#fff}#bootstrap-theme .btn-danger{color:#fff;background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger:focus,#bootstrap-theme .btn-danger.focus{color:#fff;background-color:#9a161a;border-color:#570c0f}#bootstrap-theme .btn-danger:hover{color:#fff;background-color:#9a161a;border-color:#911419}#bootstrap-theme .btn-danger:active,#bootstrap-theme .btn-danger.active,.open>#bootstrap-theme .btn-danger.dropdown-toggle{color:#fff;background-color:#9a161a;background-image:none;border-color:#911419}#bootstrap-theme .btn-danger:active:hover,#bootstrap-theme .btn-danger:active:focus,#bootstrap-theme .btn-danger:active.focus,#bootstrap-theme .btn-danger.active:hover,#bootstrap-theme .btn-danger.active:focus,#bootstrap-theme .btn-danger.active.focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle:hover,.open>#bootstrap-theme .btn-danger.dropdown-toggle:focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle.focus{color:#fff;background-color:#7b1115;border-color:#570c0f}#bootstrap-theme .btn-danger.disabled:hover,#bootstrap-theme .btn-danger.disabled:focus,#bootstrap-theme .btn-danger.disabled.focus,#bootstrap-theme .btn-danger[disabled]:hover,#bootstrap-theme .btn-danger[disabled]:focus,#bootstrap-theme .btn-danger[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-danger:hover,fieldset[disabled] #bootstrap-theme .btn-danger:focus,fieldset[disabled] #bootstrap-theme .btn-danger.focus{background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger .badge{color:#c71c22;background-color:#fff}#bootstrap-theme .btn-link{font-weight:400;color:#2786c2;border-radius:0}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:active,#bootstrap-theme .btn-link.active,#bootstrap-theme .btn-link[disabled],fieldset[disabled] #bootstrap-theme .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus,#bootstrap-theme .btn-link:active{border-color:transparent}#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus{color:#1a5a82;text-decoration:underline;background-color:transparent}#bootstrap-theme .btn-link[disabled]:hover,#bootstrap-theme .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .btn-link:hover,fieldset[disabled] #bootstrap-theme .btn-link:focus{color:#999;text-decoration:none}#bootstrap-theme .btn-lg,#bootstrap-theme .btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .btn-sm,#bootstrap-theme .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-xs,#bootstrap-theme .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-block{display:block;width:100%}#bootstrap-theme .btn-block+.btn-block{margin-top:5px}#bootstrap-theme input[type=submit].btn-block,#bootstrap-theme input[type=reset].btn-block,#bootstrap-theme input[type=button].btn-block{width:100%}#bootstrap-theme .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bootstrap-theme .fade.in{opacity:1}#bootstrap-theme .collapse{display:none}#bootstrap-theme .collapse.in{display:block}#bootstrap-theme tr.collapse.in{display:table-row}#bootstrap-theme tbody.collapse.in{display:table-row-group}#bootstrap-theme .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}#bootstrap-theme .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}#bootstrap-theme .dropup,#bootstrap-theme .dropdown{position:relative}#bootstrap-theme .dropdown-toggle:focus{outline:0}#bootstrap-theme .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bootstrap-theme .dropdown-menu.pull-right{right:0;left:auto}#bootstrap-theme .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}#bootstrap-theme .dropdown-menu>li>a:hover,#bootstrap-theme .dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#000}#bootstrap-theme .dropdown-menu>.active>a,#bootstrap-theme .dropdown-menu>.active>a:hover,#bootstrap-theme .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#000;outline:0}#bootstrap-theme .dropdown-menu>.disabled>a,#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{color:#999}#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;-webkit-filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bootstrap-theme .open>.dropdown-menu{display:block}#bootstrap-theme .open>a{outline:0}#bootstrap-theme .dropdown-menu-right{right:0;left:auto}#bootstrap-theme .dropdown-menu-left{right:auto;left:0}#bootstrap-theme .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999;white-space:nowrap}#bootstrap-theme .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bootstrap-theme .pull-right>.dropdown-menu{right:0;left:auto}#bootstrap-theme .dropup .caret,#bootstrap-theme .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}#bootstrap-theme .dropup .dropdown-menu,#bootstrap-theme .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bootstrap-theme .navbar-right .dropdown-menu{right:0;left:auto}#bootstrap-theme .navbar-right .dropdown-menu-left{left:0;right:auto}}#bootstrap-theme .btn-group,#bootstrap-theme .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bootstrap-theme .btn-group>.btn,#bootstrap-theme .btn-group-vertical>.btn{position:relative;float:left}#bootstrap-theme .btn-group>.btn:hover,#bootstrap-theme .btn-group>.btn:focus,#bootstrap-theme .btn-group>.btn:active,#bootstrap-theme .btn-group>.btn.active,#bootstrap-theme .btn-group-vertical>.btn:hover,#bootstrap-theme .btn-group-vertical>.btn:focus,#bootstrap-theme .btn-group-vertical>.btn:active,#bootstrap-theme .btn-group-vertical>.btn.active{z-index:2}#bootstrap-theme .btn-group .btn+.btn,#bootstrap-theme .btn-group .btn+.btn-group,#bootstrap-theme .btn-group .btn-group+.btn,#bootstrap-theme .btn-group .btn-group+.btn-group{margin-left:-1px}#bootstrap-theme .btn-toolbar{margin-left:-5px}#bootstrap-theme .btn-toolbar:before,#bootstrap-theme .btn-toolbar:after{display:table;content:" "}#bootstrap-theme .btn-toolbar:after{clear:both}#bootstrap-theme .btn-toolbar .btn,#bootstrap-theme .btn-toolbar .btn-group,#bootstrap-theme .btn-toolbar .input-group{float:left}#bootstrap-theme .btn-toolbar>.btn,#bootstrap-theme .btn-toolbar>.btn-group,#bootstrap-theme .btn-toolbar>.input-group{margin-left:5px}#bootstrap-theme .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bootstrap-theme .btn-group>.btn:first-child{margin-left:0}#bootstrap-theme .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn:last-child:not(:first-child),#bootstrap-theme .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group>.btn-group{float:left}#bootstrap-theme .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group .dropdown-toggle:active,#bootstrap-theme .btn-group.open .dropdown-toggle{outline:0}#bootstrap-theme .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bootstrap-theme .btn-group>.btn-lg+.dropdown-toggle,#bootstrap-theme .btn-group-lg.btn-group>.btn+.dropdown-toggle,#bootstrap-theme .btn-group-lg>.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}#bootstrap-theme .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn .caret{margin-left:0}#bootstrap-theme .btn-lg .caret,#bootstrap-theme .btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}#bootstrap-theme .dropup .btn-lg .caret,#bootstrap-theme .dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}#bootstrap-theme .btn-group-vertical>.btn,#bootstrap-theme .btn-group-vertical>.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bootstrap-theme .btn-group-vertical>.btn-group:before,#bootstrap-theme .btn-group-vertical>.btn-group:after{display:table;content:" "}#bootstrap-theme .btn-group-vertical>.btn-group:after{clear:both}#bootstrap-theme .btn-group-vertical>.btn-group>.btn{float:none}#bootstrap-theme .btn-group-vertical>.btn+.btn,#bootstrap-theme .btn-group-vertical>.btn+.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group+.btn,#bootstrap-theme .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bootstrap-theme .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bootstrap-theme .btn-group-justified>.btn,#bootstrap-theme .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bootstrap-theme .btn-group-justified>.btn-group .btn{width:100%}#bootstrap-theme .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bootstrap-theme [data-toggle=buttons]>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn input[type=checkbox],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bootstrap-theme .input-group{position:relative;display:table;border-collapse:separate}#bootstrap-theme .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bootstrap-theme .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bootstrap-theme .input-group .form-control:focus{z-index:3}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn,#bootstrap-theme .input-group .form-control{display:table-cell}#bootstrap-theme .input-group-addon:not(:first-child):not(:last-child),#bootstrap-theme .input-group-btn:not(:first-child):not(:last-child),#bootstrap-theme .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bootstrap-theme .input-group-addon{padding:4px 8px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}#bootstrap-theme .input-group-addon.input-sm,#bootstrap-theme .input-group-sm>.input-group-addon.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}#bootstrap-theme .input-group-addon.input-lg,#bootstrap-theme .input-group-lg>.input-group-addon.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.input-group-addon.btn{padding:14px 16px;font-size:18px;border-radius:6px}#bootstrap-theme .input-group-addon input[type=radio],#bootstrap-theme .input-group-addon input[type=checkbox]{margin-top:0}#bootstrap-theme .input-group .form-control:first-child,#bootstrap-theme .input-group-addon:first-child,#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:first-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),#bootstrap-theme .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .input-group-addon:first-child{border-right:0}#bootstrap-theme .input-group .form-control:last-child,#bootstrap-theme .input-group-addon:last-child,#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:last-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:first-child>.btn:not(:first-child),#bootstrap-theme .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .input-group-addon:last-child{border-left:0}#bootstrap-theme .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bootstrap-theme .input-group-btn>.btn{position:relative}#bootstrap-theme .input-group-btn>.btn+.btn{margin-left:-1px}#bootstrap-theme .input-group-btn>.btn:hover,#bootstrap-theme .input-group-btn>.btn:focus,#bootstrap-theme .input-group-btn>.btn:active{z-index:2}#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group{margin-right:-1px}#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bootstrap-theme .nav{padding-left:0;margin-bottom:0;list-style:none}#bootstrap-theme .nav:before,#bootstrap-theme .nav:after{display:table;content:" "}#bootstrap-theme .nav:after{clear:both}#bootstrap-theme .nav>li{position:relative;display:block}#bootstrap-theme .nav>li>a{position:relative;display:block;padding:10px 15px}#bootstrap-theme .nav>li>a:hover,#bootstrap-theme .nav>li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .nav>li.disabled>a{color:#999}#bootstrap-theme .nav>li.disabled>a:hover,#bootstrap-theme .nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}#bootstrap-theme .nav .open>a,#bootstrap-theme .nav .open>a:hover,#bootstrap-theme .nav .open>a:focus{background-color:#eee;border-color:#2786c2}#bootstrap-theme .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .nav>li>a>img{max-width:none}#bootstrap-theme .nav-tabs{border-bottom:1px solid #ddd}#bootstrap-theme .nav-tabs>li{float:left;margin-bottom:-1px}#bootstrap-theme .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}#bootstrap-theme .nav-tabs>li.active>a,#bootstrap-theme .nav-tabs>li.active>a:hover,#bootstrap-theme .nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}#bootstrap-theme .nav-pills>li{float:left}#bootstrap-theme .nav-pills>li>a{border-radius:4px}#bootstrap-theme .nav-pills>li+li{margin-left:2px}#bootstrap-theme .nav-pills>li.active>a,#bootstrap-theme .nav-pills>li.active>a:hover,#bootstrap-theme .nav-pills>li.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .nav-stacked>li{float:none}#bootstrap-theme .nav-stacked>li+li{margin-top:2px;margin-left:0}#bootstrap-theme .nav-justified,#bootstrap-theme .nav-tabs.nav-justified{width:100%}#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{float:none}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bootstrap-theme .nav-justified>.dropdown .dropdown-menu,#bootstrap-theme .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bootstrap-theme .nav-tabs-justified,#bootstrap-theme .nav-tabs.nav-justified{border-bottom:0}#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}#bootstrap-theme .tab-content>.tab-pane{display:none}#bootstrap-theme .tab-content>.active{display:block}#bootstrap-theme .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}#bootstrap-theme .navbar:before,#bootstrap-theme .navbar:after{display:table;content:" "}#bootstrap-theme .navbar:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar{border-radius:4px}}#bootstrap-theme .navbar-header:before,#bootstrap-theme .navbar-header:after{display:table;content:" "}#bootstrap-theme .navbar-header:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar-header{float:left}}#bootstrap-theme .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}#bootstrap-theme .navbar-collapse:before,#bootstrap-theme .navbar-collapse:after{display:table;content:" "}#bootstrap-theme .navbar-collapse:after{clear:both}#bootstrap-theme .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bootstrap-theme .navbar-collapse{width:auto;border-top:0;box-shadow:none}#bootstrap-theme .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}#bootstrap-theme .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top #bootstrap-theme .navbar-collapse,.navbar-static-top #bootstrap-theme .navbar-collapse,.navbar-fixed-bottom #bootstrap-theme .navbar-collapse{padding-right:0;padding-left:0}}#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{border-radius:0}}#bootstrap-theme .navbar-fixed-top{top:0;border-width:0 0 1px}#bootstrap-theme .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}#bootstrap-theme .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bootstrap-theme .navbar-static-top{border-radius:0}}#bootstrap-theme .navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}#bootstrap-theme .navbar-brand:hover,#bootstrap-theme .navbar-brand:focus{text-decoration:none}#bootstrap-theme .navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container #bootstrap-theme .navbar-brand,.navbar>.container-fluid #bootstrap-theme .navbar-brand{margin-left:-15px}}#bootstrap-theme .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bootstrap-theme .navbar-toggle:focus{outline:0}#bootstrap-theme .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bootstrap-theme .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bootstrap-theme .navbar-toggle{display:none}}#bootstrap-theme .navbar-nav{margin:7.5px -15px}#bootstrap-theme .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){#bootstrap-theme .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a,#bootstrap-theme .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a{line-height:20px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){#bootstrap-theme .navbar-nav{float:left;margin:0}#bootstrap-theme .navbar-nav>li{float:left}#bootstrap-theme .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}#bootstrap-theme .navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:10px;margin-bottom:10px}@media (min-width:768px){#bootstrap-theme .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .navbar-form .form-control-static{display:inline-block}#bootstrap-theme .navbar-form .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .navbar-form .input-group .input-group-addon,#bootstrap-theme .navbar-form .input-group .input-group-btn,#bootstrap-theme .navbar-form .input-group .form-control{width:auto}#bootstrap-theme .navbar-form .input-group>.form-control{width:100%}#bootstrap-theme .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio,#bootstrap-theme .navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio label,#bootstrap-theme .navbar-form .checkbox label{padding-left:0}#bootstrap-theme .navbar-form .radio input[type=radio],#bootstrap-theme .navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bootstrap-theme .navbar-form .form-group{margin-bottom:5px}#bootstrap-theme .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bootstrap-theme .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bootstrap-theme .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .navbar-btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-sm,#bootstrap-theme .btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-xs,#bootstrap-theme .btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}#bootstrap-theme .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){#bootstrap-theme .navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){#bootstrap-theme .navbar-left{float:left !important}#bootstrap-theme .navbar-right{float:right !important;margin-right:-15px}#bootstrap-theme .navbar-right~.navbar-right{margin-right:0}}#bootstrap-theme .navbar-default{background-color:#000;border-color:#000}#bootstrap-theme .navbar-default .navbar-brand{color:#fff}#bootstrap-theme .navbar-default .navbar-brand:hover,#bootstrap-theme .navbar-default .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-default .navbar-text{color:#ddd}#bootstrap-theme .navbar-default .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.active>a,#bootstrap-theme .navbar-default .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:focus{color:#ddd;background-color:transparent}#bootstrap-theme .navbar-default .navbar-nav>.open>a,#bootstrap-theme .navbar-default .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.open>a:focus{color:#fff;background-color:#000}@media (max-width:767px){#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ddd;background-color:transparent}}#bootstrap-theme .navbar-default .navbar-toggle{border-color:#000}#bootstrap-theme .navbar-default .navbar-toggle:hover,#bootstrap-theme .navbar-default .navbar-toggle:focus{background-color:#000}#bootstrap-theme .navbar-default .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-default .navbar-collapse,#bootstrap-theme .navbar-default .navbar-form{border-color:#000}#bootstrap-theme .navbar-default .navbar-link{color:#fff}#bootstrap-theme .navbar-default .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-default .btn-link{color:#fff}#bootstrap-theme .navbar-default .btn-link:hover,#bootstrap-theme .navbar-default .btn-link:focus{color:#fff}#bootstrap-theme .navbar-default .btn-link[disabled]:hover,#bootstrap-theme .navbar-default .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:focus{color:#ddd}#bootstrap-theme .navbar-inverse{background-color:#cde8fe;border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-brand{color:#fff}#bootstrap-theme .navbar-inverse .navbar-brand:hover,#bootstrap-theme .navbar-inverse .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-inverse .navbar-text{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}#bootstrap-theme .navbar-inverse .navbar-nav>.open>a,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#b4ddfe}@media (max-width:767px){#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}#bootstrap-theme .navbar-inverse .navbar-toggle{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle:hover,#bootstrap-theme .navbar-inverse .navbar-toggle:focus{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-inverse .navbar-collapse,#bootstrap-theme .navbar-inverse .navbar-form{border-color:#aad8fd}#bootstrap-theme .navbar-inverse .navbar-link{color:#fff}#bootstrap-theme .navbar-inverse .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-inverse .btn-link{color:#fff}#bootstrap-theme .navbar-inverse .btn-link:hover,#bootstrap-theme .navbar-inverse .btn-link:focus{color:#fff}#bootstrap-theme .navbar-inverse .btn-link[disabled]:hover,#bootstrap-theme .navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:focus{color:#ccc}#bootstrap-theme .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bootstrap-theme .breadcrumb>li{display:inline-block}#bootstrap-theme .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/ "}#bootstrap-theme .breadcrumb>.active{color:#999}#bootstrap-theme .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}#bootstrap-theme .pagination>li{display:inline}#bootstrap-theme .pagination>li>a,#bootstrap-theme .pagination>li>span{position:relative;float:left;padding:4px 8px;margin-left:-1px;line-height:1.428571429;color:#2786c2;text-decoration:none;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .pagination>li>a:hover,#bootstrap-theme .pagination>li>a:focus,#bootstrap-theme .pagination>li>span:hover,#bootstrap-theme .pagination>li>span:focus{z-index:2;color:#1a5a82;background-color:#eee;border-color:#ddd}#bootstrap-theme .pagination>li:first-child>a,#bootstrap-theme .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .pagination>li:last-child>a,#bootstrap-theme .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bootstrap-theme .pagination>.active>a,#bootstrap-theme .pagination>.active>a:hover,#bootstrap-theme .pagination>.active>a:focus,#bootstrap-theme .pagination>.active>span,#bootstrap-theme .pagination>.active>span:hover,#bootstrap-theme .pagination>.active>span:focus{z-index:3;color:#999;cursor:default;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .pagination>.disabled>span,#bootstrap-theme .pagination>.disabled>span:hover,#bootstrap-theme .pagination>.disabled>span:focus,#bootstrap-theme .pagination>.disabled>a,#bootstrap-theme .pagination>.disabled>a:hover,#bootstrap-theme .pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}#bootstrap-theme .pagination-lg>li>a,#bootstrap-theme .pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .pagination-lg>li:first-child>a,#bootstrap-theme .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bootstrap-theme .pagination-lg>li:last-child>a,#bootstrap-theme .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bootstrap-theme .pagination-sm>li>a,#bootstrap-theme .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .pagination-sm>li:first-child>a,#bootstrap-theme .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .pagination-sm>li:last-child>a,#bootstrap-theme .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bootstrap-theme .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}#bootstrap-theme .pager:before,#bootstrap-theme .pager:after{display:table;content:" "}#bootstrap-theme .pager:after{clear:both}#bootstrap-theme .pager li{display:inline}#bootstrap-theme .pager li>a,#bootstrap-theme .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}#bootstrap-theme .pager li>a:hover,#bootstrap-theme .pager li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .pager .next>a,#bootstrap-theme .pager .next>span{float:right}#bootstrap-theme .pager .previous>a,#bootstrap-theme .pager .previous>span{float:left}#bootstrap-theme .pager .disabled>a,#bootstrap-theme .pager .disabled>a:hover,#bootstrap-theme .pager .disabled>a:focus,#bootstrap-theme .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}#bootstrap-theme .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bootstrap-theme .label:empty{display:none}.btn #bootstrap-theme .label{position:relative;top:-1px}#bootstrap-theme a.label:hover,#bootstrap-theme a.label:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .label-default{background-color:#999}#bootstrap-theme .label-default[href]:hover,#bootstrap-theme .label-default[href]:focus{background-color:gray}#bootstrap-theme .label-primary{background-color:#000}#bootstrap-theme .label-primary[href]:hover,#bootstrap-theme .label-primary[href]:focus{background-color:#000}#bootstrap-theme .label-success{background-color:#73a839}#bootstrap-theme .label-success[href]:hover,#bootstrap-theme .label-success[href]:focus{background-color:#59822c}#bootstrap-theme .label-info{background-color:#cde8fe}#bootstrap-theme .label-info[href]:hover,#bootstrap-theme .label-info[href]:focus{background-color:#9bd1fd}#bootstrap-theme .label-warning{background-color:#dd5600}#bootstrap-theme .label-warning[href]:hover,#bootstrap-theme .label-warning[href]:focus{background-color:#aa4200}#bootstrap-theme .label-danger{background-color:#c71c22}#bootstrap-theme .label-danger[href]:hover,#bootstrap-theme .label-danger[href]:focus{background-color:#9a161a}#bootstrap-theme .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#000;border-radius:10px}#bootstrap-theme .badge:empty{display:none}.btn #bootstrap-theme .badge{position:relative;top:-1px}.btn-xs #bootstrap-theme .badge,#bootstrap-theme .btn-group-xs>.btn #bootstrap-theme .badge,.btn-group-xs>.btn #bootstrap-theme .badge{top:0;padding:1px 5px}.list-group-item.active>#bootstrap-theme .badge,.nav-pills>.active>a>#bootstrap-theme .badge{color:#2786c2;background-color:#fff}.list-group-item>#bootstrap-theme .badge{float:right}.list-group-item>#bootstrap-theme .badge+#bootstrap-theme .badge{margin-right:5px}.nav-pills>li>a>#bootstrap-theme .badge{margin-left:3px}#bootstrap-theme a.badge:hover,#bootstrap-theme a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{color:inherit}#bootstrap-theme .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}#bootstrap-theme .jumbotron>hr{border-top-color:#d5d5d5}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}#bootstrap-theme .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bootstrap-theme .jumbotron{padding-top:48px;padding-bottom:48px}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:60px;padding-left:60px}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{font-size:63px}}#bootstrap-theme .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bootstrap-theme .thumbnail>img,#bootstrap-theme .thumbnail a>img{display:block;max-width:100%;height:auto;margin-right:auto;margin-left:auto}#bootstrap-theme .thumbnail .caption{padding:9px;color:#555}#bootstrap-theme a.thumbnail:hover,#bootstrap-theme a.thumbnail:focus,#bootstrap-theme a.thumbnail.active{border-color:#2786c2}#bootstrap-theme .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}#bootstrap-theme .alert h4{margin-top:0;color:inherit}#bootstrap-theme .alert .alert-link{font-weight:700}#bootstrap-theme .alert>p,#bootstrap-theme .alert>ul{margin-bottom:0}#bootstrap-theme .alert>p+p{margin-top:5px}#bootstrap-theme .alert-dismissable,#bootstrap-theme .alert-dismissible{padding-right:35px}#bootstrap-theme .alert-dismissable .close,#bootstrap-theme .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bootstrap-theme .alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}#bootstrap-theme .alert-success hr{border-top-color:#c9e2b3}#bootstrap-theme .alert-success .alert-link{color:#356635}#bootstrap-theme .alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#bootstrap-theme .alert-info hr{border-top-color:#a6e1ec}#bootstrap-theme .alert-info .alert-link{color:#2d6987}#bootstrap-theme .alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}#bootstrap-theme .alert-warning hr{border-top-color:#f8e5be}#bootstrap-theme .alert-warning .alert-link{color:#a47e3c}#bootstrap-theme .alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#bootstrap-theme .alert-danger hr{border-top-color:#e6c1c7}#bootstrap-theme .alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bootstrap-theme .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bootstrap-theme .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#000;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bootstrap-theme .progress-striped .progress-bar,#bootstrap-theme .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}#bootstrap-theme .progress.active .progress-bar,#bootstrap-theme .progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bootstrap-theme .progress-bar-success{background-color:#73a839}.progress-striped #bootstrap-theme .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-info{background-color:#cde8fe}.progress-striped #bootstrap-theme .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-warning{background-color:#dd5600}.progress-striped #bootstrap-theme .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-danger{background-color:#c71c22}.progress-striped #bootstrap-theme .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .media{margin-top:15px}#bootstrap-theme .media:first-child{margin-top:0}#bootstrap-theme .media,#bootstrap-theme .media-body{overflow:hidden;zoom:1}#bootstrap-theme .media-body{width:10000px}#bootstrap-theme .media-object{display:block}#bootstrap-theme .media-object.img-thumbnail{max-width:none}#bootstrap-theme .media-right,#bootstrap-theme .media>.pull-right{padding-left:10px}#bootstrap-theme .media-left,#bootstrap-theme .media>.pull-left{padding-right:10px}#bootstrap-theme .media-left,#bootstrap-theme .media-right,#bootstrap-theme .media-body{display:table-cell;vertical-align:top}#bootstrap-theme .media-middle{vertical-align:middle}#bootstrap-theme .media-bottom{vertical-align:bottom}#bootstrap-theme .media-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .media-list{padding-left:0;list-style:none}#bootstrap-theme .list-group{padding-left:0;margin-bottom:20px}#bootstrap-theme .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bootstrap-theme .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .list-group-item.disabled,#bootstrap-theme .list-group-item.disabled:hover,#bootstrap-theme .list-group-item.disabled:focus{color:#999;cursor:not-allowed;background-color:#eee}#bootstrap-theme .list-group-item.disabled .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-heading{color:inherit}#bootstrap-theme .list-group-item.disabled .list-group-item-text,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-text,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-text{color:#999}#bootstrap-theme .list-group-item.active,#bootstrap-theme .list-group-item.active:hover,#bootstrap-theme .list-group-item.active:focus{z-index:2;color:#fff;background-color:#000;border-color:#000}#bootstrap-theme .list-group-item.active .list-group-item-heading,#bootstrap-theme .list-group-item.active .list-group-item-heading>small,#bootstrap-theme .list-group-item.active .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>.small{color:inherit}#bootstrap-theme .list-group-item.active .list-group-item-text,#bootstrap-theme .list-group-item.active:hover .list-group-item-text,#bootstrap-theme .list-group-item.active:focus .list-group-item-text{color:#666}#bootstrap-theme a.list-group-item,#bootstrap-theme button.list-group-item{color:#555}#bootstrap-theme a.list-group-item .list-group-item-heading,#bootstrap-theme button.list-group-item .list-group-item-heading{color:#333}#bootstrap-theme a.list-group-item:hover,#bootstrap-theme a.list-group-item:focus,#bootstrap-theme button.list-group-item:hover,#bootstrap-theme button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}#bootstrap-theme button.list-group-item{width:100%;text-align:left}#bootstrap-theme .list-group-item-success{color:#468847;background-color:#dff0d8}#bootstrap-theme a.list-group-item-success,#bootstrap-theme button.list-group-item-success{color:#468847}#bootstrap-theme a.list-group-item-success .list-group-item-heading,#bootstrap-theme button.list-group-item-success .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-success:hover,#bootstrap-theme a.list-group-item-success:focus,#bootstrap-theme button.list-group-item-success:hover,#bootstrap-theme button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}#bootstrap-theme a.list-group-item-success.active,#bootstrap-theme a.list-group-item-success.active:hover,#bootstrap-theme a.list-group-item-success.active:focus,#bootstrap-theme button.list-group-item-success.active,#bootstrap-theme button.list-group-item-success.active:hover,#bootstrap-theme button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}#bootstrap-theme .list-group-item-info{color:#3a87ad;background-color:#d9edf7}#bootstrap-theme a.list-group-item-info,#bootstrap-theme button.list-group-item-info{color:#3a87ad}#bootstrap-theme a.list-group-item-info .list-group-item-heading,#bootstrap-theme button.list-group-item-info .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-info:hover,#bootstrap-theme a.list-group-item-info:focus,#bootstrap-theme button.list-group-item-info:hover,#bootstrap-theme button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}#bootstrap-theme a.list-group-item-info.active,#bootstrap-theme a.list-group-item-info.active:hover,#bootstrap-theme a.list-group-item-info.active:focus,#bootstrap-theme button.list-group-item-info.active,#bootstrap-theme button.list-group-item-info.active:hover,#bootstrap-theme button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}#bootstrap-theme .list-group-item-warning{color:#c09853;background-color:#fcf8e3}#bootstrap-theme a.list-group-item-warning,#bootstrap-theme button.list-group-item-warning{color:#c09853}#bootstrap-theme a.list-group-item-warning .list-group-item-heading,#bootstrap-theme button.list-group-item-warning .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-warning:hover,#bootstrap-theme a.list-group-item-warning:focus,#bootstrap-theme button.list-group-item-warning:hover,#bootstrap-theme button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}#bootstrap-theme a.list-group-item-warning.active,#bootstrap-theme a.list-group-item-warning.active:hover,#bootstrap-theme a.list-group-item-warning.active:focus,#bootstrap-theme button.list-group-item-warning.active,#bootstrap-theme button.list-group-item-warning.active:hover,#bootstrap-theme button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}#bootstrap-theme .list-group-item-danger{color:#b94a48;background-color:#f2dede}#bootstrap-theme a.list-group-item-danger,#bootstrap-theme button.list-group-item-danger{color:#b94a48}#bootstrap-theme a.list-group-item-danger .list-group-item-heading,#bootstrap-theme button.list-group-item-danger .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-danger:hover,#bootstrap-theme a.list-group-item-danger:focus,#bootstrap-theme button.list-group-item-danger:hover,#bootstrap-theme button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}#bootstrap-theme a.list-group-item-danger.active,#bootstrap-theme a.list-group-item-danger.active:hover,#bootstrap-theme a.list-group-item-danger.active:focus,#bootstrap-theme button.list-group-item-danger.active,#bootstrap-theme button.list-group-item-danger.active:hover,#bootstrap-theme button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}#bootstrap-theme .list-group-item-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .list-group-item-text{margin-bottom:0;line-height:1.3}#bootstrap-theme .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .panel-body{padding:15px}#bootstrap-theme .panel-body:before,#bootstrap-theme .panel-body:after{display:table;content:" "}#bootstrap-theme .panel-body:after{clear:both}#bootstrap-theme .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bootstrap-theme .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}#bootstrap-theme .panel-title>a,#bootstrap-theme .panel-title>small,#bootstrap-theme .panel-title>.small,#bootstrap-theme .panel-title>small>a,#bootstrap-theme .panel-title>.small>a{color:inherit}#bootstrap-theme .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.list-group,#bootstrap-theme .panel>.panel-collapse>.list-group{margin-bottom:0}#bootstrap-theme .panel>.list-group .list-group-item,#bootstrap-theme .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bootstrap-theme .panel>.list-group:first-child .list-group-item:first-child,#bootstrap-theme .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.list-group:last-child .list-group-item:last-child,#bootstrap-theme .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bootstrap-theme .list-group+.panel-footer{border-top-width:0}#bootstrap-theme .panel>.table,#bootstrap-theme .panel>.table-responsive>.table,#bootstrap-theme .panel>.panel-collapse>.table{margin-bottom:0}#bootstrap-theme .panel>.table caption,#bootstrap-theme .panel>.table-responsive>.table caption,#bootstrap-theme .panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}#bootstrap-theme .panel>.table:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bootstrap-theme .panel>.table:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bootstrap-theme .panel>.panel-body+.table,#bootstrap-theme .panel>.panel-body+.table-responsive,#bootstrap-theme .panel>.table+.panel-body,#bootstrap-theme .panel>.table-responsive+.panel-body{border-top:1px solid #ddd}#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child th,#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child td{border-top:0}#bootstrap-theme .panel>.table-bordered,#bootstrap-theme .panel>.table-responsive>.table-bordered{border:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bootstrap-theme .panel>.table-responsive{margin-bottom:0;border:0}#bootstrap-theme .panel-group{margin-bottom:20px}#bootstrap-theme .panel-group .panel{margin-bottom:0;border-radius:4px}#bootstrap-theme .panel-group .panel+.panel{margin-top:5px}#bootstrap-theme .panel-group .panel-heading{border-bottom:0}#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.panel-body,#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}#bootstrap-theme .panel-group .panel-footer{border-top:0}#bootstrap-theme .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}#bootstrap-theme .panel-default{border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading{color:#555;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555}#bootstrap-theme .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-primary{border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading{color:#fff;background-color:#000;border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading .badge{color:#000;background-color:#fff}#bootstrap-theme .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-success{border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}#bootstrap-theme .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-info{border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading{color:#3a87ad;background-color:#cde8fe;border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-info>.panel-heading .badge{color:#cde8fe;background-color:#3a87ad}#bootstrap-theme .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-warning{border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}#bootstrap-theme .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-danger{border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}#bootstrap-theme .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bootstrap-theme .embed-responsive .embed-responsive-item,#bootstrap-theme .embed-responsive iframe,#bootstrap-theme .embed-responsive embed,#bootstrap-theme .embed-responsive object,#bootstrap-theme .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bootstrap-theme .embed-responsive-16by9{padding-bottom:56.25%}#bootstrap-theme .embed-responsive-4by3{padding-bottom:75%}#bootstrap-theme .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bootstrap-theme .well-lg{padding:24px;border-radius:6px}#bootstrap-theme .well-sm{padding:9px;border-radius:3px}#bootstrap-theme .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;-webkit-filter:alpha(opacity=20);filter:alpha(opacity=20);opacity:.2}#bootstrap-theme .close:hover,#bootstrap-theme .close:focus{color:#000;text-decoration:none;cursor:pointer;-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme .modal-open{overflow:hidden}#bootstrap-theme .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bootstrap-theme .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-ms-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}#bootstrap-theme .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bootstrap-theme .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bootstrap-theme .modal-dialog{position:relative;width:auto;margin:10px}#bootstrap-theme .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}#bootstrap-theme .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bootstrap-theme .modal-backdrop.fade{-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .modal-backdrop.in{-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bootstrap-theme .modal-header:before,#bootstrap-theme .modal-header:after{display:table;content:" "}#bootstrap-theme .modal-header:after{clear:both}#bootstrap-theme .modal-header .close{margin-top:-2px}#bootstrap-theme .modal-title{margin:0;line-height:1.428571429}#bootstrap-theme .modal-body{position:relative;padding:20px}#bootstrap-theme .modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}#bootstrap-theme .modal-footer:before,#bootstrap-theme .modal-footer:after{display:table;content:" "}#bootstrap-theme .modal-footer:after{clear:both}#bootstrap-theme .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bootstrap-theme .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bootstrap-theme .modal-footer .btn-block+.btn-block{margin-left:0}#bootstrap-theme .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bootstrap-theme .modal-dialog{width:600px;margin:30px auto}#bootstrap-theme .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bootstrap-theme .modal-sm{width:300px}}@media (min-width:992px){#bootstrap-theme .modal-lg{width:900px}}#bootstrap-theme .tooltip{position:absolute;z-index:1070;display:block;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .tooltip.in{-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .tooltip.top{padding:5px 0;margin-top:-3px}#bootstrap-theme .tooltip.right{padding:0 5px;margin-left:3px}#bootstrap-theme .tooltip.bottom{padding:5px 0;margin-top:3px}#bootstrap-theme .tooltip.left{padding:0 5px;margin-left:-3px}#bootstrap-theme .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bootstrap-theme .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bootstrap-theme .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bootstrap-theme .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bootstrap-theme .popover.top{margin-top:-10px}#bootstrap-theme .popover.right{margin-left:10px}#bootstrap-theme .popover.bottom{margin-top:10px}#bootstrap-theme .popover.left{margin-left:-10px}#bootstrap-theme .popover>.arrow{border-width:11px}#bootstrap-theme .popover>.arrow,#bootstrap-theme .popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover>.arrow:after{content:"";border-width:10px}#bootstrap-theme .popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bootstrap-theme .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bootstrap-theme .popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bootstrap-theme .popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bootstrap-theme .popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bootstrap-theme .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bootstrap-theme .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bootstrap-theme .popover-content{padding:9px 14px}#bootstrap-theme .carousel{position:relative}#bootstrap-theme .carousel-inner{position:relative;width:100%;overflow:hidden}#bootstrap-theme .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bootstrap-theme .carousel-inner>.item>img,#bootstrap-theme .carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media (transform-3d),(-webkit-transform-3d){#bootstrap-theme .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-ms-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}#bootstrap-theme .carousel-inner>.item.next,#bootstrap-theme .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.prev,#bootstrap-theme .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.next.left,#bootstrap-theme .carousel-inner>.item.prev.right,#bootstrap-theme .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}#bootstrap-theme .carousel-inner>.active,#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{display:block}#bootstrap-theme .carousel-inner>.active{left:0}#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{position:absolute;top:0;width:100%}#bootstrap-theme .carousel-inner>.next{left:100%}#bootstrap-theme .carousel-inner>.prev{left:-100%}#bootstrap-theme .carousel-inner>.next.left,#bootstrap-theme .carousel-inner>.prev.right{left:0}#bootstrap-theme .carousel-inner>.active.left{left:-100%}#bootstrap-theme .carousel-inner>.active.right{left:100%}#bootstrap-theme .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control:hover,#bootstrap-theme .carousel-control:focus{color:#fff;text-decoration:none;outline:0;-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}#bootstrap-theme .carousel-control .icon-prev:before{content:"‹"}#bootstrap-theme .carousel-control .icon-next:before{content:"›"}#bootstrap-theme .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bootstrap-theme .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bootstrap-theme .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bootstrap-theme .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bootstrap-theme .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .icon-prev{margin-left:-10px}#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-next{margin-right:-10px}#bootstrap-theme .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bootstrap-theme .carousel-indicators{bottom:20px}}#bootstrap-theme .clearfix:before,#bootstrap-theme .clearfix:after{display:table;content:" "}#bootstrap-theme .clearfix:after{clear:both}#bootstrap-theme .center-block{display:block;margin-right:auto;margin-left:auto}#bootstrap-theme .pull-right{float:right !important}#bootstrap-theme .pull-left{float:left !important}#bootstrap-theme .hide{display:none !important}#bootstrap-theme .show{display:block !important}#bootstrap-theme .invisible{visibility:hidden}#bootstrap-theme .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bootstrap-theme .hidden{display:none !important}#bootstrap-theme .affix{position:fixed}@-ms-viewport{width:device-width}#bootstrap-theme .visible-sm{display:none !important}#bootstrap-theme .visible-md{display:none !important}#bootstrap-theme .visible-lg{display:none !important}#bootstrap-theme .visible-xs-block,#bootstrap-theme .visible-xs-inline,#bootstrap-theme .visible-xs-inline-block,#bootstrap-theme .visible-sm-block,#bootstrap-theme .visible-sm-inline,#bootstrap-theme .visible-sm-inline-block,#bootstrap-theme .visible-md-block,#bootstrap-theme .visible-md-inline,#bootstrap-theme .visible-md-inline-block,#bootstrap-theme .visible-lg-block,#bootstrap-theme .visible-lg-inline,#bootstrap-theme .visible-lg-inline-block{display:none !important}@media (max-width:767px){#bootstrap-theme .visible-xs{display:block !important}#bootstrap-theme table.visible-xs{display:table !important}#bootstrap-theme tr.visible-xs{display:table-row !important}#bootstrap-theme th.visible-xs,#bootstrap-theme td.visible-xs{display:table-cell !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-block{display:block !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline{display:inline !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm{display:block !important}#bootstrap-theme table.visible-sm{display:table !important}#bootstrap-theme tr.visible-sm{display:table-row !important}#bootstrap-theme th.visible-sm,#bootstrap-theme td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md{display:block !important}#bootstrap-theme table.visible-md{display:table !important}#bootstrap-theme tr.visible-md{display:table-row !important}#bootstrap-theme th.visible-md,#bootstrap-theme td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg{display:block !important}#bootstrap-theme table.visible-lg{display:table !important}#bootstrap-theme tr.visible-lg{display:table-row !important}#bootstrap-theme th.visible-lg,#bootstrap-theme td.visible-lg{display:table-cell !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-block{display:block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline{display:inline !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){#bootstrap-theme .hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .hidden-md{display:none !important}}@media (min-width:1200px){#bootstrap-theme .hidden-lg{display:none !important}}#bootstrap-theme .visible-print{display:none !important}@media print{#bootstrap-theme .visible-print{display:block !important}#bootstrap-theme table.visible-print{display:table !important}#bootstrap-theme tr.visible-print{display:table-row !important}#bootstrap-theme th.visible-print,#bootstrap-theme td.visible-print{display:table-cell !important}}#bootstrap-theme .visible-print-block{display:none !important}@media print{#bootstrap-theme .visible-print-block{display:block !important}}#bootstrap-theme .visible-print-inline{display:none !important}@media print{#bootstrap-theme .visible-print-inline{display:inline !important}}#bootstrap-theme .visible-print-inline-block{display:none !important}@media print{#bootstrap-theme .visible-print-inline-block{display:inline-block !important}}@media print{#bootstrap-theme .hidden-print{display:none !important}}#bootstrap-theme ul,#bootstrap-theme ol{margin-left:0;margin-right:0}#bootstrap-theme .form-control.checkbox-inline>label{margin-left:9px}#bootstrap-theme label input[type=checkbox]:not(:checked)+*{font-weight:400}#bootstrap-theme .select2-choices{margin-bottom:0}#bootstrap-theme input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}#bootstrap-theme .select2-container .select2-choice>.select2-chosen{font-size:inherit;font-weight:400}#bootstrap-theme .form-control .select2-choice{border:0;border-radius:2px}#bootstrap-theme .form-control .select2-choice .select2-arrow{border-radius:0 2px 2px 0}#bootstrap-theme .form-control.select2-container{height:auto !important;padding:0}#bootstrap-theme .form-control.select2-container.select2-dropdown-open{border-color:#5897fb;border-radius:3px 3px 0 0}#bootstrap-theme .form-control .select2-container.select2-dropdown-open .select2-choices{border-radius:3px 3px 0 0}#bootstrap-theme .form-control.select2-container .select2-choices{border:0 !important;border-radius:3px}#bootstrap-theme .control-group.warning .select2-container .select2-choice,#bootstrap-theme .control-group.warning .select2-container .select2-choices,#bootstrap-theme .control-group.warning .select2-container-active .select2-choice,#bootstrap-theme .control-group.warning .select2-container-active .select2-choices,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.warning .select2-container-multi.select2-container-active .select2-choices{border:1px solid #c09853 !important}#bootstrap-theme .control-group.warning .select2-container .select2-choice div{border-left:1px solid #c09853 !important;background:#fcf8e3 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice,#bootstrap-theme .control-group.error .select2-container .select2-choices,#bootstrap-theme .control-group.error .select2-container-active .select2-choice,#bootstrap-theme .control-group.error .select2-container-active .select2-choices,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.error .select2-container-multi.select2-container-active .select2-choices{border:1px solid #b94a48 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice div{border-left:1px solid #b94a48 !important;background:#f2dede !important}#bootstrap-theme .control-group.info .select2-container .select2-choice,#bootstrap-theme .control-group.info .select2-container .select2-choices,#bootstrap-theme .control-group.info .select2-container-active .select2-choice,#bootstrap-theme .control-group.info .select2-container-active .select2-choices,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.info .select2-container-multi.select2-container-active .select2-choices{border:1px solid #3a87ad !important}#bootstrap-theme .control-group.info .select2-container .select2-choice div{border-left:1px solid #3a87ad !important;background:#d9edf7 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice,#bootstrap-theme .control-group.success .select2-container .select2-choices,#bootstrap-theme .control-group.success .select2-container-active .select2-choice,#bootstrap-theme .control-group.success .select2-container-active .select2-choices,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.success .select2-container-multi.select2-container-active .select2-choices{border:1px solid #468847 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice div{border-left:1px solid #468847 !important;background:#dff0d8 !important} \ No newline at end of file +@charset "UTF-8";#bootstrap-theme html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#bootstrap-theme body{margin:0}#bootstrap-theme article,#bootstrap-theme aside,#bootstrap-theme details,#bootstrap-theme figcaption,#bootstrap-theme figure,#bootstrap-theme footer,#bootstrap-theme header,#bootstrap-theme hgroup,#bootstrap-theme main,#bootstrap-theme menu,#bootstrap-theme nav,#bootstrap-theme section,#bootstrap-theme summary{display:block}#bootstrap-theme audio,#bootstrap-theme canvas,#bootstrap-theme progress,#bootstrap-theme video{display:inline-block;vertical-align:baseline}#bootstrap-theme audio:not([controls]){display:none;height:0}#bootstrap-theme [hidden],#bootstrap-theme template{display:none}#bootstrap-theme a{background-color:transparent}#bootstrap-theme a:active,#bootstrap-theme a:hover{outline:0}#bootstrap-theme abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}#bootstrap-theme b,#bootstrap-theme strong{font-weight:700}#bootstrap-theme dfn{font-style:italic}#bootstrap-theme h1{font-size:2em;margin:.67em 0}#bootstrap-theme mark{background:#ff0;color:#000}#bootstrap-theme small{font-size:80%}#bootstrap-theme sub,#bootstrap-theme sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#bootstrap-theme sup{top:-.5em}#bootstrap-theme sub{bottom:-.25em}#bootstrap-theme img{border:0}#bootstrap-theme svg:not(:root){overflow:hidden}#bootstrap-theme figure{margin:1em 40px}#bootstrap-theme hr{box-sizing:content-box;height:0}#bootstrap-theme pre{overflow:auto}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:monospace,monospace;font-size:1em}#bootstrap-theme button,#bootstrap-theme input,#bootstrap-theme optgroup,#bootstrap-theme select,#bootstrap-theme textarea{color:inherit;font:inherit;margin:0}#bootstrap-theme button{overflow:visible}#bootstrap-theme button,#bootstrap-theme select{text-transform:none}#bootstrap-theme button,#bootstrap-theme html input[type=button],#bootstrap-theme input[type=reset],#bootstrap-theme input[type=submit]{-webkit-appearance:button;cursor:pointer}#bootstrap-theme button[disabled],#bootstrap-theme html input[disabled]{cursor:default}#bootstrap-theme button::-moz-focus-inner,#bootstrap-theme input::-moz-focus-inner{border:0;padding:0}#bootstrap-theme input{line-height:normal}#bootstrap-theme input[type=checkbox],#bootstrap-theme input[type=radio]{box-sizing:border-box;padding:0}#bootstrap-theme input[type=number]::-webkit-inner-spin-button,#bootstrap-theme input[type=number]::-webkit-outer-spin-button{height:auto}#bootstrap-theme input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#bootstrap-theme input[type=search]::-webkit-search-cancel-button,#bootstrap-theme input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#bootstrap-theme fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#bootstrap-theme legend{border:0;padding:0}#bootstrap-theme textarea{overflow:auto}#bootstrap-theme optgroup{font-weight:700}#bootstrap-theme table{border-collapse:collapse;border-spacing:0}#bootstrap-theme td,#bootstrap-theme th{padding:0}@media print{#bootstrap-theme *,#bootstrap-theme *:before,#bootstrap-theme *:after{color:#000 !important;text-shadow:none !important;background:0 0 !important;box-shadow:none !important}#bootstrap-theme a,#bootstrap-theme a:visited{text-decoration:underline}#bootstrap-theme a[href]:after{content:" (" attr(href) ")"}#bootstrap-theme abbr[title]:after{content:" (" attr(title) ")"}#bootstrap-theme a[href^="#"]:after,#bootstrap-theme a[href^="javascript:"]:after{content:""}#bootstrap-theme pre,#bootstrap-theme blockquote{border:1px solid #999;page-break-inside:avoid}#bootstrap-theme thead{display:table-header-group}#bootstrap-theme tr,#bootstrap-theme img{page-break-inside:avoid}#bootstrap-theme img{max-width:100% !important}#bootstrap-theme p,#bootstrap-theme h2,#bootstrap-theme h3{orphans:3;widows:3}#bootstrap-theme h2,#bootstrap-theme h3{page-break-after:avoid}#bootstrap-theme .navbar{display:none}#bootstrap-theme .btn>.caret,#bootstrap-theme .dropup>.btn>.caret{border-top-color:#000 !important}#bootstrap-theme .label{border:1px solid #000}#bootstrap-theme .table{border-collapse:collapse !important}#bootstrap-theme .table td,#bootstrap-theme .table th{background-color:#fff !important}#bootstrap-theme .table-bordered th,#bootstrap-theme .table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:"Glyphicons Halflings";src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot");src:url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2") format("woff2"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("../extern/bootstrap3/assets/fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") format("svg")}#bootstrap-theme .glyphicon{position:relative;top:1px;display:inline-block;font-family:"Glyphicons Halflings";font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#bootstrap-theme .glyphicon-asterisk:before{content:"*"}#bootstrap-theme .glyphicon-plus:before{content:"+"}#bootstrap-theme .glyphicon-euro:before,#bootstrap-theme .glyphicon-eur:before{content:"€"}#bootstrap-theme .glyphicon-minus:before{content:"−"}#bootstrap-theme .glyphicon-cloud:before{content:"â˜"}#bootstrap-theme .glyphicon-envelope:before{content:"✉"}#bootstrap-theme .glyphicon-pencil:before{content:"âœ"}#bootstrap-theme .glyphicon-glass:before{content:"î€"}#bootstrap-theme .glyphicon-music:before{content:""}#bootstrap-theme .glyphicon-search:before{content:""}#bootstrap-theme .glyphicon-heart:before{content:""}#bootstrap-theme .glyphicon-star:before{content:""}#bootstrap-theme .glyphicon-star-empty:before{content:""}#bootstrap-theme .glyphicon-user:before{content:""}#bootstrap-theme .glyphicon-film:before{content:""}#bootstrap-theme .glyphicon-th-large:before{content:"î€"}#bootstrap-theme .glyphicon-th:before{content:""}#bootstrap-theme .glyphicon-th-list:before{content:""}#bootstrap-theme .glyphicon-ok:before{content:""}#bootstrap-theme .glyphicon-remove:before{content:""}#bootstrap-theme .glyphicon-zoom-in:before{content:""}#bootstrap-theme .glyphicon-zoom-out:before{content:""}#bootstrap-theme .glyphicon-off:before{content:""}#bootstrap-theme .glyphicon-signal:before{content:""}#bootstrap-theme .glyphicon-cog:before{content:""}#bootstrap-theme .glyphicon-trash:before{content:"î€ "}#bootstrap-theme .glyphicon-home:before{content:""}#bootstrap-theme .glyphicon-file:before{content:""}#bootstrap-theme .glyphicon-time:before{content:""}#bootstrap-theme .glyphicon-road:before{content:""}#bootstrap-theme .glyphicon-download-alt:before{content:""}#bootstrap-theme .glyphicon-download:before{content:""}#bootstrap-theme .glyphicon-upload:before{content:""}#bootstrap-theme .glyphicon-inbox:before{content:""}#bootstrap-theme .glyphicon-play-circle:before{content:""}#bootstrap-theme .glyphicon-repeat:before{content:""}#bootstrap-theme .glyphicon-refresh:before{content:""}#bootstrap-theme .glyphicon-list-alt:before{content:""}#bootstrap-theme .glyphicon-lock:before{content:""}#bootstrap-theme .glyphicon-flag:before{content:""}#bootstrap-theme .glyphicon-headphones:before{content:""}#bootstrap-theme .glyphicon-volume-off:before{content:""}#bootstrap-theme .glyphicon-volume-down:before{content:""}#bootstrap-theme .glyphicon-volume-up:before{content:""}#bootstrap-theme .glyphicon-qrcode:before{content:""}#bootstrap-theme .glyphicon-barcode:before{content:"î€"}#bootstrap-theme .glyphicon-tag:before{content:"î"}#bootstrap-theme .glyphicon-tags:before{content:"î‚"}#bootstrap-theme .glyphicon-book:before{content:"îƒ"}#bootstrap-theme .glyphicon-bookmark:before{content:"î„"}#bootstrap-theme .glyphicon-print:before{content:"î…"}#bootstrap-theme .glyphicon-camera:before{content:"î†"}#bootstrap-theme .glyphicon-font:before{content:"î‡"}#bootstrap-theme .glyphicon-bold:before{content:"îˆ"}#bootstrap-theme .glyphicon-italic:before{content:"î‰"}#bootstrap-theme .glyphicon-text-height:before{content:"î"}#bootstrap-theme .glyphicon-text-width:before{content:"î‘"}#bootstrap-theme .glyphicon-align-left:before{content:"î’"}#bootstrap-theme .glyphicon-align-center:before{content:"î“"}#bootstrap-theme .glyphicon-align-right:before{content:"î”"}#bootstrap-theme .glyphicon-align-justify:before{content:"î•"}#bootstrap-theme .glyphicon-list:before{content:"î–"}#bootstrap-theme .glyphicon-indent-left:before{content:"î—"}#bootstrap-theme .glyphicon-indent-right:before{content:"î˜"}#bootstrap-theme .glyphicon-facetime-video:before{content:"î™"}#bootstrap-theme .glyphicon-picture:before{content:"î "}#bootstrap-theme .glyphicon-map-marker:before{content:"î¢"}#bootstrap-theme .glyphicon-adjust:before{content:"î£"}#bootstrap-theme .glyphicon-tint:before{content:"î¤"}#bootstrap-theme .glyphicon-edit:before{content:"î¥"}#bootstrap-theme .glyphicon-share:before{content:"î¦"}#bootstrap-theme .glyphicon-check:before{content:"î§"}#bootstrap-theme .glyphicon-move:before{content:"î¨"}#bootstrap-theme .glyphicon-step-backward:before{content:"î©"}#bootstrap-theme .glyphicon-fast-backward:before{content:"î°"}#bootstrap-theme .glyphicon-backward:before{content:"î±"}#bootstrap-theme .glyphicon-play:before{content:"î²"}#bootstrap-theme .glyphicon-pause:before{content:"î³"}#bootstrap-theme .glyphicon-stop:before{content:"î´"}#bootstrap-theme .glyphicon-forward:before{content:"îµ"}#bootstrap-theme .glyphicon-fast-forward:before{content:"î¶"}#bootstrap-theme .glyphicon-step-forward:before{content:"î·"}#bootstrap-theme .glyphicon-eject:before{content:"î¸"}#bootstrap-theme .glyphicon-chevron-left:before{content:"î¹"}#bootstrap-theme .glyphicon-chevron-right:before{content:"î‚€"}#bootstrap-theme .glyphicon-plus-sign:before{content:"î‚"}#bootstrap-theme .glyphicon-minus-sign:before{content:"î‚‚"}#bootstrap-theme .glyphicon-remove-sign:before{content:""}#bootstrap-theme .glyphicon-ok-sign:before{content:"î‚„"}#bootstrap-theme .glyphicon-question-sign:before{content:"î‚…"}#bootstrap-theme .glyphicon-info-sign:before{content:""}#bootstrap-theme .glyphicon-screenshot:before{content:""}#bootstrap-theme .glyphicon-remove-circle:before{content:""}#bootstrap-theme .glyphicon-ok-circle:before{content:""}#bootstrap-theme .glyphicon-ban-circle:before{content:"î‚"}#bootstrap-theme .glyphicon-arrow-left:before{content:"î‚‘"}#bootstrap-theme .glyphicon-arrow-right:before{content:"î‚’"}#bootstrap-theme .glyphicon-arrow-up:before{content:"î‚“"}#bootstrap-theme .glyphicon-arrow-down:before{content:"î‚”"}#bootstrap-theme .glyphicon-share-alt:before{content:"î‚•"}#bootstrap-theme .glyphicon-resize-full:before{content:"î‚–"}#bootstrap-theme .glyphicon-resize-small:before{content:"î‚—"}#bootstrap-theme .glyphicon-exclamation-sign:before{content:"î„"}#bootstrap-theme .glyphicon-gift:before{content:"î„‚"}#bootstrap-theme .glyphicon-leaf:before{content:""}#bootstrap-theme .glyphicon-fire:before{content:"î„„"}#bootstrap-theme .glyphicon-eye-open:before{content:"î„…"}#bootstrap-theme .glyphicon-eye-close:before{content:""}#bootstrap-theme .glyphicon-warning-sign:before{content:""}#bootstrap-theme .glyphicon-plane:before{content:""}#bootstrap-theme .glyphicon-calendar:before{content:""}#bootstrap-theme .glyphicon-random:before{content:"î„"}#bootstrap-theme .glyphicon-comment:before{content:"î„‘"}#bootstrap-theme .glyphicon-magnet:before{content:"î„’"}#bootstrap-theme .glyphicon-chevron-up:before{content:"î„“"}#bootstrap-theme .glyphicon-chevron-down:before{content:"î„”"}#bootstrap-theme .glyphicon-retweet:before{content:"î„•"}#bootstrap-theme .glyphicon-shopping-cart:before{content:"î„–"}#bootstrap-theme .glyphicon-folder-close:before{content:"î„—"}#bootstrap-theme .glyphicon-folder-open:before{content:""}#bootstrap-theme .glyphicon-resize-vertical:before{content:"î„™"}#bootstrap-theme .glyphicon-resize-horizontal:before{content:"î„ "}#bootstrap-theme .glyphicon-hdd:before{content:"î„¡"}#bootstrap-theme .glyphicon-bullhorn:before{content:"î„¢"}#bootstrap-theme .glyphicon-bell:before{content:"î„£"}#bootstrap-theme .glyphicon-certificate:before{content:""}#bootstrap-theme .glyphicon-thumbs-up:before{content:"î„¥"}#bootstrap-theme .glyphicon-thumbs-down:before{content:""}#bootstrap-theme .glyphicon-hand-right:before{content:""}#bootstrap-theme .glyphicon-hand-left:before{content:""}#bootstrap-theme .glyphicon-hand-up:before{content:"î„©"}#bootstrap-theme .glyphicon-hand-down:before{content:"î„°"}#bootstrap-theme .glyphicon-circle-arrow-right:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-left:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-up:before{content:""}#bootstrap-theme .glyphicon-circle-arrow-down:before{content:"î„´"}#bootstrap-theme .glyphicon-globe:before{content:""}#bootstrap-theme .glyphicon-wrench:before{content:""}#bootstrap-theme .glyphicon-tasks:before{content:"î„·"}#bootstrap-theme .glyphicon-filter:before{content:""}#bootstrap-theme .glyphicon-briefcase:before{content:""}#bootstrap-theme .glyphicon-fullscreen:before{content:"î…€"}#bootstrap-theme .glyphicon-dashboard:before{content:"î…"}#bootstrap-theme .glyphicon-paperclip:before{content:"î…‚"}#bootstrap-theme .glyphicon-heart-empty:before{content:"î…ƒ"}#bootstrap-theme .glyphicon-link:before{content:"î…„"}#bootstrap-theme .glyphicon-phone:before{content:"î……"}#bootstrap-theme .glyphicon-pushpin:before{content:"î…†"}#bootstrap-theme .glyphicon-usd:before{content:"î…ˆ"}#bootstrap-theme .glyphicon-gbp:before{content:"î…‰"}#bootstrap-theme .glyphicon-sort:before{content:"î…"}#bootstrap-theme .glyphicon-sort-by-alphabet:before{content:"î…‘"}#bootstrap-theme .glyphicon-sort-by-alphabet-alt:before{content:"î…’"}#bootstrap-theme .glyphicon-sort-by-order:before{content:"î…“"}#bootstrap-theme .glyphicon-sort-by-order-alt:before{content:"î…”"}#bootstrap-theme .glyphicon-sort-by-attributes:before{content:"î…•"}#bootstrap-theme .glyphicon-sort-by-attributes-alt:before{content:"î…–"}#bootstrap-theme .glyphicon-unchecked:before{content:"î…—"}#bootstrap-theme .glyphicon-expand:before{content:"î…˜"}#bootstrap-theme .glyphicon-collapse-down:before{content:"î…™"}#bootstrap-theme .glyphicon-collapse-up:before{content:"î… "}#bootstrap-theme .glyphicon-log-in:before{content:"î…¡"}#bootstrap-theme .glyphicon-flash:before{content:"î…¢"}#bootstrap-theme .glyphicon-log-out:before{content:"î…£"}#bootstrap-theme .glyphicon-new-window:before{content:"î…¤"}#bootstrap-theme .glyphicon-record:before{content:"î…¥"}#bootstrap-theme .glyphicon-save:before{content:"î…¦"}#bootstrap-theme .glyphicon-open:before{content:"î…§"}#bootstrap-theme .glyphicon-saved:before{content:"î…¨"}#bootstrap-theme .glyphicon-import:before{content:"î…©"}#bootstrap-theme .glyphicon-export:before{content:"î…°"}#bootstrap-theme .glyphicon-send:before{content:"î…±"}#bootstrap-theme .glyphicon-floppy-disk:before{content:"î…²"}#bootstrap-theme .glyphicon-floppy-saved:before{content:"î…³"}#bootstrap-theme .glyphicon-floppy-remove:before{content:"î…´"}#bootstrap-theme .glyphicon-floppy-save:before{content:"î…µ"}#bootstrap-theme .glyphicon-floppy-open:before{content:"î…¶"}#bootstrap-theme .glyphicon-credit-card:before{content:"î…·"}#bootstrap-theme .glyphicon-transfer:before{content:"î…¸"}#bootstrap-theme .glyphicon-cutlery:before{content:"î…¹"}#bootstrap-theme .glyphicon-header:before{content:""}#bootstrap-theme .glyphicon-compressed:before{content:"î†"}#bootstrap-theme .glyphicon-earphone:before{content:""}#bootstrap-theme .glyphicon-phone-alt:before{content:""}#bootstrap-theme .glyphicon-tower:before{content:""}#bootstrap-theme .glyphicon-stats:before{content:""}#bootstrap-theme .glyphicon-sd-video:before{content:""}#bootstrap-theme .glyphicon-hd-video:before{content:""}#bootstrap-theme .glyphicon-subtitles:before{content:""}#bootstrap-theme .glyphicon-sound-stereo:before{content:""}#bootstrap-theme .glyphicon-sound-dolby:before{content:"î†"}#bootstrap-theme .glyphicon-sound-5-1:before{content:""}#bootstrap-theme .glyphicon-sound-6-1:before{content:""}#bootstrap-theme .glyphicon-sound-7-1:before{content:""}#bootstrap-theme .glyphicon-copyright-mark:before{content:""}#bootstrap-theme .glyphicon-registration-mark:before{content:""}#bootstrap-theme .glyphicon-cloud-download:before{content:""}#bootstrap-theme .glyphicon-cloud-upload:before{content:""}#bootstrap-theme .glyphicon-tree-conifer:before{content:""}#bootstrap-theme .glyphicon-tree-deciduous:before{content:""}#bootstrap-theme .glyphicon-cd:before{content:"îˆ"}#bootstrap-theme .glyphicon-save-file:before{content:""}#bootstrap-theme .glyphicon-open-file:before{content:""}#bootstrap-theme .glyphicon-level-up:before{content:""}#bootstrap-theme .glyphicon-copy:before{content:""}#bootstrap-theme .glyphicon-paste:before{content:""}#bootstrap-theme .glyphicon-alert:before{content:""}#bootstrap-theme .glyphicon-equalizer:before{content:"îˆ"}#bootstrap-theme .glyphicon-king:before{content:""}#bootstrap-theme .glyphicon-queen:before{content:""}#bootstrap-theme .glyphicon-pawn:before{content:""}#bootstrap-theme .glyphicon-bishop:before{content:""}#bootstrap-theme .glyphicon-knight:before{content:""}#bootstrap-theme .glyphicon-baby-formula:before{content:""}#bootstrap-theme .glyphicon-tent:before{content:"⛺"}#bootstrap-theme .glyphicon-blackboard:before{content:""}#bootstrap-theme .glyphicon-bed:before{content:""}#bootstrap-theme .glyphicon-apple:before{content:""}#bootstrap-theme .glyphicon-erase:before{content:""}#bootstrap-theme .glyphicon-hourglass:before{content:"⌛"}#bootstrap-theme .glyphicon-lamp:before{content:""}#bootstrap-theme .glyphicon-duplicate:before{content:""}#bootstrap-theme .glyphicon-piggy-bank:before{content:""}#bootstrap-theme .glyphicon-scissors:before{content:""}#bootstrap-theme .glyphicon-bitcoin:before{content:""}#bootstrap-theme .glyphicon-btc:before{content:""}#bootstrap-theme .glyphicon-xbt:before{content:""}#bootstrap-theme .glyphicon-yen:before{content:"Â¥"}#bootstrap-theme .glyphicon-jpy:before{content:"Â¥"}#bootstrap-theme .glyphicon-ruble:before{content:"₽"}#bootstrap-theme .glyphicon-rub:before{content:"₽"}#bootstrap-theme .glyphicon-scale:before{content:""}#bootstrap-theme .glyphicon-ice-lolly:before{content:""}#bootstrap-theme .glyphicon-ice-lolly-tasted:before{content:""}#bootstrap-theme .glyphicon-education:before{content:""}#bootstrap-theme .glyphicon-option-horizontal:before{content:""}#bootstrap-theme .glyphicon-option-vertical:before{content:""}#bootstrap-theme .glyphicon-menu-hamburger:before{content:""}#bootstrap-theme .glyphicon-modal-window:before{content:""}#bootstrap-theme .glyphicon-oil:before{content:""}#bootstrap-theme .glyphicon-grain:before{content:""}#bootstrap-theme .glyphicon-sunglasses:before{content:""}#bootstrap-theme .glyphicon-text-size:before{content:"î‰"}#bootstrap-theme .glyphicon-text-color:before{content:""}#bootstrap-theme .glyphicon-text-background:before{content:""}#bootstrap-theme .glyphicon-object-align-top:before{content:""}#bootstrap-theme .glyphicon-object-align-bottom:before{content:""}#bootstrap-theme .glyphicon-object-align-horizontal:before{content:""}#bootstrap-theme .glyphicon-object-align-left:before{content:""}#bootstrap-theme .glyphicon-object-align-vertical:before{content:""}#bootstrap-theme .glyphicon-object-align-right:before{content:""}#bootstrap-theme .glyphicon-triangle-right:before{content:"î‰"}#bootstrap-theme .glyphicon-triangle-left:before{content:""}#bootstrap-theme .glyphicon-triangle-bottom:before{content:""}#bootstrap-theme .glyphicon-triangle-top:before{content:""}#bootstrap-theme .glyphicon-console:before{content:""}#bootstrap-theme .glyphicon-superscript:before{content:""}#bootstrap-theme .glyphicon-subscript:before{content:""}#bootstrap-theme .glyphicon-menu-left:before{content:""}#bootstrap-theme .glyphicon-menu-right:before{content:""}#bootstrap-theme .glyphicon-menu-down:before{content:""}#bootstrap-theme .glyphicon-menu-up:before{content:"î‰ "}#bootstrap-theme *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme *:before,#bootstrap-theme *:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#bootstrap-theme html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}#bootstrap-theme body{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff}#bootstrap-theme input,#bootstrap-theme button,#bootstrap-theme select,#bootstrap-theme textarea{font-family:inherit;font-size:inherit;line-height:inherit}#bootstrap-theme a{color:#2786c2;text-decoration:none}#bootstrap-theme a:hover,#bootstrap-theme a:focus{color:#1a5a82;text-decoration:underline}#bootstrap-theme a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme figure{margin:0}#bootstrap-theme img{vertical-align:middle}#bootstrap-theme .img-responsive{display:block;max-width:100%;height:auto}#bootstrap-theme .img-rounded{border-radius:6px}#bootstrap-theme .img-thumbnail{padding:4px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}#bootstrap-theme .img-circle{border-radius:50%}#bootstrap-theme hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}#bootstrap-theme .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}#bootstrap-theme .sr-only-focusable:active,#bootstrap-theme .sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}#bootstrap-theme [role=button]{cursor:pointer}#bootstrap-theme h1,#bootstrap-theme h2,#bootstrap-theme h3,#bootstrap-theme h4,#bootstrap-theme h5,#bootstrap-theme h6,#bootstrap-theme .h1,#bootstrap-theme .h2,#bootstrap-theme .h3,#bootstrap-theme .h4,#bootstrap-theme .h5,#bootstrap-theme .h6{font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-weight:500;line-height:1.2;color:#000}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-weight:400;line-height:1;color:#999}#bootstrap-theme h1,#bootstrap-theme .h1,#bootstrap-theme h2,#bootstrap-theme .h2,#bootstrap-theme h3,#bootstrap-theme .h3{margin-top:20px;margin-bottom:10px}#bootstrap-theme h1 small,#bootstrap-theme h1 .small,#bootstrap-theme .h1 small,#bootstrap-theme .h1 .small,#bootstrap-theme h2 small,#bootstrap-theme h2 .small,#bootstrap-theme .h2 small,#bootstrap-theme .h2 .small,#bootstrap-theme h3 small,#bootstrap-theme h3 .small,#bootstrap-theme .h3 small,#bootstrap-theme .h3 .small{font-size:65%}#bootstrap-theme h4,#bootstrap-theme .h4,#bootstrap-theme h5,#bootstrap-theme .h5,#bootstrap-theme h6,#bootstrap-theme .h6{margin-top:10px;margin-bottom:10px}#bootstrap-theme h4 small,#bootstrap-theme h4 .small,#bootstrap-theme .h4 small,#bootstrap-theme .h4 .small,#bootstrap-theme h5 small,#bootstrap-theme h5 .small,#bootstrap-theme .h5 small,#bootstrap-theme .h5 .small,#bootstrap-theme h6 small,#bootstrap-theme h6 .small,#bootstrap-theme .h6 small,#bootstrap-theme .h6 .small{font-size:75%}#bootstrap-theme h1,#bootstrap-theme .h1{font-size:36px}#bootstrap-theme h2,#bootstrap-theme .h2{font-size:30px}#bootstrap-theme h3,#bootstrap-theme .h3{font-size:24px}#bootstrap-theme h4,#bootstrap-theme .h4{font-size:18px}#bootstrap-theme h5,#bootstrap-theme .h5{font-size:14px}#bootstrap-theme h6,#bootstrap-theme .h6{font-size:12px}#bootstrap-theme p{margin:0 0 10px}#bootstrap-theme .lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){#bootstrap-theme .lead{font-size:21px}}#bootstrap-theme small,#bootstrap-theme .small{font-size:85%}#bootstrap-theme mark,#bootstrap-theme .mark{padding:.2em;background-color:#fcf8e3}#bootstrap-theme .text-left{text-align:left}#bootstrap-theme .text-right{text-align:right}#bootstrap-theme .text-center{text-align:center}#bootstrap-theme .text-justify{text-align:justify}#bootstrap-theme .text-nowrap{white-space:nowrap}#bootstrap-theme .text-lowercase{text-transform:lowercase}#bootstrap-theme .text-uppercase,#bootstrap-theme .initialism{text-transform:uppercase}#bootstrap-theme .text-capitalize{text-transform:capitalize}#bootstrap-theme .text-muted{color:#999}#bootstrap-theme .text-primary{color:#000}#bootstrap-theme a.text-primary:hover,#bootstrap-theme a.text-primary:focus{color:#000}#bootstrap-theme .text-success{color:#468847}#bootstrap-theme a.text-success:hover,#bootstrap-theme a.text-success:focus{color:#356635}#bootstrap-theme .text-info{color:#3a87ad}#bootstrap-theme a.text-info:hover,#bootstrap-theme a.text-info:focus{color:#2d6987}#bootstrap-theme .text-warning{color:#c09853}#bootstrap-theme a.text-warning:hover,#bootstrap-theme a.text-warning:focus{color:#a47e3c}#bootstrap-theme .text-danger{color:#b94a48}#bootstrap-theme a.text-danger:hover,#bootstrap-theme a.text-danger:focus{color:#953b39}#bootstrap-theme .bg-primary{color:#fff}#bootstrap-theme .bg-primary{background-color:#000}#bootstrap-theme a.bg-primary:hover,#bootstrap-theme a.bg-primary:focus{background-color:#000}#bootstrap-theme .bg-success{background-color:#dff0d8}#bootstrap-theme a.bg-success:hover,#bootstrap-theme a.bg-success:focus{background-color:#c1e2b3}#bootstrap-theme .bg-info{background-color:#d9edf7}#bootstrap-theme a.bg-info:hover,#bootstrap-theme a.bg-info:focus{background-color:#afd9ee}#bootstrap-theme .bg-warning{background-color:#fcf8e3}#bootstrap-theme a.bg-warning:hover,#bootstrap-theme a.bg-warning:focus{background-color:#f7ecb5}#bootstrap-theme .bg-danger{background-color:#f2dede}#bootstrap-theme a.bg-danger:hover,#bootstrap-theme a.bg-danger:focus{background-color:#e4b9b9}#bootstrap-theme .page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}#bootstrap-theme ul,#bootstrap-theme ol{margin-top:0;margin-bottom:10px}#bootstrap-theme ul ul,#bootstrap-theme ul ol,#bootstrap-theme ol ul,#bootstrap-theme ol ol{margin-bottom:0}#bootstrap-theme .list-unstyled{padding-left:0;list-style:none}#bootstrap-theme .list-inline{padding-left:0;list-style:none;margin-left:-5px}#bootstrap-theme .list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}#bootstrap-theme dl{margin-top:0;margin-bottom:20px}#bootstrap-theme dt,#bootstrap-theme dd{line-height:1.428571429}#bootstrap-theme dt{font-weight:700}#bootstrap-theme dd{margin-left:0}#bootstrap-theme .dl-horizontal dd:before,#bootstrap-theme .dl-horizontal dd:after{display:table;content:" "}#bootstrap-theme .dl-horizontal dd:after{clear:both}@media (min-width:768px){#bootstrap-theme .dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#bootstrap-theme .dl-horizontal dd{margin-left:180px}}#bootstrap-theme abbr[title],#bootstrap-theme abbr[data-original-title]{cursor:help}#bootstrap-theme .initialism{font-size:90%}#bootstrap-theme blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}#bootstrap-theme blockquote p:last-child,#bootstrap-theme blockquote ul:last-child,#bootstrap-theme blockquote ol:last-child{margin-bottom:0}#bootstrap-theme blockquote footer,#bootstrap-theme blockquote small,#bootstrap-theme blockquote .small{display:block;font-size:80%;line-height:1.428571429;color:#999}#bootstrap-theme blockquote footer:before,#bootstrap-theme blockquote small:before,#bootstrap-theme blockquote .small:before{content:"— "}#bootstrap-theme .blockquote-reverse,#bootstrap-theme blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}#bootstrap-theme .blockquote-reverse footer:before,#bootstrap-theme .blockquote-reverse small:before,#bootstrap-theme .blockquote-reverse .small:before,#bootstrap-theme blockquote.pull-right footer:before,#bootstrap-theme blockquote.pull-right small:before,#bootstrap-theme blockquote.pull-right .small:before{content:""}#bootstrap-theme .blockquote-reverse footer:after,#bootstrap-theme .blockquote-reverse small:after,#bootstrap-theme .blockquote-reverse .small:after,#bootstrap-theme blockquote.pull-right footer:after,#bootstrap-theme blockquote.pull-right small:after,#bootstrap-theme blockquote.pull-right .small:after{content:" —"}#bootstrap-theme address{margin-bottom:20px;font-style:normal;line-height:1.428571429}#bootstrap-theme code,#bootstrap-theme kbd,#bootstrap-theme pre,#bootstrap-theme samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}#bootstrap-theme code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}#bootstrap-theme kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}#bootstrap-theme kbd kbd{padding:0;font-size:100%;font-weight:700;box-shadow:none}#bootstrap-theme pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.428571429;color:#333;-ms-word-break:break-all;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}#bootstrap-theme pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}#bootstrap-theme .pre-scrollable{max-height:340px;overflow-y:scroll}#bootstrap-theme .container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container:before,#bootstrap-theme .container:after{display:table;content:" "}#bootstrap-theme .container:after{clear:both}@media (min-width:768px){#bootstrap-theme .container{width:750px}}@media (min-width:992px){#bootstrap-theme .container{width:970px}}@media (min-width:1200px){#bootstrap-theme .container{width:1170px}}#bootstrap-theme .container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}#bootstrap-theme .container-fluid:before,#bootstrap-theme .container-fluid:after{display:table;content:" "}#bootstrap-theme .container-fluid:after{clear:both}#bootstrap-theme .row{margin-right:-15px;margin-left:-15px}#bootstrap-theme .row:before,#bootstrap-theme .row:after{display:table;content:" "}#bootstrap-theme .row:after{clear:both}#bootstrap-theme .row-no-gutters{margin-right:0;margin-left:0}#bootstrap-theme .row-no-gutters [class*=col-]{padding-right:0;padding-left:0}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-sm-1,#bootstrap-theme .col-md-1,#bootstrap-theme .col-lg-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-md-2,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-md-3,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-md-4,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-md-5,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-md-6,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-md-7,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-md-8,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-md-9,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-md-10,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-md-11,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-xs-12,#bootstrap-theme .col-sm-12,#bootstrap-theme .col-md-12,#bootstrap-theme .col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}#bootstrap-theme .col-xs-1,#bootstrap-theme .col-xs-2,#bootstrap-theme .col-xs-3,#bootstrap-theme .col-xs-4,#bootstrap-theme .col-xs-5,#bootstrap-theme .col-xs-6,#bootstrap-theme .col-xs-7,#bootstrap-theme .col-xs-8,#bootstrap-theme .col-xs-9,#bootstrap-theme .col-xs-10,#bootstrap-theme .col-xs-11,#bootstrap-theme .col-xs-12{float:left}#bootstrap-theme .col-xs-1{width:8.3333333333%}#bootstrap-theme .col-xs-2{width:16.6666666667%}#bootstrap-theme .col-xs-3{width:25%}#bootstrap-theme .col-xs-4{width:33.3333333333%}#bootstrap-theme .col-xs-5{width:41.6666666667%}#bootstrap-theme .col-xs-6{width:50%}#bootstrap-theme .col-xs-7{width:58.3333333333%}#bootstrap-theme .col-xs-8{width:66.6666666667%}#bootstrap-theme .col-xs-9{width:75%}#bootstrap-theme .col-xs-10{width:83.3333333333%}#bootstrap-theme .col-xs-11{width:91.6666666667%}#bootstrap-theme .col-xs-12{width:100%}#bootstrap-theme .col-xs-pull-0{right:auto}#bootstrap-theme .col-xs-pull-1{right:8.3333333333%}#bootstrap-theme .col-xs-pull-2{right:16.6666666667%}#bootstrap-theme .col-xs-pull-3{right:25%}#bootstrap-theme .col-xs-pull-4{right:33.3333333333%}#bootstrap-theme .col-xs-pull-5{right:41.6666666667%}#bootstrap-theme .col-xs-pull-6{right:50%}#bootstrap-theme .col-xs-pull-7{right:58.3333333333%}#bootstrap-theme .col-xs-pull-8{right:66.6666666667%}#bootstrap-theme .col-xs-pull-9{right:75%}#bootstrap-theme .col-xs-pull-10{right:83.3333333333%}#bootstrap-theme .col-xs-pull-11{right:91.6666666667%}#bootstrap-theme .col-xs-pull-12{right:100%}#bootstrap-theme .col-xs-push-0{left:auto}#bootstrap-theme .col-xs-push-1{left:8.3333333333%}#bootstrap-theme .col-xs-push-2{left:16.6666666667%}#bootstrap-theme .col-xs-push-3{left:25%}#bootstrap-theme .col-xs-push-4{left:33.3333333333%}#bootstrap-theme .col-xs-push-5{left:41.6666666667%}#bootstrap-theme .col-xs-push-6{left:50%}#bootstrap-theme .col-xs-push-7{left:58.3333333333%}#bootstrap-theme .col-xs-push-8{left:66.6666666667%}#bootstrap-theme .col-xs-push-9{left:75%}#bootstrap-theme .col-xs-push-10{left:83.3333333333%}#bootstrap-theme .col-xs-push-11{left:91.6666666667%}#bootstrap-theme .col-xs-push-12{left:100%}#bootstrap-theme .col-xs-offset-0{margin-left:0}#bootstrap-theme .col-xs-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-xs-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-xs-offset-3{margin-left:25%}#bootstrap-theme .col-xs-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-xs-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-xs-offset-6{margin-left:50%}#bootstrap-theme .col-xs-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-xs-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-xs-offset-9{margin-left:75%}#bootstrap-theme .col-xs-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-xs-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-xs-offset-12{margin-left:100%}@media (min-width:768px){#bootstrap-theme .col-sm-1,#bootstrap-theme .col-sm-2,#bootstrap-theme .col-sm-3,#bootstrap-theme .col-sm-4,#bootstrap-theme .col-sm-5,#bootstrap-theme .col-sm-6,#bootstrap-theme .col-sm-7,#bootstrap-theme .col-sm-8,#bootstrap-theme .col-sm-9,#bootstrap-theme .col-sm-10,#bootstrap-theme .col-sm-11,#bootstrap-theme .col-sm-12{float:left}#bootstrap-theme .col-sm-1{width:8.3333333333%}#bootstrap-theme .col-sm-2{width:16.6666666667%}#bootstrap-theme .col-sm-3{width:25%}#bootstrap-theme .col-sm-4{width:33.3333333333%}#bootstrap-theme .col-sm-5{width:41.6666666667%}#bootstrap-theme .col-sm-6{width:50%}#bootstrap-theme .col-sm-7{width:58.3333333333%}#bootstrap-theme .col-sm-8{width:66.6666666667%}#bootstrap-theme .col-sm-9{width:75%}#bootstrap-theme .col-sm-10{width:83.3333333333%}#bootstrap-theme .col-sm-11{width:91.6666666667%}#bootstrap-theme .col-sm-12{width:100%}#bootstrap-theme .col-sm-pull-0{right:auto}#bootstrap-theme .col-sm-pull-1{right:8.3333333333%}#bootstrap-theme .col-sm-pull-2{right:16.6666666667%}#bootstrap-theme .col-sm-pull-3{right:25%}#bootstrap-theme .col-sm-pull-4{right:33.3333333333%}#bootstrap-theme .col-sm-pull-5{right:41.6666666667%}#bootstrap-theme .col-sm-pull-6{right:50%}#bootstrap-theme .col-sm-pull-7{right:58.3333333333%}#bootstrap-theme .col-sm-pull-8{right:66.6666666667%}#bootstrap-theme .col-sm-pull-9{right:75%}#bootstrap-theme .col-sm-pull-10{right:83.3333333333%}#bootstrap-theme .col-sm-pull-11{right:91.6666666667%}#bootstrap-theme .col-sm-pull-12{right:100%}#bootstrap-theme .col-sm-push-0{left:auto}#bootstrap-theme .col-sm-push-1{left:8.3333333333%}#bootstrap-theme .col-sm-push-2{left:16.6666666667%}#bootstrap-theme .col-sm-push-3{left:25%}#bootstrap-theme .col-sm-push-4{left:33.3333333333%}#bootstrap-theme .col-sm-push-5{left:41.6666666667%}#bootstrap-theme .col-sm-push-6{left:50%}#bootstrap-theme .col-sm-push-7{left:58.3333333333%}#bootstrap-theme .col-sm-push-8{left:66.6666666667%}#bootstrap-theme .col-sm-push-9{left:75%}#bootstrap-theme .col-sm-push-10{left:83.3333333333%}#bootstrap-theme .col-sm-push-11{left:91.6666666667%}#bootstrap-theme .col-sm-push-12{left:100%}#bootstrap-theme .col-sm-offset-0{margin-left:0}#bootstrap-theme .col-sm-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-sm-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-sm-offset-3{margin-left:25%}#bootstrap-theme .col-sm-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-sm-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-sm-offset-6{margin-left:50%}#bootstrap-theme .col-sm-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-sm-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-sm-offset-9{margin-left:75%}#bootstrap-theme .col-sm-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-sm-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-sm-offset-12{margin-left:100%}}@media (min-width:992px){#bootstrap-theme .col-md-1,#bootstrap-theme .col-md-2,#bootstrap-theme .col-md-3,#bootstrap-theme .col-md-4,#bootstrap-theme .col-md-5,#bootstrap-theme .col-md-6,#bootstrap-theme .col-md-7,#bootstrap-theme .col-md-8,#bootstrap-theme .col-md-9,#bootstrap-theme .col-md-10,#bootstrap-theme .col-md-11,#bootstrap-theme .col-md-12{float:left}#bootstrap-theme .col-md-1{width:8.3333333333%}#bootstrap-theme .col-md-2{width:16.6666666667%}#bootstrap-theme .col-md-3{width:25%}#bootstrap-theme .col-md-4{width:33.3333333333%}#bootstrap-theme .col-md-5{width:41.6666666667%}#bootstrap-theme .col-md-6{width:50%}#bootstrap-theme .col-md-7{width:58.3333333333%}#bootstrap-theme .col-md-8{width:66.6666666667%}#bootstrap-theme .col-md-9{width:75%}#bootstrap-theme .col-md-10{width:83.3333333333%}#bootstrap-theme .col-md-11{width:91.6666666667%}#bootstrap-theme .col-md-12{width:100%}#bootstrap-theme .col-md-pull-0{right:auto}#bootstrap-theme .col-md-pull-1{right:8.3333333333%}#bootstrap-theme .col-md-pull-2{right:16.6666666667%}#bootstrap-theme .col-md-pull-3{right:25%}#bootstrap-theme .col-md-pull-4{right:33.3333333333%}#bootstrap-theme .col-md-pull-5{right:41.6666666667%}#bootstrap-theme .col-md-pull-6{right:50%}#bootstrap-theme .col-md-pull-7{right:58.3333333333%}#bootstrap-theme .col-md-pull-8{right:66.6666666667%}#bootstrap-theme .col-md-pull-9{right:75%}#bootstrap-theme .col-md-pull-10{right:83.3333333333%}#bootstrap-theme .col-md-pull-11{right:91.6666666667%}#bootstrap-theme .col-md-pull-12{right:100%}#bootstrap-theme .col-md-push-0{left:auto}#bootstrap-theme .col-md-push-1{left:8.3333333333%}#bootstrap-theme .col-md-push-2{left:16.6666666667%}#bootstrap-theme .col-md-push-3{left:25%}#bootstrap-theme .col-md-push-4{left:33.3333333333%}#bootstrap-theme .col-md-push-5{left:41.6666666667%}#bootstrap-theme .col-md-push-6{left:50%}#bootstrap-theme .col-md-push-7{left:58.3333333333%}#bootstrap-theme .col-md-push-8{left:66.6666666667%}#bootstrap-theme .col-md-push-9{left:75%}#bootstrap-theme .col-md-push-10{left:83.3333333333%}#bootstrap-theme .col-md-push-11{left:91.6666666667%}#bootstrap-theme .col-md-push-12{left:100%}#bootstrap-theme .col-md-offset-0{margin-left:0}#bootstrap-theme .col-md-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-md-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-md-offset-3{margin-left:25%}#bootstrap-theme .col-md-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-md-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-md-offset-6{margin-left:50%}#bootstrap-theme .col-md-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-md-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-md-offset-9{margin-left:75%}#bootstrap-theme .col-md-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-md-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-md-offset-12{margin-left:100%}}@media (min-width:1200px){#bootstrap-theme .col-lg-1,#bootstrap-theme .col-lg-2,#bootstrap-theme .col-lg-3,#bootstrap-theme .col-lg-4,#bootstrap-theme .col-lg-5,#bootstrap-theme .col-lg-6,#bootstrap-theme .col-lg-7,#bootstrap-theme .col-lg-8,#bootstrap-theme .col-lg-9,#bootstrap-theme .col-lg-10,#bootstrap-theme .col-lg-11,#bootstrap-theme .col-lg-12{float:left}#bootstrap-theme .col-lg-1{width:8.3333333333%}#bootstrap-theme .col-lg-2{width:16.6666666667%}#bootstrap-theme .col-lg-3{width:25%}#bootstrap-theme .col-lg-4{width:33.3333333333%}#bootstrap-theme .col-lg-5{width:41.6666666667%}#bootstrap-theme .col-lg-6{width:50%}#bootstrap-theme .col-lg-7{width:58.3333333333%}#bootstrap-theme .col-lg-8{width:66.6666666667%}#bootstrap-theme .col-lg-9{width:75%}#bootstrap-theme .col-lg-10{width:83.3333333333%}#bootstrap-theme .col-lg-11{width:91.6666666667%}#bootstrap-theme .col-lg-12{width:100%}#bootstrap-theme .col-lg-pull-0{right:auto}#bootstrap-theme .col-lg-pull-1{right:8.3333333333%}#bootstrap-theme .col-lg-pull-2{right:16.6666666667%}#bootstrap-theme .col-lg-pull-3{right:25%}#bootstrap-theme .col-lg-pull-4{right:33.3333333333%}#bootstrap-theme .col-lg-pull-5{right:41.6666666667%}#bootstrap-theme .col-lg-pull-6{right:50%}#bootstrap-theme .col-lg-pull-7{right:58.3333333333%}#bootstrap-theme .col-lg-pull-8{right:66.6666666667%}#bootstrap-theme .col-lg-pull-9{right:75%}#bootstrap-theme .col-lg-pull-10{right:83.3333333333%}#bootstrap-theme .col-lg-pull-11{right:91.6666666667%}#bootstrap-theme .col-lg-pull-12{right:100%}#bootstrap-theme .col-lg-push-0{left:auto}#bootstrap-theme .col-lg-push-1{left:8.3333333333%}#bootstrap-theme .col-lg-push-2{left:16.6666666667%}#bootstrap-theme .col-lg-push-3{left:25%}#bootstrap-theme .col-lg-push-4{left:33.3333333333%}#bootstrap-theme .col-lg-push-5{left:41.6666666667%}#bootstrap-theme .col-lg-push-6{left:50%}#bootstrap-theme .col-lg-push-7{left:58.3333333333%}#bootstrap-theme .col-lg-push-8{left:66.6666666667%}#bootstrap-theme .col-lg-push-9{left:75%}#bootstrap-theme .col-lg-push-10{left:83.3333333333%}#bootstrap-theme .col-lg-push-11{left:91.6666666667%}#bootstrap-theme .col-lg-push-12{left:100%}#bootstrap-theme .col-lg-offset-0{margin-left:0}#bootstrap-theme .col-lg-offset-1{margin-left:8.3333333333%}#bootstrap-theme .col-lg-offset-2{margin-left:16.6666666667%}#bootstrap-theme .col-lg-offset-3{margin-left:25%}#bootstrap-theme .col-lg-offset-4{margin-left:33.3333333333%}#bootstrap-theme .col-lg-offset-5{margin-left:41.6666666667%}#bootstrap-theme .col-lg-offset-6{margin-left:50%}#bootstrap-theme .col-lg-offset-7{margin-left:58.3333333333%}#bootstrap-theme .col-lg-offset-8{margin-left:66.6666666667%}#bootstrap-theme .col-lg-offset-9{margin-left:75%}#bootstrap-theme .col-lg-offset-10{margin-left:83.3333333333%}#bootstrap-theme .col-lg-offset-11{margin-left:91.6666666667%}#bootstrap-theme .col-lg-offset-12{margin-left:100%}}#bootstrap-theme table{background-color:transparent}#bootstrap-theme table col[class*=col-]{position:static;display:table-column;float:none}#bootstrap-theme table td[class*=col-],#bootstrap-theme table th[class*=col-]{position:static;display:table-cell;float:none}#bootstrap-theme caption{padding-top:8px;padding-bottom:8px;color:#999;text-align:left}#bootstrap-theme th{text-align:left}#bootstrap-theme .table{width:100%;max-width:100%;margin-bottom:20px}#bootstrap-theme .table>thead>tr>th,#bootstrap-theme .table>thead>tr>td,#bootstrap-theme .table>tbody>tr>th,#bootstrap-theme .table>tbody>tr>td,#bootstrap-theme .table>tfoot>tr>th,#bootstrap-theme .table>tfoot>tr>td{padding:8px;line-height:1.428571429;vertical-align:top;border-top:1px solid #ddd}#bootstrap-theme .table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}#bootstrap-theme .table>caption+thead>tr:first-child>th,#bootstrap-theme .table>caption+thead>tr:first-child>td,#bootstrap-theme .table>colgroup+thead>tr:first-child>th,#bootstrap-theme .table>colgroup+thead>tr:first-child>td,#bootstrap-theme .table>thead:first-child>tr:first-child>th,#bootstrap-theme .table>thead:first-child>tr:first-child>td{border-top:0}#bootstrap-theme .table>tbody+tbody{border-top:2px solid #ddd}#bootstrap-theme .table .table{background-color:#fff}#bootstrap-theme .table-condensed>thead>tr>th,#bootstrap-theme .table-condensed>thead>tr>td,#bootstrap-theme .table-condensed>tbody>tr>th,#bootstrap-theme .table-condensed>tbody>tr>td,#bootstrap-theme .table-condensed>tfoot>tr>th,#bootstrap-theme .table-condensed>tfoot>tr>td{padding:5px}#bootstrap-theme .table-bordered{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td,#bootstrap-theme .table-bordered>tbody>tr>th,#bootstrap-theme .table-bordered>tbody>tr>td,#bootstrap-theme .table-bordered>tfoot>tr>th,#bootstrap-theme .table-bordered>tfoot>tr>td{border:1px solid #ddd}#bootstrap-theme .table-bordered>thead>tr>th,#bootstrap-theme .table-bordered>thead>tr>td{border-bottom-width:2px}#bootstrap-theme .table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}#bootstrap-theme .table-hover>tbody>tr:hover{background-color:#f5f5f5}#bootstrap-theme .table>thead>tr>td.active,#bootstrap-theme .table>thead>tr>th.active,#bootstrap-theme .table>thead>tr.active>td,#bootstrap-theme .table>thead>tr.active>th,#bootstrap-theme .table>tbody>tr>td.active,#bootstrap-theme .table>tbody>tr>th.active,#bootstrap-theme .table>tbody>tr.active>td,#bootstrap-theme .table>tbody>tr.active>th,#bootstrap-theme .table>tfoot>tr>td.active,#bootstrap-theme .table>tfoot>tr>th.active,#bootstrap-theme .table>tfoot>tr.active>td,#bootstrap-theme .table>tfoot>tr.active>th{background-color:#f5f5f5}#bootstrap-theme .table-hover>tbody>tr>td.active:hover,#bootstrap-theme .table-hover>tbody>tr>th.active:hover,#bootstrap-theme .table-hover>tbody>tr.active:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.active,#bootstrap-theme .table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}#bootstrap-theme .table>thead>tr>td.success,#bootstrap-theme .table>thead>tr>th.success,#bootstrap-theme .table>thead>tr.success>td,#bootstrap-theme .table>thead>tr.success>th,#bootstrap-theme .table>tbody>tr>td.success,#bootstrap-theme .table>tbody>tr>th.success,#bootstrap-theme .table>tbody>tr.success>td,#bootstrap-theme .table>tbody>tr.success>th,#bootstrap-theme .table>tfoot>tr>td.success,#bootstrap-theme .table>tfoot>tr>th.success,#bootstrap-theme .table>tfoot>tr.success>td,#bootstrap-theme .table>tfoot>tr.success>th{background-color:#dff0d8}#bootstrap-theme .table-hover>tbody>tr>td.success:hover,#bootstrap-theme .table-hover>tbody>tr>th.success:hover,#bootstrap-theme .table-hover>tbody>tr.success:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.success,#bootstrap-theme .table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}#bootstrap-theme .table>thead>tr>td.info,#bootstrap-theme .table>thead>tr>th.info,#bootstrap-theme .table>thead>tr.info>td,#bootstrap-theme .table>thead>tr.info>th,#bootstrap-theme .table>tbody>tr>td.info,#bootstrap-theme .table>tbody>tr>th.info,#bootstrap-theme .table>tbody>tr.info>td,#bootstrap-theme .table>tbody>tr.info>th,#bootstrap-theme .table>tfoot>tr>td.info,#bootstrap-theme .table>tfoot>tr>th.info,#bootstrap-theme .table>tfoot>tr.info>td,#bootstrap-theme .table>tfoot>tr.info>th{background-color:#d9edf7}#bootstrap-theme .table-hover>tbody>tr>td.info:hover,#bootstrap-theme .table-hover>tbody>tr>th.info:hover,#bootstrap-theme .table-hover>tbody>tr.info:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.info,#bootstrap-theme .table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}#bootstrap-theme .table>thead>tr>td.warning,#bootstrap-theme .table>thead>tr>th.warning,#bootstrap-theme .table>thead>tr.warning>td,#bootstrap-theme .table>thead>tr.warning>th,#bootstrap-theme .table>tbody>tr>td.warning,#bootstrap-theme .table>tbody>tr>th.warning,#bootstrap-theme .table>tbody>tr.warning>td,#bootstrap-theme .table>tbody>tr.warning>th,#bootstrap-theme .table>tfoot>tr>td.warning,#bootstrap-theme .table>tfoot>tr>th.warning,#bootstrap-theme .table>tfoot>tr.warning>td,#bootstrap-theme .table>tfoot>tr.warning>th{background-color:#fcf8e3}#bootstrap-theme .table-hover>tbody>tr>td.warning:hover,#bootstrap-theme .table-hover>tbody>tr>th.warning:hover,#bootstrap-theme .table-hover>tbody>tr.warning:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.warning,#bootstrap-theme .table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}#bootstrap-theme .table>thead>tr>td.danger,#bootstrap-theme .table>thead>tr>th.danger,#bootstrap-theme .table>thead>tr.danger>td,#bootstrap-theme .table>thead>tr.danger>th,#bootstrap-theme .table>tbody>tr>td.danger,#bootstrap-theme .table>tbody>tr>th.danger,#bootstrap-theme .table>tbody>tr.danger>td,#bootstrap-theme .table>tbody>tr.danger>th,#bootstrap-theme .table>tfoot>tr>td.danger,#bootstrap-theme .table>tfoot>tr>th.danger,#bootstrap-theme .table>tfoot>tr.danger>td,#bootstrap-theme .table>tfoot>tr.danger>th{background-color:#f2dede}#bootstrap-theme .table-hover>tbody>tr>td.danger:hover,#bootstrap-theme .table-hover>tbody>tr>th.danger:hover,#bootstrap-theme .table-hover>tbody>tr.danger:hover>td,#bootstrap-theme .table-hover>tbody>tr:hover>.danger,#bootstrap-theme .table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}#bootstrap-theme .table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){#bootstrap-theme .table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}#bootstrap-theme .table-responsive>.table{margin-bottom:0}#bootstrap-theme .table-responsive>.table>thead>tr>th,#bootstrap-theme .table-responsive>.table>thead>tr>td,#bootstrap-theme .table-responsive>.table>tbody>tr>th,#bootstrap-theme .table-responsive>.table>tbody>tr>td,#bootstrap-theme .table-responsive>.table>tfoot>tr>th,#bootstrap-theme .table-responsive>.table>tfoot>tr>td{white-space:nowrap}#bootstrap-theme .table-responsive>.table-bordered{border:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}#bootstrap-theme fieldset{min-width:0;padding:0;margin:0;border:0}#bootstrap-theme legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#555;border:0;border-bottom:1px solid #e5e5e5}#bootstrap-theme label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}#bootstrap-theme input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}#bootstrap-theme input[type=radio][disabled],#bootstrap-theme input[type=radio].disabled,fieldset[disabled] #bootstrap-theme input[type=radio],#bootstrap-theme input[type=checkbox][disabled],#bootstrap-theme input[type=checkbox].disabled,fieldset[disabled] #bootstrap-theme input[type=checkbox]{cursor:not-allowed}#bootstrap-theme input[type=file]{display:block}#bootstrap-theme input[type=range]{display:block;width:100%}#bootstrap-theme select[multiple],#bootstrap-theme select[size]{height:auto}#bootstrap-theme input[type=file]:focus,#bootstrap-theme input[type=radio]:focus,#bootstrap-theme input[type=checkbox]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme output{display:block;padding-top:5px;font-size:14px;line-height:1.428571429;color:#555}#bootstrap-theme .form-control{display:block;width:100%;height:30px;padding:4px 8px;font-size:14px;line-height:1.428571429;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}#bootstrap-theme .form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}#bootstrap-theme .form-control::-moz-placeholder{color:#999;opacity:1}#bootstrap-theme .form-control:-ms-input-placeholder{color:#999}#bootstrap-theme .form-control::-webkit-input-placeholder{color:#999}#bootstrap-theme .form-control::-ms-expand{background-color:transparent;border:0}#bootstrap-theme .form-control[disabled],#bootstrap-theme .form-control[readonly],fieldset[disabled] #bootstrap-theme .form-control{background-color:#eee;opacity:1}#bootstrap-theme .form-control[disabled],fieldset[disabled] #bootstrap-theme .form-control{cursor:not-allowed}#bootstrap-theme textarea.form-control{height:auto}@media screen and (-webkit-min-device-pixel-ratio:0){#bootstrap-theme input[type=date].form-control,#bootstrap-theme input[type=time].form-control,#bootstrap-theme input[type=datetime-local].form-control,#bootstrap-theme input[type=month].form-control{line-height:30px}#bootstrap-theme input[type=date].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=date],#bootstrap-theme .input-group-sm>input.input-group-addon[type=date],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=date],.input-group-sm #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=time],#bootstrap-theme .input-group-sm>input.input-group-addon[type=time],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=time],.input-group-sm #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=datetime-local],#bootstrap-theme .input-group-sm>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=datetime-local],.input-group-sm #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-sm,#bootstrap-theme .input-group-sm>input.form-control[type=month],#bootstrap-theme .input-group-sm>input.input-group-addon[type=month],#bootstrap-theme .input-group-sm>.input-group-btn>input.btn[type=month],.input-group-sm #bootstrap-theme input[type=month]{line-height:30px}#bootstrap-theme input[type=date].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=date],#bootstrap-theme .input-group-lg>input.input-group-addon[type=date],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=date],.input-group-lg #bootstrap-theme input[type=date],#bootstrap-theme input[type=time].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=time],#bootstrap-theme .input-group-lg>input.input-group-addon[type=time],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=time],.input-group-lg #bootstrap-theme input[type=time],#bootstrap-theme input[type=datetime-local].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=datetime-local],#bootstrap-theme .input-group-lg>input.input-group-addon[type=datetime-local],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=datetime-local],.input-group-lg #bootstrap-theme input[type=datetime-local],#bootstrap-theme input[type=month].input-lg,#bootstrap-theme .input-group-lg>input.form-control[type=month],#bootstrap-theme .input-group-lg>input.input-group-addon[type=month],#bootstrap-theme .input-group-lg>.input-group-btn>input.btn[type=month],.input-group-lg #bootstrap-theme input[type=month]{line-height:54px}}#bootstrap-theme .form-group{margin-bottom:15px}#bootstrap-theme .radio,#bootstrap-theme .checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}#bootstrap-theme .radio.disabled label,fieldset[disabled] #bootstrap-theme .radio label,#bootstrap-theme .checkbox.disabled label,fieldset[disabled] #bootstrap-theme .checkbox label{cursor:not-allowed}#bootstrap-theme .radio label,#bootstrap-theme .checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}#bootstrap-theme .radio input[type=radio],#bootstrap-theme .radio-inline input[type=radio],#bootstrap-theme .checkbox input[type=checkbox],#bootstrap-theme .checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}#bootstrap-theme .radio+.radio,#bootstrap-theme .checkbox+.checkbox{margin-top:-5px}#bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}#bootstrap-theme .radio-inline.disabled,fieldset[disabled] #bootstrap-theme .radio-inline,#bootstrap-theme .checkbox-inline.disabled,fieldset[disabled] #bootstrap-theme .checkbox-inline{cursor:not-allowed}#bootstrap-theme .radio-inline+.radio-inline,#bootstrap-theme .checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}#bootstrap-theme .form-control-static{min-height:34px;padding-top:5px;padding-bottom:5px;margin-bottom:0}#bootstrap-theme .form-control-static.input-lg,#bootstrap-theme .input-group-lg>.form-control-static.form-control,#bootstrap-theme .input-group-lg>.form-control-static.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.form-control-static.btn,#bootstrap-theme .form-control-static.input-sm,#bootstrap-theme .input-group-sm>.form-control-static.form-control,#bootstrap-theme .input-group-sm>.form-control-static.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.form-control-static.btn{padding-right:0;padding-left:0}#bootstrap-theme .input-sm,#bootstrap-theme .input-group-sm>.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme select.input-sm,#bootstrap-theme .input-group-sm>select.form-control,#bootstrap-theme .input-group-sm>select.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>select.btn{height:30px;line-height:30px}#bootstrap-theme textarea.input-sm,#bootstrap-theme .input-group-sm>textarea.form-control,#bootstrap-theme .input-group-sm>textarea.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-sm,#bootstrap-theme .input-group-sm>select.form-control[multiple],#bootstrap-theme .input-group-sm>select.input-group-addon[multiple],#bootstrap-theme .input-group-sm>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .form-group-sm select.form-control{height:30px;line-height:30px}#bootstrap-theme .form-group-sm textarea.form-control,#bootstrap-theme .form-group-sm select[multiple].form-control{height:auto}#bootstrap-theme .form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .input-lg,#bootstrap-theme .input-group-lg>.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.btn{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme select.input-lg,#bootstrap-theme .input-group-lg>select.form-control,#bootstrap-theme .input-group-lg>select.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>select.btn{height:54px;line-height:54px}#bootstrap-theme textarea.input-lg,#bootstrap-theme .input-group-lg>textarea.form-control,#bootstrap-theme .input-group-lg>textarea.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>textarea.btn,#bootstrap-theme select[multiple].input-lg,#bootstrap-theme .input-group-lg>select.form-control[multiple],#bootstrap-theme .input-group-lg>select.input-group-addon[multiple],#bootstrap-theme .input-group-lg>.input-group-btn>select.btn[multiple]{height:auto}#bootstrap-theme .form-group-lg .form-control{height:54px;padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .form-group-lg select.form-control{height:54px;line-height:54px}#bootstrap-theme .form-group-lg textarea.form-control,#bootstrap-theme .form-group-lg select[multiple].form-control{height:auto}#bootstrap-theme .form-group-lg .form-control-static{height:54px;min-height:38px;padding:15px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .has-feedback{position:relative}#bootstrap-theme .has-feedback .form-control{padding-right:37.5px}#bootstrap-theme .form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:30px;height:30px;line-height:30px;text-align:center;pointer-events:none}#bootstrap-theme .input-lg+.form-control-feedback,#bootstrap-theme .input-group-lg>.form-control+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-lg>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-lg+.form-control-feedback,#bootstrap-theme .form-group-lg .form-control+.form-control-feedback{width:54px;height:54px;line-height:54px}#bootstrap-theme .input-sm+.form-control-feedback,#bootstrap-theme .input-group-sm>.form-control+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-addon+.form-control-feedback,#bootstrap-theme .input-group-sm>.input-group-btn>.btn+.form-control-feedback,#bootstrap-theme .input-group-sm+.form-control-feedback,#bootstrap-theme .form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}#bootstrap-theme .has-success .help-block,#bootstrap-theme .has-success .control-label,#bootstrap-theme .has-success .radio,#bootstrap-theme .has-success .checkbox,#bootstrap-theme .has-success .radio-inline,#bootstrap-theme .has-success .checkbox-inline,#bootstrap-theme .has-success.radio label,#bootstrap-theme .has-success.checkbox label,#bootstrap-theme .has-success.radio-inline label,#bootstrap-theme .has-success.checkbox-inline label{color:#468847}#bootstrap-theme .has-success .form-control{border-color:#468847;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-success .form-control:focus{border-color:#356635;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}#bootstrap-theme .has-success .input-group-addon{color:#468847;background-color:#dff0d8;border-color:#468847}#bootstrap-theme .has-success .form-control-feedback{color:#468847}#bootstrap-theme .has-warning .help-block,#bootstrap-theme .has-warning .control-label,#bootstrap-theme .has-warning .radio,#bootstrap-theme .has-warning .checkbox,#bootstrap-theme .has-warning .radio-inline,#bootstrap-theme .has-warning .checkbox-inline,#bootstrap-theme .has-warning.radio label,#bootstrap-theme .has-warning.checkbox label,#bootstrap-theme .has-warning.radio-inline label,#bootstrap-theme .has-warning.checkbox-inline label{color:#c09853}#bootstrap-theme .has-warning .form-control{border-color:#c09853;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-warning .form-control:focus{border-color:#a47e3c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}#bootstrap-theme .has-warning .input-group-addon{color:#c09853;background-color:#fcf8e3;border-color:#c09853}#bootstrap-theme .has-warning .form-control-feedback{color:#c09853}#bootstrap-theme .has-error .help-block,#bootstrap-theme .has-error .control-label,#bootstrap-theme .has-error .radio,#bootstrap-theme .has-error .checkbox,#bootstrap-theme .has-error .radio-inline,#bootstrap-theme .has-error .checkbox-inline,#bootstrap-theme .has-error.radio label,#bootstrap-theme .has-error.checkbox label,#bootstrap-theme .has-error.radio-inline label,#bootstrap-theme .has-error.checkbox-inline label{color:#b94a48}#bootstrap-theme .has-error .form-control{border-color:#b94a48;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}#bootstrap-theme .has-error .form-control:focus{border-color:#953b39;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}#bootstrap-theme .has-error .input-group-addon{color:#b94a48;background-color:#f2dede;border-color:#b94a48}#bootstrap-theme .has-error .form-control-feedback{color:#b94a48}#bootstrap-theme .has-feedback label~.form-control-feedback{top:25px}#bootstrap-theme .has-feedback label.sr-only~.form-control-feedback{top:0}#bootstrap-theme .help-block{display:block;margin-top:5px;margin-bottom:10px;color:#959595}@media (min-width:768px){#bootstrap-theme .form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .form-inline .form-control-static{display:inline-block}#bootstrap-theme .form-inline .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .form-inline .input-group .input-group-addon,#bootstrap-theme .form-inline .input-group .input-group-btn,#bootstrap-theme .form-inline .input-group .form-control{width:auto}#bootstrap-theme .form-inline .input-group>.form-control{width:100%}#bootstrap-theme .form-inline .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio,#bootstrap-theme .form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .form-inline .radio label,#bootstrap-theme .form-inline .checkbox label{padding-left:0}#bootstrap-theme .form-inline .radio input[type=radio],#bootstrap-theme .form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .form-inline .has-feedback .form-control-feedback{top:0}}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox,#bootstrap-theme .form-horizontal .radio-inline,#bootstrap-theme .form-horizontal .checkbox-inline{padding-top:5px;margin-top:0;margin-bottom:0}#bootstrap-theme .form-horizontal .radio,#bootstrap-theme .form-horizontal .checkbox{min-height:25px}#bootstrap-theme .form-horizontal .form-group{margin-right:-15px;margin-left:-15px}#bootstrap-theme .form-horizontal .form-group:before,#bootstrap-theme .form-horizontal .form-group:after{display:table;content:" "}#bootstrap-theme .form-horizontal .form-group:after{clear:both}@media (min-width:768px){#bootstrap-theme .form-horizontal .control-label{padding-top:5px;margin-bottom:0;text-align:right}}#bootstrap-theme .form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-lg .control-label{padding-top:15px;font-size:18px}}@media (min-width:768px){#bootstrap-theme .form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}#bootstrap-theme .btn{display:inline-block;margin-bottom:0;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;padding:4px 8px;font-size:14px;line-height:1.428571429;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus,#bootstrap-theme .btn:active:focus,#bootstrap-theme .btn:active.focus,#bootstrap-theme .btn.active:focus,#bootstrap-theme .btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}#bootstrap-theme .btn:hover,#bootstrap-theme .btn:focus,#bootstrap-theme .btn.focus{color:#fff;text-decoration:none}#bootstrap-theme .btn:active,#bootstrap-theme .btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn.disabled,#bootstrap-theme .btn[disabled],fieldset[disabled] #bootstrap-theme .btn{cursor:not-allowed;-webkit-filter:alpha(opacity=65);filter:alpha(opacity=65);opacity:.65;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme a.btn.disabled,fieldset[disabled] #bootstrap-theme a.btn{pointer-events:none}#bootstrap-theme .btn-default{color:#fff;background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:focus,#bootstrap-theme .btn-default.focus{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:hover{color:#fff;background-color:#565752;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active,#bootstrap-theme .btn-default.active,.open>#bootstrap-theme .btn-default.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default:active:hover,#bootstrap-theme .btn-default:active:focus,#bootstrap-theme .btn-default:active.focus,#bootstrap-theme .btn-default.active:hover,#bootstrap-theme .btn-default.active:focus,#bootstrap-theme .btn-default.active.focus,.open>#bootstrap-theme .btn-default.dropdown-toggle:hover,.open>#bootstrap-theme .btn-default.dropdown-toggle:focus,.open>#bootstrap-theme .btn-default.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default.disabled:hover,#bootstrap-theme .btn-default.disabled:focus,#bootstrap-theme .btn-default.disabled.focus,#bootstrap-theme .btn-default[disabled]:hover,#bootstrap-theme .btn-default[disabled]:focus,#bootstrap-theme .btn-default[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-default:hover,fieldset[disabled] #bootstrap-theme .btn-default:focus,fieldset[disabled] #bootstrap-theme .btn-default.focus{background-color:#70716b;border-color:rgba(0,0,0,.1)}#bootstrap-theme .btn-default .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-primary{color:#fff;background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary:focus,#bootstrap-theme .btn-primary.focus{color:#fff;background-color:#565752;border-color:#2f302d}#bootstrap-theme .btn-primary:hover{color:#fff;background-color:#565752;border-color:#51524d}#bootstrap-theme .btn-primary:active,#bootstrap-theme .btn-primary.active,.open>#bootstrap-theme .btn-primary.dropdown-toggle{color:#fff;background-color:#565752;background-image:none;border-color:#51524d}#bootstrap-theme .btn-primary:active:hover,#bootstrap-theme .btn-primary:active:focus,#bootstrap-theme .btn-primary:active.focus,#bootstrap-theme .btn-primary.active:hover,#bootstrap-theme .btn-primary.active:focus,#bootstrap-theme .btn-primary.active.focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle:hover,.open>#bootstrap-theme .btn-primary.dropdown-toggle:focus,.open>#bootstrap-theme .btn-primary.dropdown-toggle.focus{color:#fff;background-color:#444441;border-color:#2f302d}#bootstrap-theme .btn-primary.disabled:hover,#bootstrap-theme .btn-primary.disabled:focus,#bootstrap-theme .btn-primary.disabled.focus,#bootstrap-theme .btn-primary[disabled]:hover,#bootstrap-theme .btn-primary[disabled]:focus,#bootstrap-theme .btn-primary[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-primary:hover,fieldset[disabled] #bootstrap-theme .btn-primary:focus,fieldset[disabled] #bootstrap-theme .btn-primary.focus{background-color:#70716b;border-color:#70716b}#bootstrap-theme .btn-primary .badge{color:#70716b;background-color:#fff}#bootstrap-theme .btn-success{color:#fff;background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success:focus,#bootstrap-theme .btn-success.focus{color:#fff;background-color:#59822c;border-color:#324919}#bootstrap-theme .btn-success:hover{color:#fff;background-color:#59822c;border-color:#547a29}#bootstrap-theme .btn-success:active,#bootstrap-theme .btn-success.active,.open>#bootstrap-theme .btn-success.dropdown-toggle{color:#fff;background-color:#59822c;background-image:none;border-color:#547a29}#bootstrap-theme .btn-success:active:hover,#bootstrap-theme .btn-success:active:focus,#bootstrap-theme .btn-success:active.focus,#bootstrap-theme .btn-success.active:hover,#bootstrap-theme .btn-success.active:focus,#bootstrap-theme .btn-success.active.focus,.open>#bootstrap-theme .btn-success.dropdown-toggle:hover,.open>#bootstrap-theme .btn-success.dropdown-toggle:focus,.open>#bootstrap-theme .btn-success.dropdown-toggle.focus{color:#fff;background-color:#476723;border-color:#324919}#bootstrap-theme .btn-success.disabled:hover,#bootstrap-theme .btn-success.disabled:focus,#bootstrap-theme .btn-success.disabled.focus,#bootstrap-theme .btn-success[disabled]:hover,#bootstrap-theme .btn-success[disabled]:focus,#bootstrap-theme .btn-success[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-success:hover,fieldset[disabled] #bootstrap-theme .btn-success:focus,fieldset[disabled] #bootstrap-theme .btn-success.focus{background-color:#73a839;border-color:#73a839}#bootstrap-theme .btn-success .badge{color:#73a839;background-color:#fff}#bootstrap-theme .btn-info{color:#fff;background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info:focus,#bootstrap-theme .btn-info.focus{color:#fff;background-color:#9bd1fd;border-color:#50affc}#bootstrap-theme .btn-info:hover{color:#fff;background-color:#9bd1fd;border-color:#91ccfd}#bootstrap-theme .btn-info:active,#bootstrap-theme .btn-info.active,.open>#bootstrap-theme .btn-info.dropdown-toggle{color:#fff;background-color:#9bd1fd;background-image:none;border-color:#91ccfd}#bootstrap-theme .btn-info:active:hover,#bootstrap-theme .btn-info:active:focus,#bootstrap-theme .btn-info:active.focus,#bootstrap-theme .btn-info.active:hover,#bootstrap-theme .btn-info.active:focus,#bootstrap-theme .btn-info.active.focus,.open>#bootstrap-theme .btn-info.dropdown-toggle:hover,.open>#bootstrap-theme .btn-info.dropdown-toggle:focus,.open>#bootstrap-theme .btn-info.dropdown-toggle.focus{color:#fff;background-color:#78c1fc;border-color:#50affc}#bootstrap-theme .btn-info.disabled:hover,#bootstrap-theme .btn-info.disabled:focus,#bootstrap-theme .btn-info.disabled.focus,#bootstrap-theme .btn-info[disabled]:hover,#bootstrap-theme .btn-info[disabled]:focus,#bootstrap-theme .btn-info[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-info:hover,fieldset[disabled] #bootstrap-theme .btn-info:focus,fieldset[disabled] #bootstrap-theme .btn-info.focus{background-color:#cde8fe;border-color:#cde8fe}#bootstrap-theme .btn-info .badge{color:#cde8fe;background-color:#fff}#bootstrap-theme .btn-warning{color:#fff;background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning:focus,#bootstrap-theme .btn-warning.focus{color:#fff;background-color:#aa4200;border-color:#5e2400}#bootstrap-theme .btn-warning:hover{color:#fff;background-color:#aa4200;border-color:#a03e00}#bootstrap-theme .btn-warning:active,#bootstrap-theme .btn-warning.active,.open>#bootstrap-theme .btn-warning.dropdown-toggle{color:#fff;background-color:#aa4200;background-image:none;border-color:#a03e00}#bootstrap-theme .btn-warning:active:hover,#bootstrap-theme .btn-warning:active:focus,#bootstrap-theme .btn-warning:active.focus,#bootstrap-theme .btn-warning.active:hover,#bootstrap-theme .btn-warning.active:focus,#bootstrap-theme .btn-warning.active.focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle:hover,.open>#bootstrap-theme .btn-warning.dropdown-toggle:focus,.open>#bootstrap-theme .btn-warning.dropdown-toggle.focus{color:#fff;background-color:#863400;border-color:#5e2400}#bootstrap-theme .btn-warning.disabled:hover,#bootstrap-theme .btn-warning.disabled:focus,#bootstrap-theme .btn-warning.disabled.focus,#bootstrap-theme .btn-warning[disabled]:hover,#bootstrap-theme .btn-warning[disabled]:focus,#bootstrap-theme .btn-warning[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-warning:hover,fieldset[disabled] #bootstrap-theme .btn-warning:focus,fieldset[disabled] #bootstrap-theme .btn-warning.focus{background-color:#dd5600;border-color:#dd5600}#bootstrap-theme .btn-warning .badge{color:#dd5600;background-color:#fff}#bootstrap-theme .btn-danger{color:#fff;background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger:focus,#bootstrap-theme .btn-danger.focus{color:#fff;background-color:#9a161a;border-color:#570c0f}#bootstrap-theme .btn-danger:hover{color:#fff;background-color:#9a161a;border-color:#911419}#bootstrap-theme .btn-danger:active,#bootstrap-theme .btn-danger.active,.open>#bootstrap-theme .btn-danger.dropdown-toggle{color:#fff;background-color:#9a161a;background-image:none;border-color:#911419}#bootstrap-theme .btn-danger:active:hover,#bootstrap-theme .btn-danger:active:focus,#bootstrap-theme .btn-danger:active.focus,#bootstrap-theme .btn-danger.active:hover,#bootstrap-theme .btn-danger.active:focus,#bootstrap-theme .btn-danger.active.focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle:hover,.open>#bootstrap-theme .btn-danger.dropdown-toggle:focus,.open>#bootstrap-theme .btn-danger.dropdown-toggle.focus{color:#fff;background-color:#7b1115;border-color:#570c0f}#bootstrap-theme .btn-danger.disabled:hover,#bootstrap-theme .btn-danger.disabled:focus,#bootstrap-theme .btn-danger.disabled.focus,#bootstrap-theme .btn-danger[disabled]:hover,#bootstrap-theme .btn-danger[disabled]:focus,#bootstrap-theme .btn-danger[disabled].focus,fieldset[disabled] #bootstrap-theme .btn-danger:hover,fieldset[disabled] #bootstrap-theme .btn-danger:focus,fieldset[disabled] #bootstrap-theme .btn-danger.focus{background-color:#c71c22;border-color:#c71c22}#bootstrap-theme .btn-danger .badge{color:#c71c22;background-color:#fff}#bootstrap-theme .btn-link{font-weight:400;color:#2786c2;border-radius:0}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:active,#bootstrap-theme .btn-link.active,#bootstrap-theme .btn-link[disabled],fieldset[disabled] #bootstrap-theme .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn-link,#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus,#bootstrap-theme .btn-link:active{border-color:transparent}#bootstrap-theme .btn-link:hover,#bootstrap-theme .btn-link:focus{color:#1a5a82;text-decoration:underline;background-color:transparent}#bootstrap-theme .btn-link[disabled]:hover,#bootstrap-theme .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .btn-link:hover,fieldset[disabled] #bootstrap-theme .btn-link:focus{color:#999;text-decoration:none}#bootstrap-theme .btn-lg,#bootstrap-theme .btn-group-lg>.btn{padding:14px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}#bootstrap-theme .btn-sm,#bootstrap-theme .btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-xs,#bootstrap-theme .btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}#bootstrap-theme .btn-block{display:block;width:100%}#bootstrap-theme .btn-block+.btn-block{margin-top:5px}#bootstrap-theme input[type=submit].btn-block,#bootstrap-theme input[type=reset].btn-block,#bootstrap-theme input[type=button].btn-block{width:100%}#bootstrap-theme .fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}#bootstrap-theme .fade.in{opacity:1}#bootstrap-theme .collapse{display:none}#bootstrap-theme .collapse.in{display:block}#bootstrap-theme tr.collapse.in{display:table-row}#bootstrap-theme tbody.collapse.in{display:table-row-group}#bootstrap-theme .collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height,visibility;transition-property:height,visibility;-webkit-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;transition-timing-function:ease}#bootstrap-theme .caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}#bootstrap-theme .dropup,#bootstrap-theme .dropdown{position:relative}#bootstrap-theme .dropdown-toggle:focus{outline:0}#bootstrap-theme .dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}#bootstrap-theme .dropdown-menu.pull-right{right:0;left:auto}#bootstrap-theme .dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.428571429;color:#333;white-space:nowrap}#bootstrap-theme .dropdown-menu>li>a:hover,#bootstrap-theme .dropdown-menu>li>a:focus{color:#fff;text-decoration:none;background-color:#000}#bootstrap-theme .dropdown-menu>.active>a,#bootstrap-theme .dropdown-menu>.active>a:hover,#bootstrap-theme .dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#000;outline:0}#bootstrap-theme .dropdown-menu>.disabled>a,#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{color:#999}#bootstrap-theme .dropdown-menu>.disabled>a:hover,#bootstrap-theme .dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;-webkit-filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}#bootstrap-theme .open>.dropdown-menu{display:block}#bootstrap-theme .open>a{outline:0}#bootstrap-theme .dropdown-menu-right{right:0;left:auto}#bootstrap-theme .dropdown-menu-left{right:auto;left:0}#bootstrap-theme .dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.428571429;color:#999;white-space:nowrap}#bootstrap-theme .dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}#bootstrap-theme .pull-right>.dropdown-menu{right:0;left:auto}#bootstrap-theme .dropup .caret,#bootstrap-theme .navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}#bootstrap-theme .dropup .dropdown-menu,#bootstrap-theme .navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){#bootstrap-theme .navbar-right .dropdown-menu{right:0;left:auto}#bootstrap-theme .navbar-right .dropdown-menu-left{left:0;right:auto}}#bootstrap-theme .btn-group,#bootstrap-theme .btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}#bootstrap-theme .btn-group>.btn,#bootstrap-theme .btn-group-vertical>.btn{position:relative;float:left}#bootstrap-theme .btn-group>.btn:hover,#bootstrap-theme .btn-group>.btn:focus,#bootstrap-theme .btn-group>.btn:active,#bootstrap-theme .btn-group>.btn.active,#bootstrap-theme .btn-group-vertical>.btn:hover,#bootstrap-theme .btn-group-vertical>.btn:focus,#bootstrap-theme .btn-group-vertical>.btn:active,#bootstrap-theme .btn-group-vertical>.btn.active{z-index:2}#bootstrap-theme .btn-group .btn+.btn,#bootstrap-theme .btn-group .btn+.btn-group,#bootstrap-theme .btn-group .btn-group+.btn,#bootstrap-theme .btn-group .btn-group+.btn-group{margin-left:-1px}#bootstrap-theme .btn-toolbar{margin-left:-5px}#bootstrap-theme .btn-toolbar:before,#bootstrap-theme .btn-toolbar:after{display:table;content:" "}#bootstrap-theme .btn-toolbar:after{clear:both}#bootstrap-theme .btn-toolbar .btn,#bootstrap-theme .btn-toolbar .btn-group,#bootstrap-theme .btn-toolbar .input-group{float:left}#bootstrap-theme .btn-toolbar>.btn,#bootstrap-theme .btn-toolbar>.btn-group,#bootstrap-theme .btn-toolbar>.input-group{margin-left:5px}#bootstrap-theme .btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}#bootstrap-theme .btn-group>.btn:first-child{margin-left:0}#bootstrap-theme .btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn:last-child:not(:first-child),#bootstrap-theme .btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group>.btn-group{float:left}#bootstrap-theme .btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group .dropdown-toggle:active,#bootstrap-theme .btn-group.open .dropdown-toggle{outline:0}#bootstrap-theme .btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}#bootstrap-theme .btn-group>.btn-lg+.dropdown-toggle,#bootstrap-theme .btn-group-lg.btn-group>.btn+.dropdown-toggle,#bootstrap-theme .btn-group-lg>.btn-group>.btn+.dropdown-toggle{padding-right:12px;padding-left:12px}#bootstrap-theme .btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}#bootstrap-theme .btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}#bootstrap-theme .btn .caret{margin-left:0}#bootstrap-theme .btn-lg .caret,#bootstrap-theme .btn-group-lg>.btn .caret{border-width:5px 5px 0;border-bottom-width:0}#bootstrap-theme .dropup .btn-lg .caret,#bootstrap-theme .dropup .btn-group-lg>.btn .caret{border-width:0 5px 5px}#bootstrap-theme .btn-group-vertical>.btn,#bootstrap-theme .btn-group-vertical>.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}#bootstrap-theme .btn-group-vertical>.btn-group:before,#bootstrap-theme .btn-group-vertical>.btn-group:after{display:table;content:" "}#bootstrap-theme .btn-group-vertical>.btn-group:after{clear:both}#bootstrap-theme .btn-group-vertical>.btn-group>.btn{float:none}#bootstrap-theme .btn-group-vertical>.btn+.btn,#bootstrap-theme .btn-group-vertical>.btn+.btn-group,#bootstrap-theme .btn-group-vertical>.btn-group+.btn,#bootstrap-theme .btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}#bootstrap-theme .btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,#bootstrap-theme .btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}#bootstrap-theme .btn-group-justified>.btn,#bootstrap-theme .btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}#bootstrap-theme .btn-group-justified>.btn-group .btn{width:100%}#bootstrap-theme .btn-group-justified>.btn-group .dropdown-menu{left:auto}#bootstrap-theme [data-toggle=buttons]>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn input[type=checkbox],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=radio],#bootstrap-theme [data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}#bootstrap-theme .input-group{position:relative;display:table;border-collapse:separate}#bootstrap-theme .input-group[class*=col-]{float:none;padding-right:0;padding-left:0}#bootstrap-theme .input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}#bootstrap-theme .input-group .form-control:focus{z-index:3}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn,#bootstrap-theme .input-group .form-control{display:table-cell}#bootstrap-theme .input-group-addon:not(:first-child):not(:last-child),#bootstrap-theme .input-group-btn:not(:first-child):not(:last-child),#bootstrap-theme .input-group .form-control:not(:first-child):not(:last-child){border-radius:0}#bootstrap-theme .input-group-addon,#bootstrap-theme .input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}#bootstrap-theme .input-group-addon{padding:4px 8px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}#bootstrap-theme .input-group-addon.input-sm,#bootstrap-theme .input-group-sm>.input-group-addon.form-control,#bootstrap-theme .input-group-sm>.input-group-addon,#bootstrap-theme .input-group-sm>.input-group-btn>.input-group-addon.btn{padding:5px 10px;font-size:12px;border-radius:3px}#bootstrap-theme .input-group-addon.input-lg,#bootstrap-theme .input-group-lg>.input-group-addon.form-control,#bootstrap-theme .input-group-lg>.input-group-addon,#bootstrap-theme .input-group-lg>.input-group-btn>.input-group-addon.btn{padding:14px 16px;font-size:18px;border-radius:6px}#bootstrap-theme .input-group-addon input[type=radio],#bootstrap-theme .input-group-addon input[type=checkbox]{margin-top:0}#bootstrap-theme .input-group .form-control:first-child,#bootstrap-theme .input-group-addon:first-child,#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:first-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),#bootstrap-theme .input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}#bootstrap-theme .input-group-addon:first-child{border-right:0}#bootstrap-theme .input-group .form-control:last-child,#bootstrap-theme .input-group-addon:last-child,#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group>.btn,#bootstrap-theme .input-group-btn:last-child>.dropdown-toggle,#bootstrap-theme .input-group-btn:first-child>.btn:not(:first-child),#bootstrap-theme .input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}#bootstrap-theme .input-group-addon:last-child{border-left:0}#bootstrap-theme .input-group-btn{position:relative;font-size:0;white-space:nowrap}#bootstrap-theme .input-group-btn>.btn{position:relative}#bootstrap-theme .input-group-btn>.btn+.btn{margin-left:-1px}#bootstrap-theme .input-group-btn>.btn:hover,#bootstrap-theme .input-group-btn>.btn:focus,#bootstrap-theme .input-group-btn>.btn:active{z-index:2}#bootstrap-theme .input-group-btn:first-child>.btn,#bootstrap-theme .input-group-btn:first-child>.btn-group{margin-right:-1px}#bootstrap-theme .input-group-btn:last-child>.btn,#bootstrap-theme .input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}#bootstrap-theme .nav{padding-left:0;margin-bottom:0;list-style:none}#bootstrap-theme .nav:before,#bootstrap-theme .nav:after{display:table;content:" "}#bootstrap-theme .nav:after{clear:both}#bootstrap-theme .nav>li{position:relative;display:block}#bootstrap-theme .nav>li>a{position:relative;display:block;padding:10px 15px}#bootstrap-theme .nav>li>a:hover,#bootstrap-theme .nav>li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .nav>li.disabled>a{color:#999}#bootstrap-theme .nav>li.disabled>a:hover,#bootstrap-theme .nav>li.disabled>a:focus{color:#999;text-decoration:none;cursor:not-allowed;background-color:transparent}#bootstrap-theme .nav .open>a,#bootstrap-theme .nav .open>a:hover,#bootstrap-theme .nav .open>a:focus{background-color:#eee;border-color:#2786c2}#bootstrap-theme .nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}#bootstrap-theme .nav>li>a>img{max-width:none}#bootstrap-theme .nav-tabs{border-bottom:1px solid #ddd}#bootstrap-theme .nav-tabs>li{float:left;margin-bottom:-1px}#bootstrap-theme .nav-tabs>li>a{margin-right:2px;line-height:1.428571429;border:1px solid transparent;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs>li>a:hover{border-color:#eee #eee #ddd}#bootstrap-theme .nav-tabs>li.active>a,#bootstrap-theme .nav-tabs>li.active>a:hover,#bootstrap-theme .nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}#bootstrap-theme .nav-pills>li{float:left}#bootstrap-theme .nav-pills>li>a{border-radius:4px}#bootstrap-theme .nav-pills>li+li{margin-left:2px}#bootstrap-theme .nav-pills>li.active>a,#bootstrap-theme .nav-pills>li.active>a:hover,#bootstrap-theme .nav-pills>li.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .nav-stacked>li{float:none}#bootstrap-theme .nav-stacked>li+li{margin-top:2px;margin-left:0}#bootstrap-theme .nav-justified,#bootstrap-theme .nav-tabs.nav-justified{width:100%}#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{float:none}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}#bootstrap-theme .nav-justified>.dropdown .dropdown-menu,#bootstrap-theme .nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){#bootstrap-theme .nav-justified>li,#bootstrap-theme .nav-tabs.nav-justified>li{display:table-cell;width:1%}#bootstrap-theme .nav-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-bottom:0}}#bootstrap-theme .nav-tabs-justified,#bootstrap-theme .nav-tabs.nav-justified{border-bottom:0}#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){#bootstrap-theme .nav-tabs-justified>li>a,#bootstrap-theme .nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}#bootstrap-theme .nav-tabs-justified>.active>a,#bootstrap-theme .nav-tabs.nav-justified>.active>a,#bootstrap-theme .nav-tabs-justified>.active>a:hover,#bootstrap-theme .nav-tabs.nav-justified>.active>a:hover,#bootstrap-theme .nav-tabs-justified>.active>a:focus,#bootstrap-theme .nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}#bootstrap-theme .tab-content>.tab-pane{display:none}#bootstrap-theme .tab-content>.active{display:block}#bootstrap-theme .nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}#bootstrap-theme .navbar:before,#bootstrap-theme .navbar:after{display:table;content:" "}#bootstrap-theme .navbar:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar{border-radius:4px}}#bootstrap-theme .navbar-header:before,#bootstrap-theme .navbar-header:after{display:table;content:" "}#bootstrap-theme .navbar-header:after{clear:both}@media (min-width:768px){#bootstrap-theme .navbar-header{float:left}}#bootstrap-theme .navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;border-top:1px solid transparent;box-shadow:inset 0 1px 0 rgba(255,255,255,.1);-webkit-overflow-scrolling:touch}#bootstrap-theme .navbar-collapse:before,#bootstrap-theme .navbar-collapse:after{display:table;content:" "}#bootstrap-theme .navbar-collapse:after{clear:both}#bootstrap-theme .navbar-collapse.in{overflow-y:auto}@media (min-width:768px){#bootstrap-theme .navbar-collapse{width:auto;border-top:0;box-shadow:none}#bootstrap-theme .navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}#bootstrap-theme .navbar-collapse.in{overflow-y:visible}.navbar-fixed-top #bootstrap-theme .navbar-collapse,.navbar-static-top #bootstrap-theme .navbar-collapse,.navbar-fixed-bottom #bootstrap-theme .navbar-collapse{padding-right:0;padding-left:0}}#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){#bootstrap-theme .navbar-fixed-top .navbar-collapse,#bootstrap-theme .navbar-fixed-bottom .navbar-collapse{max-height:200px}}@media (min-width:768px){#bootstrap-theme .navbar-fixed-top,#bootstrap-theme .navbar-fixed-bottom{border-radius:0}}#bootstrap-theme .navbar-fixed-top{top:0;border-width:0 0 1px}#bootstrap-theme .navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){#bootstrap-theme .container>.navbar-header,#bootstrap-theme .container>.navbar-collapse,#bootstrap-theme .container-fluid>.navbar-header,#bootstrap-theme .container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}#bootstrap-theme .navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){#bootstrap-theme .navbar-static-top{border-radius:0}}#bootstrap-theme .navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}#bootstrap-theme .navbar-brand:hover,#bootstrap-theme .navbar-brand:focus{text-decoration:none}#bootstrap-theme .navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container #bootstrap-theme .navbar-brand,.navbar>.container-fluid #bootstrap-theme .navbar-brand{margin-left:-15px}}#bootstrap-theme .navbar-toggle{position:relative;float:right;padding:9px 10px;margin-right:15px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}#bootstrap-theme .navbar-toggle:focus{outline:0}#bootstrap-theme .navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}#bootstrap-theme .navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){#bootstrap-theme .navbar-toggle{display:none}}#bootstrap-theme .navbar-nav{margin:7.5px -15px}#bootstrap-theme .navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){#bootstrap-theme .navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;box-shadow:none}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a,#bootstrap-theme .navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a{line-height:20px}#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){#bootstrap-theme .navbar-nav{float:left;margin:0}#bootstrap-theme .navbar-nav>li{float:left}#bootstrap-theme .navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}#bootstrap-theme .navbar-form{padding:10px 15px;margin-right:-15px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);margin-top:10px;margin-bottom:10px}@media (min-width:768px){#bootstrap-theme .navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}#bootstrap-theme .navbar-form .form-control-static{display:inline-block}#bootstrap-theme .navbar-form .input-group{display:inline-table;vertical-align:middle}#bootstrap-theme .navbar-form .input-group .input-group-addon,#bootstrap-theme .navbar-form .input-group .input-group-btn,#bootstrap-theme .navbar-form .input-group .form-control{width:auto}#bootstrap-theme .navbar-form .input-group>.form-control{width:100%}#bootstrap-theme .navbar-form .control-label{margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio,#bootstrap-theme .navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}#bootstrap-theme .navbar-form .radio label,#bootstrap-theme .navbar-form .checkbox label{padding-left:0}#bootstrap-theme .navbar-form .radio input[type=radio],#bootstrap-theme .navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}#bootstrap-theme .navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){#bootstrap-theme .navbar-form .form-group{margin-bottom:5px}#bootstrap-theme .navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){#bootstrap-theme .navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}#bootstrap-theme .navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}#bootstrap-theme .navbar-btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-sm,#bootstrap-theme .btn-group-sm>.navbar-btn.btn{margin-top:10px;margin-bottom:10px}#bootstrap-theme .navbar-btn.btn-xs,#bootstrap-theme .btn-group-xs>.navbar-btn.btn{margin-top:14px;margin-bottom:14px}#bootstrap-theme .navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){#bootstrap-theme .navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){#bootstrap-theme .navbar-left{float:left !important}#bootstrap-theme .navbar-right{float:right !important;margin-right:-15px}#bootstrap-theme .navbar-right~.navbar-right{margin-right:0}}#bootstrap-theme .navbar-default{background-color:#000;border-color:#000}#bootstrap-theme .navbar-default .navbar-brand{color:#fff}#bootstrap-theme .navbar-default .navbar-brand:hover,#bootstrap-theme .navbar-default .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-default .navbar-text{color:#ddd}#bootstrap-theme .navbar-default .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.active>a,#bootstrap-theme .navbar-default .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.disabled>a:focus{color:#ddd;background-color:transparent}#bootstrap-theme .navbar-default .navbar-nav>.open>a,#bootstrap-theme .navbar-default .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-default .navbar-nav>.open>a:focus{color:#fff;background-color:#000}@media (max-width:767px){#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#000}#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ddd;background-color:transparent}}#bootstrap-theme .navbar-default .navbar-toggle{border-color:#000}#bootstrap-theme .navbar-default .navbar-toggle:hover,#bootstrap-theme .navbar-default .navbar-toggle:focus{background-color:#000}#bootstrap-theme .navbar-default .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-default .navbar-collapse,#bootstrap-theme .navbar-default .navbar-form{border-color:#000}#bootstrap-theme .navbar-default .navbar-link{color:#fff}#bootstrap-theme .navbar-default .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-default .btn-link{color:#fff}#bootstrap-theme .navbar-default .btn-link:hover,#bootstrap-theme .navbar-default .btn-link:focus{color:#fff}#bootstrap-theme .navbar-default .btn-link[disabled]:hover,#bootstrap-theme .navbar-default .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-default .btn-link:focus{color:#ddd}#bootstrap-theme .navbar-inverse{background-color:#cde8fe;border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-brand{color:#fff}#bootstrap-theme .navbar-inverse .navbar-brand:hover,#bootstrap-theme .navbar-inverse .navbar-brand:focus{color:#fff;background-color:none}#bootstrap-theme .navbar-inverse .navbar-text{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}#bootstrap-theme .navbar-inverse .navbar-nav>.open>a,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#b4ddfe}@media (max-width:767px){#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#fff}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,#bootstrap-theme .navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}#bootstrap-theme .navbar-inverse .navbar-toggle{border-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle:hover,#bootstrap-theme .navbar-inverse .navbar-toggle:focus{background-color:#b4ddfe}#bootstrap-theme .navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}#bootstrap-theme .navbar-inverse .navbar-collapse,#bootstrap-theme .navbar-inverse .navbar-form{border-color:#aad8fd}#bootstrap-theme .navbar-inverse .navbar-link{color:#fff}#bootstrap-theme .navbar-inverse .navbar-link:hover{color:#fff}#bootstrap-theme .navbar-inverse .btn-link{color:#fff}#bootstrap-theme .navbar-inverse .btn-link:hover,#bootstrap-theme .navbar-inverse .btn-link:focus{color:#fff}#bootstrap-theme .navbar-inverse .btn-link[disabled]:hover,#bootstrap-theme .navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:hover,fieldset[disabled] #bootstrap-theme .navbar-inverse .btn-link:focus{color:#ccc}#bootstrap-theme .breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}#bootstrap-theme .breadcrumb>li{display:inline-block}#bootstrap-theme .breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/ "}#bootstrap-theme .breadcrumb>.active{color:#999}#bootstrap-theme .pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}#bootstrap-theme .pagination>li{display:inline}#bootstrap-theme .pagination>li>a,#bootstrap-theme .pagination>li>span{position:relative;float:left;padding:4px 8px;margin-left:-1px;line-height:1.428571429;color:#2786c2;text-decoration:none;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .pagination>li>a:hover,#bootstrap-theme .pagination>li>a:focus,#bootstrap-theme .pagination>li>span:hover,#bootstrap-theme .pagination>li>span:focus{z-index:2;color:#1a5a82;background-color:#eee;border-color:#ddd}#bootstrap-theme .pagination>li:first-child>a,#bootstrap-theme .pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .pagination>li:last-child>a,#bootstrap-theme .pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}#bootstrap-theme .pagination>.active>a,#bootstrap-theme .pagination>.active>a:hover,#bootstrap-theme .pagination>.active>a:focus,#bootstrap-theme .pagination>.active>span,#bootstrap-theme .pagination>.active>span:hover,#bootstrap-theme .pagination>.active>span:focus{z-index:3;color:#999;cursor:default;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .pagination>.disabled>span,#bootstrap-theme .pagination>.disabled>span:hover,#bootstrap-theme .pagination>.disabled>span:focus,#bootstrap-theme .pagination>.disabled>a,#bootstrap-theme .pagination>.disabled>a:hover,#bootstrap-theme .pagination>.disabled>a:focus{color:#999;cursor:not-allowed;background-color:#fff;border-color:#ddd}#bootstrap-theme .pagination-lg>li>a,#bootstrap-theme .pagination-lg>li>span{padding:14px 16px;font-size:18px;line-height:1.3333333}#bootstrap-theme .pagination-lg>li:first-child>a,#bootstrap-theme .pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}#bootstrap-theme .pagination-lg>li:last-child>a,#bootstrap-theme .pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}#bootstrap-theme .pagination-sm>li>a,#bootstrap-theme .pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}#bootstrap-theme .pagination-sm>li:first-child>a,#bootstrap-theme .pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .pagination-sm>li:last-child>a,#bootstrap-theme .pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}#bootstrap-theme .pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}#bootstrap-theme .pager:before,#bootstrap-theme .pager:after{display:table;content:" "}#bootstrap-theme .pager:after{clear:both}#bootstrap-theme .pager li{display:inline}#bootstrap-theme .pager li>a,#bootstrap-theme .pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}#bootstrap-theme .pager li>a:hover,#bootstrap-theme .pager li>a:focus{text-decoration:none;background-color:#eee}#bootstrap-theme .pager .next>a,#bootstrap-theme .pager .next>span{float:right}#bootstrap-theme .pager .previous>a,#bootstrap-theme .pager .previous>span{float:left}#bootstrap-theme .pager .disabled>a,#bootstrap-theme .pager .disabled>a:hover,#bootstrap-theme .pager .disabled>a:focus,#bootstrap-theme .pager .disabled>span{color:#999;cursor:not-allowed;background-color:#fff}#bootstrap-theme .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}#bootstrap-theme .label:empty{display:none}.btn #bootstrap-theme .label{position:relative;top:-1px}#bootstrap-theme a.label:hover,#bootstrap-theme a.label:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .label-default{background-color:#999}#bootstrap-theme .label-default[href]:hover,#bootstrap-theme .label-default[href]:focus{background-color:gray}#bootstrap-theme .label-primary{background-color:#000}#bootstrap-theme .label-primary[href]:hover,#bootstrap-theme .label-primary[href]:focus{background-color:#000}#bootstrap-theme .label-success{background-color:#73a839}#bootstrap-theme .label-success[href]:hover,#bootstrap-theme .label-success[href]:focus{background-color:#59822c}#bootstrap-theme .label-info{background-color:#cde8fe}#bootstrap-theme .label-info[href]:hover,#bootstrap-theme .label-info[href]:focus{background-color:#9bd1fd}#bootstrap-theme .label-warning{background-color:#dd5600}#bootstrap-theme .label-warning[href]:hover,#bootstrap-theme .label-warning[href]:focus{background-color:#aa4200}#bootstrap-theme .label-danger{background-color:#c71c22}#bootstrap-theme .label-danger[href]:hover,#bootstrap-theme .label-danger[href]:focus{background-color:#9a161a}#bootstrap-theme .badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#000;border-radius:10px}#bootstrap-theme .badge:empty{display:none}.btn #bootstrap-theme .badge{position:relative;top:-1px}.btn-xs #bootstrap-theme .badge,#bootstrap-theme .btn-group-xs>.btn #bootstrap-theme .badge,.btn-group-xs>.btn #bootstrap-theme .badge{top:0;padding:1px 5px}.list-group-item.active>#bootstrap-theme .badge,.nav-pills>.active>a>#bootstrap-theme .badge{color:#2786c2;background-color:#fff}.list-group-item>#bootstrap-theme .badge{float:right}.list-group-item>#bootstrap-theme .badge+#bootstrap-theme .badge{margin-right:5px}.nav-pills>li>a>#bootstrap-theme .badge{margin-left:3px}#bootstrap-theme a.badge:hover,#bootstrap-theme a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}#bootstrap-theme .jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{color:inherit}#bootstrap-theme .jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}#bootstrap-theme .jumbotron>hr{border-top-color:#d5d5d5}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}#bootstrap-theme .jumbotron .container{max-width:100%}@media screen and (min-width:768px){#bootstrap-theme .jumbotron{padding-top:48px;padding-bottom:48px}.container #bootstrap-theme .jumbotron,.container-fluid #bootstrap-theme .jumbotron{padding-right:60px;padding-left:60px}#bootstrap-theme .jumbotron h1,#bootstrap-theme .jumbotron .h1{font-size:63px}}#bootstrap-theme .thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.428571429;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}#bootstrap-theme .thumbnail>img,#bootstrap-theme .thumbnail a>img{display:block;max-width:100%;height:auto;margin-right:auto;margin-left:auto}#bootstrap-theme .thumbnail .caption{padding:9px;color:#555}#bootstrap-theme a.thumbnail:hover,#bootstrap-theme a.thumbnail:focus,#bootstrap-theme a.thumbnail.active{border-color:#2786c2}#bootstrap-theme .alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}#bootstrap-theme .alert h4{margin-top:0;color:inherit}#bootstrap-theme .alert .alert-link{font-weight:700}#bootstrap-theme .alert>p,#bootstrap-theme .alert>ul{margin-bottom:0}#bootstrap-theme .alert>p+p{margin-top:5px}#bootstrap-theme .alert-dismissable,#bootstrap-theme .alert-dismissible{padding-right:35px}#bootstrap-theme .alert-dismissable .close,#bootstrap-theme .alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}#bootstrap-theme .alert-success{color:#468847;background-color:#dff0d8;border-color:#d6e9c6}#bootstrap-theme .alert-success hr{border-top-color:#c9e2b3}#bootstrap-theme .alert-success .alert-link{color:#356635}#bootstrap-theme .alert-info{color:#3a87ad;background-color:#d9edf7;border-color:#bce8f1}#bootstrap-theme .alert-info hr{border-top-color:#a6e1ec}#bootstrap-theme .alert-info .alert-link{color:#2d6987}#bootstrap-theme .alert-warning{color:#c09853;background-color:#fcf8e3;border-color:#fbeed5}#bootstrap-theme .alert-warning hr{border-top-color:#f8e5be}#bootstrap-theme .alert-warning .alert-link{color:#a47e3c}#bootstrap-theme .alert-danger{color:#b94a48;background-color:#f2dede;border-color:#eed3d7}#bootstrap-theme .alert-danger hr{border-top-color:#e6c1c7}#bootstrap-theme .alert-danger .alert-link{color:#953b39}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}#bootstrap-theme .progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}#bootstrap-theme .progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#000;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}#bootstrap-theme .progress-striped .progress-bar,#bootstrap-theme .progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:40px 40px}#bootstrap-theme .progress.active .progress-bar,#bootstrap-theme .progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}#bootstrap-theme .progress-bar-success{background-color:#73a839}.progress-striped #bootstrap-theme .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-info{background-color:#cde8fe}.progress-striped #bootstrap-theme .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-warning{background-color:#dd5600}.progress-striped #bootstrap-theme .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .progress-bar-danger{background-color:#c71c22}.progress-striped #bootstrap-theme .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}#bootstrap-theme .media{margin-top:15px}#bootstrap-theme .media:first-child{margin-top:0}#bootstrap-theme .media,#bootstrap-theme .media-body{overflow:hidden;zoom:1}#bootstrap-theme .media-body{width:10000px}#bootstrap-theme .media-object{display:block}#bootstrap-theme .media-object.img-thumbnail{max-width:none}#bootstrap-theme .media-right,#bootstrap-theme .media>.pull-right{padding-left:10px}#bootstrap-theme .media-left,#bootstrap-theme .media>.pull-left{padding-right:10px}#bootstrap-theme .media-left,#bootstrap-theme .media-right,#bootstrap-theme .media-body{display:table-cell;vertical-align:top}#bootstrap-theme .media-middle{vertical-align:middle}#bootstrap-theme .media-bottom{vertical-align:bottom}#bootstrap-theme .media-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .media-list{padding-left:0;list-style:none}#bootstrap-theme .list-group{padding-left:0;margin-bottom:20px}#bootstrap-theme .list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}#bootstrap-theme .list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}#bootstrap-theme .list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}#bootstrap-theme .list-group-item.disabled,#bootstrap-theme .list-group-item.disabled:hover,#bootstrap-theme .list-group-item.disabled:focus{color:#999;cursor:not-allowed;background-color:#eee}#bootstrap-theme .list-group-item.disabled .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-heading,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-heading{color:inherit}#bootstrap-theme .list-group-item.disabled .list-group-item-text,#bootstrap-theme .list-group-item.disabled:hover .list-group-item-text,#bootstrap-theme .list-group-item.disabled:focus .list-group-item-text{color:#999}#bootstrap-theme .list-group-item.active,#bootstrap-theme .list-group-item.active:hover,#bootstrap-theme .list-group-item.active:focus{z-index:2;color:#fff;background-color:#000;border-color:#000}#bootstrap-theme .list-group-item.active .list-group-item-heading,#bootstrap-theme .list-group-item.active .list-group-item-heading>small,#bootstrap-theme .list-group-item.active .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:hover .list-group-item-heading>.small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>small,#bootstrap-theme .list-group-item.active:focus .list-group-item-heading>.small{color:inherit}#bootstrap-theme .list-group-item.active .list-group-item-text,#bootstrap-theme .list-group-item.active:hover .list-group-item-text,#bootstrap-theme .list-group-item.active:focus .list-group-item-text{color:#666}#bootstrap-theme a.list-group-item,#bootstrap-theme button.list-group-item{color:#555}#bootstrap-theme a.list-group-item .list-group-item-heading,#bootstrap-theme button.list-group-item .list-group-item-heading{color:#333}#bootstrap-theme a.list-group-item:hover,#bootstrap-theme a.list-group-item:focus,#bootstrap-theme button.list-group-item:hover,#bootstrap-theme button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}#bootstrap-theme button.list-group-item{width:100%;text-align:left}#bootstrap-theme .list-group-item-success{color:#468847;background-color:#dff0d8}#bootstrap-theme a.list-group-item-success,#bootstrap-theme button.list-group-item-success{color:#468847}#bootstrap-theme a.list-group-item-success .list-group-item-heading,#bootstrap-theme button.list-group-item-success .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-success:hover,#bootstrap-theme a.list-group-item-success:focus,#bootstrap-theme button.list-group-item-success:hover,#bootstrap-theme button.list-group-item-success:focus{color:#468847;background-color:#d0e9c6}#bootstrap-theme a.list-group-item-success.active,#bootstrap-theme a.list-group-item-success.active:hover,#bootstrap-theme a.list-group-item-success.active:focus,#bootstrap-theme button.list-group-item-success.active,#bootstrap-theme button.list-group-item-success.active:hover,#bootstrap-theme button.list-group-item-success.active:focus{color:#fff;background-color:#468847;border-color:#468847}#bootstrap-theme .list-group-item-info{color:#3a87ad;background-color:#d9edf7}#bootstrap-theme a.list-group-item-info,#bootstrap-theme button.list-group-item-info{color:#3a87ad}#bootstrap-theme a.list-group-item-info .list-group-item-heading,#bootstrap-theme button.list-group-item-info .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-info:hover,#bootstrap-theme a.list-group-item-info:focus,#bootstrap-theme button.list-group-item-info:hover,#bootstrap-theme button.list-group-item-info:focus{color:#3a87ad;background-color:#c4e3f3}#bootstrap-theme a.list-group-item-info.active,#bootstrap-theme a.list-group-item-info.active:hover,#bootstrap-theme a.list-group-item-info.active:focus,#bootstrap-theme button.list-group-item-info.active,#bootstrap-theme button.list-group-item-info.active:hover,#bootstrap-theme button.list-group-item-info.active:focus{color:#fff;background-color:#3a87ad;border-color:#3a87ad}#bootstrap-theme .list-group-item-warning{color:#c09853;background-color:#fcf8e3}#bootstrap-theme a.list-group-item-warning,#bootstrap-theme button.list-group-item-warning{color:#c09853}#bootstrap-theme a.list-group-item-warning .list-group-item-heading,#bootstrap-theme button.list-group-item-warning .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-warning:hover,#bootstrap-theme a.list-group-item-warning:focus,#bootstrap-theme button.list-group-item-warning:hover,#bootstrap-theme button.list-group-item-warning:focus{color:#c09853;background-color:#faf2cc}#bootstrap-theme a.list-group-item-warning.active,#bootstrap-theme a.list-group-item-warning.active:hover,#bootstrap-theme a.list-group-item-warning.active:focus,#bootstrap-theme button.list-group-item-warning.active,#bootstrap-theme button.list-group-item-warning.active:hover,#bootstrap-theme button.list-group-item-warning.active:focus{color:#fff;background-color:#c09853;border-color:#c09853}#bootstrap-theme .list-group-item-danger{color:#b94a48;background-color:#f2dede}#bootstrap-theme a.list-group-item-danger,#bootstrap-theme button.list-group-item-danger{color:#b94a48}#bootstrap-theme a.list-group-item-danger .list-group-item-heading,#bootstrap-theme button.list-group-item-danger .list-group-item-heading{color:inherit}#bootstrap-theme a.list-group-item-danger:hover,#bootstrap-theme a.list-group-item-danger:focus,#bootstrap-theme button.list-group-item-danger:hover,#bootstrap-theme button.list-group-item-danger:focus{color:#b94a48;background-color:#ebcccc}#bootstrap-theme a.list-group-item-danger.active,#bootstrap-theme a.list-group-item-danger.active:hover,#bootstrap-theme a.list-group-item-danger.active:focus,#bootstrap-theme button.list-group-item-danger.active,#bootstrap-theme button.list-group-item-danger.active:hover,#bootstrap-theme button.list-group-item-danger.active:focus{color:#fff;background-color:#b94a48;border-color:#b94a48}#bootstrap-theme .list-group-item-heading{margin-top:0;margin-bottom:5px}#bootstrap-theme .list-group-item-text{margin-bottom:0;line-height:1.3}#bootstrap-theme .panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .panel-body{padding:15px}#bootstrap-theme .panel-body:before,#bootstrap-theme .panel-body:after{display:table;content:" "}#bootstrap-theme .panel-body:after{clear:both}#bootstrap-theme .panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel-heading>.dropdown .dropdown-toggle{color:inherit}#bootstrap-theme .panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}#bootstrap-theme .panel-title>a,#bootstrap-theme .panel-title>small,#bootstrap-theme .panel-title>.small,#bootstrap-theme .panel-title>small>a,#bootstrap-theme .panel-title>.small>a{color:inherit}#bootstrap-theme .panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.list-group,#bootstrap-theme .panel>.panel-collapse>.list-group{margin-bottom:0}#bootstrap-theme .panel>.list-group .list-group-item,#bootstrap-theme .panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}#bootstrap-theme .panel>.list-group:first-child .list-group-item:first-child,#bootstrap-theme .panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.list-group:last-child .list-group-item:last-child,#bootstrap-theme .panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}#bootstrap-theme .panel-heading+.list-group .list-group-item:first-child{border-top-width:0}#bootstrap-theme .list-group+.panel-footer{border-top-width:0}#bootstrap-theme .panel>.table,#bootstrap-theme .panel>.table-responsive>.table,#bootstrap-theme .panel>.panel-collapse>.table{margin-bottom:0}#bootstrap-theme .panel>.table caption,#bootstrap-theme .panel>.table-responsive>.table caption,#bootstrap-theme .panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}#bootstrap-theme .panel>.table:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,#bootstrap-theme .panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}#bootstrap-theme .panel>.table:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,#bootstrap-theme .panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}#bootstrap-theme .panel>.panel-body+.table,#bootstrap-theme .panel>.panel-body+.table-responsive,#bootstrap-theme .panel>.table+.panel-body,#bootstrap-theme .panel>.table-responsive+.panel-body{border-top:1px solid #ddd}#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child th,#bootstrap-theme .panel>.table>tbody:first-child>tr:first-child td{border-top:0}#bootstrap-theme .panel>.table-bordered,#bootstrap-theme .panel>.table-responsive>.table-bordered{border:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}#bootstrap-theme .panel>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-bordered>tfoot>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>thead>tr:first-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-bordered>tfoot>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,#bootstrap-theme .panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}#bootstrap-theme .panel>.table-responsive{margin-bottom:0;border:0}#bootstrap-theme .panel-group{margin-bottom:20px}#bootstrap-theme .panel-group .panel{margin-bottom:0;border-radius:4px}#bootstrap-theme .panel-group .panel+.panel{margin-top:5px}#bootstrap-theme .panel-group .panel-heading{border-bottom:0}#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.panel-body,#bootstrap-theme .panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}#bootstrap-theme .panel-group .panel-footer{border-top:0}#bootstrap-theme .panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}#bootstrap-theme .panel-default{border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading{color:#555;background-color:#f5f5f5;border-color:#ddd}#bootstrap-theme .panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#555}#bootstrap-theme .panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-primary{border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading{color:#fff;background-color:#000;border-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-primary>.panel-heading .badge{color:#000;background-color:#fff}#bootstrap-theme .panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-success{border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading{color:#468847;background-color:#73a839;border-color:#ddd}#bootstrap-theme .panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-success>.panel-heading .badge{color:#73a839;background-color:#468847}#bootstrap-theme .panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-info{border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading{color:#3a87ad;background-color:#cde8fe;border-color:#ddd}#bootstrap-theme .panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-info>.panel-heading .badge{color:#cde8fe;background-color:#3a87ad}#bootstrap-theme .panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-warning{border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading{color:#c09853;background-color:#dd5600;border-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-warning>.panel-heading .badge{color:#dd5600;background-color:#c09853}#bootstrap-theme .panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .panel-danger{border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading{color:#b94a48;background-color:#c71c22;border-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}#bootstrap-theme .panel-danger>.panel-heading .badge{color:#c71c22;background-color:#b94a48}#bootstrap-theme .panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}#bootstrap-theme .embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}#bootstrap-theme .embed-responsive .embed-responsive-item,#bootstrap-theme .embed-responsive iframe,#bootstrap-theme .embed-responsive embed,#bootstrap-theme .embed-responsive object,#bootstrap-theme .embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}#bootstrap-theme .embed-responsive-16by9{padding-bottom:56.25%}#bootstrap-theme .embed-responsive-4by3{padding-bottom:75%}#bootstrap-theme .well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}#bootstrap-theme .well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}#bootstrap-theme .well-lg{padding:24px;border-radius:6px}#bootstrap-theme .well-sm{padding:9px;border-radius:3px}#bootstrap-theme .close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;-webkit-filter:alpha(opacity=20);filter:alpha(opacity=20);opacity:.2}#bootstrap-theme .close:hover,#bootstrap-theme .close:focus{color:#000;text-decoration:none;cursor:pointer;-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;-moz-appearance:none;appearance:none}#bootstrap-theme .modal-open{overflow:hidden}#bootstrap-theme .modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}#bootstrap-theme .modal.fade .modal-dialog{-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%);-webkit-transition:-webkit-transform .3s ease-out;-moz-transition:-moz-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:-ms-transform .3s ease-out;transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out}#bootstrap-theme .modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}#bootstrap-theme .modal-open .modal{overflow-x:hidden;overflow-y:auto}#bootstrap-theme .modal-dialog{position:relative;width:auto;margin:10px}#bootstrap-theme .modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5);outline:0}#bootstrap-theme .modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}#bootstrap-theme .modal-backdrop.fade{-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .modal-backdrop.in{-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .modal-header{padding:15px;border-bottom:1px solid #e5e5e5}#bootstrap-theme .modal-header:before,#bootstrap-theme .modal-header:after{display:table;content:" "}#bootstrap-theme .modal-header:after{clear:both}#bootstrap-theme .modal-header .close{margin-top:-2px}#bootstrap-theme .modal-title{margin:0;line-height:1.428571429}#bootstrap-theme .modal-body{position:relative;padding:20px}#bootstrap-theme .modal-footer{padding:20px;text-align:right;border-top:1px solid #e5e5e5}#bootstrap-theme .modal-footer:before,#bootstrap-theme .modal-footer:after{display:table;content:" "}#bootstrap-theme .modal-footer:after{clear:both}#bootstrap-theme .modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}#bootstrap-theme .modal-footer .btn-group .btn+.btn{margin-left:-1px}#bootstrap-theme .modal-footer .btn-block+.btn-block{margin-left:0}#bootstrap-theme .modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){#bootstrap-theme .modal-dialog{width:600px;margin:30px auto}#bootstrap-theme .modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}#bootstrap-theme .modal-sm{width:300px}}@media (min-width:992px){#bootstrap-theme .modal-lg{width:900px}}#bootstrap-theme .tooltip{position:absolute;z-index:1070;display:block;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:12px;-webkit-filter:alpha(opacity=0);filter:alpha(opacity=0);opacity:0}#bootstrap-theme .tooltip.in{-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .tooltip.top{padding:5px 0;margin-top:-3px}#bootstrap-theme .tooltip.right{padding:0 5px;margin-left:3px}#bootstrap-theme .tooltip.bottom{padding:5px 0;margin-top:3px}#bootstrap-theme .tooltip.left{padding:0 5px;margin-left:-3px}#bootstrap-theme .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}#bootstrap-theme .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}#bootstrap-theme .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}#bootstrap-theme .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}#bootstrap-theme .tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}#bootstrap-theme .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Verdana","Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:400;line-height:1.428571429;line-break:auto;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;-ms-word-break:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2)}#bootstrap-theme .popover.top{margin-top:-10px}#bootstrap-theme .popover.right{margin-left:10px}#bootstrap-theme .popover.bottom{margin-top:10px}#bootstrap-theme .popover.left{margin-left:-10px}#bootstrap-theme .popover>.arrow{border-width:11px}#bootstrap-theme .popover>.arrow,#bootstrap-theme .popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}#bootstrap-theme .popover>.arrow:after{content:"";border-width:10px}#bootstrap-theme .popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}#bootstrap-theme .popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}#bootstrap-theme .popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}#bootstrap-theme .popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}#bootstrap-theme .popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}#bootstrap-theme .popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}#bootstrap-theme .popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}#bootstrap-theme .popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}#bootstrap-theme .popover-content{padding:9px 14px}#bootstrap-theme .carousel{position:relative}#bootstrap-theme .carousel-inner{position:relative;width:100%;overflow:hidden}#bootstrap-theme .carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}#bootstrap-theme .carousel-inner>.item>img,#bootstrap-theme .carousel-inner>.item>a>img{display:block;max-width:100%;height:auto;line-height:1}@media (transform-3d),(-webkit-transform-3d){#bootstrap-theme .carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-moz-transition:-moz-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:-ms-transform .6s ease-in-out;transition:-webkit-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;-moz-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;-moz-perspective:1000px;perspective:1000px}#bootstrap-theme .carousel-inner>.item.next,#bootstrap-theme .carousel-inner>.item.active.right{-webkit-transform:translate3d(100%,0,0);-ms-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.prev,#bootstrap-theme .carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%,0,0);-ms-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);left:0}#bootstrap-theme .carousel-inner>.item.next.left,#bootstrap-theme .carousel-inner>.item.prev.right,#bootstrap-theme .carousel-inner>.item.active{-webkit-transform:translate3d(0,0,0);-ms-transform:translate3d(0,0,0);transform:translate3d(0,0,0);left:0}}#bootstrap-theme .carousel-inner>.active,#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{display:block}#bootstrap-theme .carousel-inner>.active{left:0}#bootstrap-theme .carousel-inner>.next,#bootstrap-theme .carousel-inner>.prev{position:absolute;top:0;width:100%}#bootstrap-theme .carousel-inner>.next{left:100%}#bootstrap-theme .carousel-inner>.prev{left:-100%}#bootstrap-theme .carousel-inner>.next.left,#bootstrap-theme .carousel-inner>.prev.right{left:0}#bootstrap-theme .carousel-inner>.active.left{left:-100%}#bootstrap-theme .carousel-inner>.active.right{left:100%}#bootstrap-theme .carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);-webkit-filter:alpha(opacity=50);filter:alpha(opacity=50);opacity:.5}#bootstrap-theme .carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#80000000",endColorstr="#00000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);-webkit-filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#00000000",endColorstr="#80000000",GradientType=1);background-repeat:repeat-x}#bootstrap-theme .carousel-control:hover,#bootstrap-theme .carousel-control:focus{color:#fff;text-decoration:none;outline:0;-webkit-filter:alpha(opacity=90);filter:alpha(opacity=90);opacity:.9}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}#bootstrap-theme .carousel-control .icon-next,#bootstrap-theme .carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}#bootstrap-theme .carousel-control .icon-prev:before{content:"‹"}#bootstrap-theme .carousel-control .icon-next:before{content:"›"}#bootstrap-theme .carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}#bootstrap-theme .carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}#bootstrap-theme .carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}#bootstrap-theme .carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}#bootstrap-theme .carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-prev,#bootstrap-theme .carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}#bootstrap-theme .carousel-control .glyphicon-chevron-left,#bootstrap-theme .carousel-control .icon-prev{margin-left:-10px}#bootstrap-theme .carousel-control .glyphicon-chevron-right,#bootstrap-theme .carousel-control .icon-next{margin-right:-10px}#bootstrap-theme .carousel-caption{right:20%;left:20%;padding-bottom:30px}#bootstrap-theme .carousel-indicators{bottom:20px}}#bootstrap-theme .clearfix:before,#bootstrap-theme .clearfix:after{display:table;content:" "}#bootstrap-theme .clearfix:after{clear:both}#bootstrap-theme .center-block{display:block;margin-right:auto;margin-left:auto}#bootstrap-theme .pull-right{float:right !important}#bootstrap-theme .pull-left{float:left !important}#bootstrap-theme .hide{display:none !important}#bootstrap-theme .show{display:block !important}#bootstrap-theme .invisible{visibility:hidden}#bootstrap-theme .text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}#bootstrap-theme .hidden{display:none !important}#bootstrap-theme .affix{position:fixed}@-ms-viewport{width:device-width}#bootstrap-theme .visible-sm{display:none !important}#bootstrap-theme .visible-md{display:none !important}#bootstrap-theme .visible-lg{display:none !important}#bootstrap-theme .visible-xs-block,#bootstrap-theme .visible-xs-inline,#bootstrap-theme .visible-xs-inline-block,#bootstrap-theme .visible-sm-block,#bootstrap-theme .visible-sm-inline,#bootstrap-theme .visible-sm-inline-block,#bootstrap-theme .visible-md-block,#bootstrap-theme .visible-md-inline,#bootstrap-theme .visible-md-inline-block,#bootstrap-theme .visible-lg-block,#bootstrap-theme .visible-lg-inline,#bootstrap-theme .visible-lg-inline-block{display:none !important}@media (max-width:767px){#bootstrap-theme .visible-xs{display:block !important}#bootstrap-theme table.visible-xs{display:table !important}#bootstrap-theme tr.visible-xs{display:table-row !important}#bootstrap-theme th.visible-xs,#bootstrap-theme td.visible-xs{display:table-cell !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-block{display:block !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline{display:inline !important}}@media (max-width:767px){#bootstrap-theme .visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm{display:block !important}#bootstrap-theme table.visible-sm{display:table !important}#bootstrap-theme tr.visible-sm{display:table-row !important}#bootstrap-theme th.visible-sm,#bootstrap-theme td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md{display:block !important}#bootstrap-theme table.visible-md{display:table !important}#bootstrap-theme tr.visible-md{display:table-row !important}#bootstrap-theme th.visible-md,#bootstrap-theme td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg{display:block !important}#bootstrap-theme table.visible-lg{display:table !important}#bootstrap-theme tr.visible-lg{display:table-row !important}#bootstrap-theme th.visible-lg,#bootstrap-theme td.visible-lg{display:table-cell !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-block{display:block !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline{display:inline !important}}@media (min-width:1200px){#bootstrap-theme .visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){#bootstrap-theme .hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){#bootstrap-theme .hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){#bootstrap-theme .hidden-md{display:none !important}}@media (min-width:1200px){#bootstrap-theme .hidden-lg{display:none !important}}#bootstrap-theme .visible-print{display:none !important}@media print{#bootstrap-theme .visible-print{display:block !important}#bootstrap-theme table.visible-print{display:table !important}#bootstrap-theme tr.visible-print{display:table-row !important}#bootstrap-theme th.visible-print,#bootstrap-theme td.visible-print{display:table-cell !important}}#bootstrap-theme .visible-print-block{display:none !important}@media print{#bootstrap-theme .visible-print-block{display:block !important}}#bootstrap-theme .visible-print-inline{display:none !important}@media print{#bootstrap-theme .visible-print-inline{display:inline !important}}#bootstrap-theme .visible-print-inline-block{display:none !important}@media print{#bootstrap-theme .visible-print-inline-block{display:inline-block !important}}@media print{#bootstrap-theme .hidden-print{display:none !important}}#bootstrap-theme ul,#bootstrap-theme ol{margin-left:0;margin-right:0}#bootstrap-theme .form-control.checkbox-inline>label{margin-left:9px}#bootstrap-theme label input[type=checkbox]:not(:checked)+*{font-weight:400}#bootstrap-theme .select2-choices{margin-bottom:0}#bootstrap-theme input[type=search]::-webkit-search-cancel-button{-webkit-appearance:searchfield-cancel-button}#bootstrap-theme .select2-container .select2-choice>.select2-chosen{font-size:inherit;font-weight:400}#bootstrap-theme .form-control .select2-choice{border:0;border-radius:2px}#bootstrap-theme .form-control .select2-choice .select2-arrow{border-radius:0 2px 2px 0}#bootstrap-theme .form-control.select2-container{height:auto !important;padding:0}#bootstrap-theme .form-control.select2-container.select2-dropdown-open{border-color:#5897fb;border-radius:3px 3px 0 0}#bootstrap-theme .form-control .select2-container.select2-dropdown-open .select2-choices{border-radius:3px 3px 0 0}#bootstrap-theme .form-control.select2-container .select2-choices{border:0 !important;border-radius:3px}#bootstrap-theme .control-group.warning .select2-container .select2-choice,#bootstrap-theme .control-group.warning .select2-container .select2-choices,#bootstrap-theme .control-group.warning .select2-container-active .select2-choice,#bootstrap-theme .control-group.warning .select2-container-active .select2-choices,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.warning .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.warning .select2-container-multi.select2-container-active .select2-choices{border:1px solid #c09853 !important}#bootstrap-theme .control-group.warning .select2-container .select2-choice div{border-left:1px solid #c09853 !important;background:#fcf8e3 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice,#bootstrap-theme .control-group.error .select2-container .select2-choices,#bootstrap-theme .control-group.error .select2-container-active .select2-choice,#bootstrap-theme .control-group.error .select2-container-active .select2-choices,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.error .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.error .select2-container-multi.select2-container-active .select2-choices{border:1px solid #b94a48 !important}#bootstrap-theme .control-group.error .select2-container .select2-choice div{border-left:1px solid #b94a48 !important;background:#f2dede !important}#bootstrap-theme .control-group.info .select2-container .select2-choice,#bootstrap-theme .control-group.info .select2-container .select2-choices,#bootstrap-theme .control-group.info .select2-container-active .select2-choice,#bootstrap-theme .control-group.info .select2-container-active .select2-choices,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.info .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.info .select2-container-multi.select2-container-active .select2-choices{border:1px solid #3a87ad !important}#bootstrap-theme .control-group.info .select2-container .select2-choice div{border-left:1px solid #3a87ad !important;background:#d9edf7 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice,#bootstrap-theme .control-group.success .select2-container .select2-choices,#bootstrap-theme .control-group.success .select2-container-active .select2-choice,#bootstrap-theme .control-group.success .select2-container-active .select2-choices,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choice,#bootstrap-theme .control-group.success .select2-dropdown-open.select2-drop-above .select2-choices,#bootstrap-theme .control-group.success .select2-container-multi.select2-container-active .select2-choices{border:1px solid #468847 !important}#bootstrap-theme .control-group.success .select2-container .select2-choice div{border-left:1px solid #468847 !important;background:#dff0d8 !important} \ No newline at end of file diff --git a/civicrm/ext/greenwich/info.xml b/civicrm/ext/greenwich/info.xml index 706c3d95e2..bd5999ec85 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.63.2</version> + <version>5.64.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> diff --git a/civicrm/ext/greenwich/scss/_greenwich.scss b/civicrm/ext/greenwich/scss/_greenwich.scss index 556d64b02e..8138ab2067 100644 --- a/civicrm/ext/greenwich/scss/_greenwich.scss +++ b/civicrm/ext/greenwich/scss/_greenwich.scss @@ -79,7 +79,7 @@ $headings-color: rgb(0, 0, 0); //## Specify custom location and filename of the included Glyphicons icon font. Useful for those including Bootstrap via Bower. //** Load fonts from this directory. -$icon-font-path: "../fonts/"; +$icon-font-path: "../extern/bootstrap3/assets/fonts/bootstrap/"; //** File name for all font files. $icon-font-name: "glyphicons-halflings-regular"; //** Element ID within SVG icon file. diff --git a/civicrm/CRM/Contact/BAO/SearchCustom.php b/civicrm/ext/legacycustomsearches/CRM/Contact/BAO/SearchCustom.php similarity index 100% rename from civicrm/CRM/Contact/BAO/SearchCustom.php rename to civicrm/ext/legacycustomsearches/CRM/Contact/BAO/SearchCustom.php diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php index 8380d5f3bc..2e5d19a28e 100644 --- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php +++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom.php @@ -49,14 +49,14 @@ class CRM_Contact_Form_Search_Custom extends CRM_Contact_Form_Search { } // set breadcrumb to return to Custom Search listings page - $breadCrumb = array( - array( + $breadCrumb = [ + [ 'title' => ts('Custom Searches'), 'url' => CRM_Utils_System::url('civicrm/contact/search/custom/list', 'reset=1' ), - ), - ); + ], + ]; CRM_Utils_System::appendBreadCrumb($breadCrumb); // use the custom selector @@ -70,7 +70,7 @@ class CRM_Contact_Form_Search_Custom extends CRM_Contact_Form_Search { // instantiate the new class $this->_customClass = new $this->_customSearchClass($this->_formValues); - $this->addFormRule(array($this->_customClass, 'formRule'), $this); + $this->addFormRule([$this->_customClass, 'formRule'], $this); // CRM-12747 if (isset($this->_customClass->_permissionedComponent) && @@ -84,7 +84,7 @@ class CRM_Contact_Form_Search_Custom extends CRM_Contact_Form_Search { * Add local and global form rules. */ public function addRules() { - $this->addFormRule(array($this->_customClass, 'formRule')); + $this->addFormRule([$this->_customClass, 'formRule']); } /** diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/DateAdded.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/DateAdded.php index 89d6d5801e..f6a047296f 100644 --- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/DateAdded.php +++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/DateAdded.php @@ -247,7 +247,7 @@ class CRM_Contact_Form_Search_Custom_DateAdded extends CRM_Contact_Form_Search_C if (in_array($values, $smartGroup)) { $ssId = CRM_Utils_Array::key($values, $smartGroup); - $smartSql = CRM_Contact_BAO_SavedSearch::contactIDsSQL($ssId); + $smartSql = CRM_Contact_BAO_SearchCustom::contactIDSQL(NULL, $ssId); $smartSql = $smartSql . " AND contact_a.id NOT IN ( SELECT contact_id FROM civicrm_group_contact @@ -295,7 +295,7 @@ class CRM_Contact_Form_Search_Custom_DateAdded extends CRM_Contact_Form_Search_C $ssId = CRM_Utils_Array::key($values, $smartGroup); - $smartSql = CRM_Contact_BAO_SavedSearch::contactIDsSQL($ssId); + $smartSql = CRM_Contact_BAO_SearchCustom::contactIDSQL(NULL, $ssId); $smartSql .= " AND contact_a.id IN ( SELECT id AS contact_id diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/Group.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/Group.php index f63bdb2f5a..4baf39450d 100644 --- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/Group.php +++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/Group.php @@ -245,7 +245,7 @@ class CRM_Contact_Form_Search_Custom_Group extends CRM_Contact_Form_Search_Custo ) { if ($justIDs) { - $selectClause = "contact_a.id as contact_id"; + $selectClause = 'contact_a.id as contact_id'; } else { $selectClause = "contact_a.id as contact_id, @@ -275,7 +275,7 @@ class CRM_Contact_Form_Search_Custom_Group extends CRM_Contact_Form_Search_Custo $where = $this->where($includeContactIDs); if (!$justIDs && !$this->_allSearch) { - $groupBy = " GROUP BY contact_a.id"; + $groupBy = ' GROUP BY contact_a.id'; } else { // CRM-10850 @@ -292,19 +292,19 @@ class CRM_Contact_Form_Search_Custom_Group extends CRM_Contact_Form_Search_Custo if (!$justIDs) { if (!empty($sort)) { if (is_string($sort)) { - $sort = CRM_Utils_Type::escape($sort, 'String'); + $sort = \CRM_Utils_Type::escape($sort, 'String'); $sql .= " ORDER BY $sort "; } else { - $sql .= " ORDER BY " . trim($sort->orderBy()); + $sql .= ' ORDER BY ' . trim($sort->orderBy()); } } else { - $sql .= " ORDER BY contact_id ASC"; + $sql .= ' ORDER BY contact_id ASC'; } } else { - $sql .= " ORDER BY contact_a.id ASC"; + $sql .= ' ORDER BY contact_a.id ASC'; } if ($offset >= 0 && $rowcount > 0) { diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/RandomSegment.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/RandomSegment.php index db5110b049..4e939c0ff3 100644 --- a/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/RandomSegment.php +++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Form/Search/Custom/RandomSegment.php @@ -194,7 +194,7 @@ class CRM_Contact_Form_Search_Custom_RandomSegment extends CRM_Contact_Form_Sear if (in_array($values, $smartGroup)) { $ssId = CRM_Utils_Array::key($values, $smartGroup); - $smartSql = CRM_Contact_BAO_SavedSearch::contactIDsSQL($ssId); + $smartSql = CRM_Contact_BAO_SearchCustom::contactIDSQL(NULL, $ssId); $smartSql = $smartSql . " AND contact_a.id NOT IN ( SELECT contact_id FROM civicrm_group_contact @@ -245,7 +245,7 @@ class CRM_Contact_Form_Search_Custom_RandomSegment extends CRM_Contact_Form_Sear $ssId = CRM_Utils_Array::key($values, $smartGroup); - $smartSql = CRM_Contact_BAO_SavedSearch::contactIDsSQL($ssId); + $smartSql = CRM_Contact_BAO_SearchCustom::contactIDSQL(NULL, $ssId); $smartSql .= " AND contact_a.id NOT IN ( SELECT contact_id FROM civicrm_group_contact diff --git a/civicrm/CRM/Contact/Page/CustomSearch.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Page/CustomSearch.php similarity index 100% rename from civicrm/CRM/Contact/Page/CustomSearch.php rename to civicrm/ext/legacycustomsearches/CRM/Contact/Page/CustomSearch.php diff --git a/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php b/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php index b58922b0e5..7170f7e821 100644 --- a/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php +++ b/civicrm/ext/legacycustomsearches/CRM/Contact/Selector/Custom.php @@ -449,7 +449,7 @@ class CRM_Contact_Selector_Custom extends CRM_Contact_Selector { Civi::service('prevnext')->fillWithSql($cacheKey, $sql); } catch (\Exception $e) { - CRM_Core_Error::deprecatedFunctionWarning('Custom searches should return sql capable of filling the prevnext cache.'); + CRM_Core_Error::deprecatedFunctionWarning('Custom searches should override this function or return sql capable of filling the prevnext cache.'); // This will always show for CiviRules :-( as a) it orders by 'rule_label' // which is not available in the query & b) it uses contact not contact_a // as an alias. diff --git a/civicrm/CRM/Core/InnoDBIndexer.php b/civicrm/ext/legacycustomsearches/CRM/Core/InnoDBIndexer.php similarity index 100% rename from civicrm/CRM/Core/InnoDBIndexer.php rename to civicrm/ext/legacycustomsearches/CRM/Core/InnoDBIndexer.php diff --git a/civicrm/CRM/Utils/QueryFormatter.php b/civicrm/ext/legacycustomsearches/CRM/Utils/QueryFormatter.php similarity index 100% rename from civicrm/CRM/Utils/QueryFormatter.php rename to civicrm/ext/legacycustomsearches/CRM/Utils/QueryFormatter.php diff --git a/civicrm/ext/legacycustomsearches/info.xml b/civicrm/ext/legacycustomsearches/info.xml index 88eecd744d..fdfca4fd35 100644 --- a/civicrm/ext/legacycustomsearches/info.xml +++ b/civicrm/ext/legacycustomsearches/info.xml @@ -15,15 +15,12 @@ <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> <releaseDate>2021-07-25</releaseDate> - <version>5.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> - <tags> - <tag>mgmt:hidden</tag> - </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> - <comments>This is hidden on install to give extensions that require it time to add it to their requires and to allow us to get it out of GroupContact load</comments> + <comments>This is our old search system which has limited support. All new effort is on SearchKit</comments> <classloader> <psr0 prefix="CRM_" path="."/> <psr4 prefix="Civi\" path="Civi"/> @@ -32,6 +29,7 @@ <mixin>menu-xml@1.0.0</mixin> <mixin>mgd-php@1.0.0</mixin> <mixin>smarty-v2@1.0.0</mixin> + <mixin>setting-php@1.0.0</mixin> </mixins> <civix> <namespace>CRM/Legacycustomsearches</namespace> diff --git a/civicrm/ext/legacycustomsearches/legacycustomsearches.php b/civicrm/ext/legacycustomsearches/legacycustomsearches.php index 9d16959ce5..fa19fc5823 100644 --- a/civicrm/ext/legacycustomsearches/legacycustomsearches.php +++ b/civicrm/ext/legacycustomsearches/legacycustomsearches.php @@ -31,3 +31,45 @@ function legacycustomsearches_civicrm_install() { function legacycustomsearches_civicrm_enable() { _legacycustomsearches_civix_civicrm_enable(); } + +/** + * Determine the sql + * @param array $savedSearch + * @param int $groupID + * @param string $sql + * + * @throws \CRM_Core_Exception + */ +function legacycustomsearches_civicrm_buildGroupContactCache(array $savedSearch, int $groupID, string &$sql): void { + if (empty($savedSearch['search_custom_id'])) { + return; + } + $savedSearchID = $savedSearch['id']; + $excludeClause = " + NOT IN ( + SELECT contact_id FROM civicrm_group_contact + WHERE civicrm_group_contact.status = 'Removed' + AND civicrm_group_contact.group_id = $groupID )"; + $addSelect = "$groupID AS group_id"; + $ssParams = CRM_Contact_BAO_SavedSearch::getFormValues($savedSearchID); + + $customSearchClass = $ssParams['customSearchClass']; + // check if there is a special function - formatSavedSearchFields defined in the custom search form + if (method_exists($customSearchClass, 'formatSavedSearchFields')) { + $customSearchClass::formatSavedSearchFields($ssParams); + } + + // CRM-7021 rectify params to what proximity search expects if there is a value for prox_distance + if (!empty($ssParams)) { + CRM_Contact_BAO_ProximityQuery::fixInputParams($ssParams); + } + $searchSQL = CRM_Contact_BAO_SearchCustom::customClass($ssParams['customSearchID'], $savedSearchID)->contactIDs(); + $searchSQL = str_replace('ORDER BY contact_a.id ASC', '', $searchSQL); + if (strpos($searchSQL, 'WHERE') === FALSE) { + $searchSQL .= " WHERE contact_a.id $excludeClause"; + } + else { + $searchSQL .= " AND contact_a.id $excludeClause"; + } + $sql = preg_replace("/^\s*SELECT /", "SELECT $addSelect, ", $searchSQL); +} diff --git a/civicrm/ext/legacycustomsearches/settings/LegacyCustomSearch.setting.php b/civicrm/ext/legacycustomsearches/settings/LegacyCustomSearch.setting.php new file mode 100644 index 0000000000..0143929023 --- /dev/null +++ b/civicrm/ext/legacycustomsearches/settings/LegacyCustomSearch.setting.php @@ -0,0 +1,39 @@ +<?php +return [ + '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' => ts('InnoDB Full Text Search'), + 'is_domain' => 1, + 'is_contact' => 0, + 'description' => ts('Enable InnoDB full-text search optimizations. (Requires MySQL 5.6+)'), + 'help_text' => NULL, + 'on_change' => [ + ['CRM_Core_InnoDBIndexer', 'onToggleFts'], + ], + 'settings_pages' => ['search' => ['weight' => 100]], + ], + 'fts_query_mode' => [ + 'group_name' => 'Search Preferences', + 'group' => 'Search Preferences', + 'name' => 'fts_query_mode', + 'type' => 'String', + 'quick_form_type' => 'Element', + 'html_attributes' => [ + 'size' => 64, + 'maxlength' => 64, + ], + 'html_type' => 'text', + 'default' => 'simple', + 'add' => '4.5', + 'title' => ts('How to handle full-text queries'), + 'is_domain' => 1, + 'is_contact' => 0, + 'help_text' => NULL, + ], +]; diff --git a/civicrm/templates/CRM/Contact/Page/CustomSearch.hlp b/civicrm/ext/legacycustomsearches/templates/CRM/Contact/Page/CustomSearch.hlp similarity index 100% rename from civicrm/templates/CRM/Contact/Page/CustomSearch.hlp rename to civicrm/ext/legacycustomsearches/templates/CRM/Contact/Page/CustomSearch.hlp diff --git a/civicrm/templates/CRM/Contact/Page/CustomSearch.tpl b/civicrm/ext/legacycustomsearches/templates/CRM/Contact/Page/CustomSearch.tpl similarity index 100% rename from civicrm/templates/CRM/Contact/Page/CustomSearch.tpl rename to civicrm/ext/legacycustomsearches/templates/CRM/Contact/Page/CustomSearch.tpl diff --git a/civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Core/InnoDBIndexerTest.php b/civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Core/InnoDBIndexerTest.php new file mode 100644 index 0000000000..adf0c08d40 --- /dev/null +++ b/civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Core/InnoDBIndexerTest.php @@ -0,0 +1,122 @@ +<?php + +use Civi\Test; +use Civi\Test\HeadlessInterface; +use Civi\Test\HookInterface; +use PHPUnit\Framework\TestCase; + +/** + * Class CRM_Core_InnoDBIndexerTest + * @group headless + */ +class CRM_Core_InnoDBIndexerTest extends TestCase implements HeadlessInterface, HookInterface { + + /** + * Civi\Test has many helpers, like install(), uninstall(), sql(), and + * sqlFile(). See: + * https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md + */ + public function setUpHeadless(): Test\CiviEnvBuilder { + return Test::headless() + ->install(['legacycustomsearches']) + ->apply(); + } + + /** + * Indices to be created or removed. + * + * @var array + */ + protected $indices = []; + + /** + * @throws \CRM_Core_Exception + */ + public function tearDown(): void { + $idx = new CRM_Core_InnoDBIndexer(FALSE, []); + foreach (array_keys($this->indices) as $table) { + foreach ($idx->dropIndexSql($table) as $sql) { + CRM_Core_DAO::executeQuery($sql); + } + } + $this->assertFullTextIndexesNotPresent(); + parent::tearDown(); + } + + public function testHasDeclaredIndex(): void { + $this->indices = [ + 'civicrm_contact' => [ + ['first_name', 'last_name'], + ['foo'], + ], + 'civicrm_email' => [ + ['whiz'], + ], + ]; + $idx = new CRM_Core_InnoDBIndexer(TRUE, $this->indices); + + $this->assertTrue($idx->hasDeclaredIndex('civicrm_contact', ['first_name', 'last_name'])); + $this->assertTrue($idx->hasDeclaredIndex('civicrm_contact', ['last_name', 'first_name'])); + // not sure if this is right behavior + $this->assertTrue($idx->hasDeclaredIndex('civicrm_contact', ['first_name'])); + // not sure if this is right behavior + $this->assertTrue($idx->hasDeclaredIndex('civicrm_contact', ['last_name'])); + $this->assertTrue($idx->hasDeclaredIndex('civicrm_contact', ['foo'])); + $this->assertFalse($idx->hasDeclaredIndex('civicrm_contact', ['whiz'])); + + $this->assertFalse($idx->hasDeclaredIndex('civicrm_email', ['first_name', 'last_name'])); + $this->assertFalse($idx->hasDeclaredIndex('civicrm_email', ['foo'])); + $this->assertTrue($idx->hasDeclaredIndex('civicrm_email', ['whiz'])); + } + + /** + * When disabled, there is no FTS index, so queries that rely on FTS index fail. + */ + public function testDisabled(): void { + $this->indices = [ + 'civicrm_contact' => [ + ['first_name', 'last_name'], + ], + ]; + $idx = new CRM_Core_InnoDBIndexer(FALSE, $this->indices); + $idx->fixSchemaDifferences(); + + try { + CRM_Core_DAO::executeQuery('SELECT id FROM civicrm_contact WHERE MATCH(first_name,last_name) AGAINST ("joe")'); + $this->fail('Missed expected exception'); + } + catch (Exception $e) { + $this->assertTrue(TRUE, 'Received expected exception'); + } + } + + /** + * When enabled, the FTS index is created, so queries that rely on FTS work. + * + * @throws \Civi\Core\Exception\DBQueryException + */ + public function testEnabled(): void { + $this->indices = [ + 'civicrm_contact' => [ + ['first_name', 'last_name'], + ], + ]; + $idx = new CRM_Core_InnoDBIndexer(TRUE, $this->indices); + $idx->fixSchemaDifferences(); + CRM_Core_DAO::executeQuery('SELECT id FROM civicrm_contact WHERE MATCH(first_name,last_name) AGAINST ("joe")'); + } + + /** + * Assert that all indices have been removed. + * + * @throws \CRM_Core_Exception + */ + protected function assertFullTextIndexesNotPresent(): void { + $this->assertEmpty(CRM_Core_DAO::singleValueQuery(" + SELECT GROUP_CONCAT(CONCAT(table_name, ' ', index_name)) + FROM information_Schema.STATISTICS + WHERE table_schema = DATABASE() + AND index_type = 'FULLTEXT'"), 'Full text indices should have been removed'); + } + +} diff --git a/civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Utils/QueryFormatterTest.php b/civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Utils/QueryFormatterTest.php new file mode 100644 index 0000000000..28c13b0abc --- /dev/null +++ b/civicrm/ext/legacycustomsearches/tests/phpunit/CRM/Utils/QueryFormatterTest.php @@ -0,0 +1,220 @@ +<?php + +use Civi\Test; +use Civi\Test\HeadlessInterface; +use Civi\Test\HookInterface; +use PHPUnit\Framework\TestCase; + +/** + * FIXME - Add test description. + * + * Tips: + * - With HookInterface, you may implement CiviCRM hooks directly in the test + * class. Simply create corresponding functions (e.g. "hook_civicrm_post(...)" + * or similar). + * - With TransactionalInterface, any data changes made by setUp() or + * test****() functions will rollback automatically -- as long as you don't + * manipulate schema or truncate tables. If this test needs to manipulate + * schema or truncate tables, then either: a. Do all that using setupHeadless() + * and Civi\Test. b. Disable TransactionalInterface, and handle all + * setup/teardown yourself. + * + * @group headless + */ +class CRM_Utils_QueryFormatterTest extends TestCase implements HeadlessInterface, HookInterface { + + /** + * Civi\Test has many helpers, like install(), uninstall(), sql(), and + * sqlFile(). See: + * https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md + */ + public function setUpHeadless(): Test\CiviEnvBuilder { + return Test::headless() + ->install(['legacycustomsearches']) + ->apply(); + } + + public function createExampleTable() { + CRM_Core_DAO::executeQuery(' + DROP TABLE IF EXISTS civicrm_fts_example + '); + CRM_Core_DAO::executeQuery(' + CREATE TABLE civicrm_fts_example ( + id int(10) unsigned NOT NULL AUTO_INCREMENT, + name varchar(128) COLLATE utf8_unicode_ci DEFAULT NULL, + PRIMARY KEY (id) + ) + '); + $idx = new CRM_Core_InnoDBIndexer(self::supportsFts(), [ + 'civicrm_contact' => [ + ['first_name', 'last_name'], + ], + ]); + $idx->fixSchemaDifferences(); + $rows = [ + [1, 'someone@example.com'], + [2, 'this is someone@example.com!'], + [3, 'first second'], + [4, 'zeroth first second'], + [5, 'zeroth first second third'], + [6, 'never say never'], + [7, 'first someone@example.com second'], + [8, 'first someone'], + [9, 'firstly someone'], + ]; + foreach ($rows as $row) { + CRM_Core_DAO::executeQuery('INSERT INTO civicrm_fts_example (id,name) VALUES (%1, %2)', + [ + 1 => [$row[0], 'Int'], + 2 => [$row[1], 'String'], + ]); + } + } + + public function tearDown(): void { + parent::tearDown(); + $idx = new CRM_Core_InnoDBIndexer(FALSE, [ + 'civicrm_contact' => [ + ['first_name', 'last_name'], + ], + ]); + $idx->fixSchemaDifferences(); + } + + public static function tearDownAfterClass(): void { + CRM_Core_DAO::executeQuery('DROP TABLE IF EXISTS civicrm_fts_example'); + parent::tearDownAfterClass(); + } + + /** + * Generate data for tests to iterate through. + * + * Note: These examples are not locked in stone -- but do exercise + * discretion in revising them! + * + * @return array + */ + public function dataProvider() { + // Array(0=>$inputText, 1=>$language, 2=>$options, 3=>$expectedText, 4=>$matchingIds). + $cases = []; + + $allEmailRows = [1, 2, 7]; + + $cases[] = ['someone@example.com', 'like', 'simple', '%someone@example.com%', $allEmailRows]; + $cases[] = ['someone@example.com', 'like', 'phrase', '%someone@example.com%', $allEmailRows]; + $cases[] = ['someone@example.com', 'like', 'wildphrase', '%someone@example.com%', $allEmailRows]; + $cases[] = ['someone@example.com', 'like', 'wildwords', '%someone@example.com%', $allEmailRows]; + $cases[] = ['someone@example.com', 'like', 'wildwords-suffix', '%someone@example.com%', $allEmailRows]; + + $cases[] = ['someone@example.com', 'fts', 'simple', 'someone@example.com', $allEmailRows]; + $cases[] = ['someone@example.com', 'fts', 'phrase', '"someone@example.com"', $allEmailRows]; + $cases[] = ['someone@example.com', 'fts', 'wildphrase', '"*someone@example.com*"', $allEmailRows]; + $cases[] = ['someone@example.com', 'fts', 'wildwords', '*someone* *example*', $allEmailRows]; + $cases[] = ['someone@example.com', 'fts', 'wildwords-suffix', 'someone* example*', $allEmailRows]; + + $cases[] = ['someone@example.com', 'ftsbool', 'simple', '+"someone" +"example"', $allEmailRows]; + $cases[] = ['someone@example.com', 'ftsbool', 'phrase', '+"someone@example.com"', $allEmailRows]; + $cases[] = ['someone@example.com', 'ftsbool', 'wildphrase', '+"*someone@example.com*"', $allEmailRows]; + $cases[] = ['someone@example.com', 'ftsbool', 'wildwords', '+*someone* +*example*', $allEmailRows]; + $cases[] = ['someone@example.com', 'ftsbool', 'wildwords-suffix', '+someone* +example*', $allEmailRows]; + + $cases[] = ['first second', 'like', 'simple', '%first second%', [3, 4, 5]]; + $cases[] = ['first second', 'like', 'phrase', '%first second%', [3, 4, 5]]; + $cases[] = ['first second', 'like', 'wildphrase', '%first second%', [3, 4, 5]]; + $cases[] = ['first second', 'like', 'wildwords', '%first%second%', [3, 4, 5, 7]]; + $cases[] = ['first second', 'like', 'wildwords-suffix', '%first%second%', [3, 4, 5, 7]]; + + $cases[] = ['first second', 'fts', 'simple', 'first second', [3, 4, 5]]; + $cases[] = ['first second', 'fts', 'phrase', '"first second"', [3, 4, 5]]; + $cases[] = ['first second', 'fts', 'wildphrase', '"*first second*"', [3, 4, 5]]; + $cases[] = ['first second', 'fts', 'wildwords', '*first* *second*', [3, 4, 5, 7]]; + $cases[] = ['first second', 'fts', 'wildwords-suffix', 'first* second*', [3, 4, 5, 7]]; + + $cases[] = ['first second', 'ftsbool', 'simple', '+"first" +"second"', [3, 4, 5]]; + $cases[] = ['first second', 'ftsbool', 'phrase', '+"first second"', [3, 4, 5]]; + $cases[] = ['first second', 'ftsbool', 'wildphrase', '+"*first second*"', [3, 4, 5]]; + $cases[] = ['first second', 'ftsbool', 'wildwords', '+*first* +*second*', [3, 4, 5, 7]]; + $cases[] = ['first second', 'ftsbool', 'wildwords-suffix', '+first* +second*', [3, 4, 5, 7]]; + + $cases[] = ['first second', 'solr', 'simple', 'first second', NULL]; + $cases[] = ['first second', 'solr', 'phrase', '"first second"', NULL]; + $cases[] = ['first second', 'solr', 'wildphrase', '"*first second*"', NULL]; + $cases[] = ['first second', 'solr', 'wildwords', '*first* *second*', NULL]; + $cases[] = ['first second', 'solr', 'wildwords-suffix', 'first* second*', NULL]; + + $cases[] = ['someone@', 'ftsbool', 'simple', '+"someone"', $allEmailRows]; + $cases[] = ['@example.com', 'ftsbool', 'simple', '+"example.com"', $allEmailRows]; + + // If user supplies wildcards, then ignore mode. + foreach ([ + 'simple', + 'wildphrase', + 'wildwords', + 'wildwords-suffix', + ] as $mode) { + $cases[] = ['first% second', 'like', $mode, 'first% second', [3, 7]]; + $cases[] = ['first% second', 'fts', $mode, 'first* second', [3, 7]]; + $cases[] = ['first% second', 'ftsbool', $mode, '+first* +second', [3, 7]]; + $cases[] = ['first% second', 'solr', $mode, 'first* second', NULL]; + $cases[] = ['first second%', 'like', $mode, 'first second%', [3]]; + $cases[] = ['first second%', 'fts', $mode, 'first second*', [3]]; + $cases[] = ['first second%', 'ftsbool', $mode, '+first +second*', [3]]; + $cases[] = ['first second%', 'solr', $mode, 'first second*', NULL]; + } + + return $cases; + } + + /** + * Test format. + * + * @param string $text + * @param string $language + * @param string $mode + * @param string $expectedText + * @param array|NULL $expectedRowIds + * + * @dataProvider dataProvider + */ + public function testFormat($text, $language, $mode, $expectedText, $expectedRowIds) { + $formatter = new CRM_Utils_QueryFormatter($mode); + $actualText = $formatter->format($text, $language); + $this->assertEquals($expectedText, $actualText); + + if ($expectedRowIds !== NULL) { + if ($language === 'like') { + $this->createExampleTable(); + $this->assertSqlIds($expectedRowIds, "SELECT id FROM civicrm_fts_example WHERE " . $formatter->formatSql('civicrm_fts_example', 'name', $text)); + } + elseif (in_array($language, ['fts', 'ftsbool'])) { + if ($this->supportsFts()) { + $this->createExampleTable(); + $this->assertSqlIds($expectedRowIds, "SELECT id FROM civicrm_fts_example WHERE " . $formatter->formatSql('civicrm_fts_example', 'name', $text)); + } + } + elseif ($language === 'solr') { + // Skip. Don't have solr test harness. + } + else { + $this->fail("Cannot asset expectedRowIds with unrecognized language $language"); + } + } + } + + public static function supportsFts() { + return version_compare(CRM_Core_DAO::singleValueQuery('SELECT VERSION()'), '5.6.0', '>='); + } + + /** + * @param array $expectedRowIds + * @param string $sql + */ + private function assertSqlIds($expectedRowIds, $sql) { + $actualRowIds = CRM_Utils_Array::collect('id', + CRM_Core_DAO::executeQuery($sql)->fetchAll()); + sort($actualRowIds); + sort($expectedRowIds); + $this->assertEquals($expectedRowIds, $actualRowIds); + } + +} diff --git a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/FullTextTest.php b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/FullTextTest.php index 47dce216fe..75b804f0da 100644 --- a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/FullTextTest.php +++ b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/FullTextTest.php @@ -29,12 +29,6 @@ use PHPUnit\Framework\TestCase; */ class FullTextTest extends TestCase implements HeadlessInterface, HookInterface, TransactionalInterface { - /** - * Entity ids created as part of test - * @var array - */ - protected $ids; - use Test\ContactTestTrait; use Test\Api3TestTrait; @@ -51,6 +45,8 @@ class FullTextTest extends TestCase implements HeadlessInterface, HookInterface, /** * Test ACL contacts are filtered properly. + * + * @throws \CRM_Core_Exception */ public function testFilterACLContacts(): void { $userId = $this->createLoggedInUser(); diff --git a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php new file mode 100644 index 0000000000..7bff678351 --- /dev/null +++ b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/GroupTest.php @@ -0,0 +1,470 @@ +<?php +/** + * File for the CRM_Contact_Form_Search_Custom_GroupTest class + * + * (PHP 5) + * + * @author Walt Haas <walt@dharmatech.org> (801) 534-1262 + * @copyright Copyright CiviCRM LLC (C) 2009 + * @license http://www.fsf.org/licensing/licenses/agpl-3.0.html + * GNU Affero General Public License version 3 + * @package CiviCRM + * + * This file is part of CiviCRM + * + * CiviCRM is free software; you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License + * as published by the Free Software Foundation; either version 3 of + * the License, or (at your option) any later version. + * + * CiviCRM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/>. + */ + +namespace Civi\Searches; + +use Civi\Test; +use Civi\Test\HeadlessInterface; +use Civi\Test\HookInterface; +use Civi\Test\TransactionalInterface; +use CRM_Core_DAO; +use PHPUnit\Framework\TestCase; + +/** + * FIXME - Add test description. + * + * Tips: + * - With HookInterface, you may implement CiviCRM hooks directly in the test + * class. Simply create corresponding functions (e.g. "hook_civicrm_post(...)" + * or similar). + * - With TransactionalInterface, any data changes made by setUp() or + * test****() functions will rollback automatically -- as long as you don't + * manipulate schema or truncate tables. If this test needs to manipulate + * schema or truncate tables, then either: a. Do all that using setupHeadless() + * and Civi\Test. b. Disable TransactionalInterface, and handle all + * setup/teardown yourself. + * + * @group headless + */ +class GroupTest extends TestCase implements HeadlessInterface, HookInterface, TransactionalInterface { + use Test\ContactTestTrait; + use Test\EntityTrait; + use Test\Api3TestTrait; + + /** + * Civi\Test has many helpers, like install(), uninstall(), sql(), and + * sqlFile(). See: + * https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md + */ + public function setUpHeadless(): Test\CiviEnvBuilder { + return Test::headless() + ->install(['legacycustomsearches']) + ->apply(); + } + + /** + * Set up tags and groups for test. + */ + protected function setup(): void { + $i = 9; + while ($i < 29) { + // Weird historical data set issue. + if ($i !== 25) { + $this->individualCreate([ + 'first_name' => 'Test', + 'last_name' => 'Contact ' . $i, + ], $i); + } + $i++; + } + + foreach ([7, 9] as $tagNumber) { + $this->createTestEntity('Tag', [ + 'name' => 'Tag' . $tagNumber, + 'description' => 'Test Tag ' . $tagNumber, + ], $tagNumber); + } + $entityTags = [ + ['contact' => 10, 'tag' => 9], + ['contact' => 12, 'tag' => 9], + ['contact' => 14, 'tag' => 9], + ['contact' => 16, 'tag' => 9], + ['contact' => 18, 'tag' => 9], + ['contact' => 20, 'tag' => 9], + ['contact' => 22, 'tag' => 9], + ['contact' => 24, 'tag' => 9], + ['contact' => 11, 'tag' => 7], + ['contact' => 12, 'tag' => 7], + ['contact' => 15, 'tag' => 7], + ['contact' => 16, 'tag' => 7], + ['contact' => 19, 'tag' => 7], + ['contact' => 20, 'tag' => 7], + ['contact' => 23, 'tag' => 7], + ['contact' => 24, 'tag' => 7], + ['contact' => 26, 'tag' => 7], + ['contact' => 28, 'tag' => 7], + ]; + foreach ($entityTags as $entityTag) { + $this->createTestEntity('EntityTag', [ + 'tag_id:name' => 'Tag' . $entityTag['tag'], + 'entity_table' => 'civicrm_contact', + 'entity_id' => $this->ids['Contact'][$entityTag['contact']], + ], $entityTag['contact']); + } + + $this->createTestEntity('Group', [ + 'name' => 'Group3', + 'title' => 'Test Group 3', + ], 3); + + $this->createTestEntity('SavedSearch', [ + 'search_custom_id' => 4, + 'customSearchClass' => 'CRM_Contact_Form_Search_Custom_Group', + 'form_values' => [ + 'includeGroups' => [$this->ids['Group'][3]], + 'excludeGroups' => [], + 'customSearchID' => 4, + 'customSearchClass' => 'CRM_Contact_Form_Search_Custom_Group', + ], + ], 1); + $this->createTestEntity('SavedSearch', [ + 'search_custom_id' => 4, + 'customSearchClass' => 'CRM_Contact_Form_Search_Custom_Group', + 'form_values' => [ + 'excludeGroups' => [$this->ids['Group'][3]], + 'includeGroups' => [], + 'includeTags' => [], + 'excludeTags' => [], + 'customSearchID' => 4, + 'customSearchClass' => 'CRM_Contact_Form_Search_Custom_Group', + ], + ], 2); + + $this->createTestEntity('Group', [ + 'name' => 'Group4', + 'title' => 'Test Smart Group 4', + 'saved_search_id' => $this->ids['SavedSearch'][1], + ], 4); + + $this->createTestEntity('Group', [ + 'name' => 'Group5', + 'title' => 'Test Group 5', + ], 5); + + $this->createTestEntity('Group', [ + 'name' => 'Group6', + 'title' => 'Test Smart Group 6', + 'saved_search_id' => $this->ids['SavedSearch'][2], + ], 6); + + $groupContacts = [ + ['contact_id' => $this->ids['Contact'][13], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][14], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][15], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][16], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][21], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][22], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][23], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][24], 'group_id' => $this->ids['Group'][5], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][17], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][18], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][19], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][20], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][21], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][22], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][23], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][24], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][27], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ['contact_id' => $this->ids['Contact'][28], 'group_id' => $this->ids['Group'][3], 'status' => 'Added'], + ]; + foreach ($groupContacts as $groupContact) { + $this->createTestEntity('GroupContact', $groupContact); + } + } + + /** + * @return array + */ + public function dataProvider(): array { + return [ + 'Exclude static group 3' => [ + 'form_values' => ['excludeGroups' => [3]], + 'contact_numbers' => [1, 2, 9, 10, 11, 12, 13, 14, 15, 16, 26], + ], + 'Include static group 3' => [ + 'form_values' => ['includeGroups' => [3]], + 'contact_numbers' => [17, 18, 19, 20, 21, 22, 23, 24, 27, 28], + ], + 'Include static group 5' => [ + 'form_values' => ['includeGroups' => [5]], + 'contact_numbers' => [13, 14, 15, 16, 21, 22, 23, 24], + ], + ' Include static groups 3 and 5' => [ + 'form_values' => ['includeGroups' => [3, 5]], + 'contact_numbers' => [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 28], + ], + 'Include static group 3, exclude static group 5' => [ + 'form_values' => ['includeGroups' => [3], 'excludeGroups' => [5]], + 'contact_numbers' => [17, 18, 19, 20, 27, 28], + ], + 'Exclude tag 7' => [ + 'form_values' => ['excludeTags' => [7]], + 'contact_numbers' => [1, 2, 9, 10, 13, 14, 17, 18, 21, 22, 27], + ], + 'Include tag 7' => [ + 'form_values' => ['includeTags' => [7]], + 'contact_numbers' => [11, 12, 15, 16, 19, 20, 23, 24, 26, 28], + ], + 'Include tag 9' => [ + 'form_values' => ['includeTags' => [9]], + 'contact_numbers' => [10, 12, 14, 16, 18, 20, 22, 24], + ], + 'Include tags 7 and 9' => [ + 'form_values' => ['includeTags' => [7, 9]], + 'contact_numbers' => [10, 11, 12, 14, 15, 16, 18, 19, 20, 22, 23, 24, 26, 28], + ], + 'Include tag 7, exclude tag 9' => [ + 'form_values' => ['includeTags' => [7], 'excludeTags' => [9]], + 'contact_numbers' => [11, 15, 19, 23, 26, 28], + ], + 'Include static group 3, include tag 7 (either)' => [ + 'form_values' => ['includeGroups' => [3], 'includeTags' => [7], 'andOr' => 0], + 'contact_numbers' => [11, 12, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 27, 28], + ], + 'Include static group 3, include tag 7 (both)' => [ + 'form_values' => ['includeGroups' => [3], 'includeTags' => [7], 'andOr' => 1], + 'contact_numbers' => [19, 20, 23, 24, 28], + ], + 'Include static group 3, exclude tag 7' => [ + 'form_values' => ['includeGroups' => [3], 'excludeTags' => [7]], + 'contact_numbers' => [17, 18, 21, 22, 27], + ], + 'Include tag 9, exclude static group 5' => [ + 'form_values' => ['includeTags' => [9], 'excludeGroups' => ['5']], + 'contact_numbers' => [10, 12, 18, 20], + ], + 'Exclude tag 9, exclude static group 5' => [ + 'form_values' => ['excludeTags' => [9], 'excludeGroups' => [5]], + 'contact_numbers' => [1, 2, 9, 11, 17, 19, 26, 27, 28], + ], + 'Include smart group 6' => [ + 'form_values' => ['includeGroups' => [6]], + 'contact_numbers' => [1, 2, 9, 10, 11, 12, 13, 14, 15, 16, 26], + ], + 'Include smart group 4' => [ + 'form_values' => ['includeGroups' => [4]], + 'contact_numbers' => [17, 18, 19, 20, 21, 22, 23, 24, 27, 28], + ], + 'Include smart group 4 and static group 5' => [ + 'form_values' => ['includeGroups' => [4, 5]], + 'contact_numbers' => [13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 27, 28], + ], + ]; + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::all(). + * + * @dataProvider dataProvider + * + * @param array $formValues + * @param array $contactIDs + * + * @throws \CRM_Core_Exception + */ + public function testAll(array $formValues, array $contactIDs): void { + $formValues = $this->replaceFormValuesPlaceholders($formValues); + $full = []; + foreach ($contactIDs as $id) { + if ($id === 1) { + $full[] = [ + 'contact_id' => 1, + 'contact_type' => 'Organization', + 'sort_name' => 'Default Organization', + ]; + } + elseif ($id === 2) { + $full[] = [ + 'contact_id' => 2, + 'contact_type' => 'Organization', + 'sort_name' => 'Second Domain', + ]; + } + else { + $full[] = [ + 'contact_id' => $this->ids['Contact'][$id], + 'contact_type' => 'Individual', + 'sort_name' => 'Contact ' . $id . ', Test', + ]; + } + } + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $sql = $obj->all(); + $this->assertIsString($sql); + $dao = CRM_Core_DAO::executeQuery($sql); + $all = []; + while ($dao->fetch()) { + $all[] = [ + 'contact_id' => $dao->contact_id, + 'contact_type' => $dao->contact_type, + 'sort_name' => $dao->sort_name, + ]; + } + asort($all); + $this->assertEquals($full, $all); + $this->assertEquals(count($contactIDs), $obj->count()); + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::contactIDs(). + * + * @dataProvider dataProvider + * + * @param $formValues + * @param $contactIDs + * + * @throws \Exception + */ + public function testContactIDs($formValues, $contactIDs): void { + $formValues = $this->replaceFormValuesPlaceholders($formValues); + $contactIDs = $this->replaceIDSPlaceholders($contactIDs); + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $sql = $obj->contactIDs(); + $this->assertIsString($sql); + $dao = CRM_Core_DAO::executeQuery($sql); + $contacts = []; + while ($dao->fetch()) { + $contacts[$dao->contact_id] = 1; + } + $contacts = array_keys($contacts); + sort($contacts, SORT_NUMERIC); + $this->assertEquals($contactIDs, $contacts); + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::columns() + * It returns an array of translated name => keys + */ + public function testColumns(): void { + $formValues = []; + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $columns = $obj->columns(); + $this->assertIsArray($columns); + foreach ($columns as $key => $value) { + $this->assertIsString($key); + $this->assertIsString($value); + } + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::summary() + * It returns NULL + */ + public function testSummary(): void { + $formValues = []; + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $this->assertNull($obj->summary()); + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::templateFile() + * Returns the path to the file as a string + */ + public function testTemplateFile(): void { + $formValues = []; + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $fileName = $obj->templateFile(); + $this->assertIsString($fileName); + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::where( ) + * With no arguments it returns '(1)' + */ + public function testWhereNoArgs(): void { + $formValues = [ + \CRM_Core_Form::CB_PREFIX . 17 => TRUE, + \CRM_Core_Form::CB_PREFIX . 23 => TRUE, + ]; + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $this->assertEquals(' (1) ', $obj->where()); + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::where( ) + * With false argument it returns '(1)' + */ + public function testWhereFalse(): void { + $formValues = [ + \CRM_Core_Form::CB_PREFIX . 17 => TRUE, + \CRM_Core_Form::CB_PREFIX . 23 => TRUE, + ]; + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $this->assertEquals(' (1) ', $obj->where(FALSE)); + } + + /** + * Test CRM_Contact_Form_Search_Custom_Group::where( ) + * With true argument it returns list of contact IDs + */ + public function testWhereTrue(): void { + $formValues = [ + \CRM_Core_Form::CB_PREFIX . 17 => TRUE, + \CRM_Core_Form::CB_PREFIX . 23 => TRUE, + ]; + $obj = new \CRM_Contact_Form_Search_Custom_Group($formValues); + $this->assertEquals(' (1) AND contact_a.id IN ( 17, 23 )', $obj->where(TRUE)); + } + + /** + * Replace placeholder form values with created IDS. + * + * @param array $formValues + * + * @return array + */ + private function replaceFormValuesPlaceholders(array $formValues): array { + if (!empty($formValues['excludeGroups'])) { + foreach ($formValues['excludeGroups'] as $index => $number) { + $formValues['excludeGroups'][$index] = $this->ids['Group'][$number]; + } + } + if (!empty($formValues['includeGroups'])) { + foreach ($formValues['includeGroups'] as $index => $number) { + $formValues['includeGroups'][$index] = $this->ids['Group'][$number]; + } + } + if (!empty($formValues['excludeTags'])) { + foreach ($formValues['excludeTags'] as $index => $number) { + $formValues['excludeTags'][$index] = $this->ids['Tag'][$number]; + } + } + if (!empty($formValues['includeTags'])) { + foreach ($formValues['includeTags'] as $index => $number) { + $formValues['includeTags'][$index] = $this->ids['Tag'][$number]; + } + } + return $formValues; + } + + /** + * @param array $contactIDs + * + * @return array + */ + private function replaceIDSPlaceholders(array $contactIDs): array { + foreach ($contactIDs as $index => $id) { + if ($id > 2) { + $contactIDs[$index] = $this->ids['Contact'][$id]; + } + } + return $contactIDs; + } + +} diff --git a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/SampleTest.php b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/SampleTest.php index 9c3ed347d0..737723c1cc 100644 --- a/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/SampleTest.php +++ b/civicrm/ext/legacycustomsearches/tests/phpunit/Civi/Searches/SampleTest.php @@ -230,15 +230,15 @@ class SampleTest extends TestCase implements HeadlessInterface, HookInterface, T public function testSavedSearch(): void { $this->setupSampleData(); $this->setupSavedSearches(); - $dataset[1] = ['id' => $this->getContactIDs(['Household - NY'])]; - $dataset[2] = [ + $dataset[0] = ['id' => $this->getContactIDs(['Household - NY'])]; + $dataset[1] = [ 'id' => $this->getContactIDs([ 'Household - CA', 'Household - CA - 2', ]), ]; $searches = SavedSearch::get()->addSelect('*')->execute(); - foreach ($searches as $search) { + foreach ($searches as $index => $search) { $formValues = CRM_Contact_BAO_SavedSearch::getFormValues($search['id']); $obj = new CRM_Contact_Form_Search_Custom_Sample($formValues); $sql = $obj->contactIDs(); @@ -249,7 +249,7 @@ class SampleTest extends TestCase implements HeadlessInterface, HookInterface, T $contacts[] = $dao->contact_id; } sort($contacts, SORT_NUMERIC); - $this->assertEquals($dataset[$search['id']]['id'], $contacts); + $this->assertEquals($dataset[$index]['id'], $contacts, 'Failed on search ' . $search['id']); } } diff --git a/civicrm/ext/message_admin/ang/crmMsgadm/ListCtrl.js b/civicrm/ext/message_admin/ang/crmMsgadm/ListCtrl.js index f2c77dfd42..688474cc67 100644 --- a/civicrm/ext/message_admin/ang/crmMsgadm/ListCtrl.js +++ b/civicrm/ext/message_admin/ang/crmMsgadm/ListCtrl.js @@ -32,13 +32,17 @@ }); var $ctrl = this; - $ctrl.records = _.map( - [].concat(prefetch.records, _.map(prefetch.translations || [], simpleKeys)), - function(r) { - r._is_translation = (r.tx_language !== undefined); - return r; - } - ); + var allRecords = [].concat(prefetch.records, _.map(prefetch.translations || [], simpleKeys)); + $ctrl.records = _.map(allRecords, function(r) { + r._is_translation = (r.tx_language !== undefined); + + // If there is a translation in the system-default-locale, then it replaces the "Standard" tpl as the primary/visible item entry. + const defaultLocaleTpl = _.find(allRecords, {workflow_name: r.workflow_name, tx_language: CRM.config.lcMessages}); + r._is_primary = defaultLocaleTpl ? (r === defaultLocaleTpl) : (!r._is_translation); + r._is_visible = (r._is_translation || r._is_primary); + + return r; + }); function findTranslations(record) { return _.reduce($ctrl.records, function(existing, rec){ diff --git a/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js b/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js index 5b4bb42b55..926f5f5e3a 100644 --- a/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js +++ b/civicrm/ext/message_admin/ang/crmMsgadm/Workflow.js @@ -14,11 +14,11 @@ prefetch: function(crmApi4, crmStatus) { var q = crmApi4({ records: ['MessageTemplate', 'get', { - select: ["id", "msg_title", "is_default", "is_active"], + select: ["id", "msg_title", "is_default", "is_active", "workflow_name"], where: [["workflow_name", "IS NOT EMPTY"], ["is_reserved", "=", "0"]] }], translations: ['MessageTemplate', 'get', { - select: ["id", "msg_title", "is_default", "is_active", "tx.language:label", "tx.language"], + select: ["id", "msg_title", "is_default", "is_active", "workflow_name", "tx.language:label", "tx.language"], join: [["Translation AS tx", "INNER", null, ["tx.entity_table", "=", "'civicrm_msg_template'"], ["tx.entity_id", "=", "id"]]], where: [["workflow_name", "IS NOT EMPTY"], ["is_reserved", "=", "0"]], groupBy: ["id", "tx.language"], diff --git a/civicrm/ext/message_admin/ang/crmMsgadm/WorkflowTranslated.html b/civicrm/ext/message_admin/ang/crmMsgadm/WorkflowTranslated.html index 4a51e0ed3d..2bcea9b050 100644 --- a/civicrm/ext/message_admin/ang/crmMsgadm/WorkflowTranslated.html +++ b/civicrm/ext/message_admin/ang/crmMsgadm/WorkflowTranslated.html @@ -19,7 +19,7 @@ </tr> </thead> <tbody> - <tr ng-repeat="record in $ctrl.records | filter:filters.text | orderBy:['msg_title','_is_translation','tx_language_label']"> + <tr ng-repeat="record in $ctrl.records | filter:filters.text | filter:{_is_visible: true} | orderBy:['msg_title','!_is_primary','tx_language_label']"> <td>{{record.msg_title}}</td> <td>{{record.tx_language_label || ts('Standard')}}</td> <td> @@ -39,7 +39,7 @@ </span> </td> <td> - <span ng-if="!record.tx_language"> + <span ng-if="record._is_primary"> <a href crm-icon="fa-plus" ng-click="$ctrl.addTranslation(record)" title="{{ts('Add translation, "%1"', {1: record.msg_title})}}">{{:: ts('Translate') }}</a> </span> </td> diff --git a/civicrm/ext/message_admin/info.xml b/civicrm/ext/message_admin/info.xml index ea4159d579..e4fafa40d7 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.63.2</version> + <version>5.64.0</version> <develStage>alpha</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <requires> <ext>org.civicrm.afform</ext> diff --git a/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php b/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php index 99450579d8..42442c0a5c 100644 --- a/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php +++ b/civicrm/ext/oauth-client/CRM/OAuth/MailSetup.php @@ -23,6 +23,7 @@ class CRM_OAuth_MailSetup { 'title' => sprintf('%s (ID #%s)', $provider['title'] ?? $provider['name'] ?? ts('OAuth2'), $client['id']), 'callback' => ['CRM_OAuth_MailSetup', 'setup'], 'oauth_client_id' => $client['id'], + 'prompt' => $provider['options']['prompt'] ?? NULL, ]; } } @@ -46,7 +47,7 @@ class CRM_OAuth_MailSetup { ->addWhere('id', '=', $setupAction['oauth_client_id']) ->setStorage('OAuthSysToken') ->setTag('MailSettings:setup') - ->setPrompt('select_account') + ->setPrompt($setupAction['prompt'] ?? 'select_account') ->execute() ->single(); diff --git a/civicrm/ext/oauth-client/info.xml b/civicrm/ext/oauth-client/info.xml index 4af5bbe48e..324ca352cf 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <requires> <ext version="~4.5">org.civicrm.afform</ext> diff --git a/civicrm/ext/oauth-client/providers/gmail.dist.json b/civicrm/ext/oauth-client/providers/gmail.dist.json index c8b9426e71..0b9776a0c8 100644 --- a/civicrm/ext/oauth-client/providers/gmail.dist.json +++ b/civicrm/ext/oauth-client/providers/gmail.dist.json @@ -10,7 +10,8 @@ "scopes": [ "https://mail.google.com/", "openid" - ] + ], + "prompt": "select_account consent" }, "mailSettingsTemplate": { "name": "{{token.resource_owner.email}}", @@ -23,4 +24,4 @@ "password": null, "is_ssl": true } -} \ No newline at end of file +} diff --git a/civicrm/ext/oauth-client/tests/phpunit/CRM/OAuth/MailSetupTest.php b/civicrm/ext/oauth-client/tests/phpunit/CRM/OAuth/MailSetupTest.php index d5f8e9a858..5b1756c86c 100644 --- a/civicrm/ext/oauth-client/tests/phpunit/CRM/OAuth/MailSetupTest.php +++ b/civicrm/ext/oauth-client/tests/phpunit/CRM/OAuth/MailSetupTest.php @@ -27,7 +27,7 @@ class CRM_OAuth_MailSetupTest extends \PHPUnit\Framework\TestCase implements Hea } public function testEvalArrayTemplate(): void { - $vars = array( + $vars = [ 'token' => [ 'client_id' => 10, 'resource_owner' => ['mail' => 'foo@bar.com'], @@ -65,7 +65,7 @@ class CRM_OAuth_MailSetupTest extends \PHPUnit\Framework\TestCase implements Hea ], 'class' => 'Civi\\OAuth\\CiviGenericProvider', ], - ); + ]; $expected = [ 'name' => 'Foozball Association: foo@bar.com', 'domain' => 'bar.com', diff --git a/civicrm/ext/payflowpro/info.xml b/civicrm/ext/payflowpro/info.xml index 8d4f170cc1..56ec8a0773 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <comments>This extension is extraction of the original Core Payflow Pro Payment Processor</comments> <classloader> diff --git a/civicrm/ext/recaptcha/info.xml b/civicrm/ext/recaptcha/info.xml index d0116df2d7..caebedd59a 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.63.2</version> + <version>5.64.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <classloader> <psr0 prefix="CRM_" path="."/> 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 2c557f58db..f2f60e68c0 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/AbstractRunAction.php @@ -118,6 +118,9 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { protected function formatResult(iterable $result): array { $rows = []; $keyName = CoreUtil::getIdFieldName($this->savedSearch['api_entity']); + if ($this->savedSearch['api_entity'] === 'RelationshipCache') { + $keyName = 'relationship_id'; + } foreach ($result as $index => $record) { $data = $columns = []; foreach ($this->getSelectClause() as $key => $item) { @@ -280,9 +283,10 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { * @return string */ private function rewrite(array $column, array $data): string { - $output = $this->replaceTokens($column['rewrite'], $data, 'view'); // Cheap strpos to skip Smarty processing if not needed - if (strpos($output, '{') !== FALSE) { + $hasSmarty = strpos($column['rewrite'], '{') !== FALSE; + $output = $this->replaceTokens($column['rewrite'], $data, 'view'); + if ($hasSmarty) { $smarty = \CRM_Core_Smarty::singleton(); $output = $smarty->fetchWith("string:$output", []); } @@ -894,6 +898,10 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { * @param array $apiParams */ protected function augmentSelectClause(&$apiParams): void { + // Don't mess with EntitySets + if ($this->savedSearch['api_entity'] === 'EntitySet') { + return; + } // Add primary key field if actions are enabled // (only needed for non-dao entities, as Api4SelectQuery will auto-add the id) if (!in_array('DAOEntity', CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'type')) && @@ -945,12 +953,25 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { $this->addSelectExpression($addition); } - // When selecting monetary fields, also select currency foreach ($apiParams['select'] as $select) { + // When selecting monetary fields, also select currency $currencyFieldName = $this->getCurrencyField($select); if ($currencyFieldName) { $this->addSelectExpression($currencyFieldName); } + // Add field dependencies needed to resolve pseudoconstants + $clause = $this->getSelectExpression($select); + if ($clause && $clause['expr']->getType() === 'SqlField' && !empty($clause['fields'])) { + $fieldAlias = array_keys($clause['fields'])[0]; + $field = $clause['fields'][$fieldAlias]; + if (!empty($field['input_attrs']['control_field']) && strpos($fieldAlias, ':')) { + $prefix = substr($fieldAlias, 0, strrpos($fieldAlias, $field['name'])); + // Don't need to add the field if a suffixed version already exists + if (!$this->getSelectExpression($prefix . $field['input_attrs']['control_field'] . ':label')) { + $this->addSelectExpression($prefix . $field['input_attrs']['control_field']); + } + } + } } } @@ -964,7 +985,7 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { $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['expr']->isType('SqlField') && $clause['dataType'] === 'Money' && $clause['fields'])) { + if (!($clause && $clause['dataType'] === 'Money' && $clause['fields'])) { return NULL; } $moneyFieldAlias = array_keys($clause['fields'])[0]; @@ -973,7 +994,15 @@ abstract class AbstractRunAction extends \Civi\Api4\Generic\AbstractAction { if ($moneyField['type'] === 'Custom') { return NULL; } + $prefix = substr($moneyFieldAlias, 0, strrpos($moneyFieldAlias, $moneyField['name'])); + + // 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); + } + // If the entity has a field named 'currency', just assume that's it. if ($this->getField($prefix . 'currency')) { return $prefix . 'currency'; 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 b21aabe9cb..994e2018ec 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetDefault.php @@ -16,10 +16,14 @@ use Civi\Api4\Query\SqlFunctionGROUP_CONCAT; use Civi\Api4\Utils\CoreUtil; /** - * Return the default results table for a saved search. + * Generate the default display for a saved search. + * + * Dispatches `civi.search.defaultDisplay` event to allow subscribers to provide a display based on context. * * @method $this setType(string $type) * @method string getType() + * @method $this setContext(array $context) + * @method array getContext() * @package Civi\Api4\Action\SearchDisplay */ class GetDefault extends \Civi\Api4\Generic\AbstractAction { @@ -40,6 +44,12 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { */ protected $type = 'table'; + /** + * Provide context information; passed through to `civi.search.defaultDisplay` subscribers + * @var array + */ + protected $context = []; + /** * @var array */ @@ -60,6 +70,7 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { if (!strlen($label) && !empty($this->savedSearch['api_entity'])) { $label = CoreUtil::getInfoItem($this->savedSearch['api_entity'], 'title_plural'); } + // Initialize empty display $display = [ 'id' => NULL, 'name' => NULL, @@ -76,6 +87,7 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { 'savedSearch' => $this->savedSearch, 'display' => &$display, 'apiAction' => $this, + 'context' => $this->context, ])); $fields = $this->entityFields(); @@ -91,10 +103,9 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { $display[$fieldExpr] = $display[$fieldName]; } } - $results = [$display]; // Replace pseudoconstants e.g. type:icon - FormattingUtil::formatOutputValues($results, $fields); - $result->exchangeArray($this->selectArray($results)); + FormattingUtil::formatOutputValues($display, $fields); + $result->exchangeArray($this->selectArray([$display])); } /** @@ -208,22 +219,19 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { $menu = []; $mainEntity = $this->savedSearch['api_entity'] ?? NULL; if ($mainEntity && !$this->canAggregate(CoreUtil::getIdFieldName($mainEntity))) { - foreach (CoreUtil::getInfoItem($mainEntity, 'paths') as $action => $path) { - $link = $this->formatMenuLink($mainEntity, $action); - if ($link) { - $menu[] = $link; - } + foreach (Display::getEntityLinks($mainEntity, TRUE) as $link) { + $link['join'] = NULL; + $menu[] = $link; } } $keys = ['entity' => TRUE, 'bridge' => TRUE]; foreach ($this->getJoins() as $join) { if (!$this->canAggregate($join['alias'] . '.' . CoreUtil::getIdFieldName($join['entity']))) { foreach (array_filter(array_intersect_key($join, $keys)) as $joinEntity) { - foreach (CoreUtil::getInfoItem($joinEntity, 'paths') as $action => $path) { - $link = $this->formatMenuLink($joinEntity, $action, $join['alias']); - if ($link) { - $menu[] = $link; - } + $joinLabel = $this->getJoinLabel($join['alias']); + foreach (Display::getEntityLinks($joinEntity, $joinLabel) as $link) { + $link['join'] = $join['alias']; + $menu[] = $link; } } } @@ -231,23 +239,6 @@ class GetDefault extends \Civi\Api4\Generic\AbstractAction { return $menu; } - /** - * @param string $entity - * @param string $action - * @param string $joinAlias - * @return array|NULL - */ - private function formatMenuLink(string $entity, string $action, string $joinAlias = NULL) { - if ($joinAlias && $entity === $this->getJoin($joinAlias)['entity']) { - $entityLabel = $this->getJoinLabel($joinAlias); - } - else { - $entityLabel = TRUE; - } - $link = Display::getEntityLinks($entity, $entityLabel)[$action] ?? NULL; - return $link ? $link + ['join' => $joinAlias] : NULL; - } - /** * Options callback for $this->type * @return array diff --git a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php index 9676e096d3..17b3b91c53 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php +++ b/civicrm/ext/search_kit/Civi/Api4/Action/SearchDisplay/GetSearchTasks.php @@ -34,7 +34,8 @@ class GetSearchTasks extends \Civi\Api4\Generic\AbstractAction { */ public function _run(\Civi\Api4\Generic\Result $result) { // Adding checkPermissions filters out actions the user is not allowed to perform - $entity = Entity::get($this->checkPermissions)->addWhere('name', '=', $this->entity) + $entityName = ($this->entity === 'RelationshipCache') ? 'Relationship' : $this->entity; + $entity = Entity::get($this->checkPermissions)->addWhere('name', '=', $entityName) ->addSelect('name', 'title_plural') ->setChain([ 'actions' => ['$name', 'getActions', ['where' => [['name', 'IN', ['update', 'delete']]]], 'name'], 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 f6711dd724..20fa233a4b 100644 --- a/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php +++ b/civicrm/ext/search_kit/Civi/Api4/Event/Subscriber/DefaultDisplaySubscriber.php @@ -101,7 +101,7 @@ class DefaultDisplaySubscriber extends \Civi\Core\Service\AutoService implements // Color field if (isset($fields['color'])) { - $e->display['settings']['color'] = 'color'; + $e->display['settings']['extra']['color'] = 'color'; } } diff --git a/civicrm/ext/search_kit/Civi/Search/Display.php b/civicrm/ext/search_kit/Civi/Search/Display.php index 4f9e3cce22..2bb5393d33 100644 --- a/civicrm/ext/search_kit/Civi/Search/Display.php +++ b/civicrm/ext/search_kit/Civi/Search/Display.php @@ -55,10 +55,11 @@ class Display { * @param string|bool $addLabel * Pass a string to supply a custom label, TRUE to use the default, * or FALSE to keep the %1 placeholders in the text (used for the admin UI) - * @return array[]|null + * @return array[] */ - public static function getEntityLinks(string $entity, $addLabel = FALSE) { - $paths = CoreUtil::getInfoItem($entity, 'paths'); + public static function getEntityLinks(string $entity, $addLabel = FALSE): array { + $paths = CoreUtil::getInfoItem($entity, 'paths') ?? []; + $links = []; // Hack to support links to relationships if ($entity === 'RelationshipCache') { $entity = 'Relationship'; @@ -66,55 +67,28 @@ class Display { if ($addLabel === TRUE) { $addLabel = CoreUtil::getInfoItem($entity, 'title'); } - $label = $addLabel ? [1 => $addLabel] : []; - if ($paths) { - $links = [ - 'view' => [ - 'action' => 'view', - 'entity' => $entity, - 'text' => E::ts('View %1', $label), - 'icon' => 'fa-external-link', - 'style' => 'default', - // Contacts and cases are too cumbersome to view in a popup - 'target' => in_array($entity, ['Contact', 'Case']) ? '_blank' : 'crm-popup', - ], - 'preview' => [ - 'action' => 'preview', - 'entity' => $entity, - 'text' => E::ts('Preview %1', $label), - 'icon' => 'fa-eye', - 'style' => 'default', - 'target' => 'crm-popup', - ], - 'update' => [ - 'action' => 'update', - 'entity' => $entity, - 'text' => E::ts('Edit %1', $label), - 'icon' => 'fa-pencil', - 'style' => 'default', - // Contacts and cases are too cumbersome to edit in a popup - 'target' => in_array($entity, ['Contact', 'Case']) ? '_blank' : 'crm-popup', - ], - 'move' => [ - 'action' => 'move', - 'entity' => $entity, - 'text' => E::ts('Move %1', $label), - 'icon' => 'fa-random', - 'style' => 'default', - 'target' => 'crm-popup', - ], - 'delete' => [ - 'action' => 'delete', - 'entity' => $entity, - 'text' => E::ts('Delete %1', $label), - 'icon' => 'fa-trash', - 'style' => 'danger', - 'target' => 'crm-popup', - ], + // If addLabel is false the placeholder needs to be passed through to javascript + $label = $addLabel ?: '%1'; + unset($paths['add']); + foreach (array_keys($paths) as $actionName) { + $actionKey = \CRM_Core_Action::mapItem($actionName); + $link = [ + 'action' => $actionName, + 'entity' => $entity, + 'text' => \CRM_Core_Action::getTitle($actionKey, $label), + 'icon' => \CRM_Core_Action::getIcon($actionKey), + 'weight' => \CRM_Core_Action::getWeight($actionKey), + 'style' => $actionName === 'delete' ? 'danger' : 'default', + 'target' => 'crm-popup', ]; - return array_intersect_key($links, $paths) ?: NULL; + // Contacts and cases are too cumbersome to view in a popup + if (in_array($entity, ['Contact', 'Case']) && in_array($actionName, ['view', 'update'])) { + $link['target'] = '_blank'; + } + $links[$actionName] = $link; } - return NULL; + uasort($links, ['CRM_Utils_Sort', 'cmpFunc']); + return $links; } } diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin.ang.php b/civicrm/ext/search_kit/ang/crmSearchAdmin.ang.php index 505641b613..dece897b1b 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin.ang.php +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin.ang.php @@ -21,5 +21,6 @@ return [ 'all CiviCRM permissions and ACLs', 'administer CiviCRM', 'administer afform', + 'view debug output', ], ]; diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js index 08fc3704fe..0dc2a7afd9 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin.module.js @@ -28,7 +28,7 @@ savedSearch: function($route, crmApi4) { var params = $route.current.params; return crmApi4('SavedSearch', 'get', { - select: ['*', 'GROUP_CONCAT(DISTINCT entity_tag.tag_id) AS tag_id'], + select: ['id', 'name', 'label', 'description', 'api_entity', 'api_params', 'expires_date', 'GROUP_CONCAT(DISTINCT entity_tag.tag_id) AS tag_id'], where: [['id', '=', params.id]], join: [ ['EntityTag AS entity_tag', 'LEFT', ['entity_tag.entity_table', '=', '"civicrm_saved_search"'], ['id', '=', 'entity_tag.entity_id']], @@ -181,7 +181,7 @@ return {field: field, join: join}; } function parseFnArgs(info, expr) { - var matches = /([_A-Z]+)\((.*)\)(:[a-z]+)?$/.exec(expr), + var matches = /([_A-Z]*)\((.*)\)(:[a-z]+)?$/.exec(expr), fnName = matches[1], argString = matches[2]; info.fn = _.find(CRM.crmSearchAdmin.functions, {name: fnName || 'e'}); diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js index 51f3bc0145..351a972a6a 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdmin.component.js @@ -507,7 +507,7 @@ }; function getFieldsForJoin(joinEntity) { - return {results: ctrl.getAllFields(':name', ['Field', 'Extra'], null, joinEntity)}; + return {results: ctrl.getAllFields(':name', ['Field', 'Custom', 'Extra'], null, joinEntity)}; } // @return {function} diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.html index 11a1765f09..4bb1f77e53 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.html +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/crmSearchAdminLinkGroup.html @@ -2,10 +2,10 @@ <thead> <tr> <th class="crm-search-admin-icon-col"></th> + <th>{{:: ts('Link') }}</th> <th class="crm-search-admin-icon-col">{{:: ts('Icon') }}</th> <th>{{:: ts('Open') }}</th> <th>{{:: ts('Text') }}</th> - <th>{{:: ts('Link') }}</th> <th>{{:: ts('Show if') }}</th> <th>{{:: ts('Style') }}</th> <th class="crm-search-admin-icon-col"></th> @@ -16,6 +16,9 @@ <td class="crm-search-admin-icon-col"> <i class="crm-i fa-arrows crm-search-move-icon"></i> </td> + <td class="form-inline"> + <crm-search-admin-link-select api-entity="$ctrl.apiEntity" api-params="$ctrl.apiParams" link="item" links="$ctrl.links" on-change="$ctrl.onChangeLink(item, newLink)"></crm-search-admin-link-select> + </td> <td class="crm-search-admin-icon-col"> <span class="crm-editable-enabled" ng-click="pickIcon($index)"> <i class="{{ item.icon ? 'crm-i ' + item.icon : '' }}" style="opacity: 1"></i> @@ -32,9 +35,6 @@ <input type="text" class="form-control" ng-model="item.text"> <crm-search-admin-token-select model="item" field="text" suffix=":label"></crm-search-admin-token-select> </td> - <td class="form-inline"> - <crm-search-admin-link-select api-entity="$ctrl.apiEntity" api-params="$ctrl.apiParams" link="item" links="$ctrl.links" on-change="$ctrl.onChangeLink(item, newLink)"></crm-search-admin-link-select> - </td> <td class="form-inline"> <input ng-model="item.condition[0]" crm-ui-select="{placeholder: item.action ? ts('Allowed') : ts('Always'), data: $ctrl.fields}" ng-change="$ctrl.onChangeCondition(item)"> <div class="form-group" ng-if="item.condition[0] === 'check user permission'"> diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/crmSearchDisplayEntity.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/crmSearchDisplayEntity.component.js index 5ee7e63294..f58dd343a4 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/crmSearchDisplayEntity.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/displays/crmSearchDisplayEntity.component.js @@ -13,8 +13,8 @@ templateUrl: '~/crmSearchDisplayTable/crmSearchDisplayTable.html', controller: function($scope, $element, searchDisplayBaseTrait) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), - // Mix in traits to this controller - ctrl = angular.extend(this, searchDisplayBaseTrait); + // Mix in a copy of searchDisplayBaseTrait + ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait)); this.$onInit = function() { // Adding this stuff for the sake of preview, but pollutes the display settings diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js index 38940d9fbe..a9ba405422 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.component.js @@ -12,8 +12,8 @@ templateUrl: '~/crmSearchAdmin/resultsTable/crmSearchAdminResultsTable.html', controller: function($scope, $element, searchMeta, searchDisplayBaseTrait, searchDisplayTasksTrait, searchDisplaySortableTrait) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), - // Mix in traits to this controller - ctrl = angular.extend(this, searchDisplayBaseTrait, searchDisplayTasksTrait, searchDisplaySortableTrait); + // Mix in copies of traits to this controller + ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait), _.cloneDeep(searchDisplayTasksTrait), _.cloneDeep(searchDisplaySortableTrait)); function buildSettings() { ctrl.apiEntity = ctrl.search.api_entity; @@ -26,6 +26,9 @@ ctrl.debug = { apiParams: JSON.stringify(ctrl.search.api_params, null, 2) }; + ctrl.perm = { + viewDebugOutput: CRM.checkPerm('view debug output'), + }; ctrl.results = null; ctrl.rowCount = null; ctrl.page = 1; diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html index f80476cdaf..a61f99abe9 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/resultsTable/debug.html @@ -9,8 +9,10 @@ <strong>API:</strong> </div> <pre>{{ $ctrl.debug.apiParams }}</pre> - <strong>SQL:</strong> - <pre ng-if="!$ctrl.debug.sql">{{:: ts('Run search to view SQL') }}</pre> - <pre ng-repeat="query in $ctrl.debug.sql">{{ query }}</pre> + <div ng-if="$ctrl.perm.viewDebugOutput"> + <strong>SQL:</strong> + <pre ng-if="!$ctrl.debug.sql">{{:: ts('Run search to view SQL') }}</pre> + <pre ng-repeat="query in $ctrl.debug.sql">{{ query }}</pre> + </div> </div> </fieldset> diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/buttons.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/buttons.html index bcc11e87bc..90128ecac3 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/buttons.html +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/buttons.html @@ -1,12 +1,18 @@ -<div class="btn-group btn-group-xs"> - <a class="btn btn-primary" ng-href="#/edit/{{:: row.data.id }}" ng-if=":: row.permissionToEdit"> - <i class="crm-i fa-pencil"></i> - {{:: ts('Edit') }} +<div class="btn-group btn-group-xs crm-search-admin-search-listing-buttons"> + <a class="btn btn-primary" ng-href="#/edit/{{:: row.data.id }}" ng-if=":: row.permissionToEdit" title="{{:: ts('Edit search and displays') }}"> + <i class="crm-i fa-pencil fa-fw"></i> </a> <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ng-click="row.menuOpen = true"> <i class="crm-i fa-bars"></i> + <span class="caret"></span> </button> <ul class="dropdown-menu dropdown-menu-right" ng-if=":: row.menuOpen"> + <li ng-if=":: row.permissionToEdit" title="{{:: ts('Edit search and displays') }}"> + <a ng-href="#/edit/{{:: row.data.id }}"> + <i class="crm-i fa-pencil fa-fw"></i> + {{:: ts('Edit') }} + </a> + </li> <li title="{{:: ts('View search results table') }}"> <a ng-href="{{:: $ctrl.searchDisplayPath + '#/display/' + row.data.name }}" target="_blank"> <i class="crm-i fa-table"></i> @@ -28,13 +34,13 @@ <li ng-if="!row.data['base_module:label']" title="{{:: ts('Delete search along with any displays and forms') }}"> <a href ng-click="$ctrl.deleteOrRevert(row)"> <i class="crm-i fa-trash"></i> - {{:: ts('Delete...') }} + {{:: ts('Delete') }} </a> </li> <li ng-if="row.data['base_module:label'] && row.data['local_modified_date']" title="{{:: ts('Revert search to its packaged state') }}"> <a href ng-click="$ctrl.deleteOrRevert(row)"> <i class="crm-i fa-undo"></i> - {{:: ts('Revert...') }} + {{:: ts('Revert') }} </a> </li> </ul> 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 c9b75271f1..8c23e2f94b 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/crmSearchAdminSearchListing.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchListing/crmSearchAdminSearchListing.component.js @@ -11,7 +11,7 @@ controller: function($scope, $element, $q, crmApi4, crmStatus, searchMeta, searchDisplayBaseTrait, searchDisplaySortableTrait) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), // Mix in traits to this controller - ctrl = angular.extend(this, searchDisplayBaseTrait, searchDisplaySortableTrait), + ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait), _.cloneDeep(searchDisplaySortableTrait)), afformLoad; this.searchDisplayPath = CRM.url('civicrm/search'); @@ -38,11 +38,13 @@ 'modified_id.display_name', 'created_date', 'modified_date', + 'expires_date', 'has_base', 'base_module:label', 'local_modified_date', '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', @@ -271,6 +273,13 @@ }) ); } + ctrl.display.settings.columns.push( + searchMeta.fieldToColumn('expires_date', { + label: ts('Expires'), + title: '[expires_date]', + rewrite: '[expires]' + }) + ); ctrl.display.settings.columns.push({ type: 'include', alignment: 'text-right', diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/crmSearchAdminSegmentListing.component.js b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/crmSearchAdminSegmentListing.component.js index 16ad1dc19d..c72ef73ada 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/crmSearchAdminSegmentListing.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/searchSegmentListing/crmSearchAdminSegmentListing.component.js @@ -11,7 +11,7 @@ controller: function($scope, $element, crmApi4, searchMeta, searchDisplayBaseTrait, searchDisplaySortableTrait) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), // Mix in traits to this controller - ctrl = angular.extend(this, searchDisplayBaseTrait, searchDisplaySortableTrait); + ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait), _.cloneDeep(searchDisplaySortableTrait)); this.apiEntity = 'SearchSegment'; this.search = { diff --git a/civicrm/ext/search_kit/ang/crmSearchAdmin/tabs.html b/civicrm/ext/search_kit/ang/crmSearchAdmin/tabs.html index 99b12d9f38..7592b5001e 100644 --- a/civicrm/ext/search_kit/ang/crmSearchAdmin/tabs.html +++ b/civicrm/ext/search_kit/ang/crmSearchAdmin/tabs.html @@ -1,6 +1,17 @@ <li> <textarea class="form-control" placeholder="{{:: ts('Description (shown above default display)') }}" ng-model="$ctrl.savedSearch.description"></textarea> </li> +<li> + <div class="form-inline" title="{{:: ts('Search Expiry Date') }}"> + <div class="form-group"> + <label class="sr-only" for="expires_date">{{:: ts('Search Expiry Date') }}</label> + <div class="input-group"> + <div class="input-group-addon"><i class="crm-i fa-calendar-times-o"></i></div> + <input id="expires_date" class="form-control" crm-ui-datepicker="{time: true}" ng-model="$ctrl.savedSearch.expires_date" placeholder="Expires"> + </div> + </div> + </div> +</li> <li> <crm-search-admin-tags tag-ids="$ctrl.savedSearch.tag_id" class="btn-group btn-group-sm"></crm-search-admin-tags> </li> diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html index 0877b15aaa..e0493dc0ea 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html +++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/field.html @@ -1,5 +1,5 @@ <crm-search-display-editable row="row" col="colData" do-save="$ctrl.runSearch([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}" ng-click="colData.edit && !$ctrl.editing && ($ctrl.editing = [rowIndex, colIndex])"> +<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])"> <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> diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html index cef1a83bbb..338c2a37fc 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html +++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/colType/menu.html @@ -1,5 +1,5 @@ -<div class="btn-group"> - <button type="button" class="dropdown-toggle {{:: $ctrl.settings.columns[colIndex].size }} btn-{{:: $ctrl.settings.columns[colIndex].style }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ng-click="colData.open = true"> +<div class="btn-group" role="group"> + <button type="button" class="dropdown-toggle btn {{:: $ctrl.settings.columns[colIndex].size }} btn-{{:: $ctrl.settings.columns[colIndex].style }}" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" ng-click="colData.open = true"> <i ng-if=":: $ctrl.settings.columns[colIndex].icon" class="crm-i {{:: $ctrl.settings.columns[colIndex].icon }}"></i> {{:: colData.text }} <span class="caret"></span> 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 f4543e8ea0..d40b30ce6b 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js +++ b/civicrm/ext/search_kit/ang/crmSearchDisplay/traits/searchDisplayBaseTrait.service.js @@ -168,6 +168,14 @@ ctrl.rowCount = result.count; }); } + // If there are no results on initial load, open the "addNew" link if configured as "autoOpen" + if (!ctrl.results.length && requestId === 1 && ctrl.settings.addButton && ctrl.settings.addButton.autoOpen) { + CRM.loadForm(ctrl.getButtonUrl()) + .on('crmFormSuccess', function() { + ctrl.rowCount = null; + ctrl.getResultsPronto(); + }); + } } _.each(ctrl.onPostRun, function(callback) { callback.call(ctrl, ctrl.results, 'success', editedRow); diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayGrid.ang.php b/civicrm/ext/search_kit/ang/crmSearchDisplayGrid.ang.php index d0a4566899..978734532c 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplayGrid.ang.php +++ b/civicrm/ext/search_kit/ang/crmSearchDisplayGrid.ang.php @@ -12,7 +12,7 @@ return [ 'css/crmSearchDisplayGrid.css', ], 'basePages' => ['civicrm/search', 'civicrm/admin/search'], - 'requires' => ['crmSearchDisplay', 'crmUi', 'ui.bootstrap'], + 'requires' => ['crmSearchDisplay', 'crmUi', 'ui.bootstrap', 'crmSearchTasks'], 'bundles' => ['bootstrap3'], 'exports' => [ 'crm-search-display-grid' => 'E', diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js b/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js index 300d861d0f..59a846fa0d 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchDisplayGrid/crmSearchDisplayGrid.component.js @@ -17,8 +17,8 @@ templateUrl: '~/crmSearchDisplayGrid/crmSearchDisplayGrid.html', controller: function($scope, $element, searchDisplayBaseTrait) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), - // Mix in properties of searchDisplayBaseTrait - ctrl = angular.extend(this, searchDisplayBaseTrait); + // Mix in a copy of searchDisplayBaseTrait + ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait)); this.$onInit = function() { this.initializeDisplay($scope, $element); diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayList.ang.php b/civicrm/ext/search_kit/ang/crmSearchDisplayList.ang.php index 62c961dee4..b34dc856f8 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplayList.ang.php +++ b/civicrm/ext/search_kit/ang/crmSearchDisplayList.ang.php @@ -9,7 +9,7 @@ return [ 'ang/crmSearchDisplayList', ], 'basePages' => ['civicrm/search', 'civicrm/admin/search'], - 'requires' => ['crmSearchDisplay', 'crmUi', 'ui.bootstrap'], + 'requires' => ['crmSearchDisplay', 'crmUi', 'ui.bootstrap', 'crmSearchTasks'], 'bundles' => ['bootstrap3'], 'exports' => [ 'crm-search-display-list' => 'E', diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.component.js b/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.component.js index 7982f36307..6a2b72431a 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchDisplayList/crmSearchDisplayList.component.js @@ -17,8 +17,8 @@ templateUrl: '~/crmSearchDisplayList/crmSearchDisplayList.html', controller: function($scope, $element, searchDisplayBaseTrait) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), - // Mix in properties of searchDisplayBaseTrait - ctrl = angular.extend(this, searchDisplayBaseTrait); + // Mix in a copy of searchDisplayBaseTrait + ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait)); this.$onInit = function() { this.initializeDisplay($scope, $element); diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.component.js b/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.component.js index ed0b95042e..04f8120ffa 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.component.js @@ -16,8 +16,8 @@ templateUrl: '~/crmSearchDisplayTable/crmSearchDisplayTable.html', controller: function($scope, $element, searchDisplayBaseTrait, searchDisplayTasksTrait, searchDisplaySortableTrait, crmApi4) { var ts = $scope.ts = CRM.ts('org.civicrm.search_kit'), - // Mix in traits to this controller - ctrl = angular.extend(this, searchDisplayBaseTrait, searchDisplayTasksTrait, searchDisplaySortableTrait); + // Mix in copies of traits to this controller + ctrl = angular.extend(this, _.cloneDeep(searchDisplayBaseTrait), _.cloneDeep(searchDisplayTasksTrait), _.cloneDeep(searchDisplaySortableTrait)); this.$onInit = function() { var tallyParams; diff --git a/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html b/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html index 19d432c735..d9df2cda75 100644 --- a/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html +++ b/civicrm/ext/search_kit/ang/crmSearchDisplayTable/crmSearchDisplayTable.html @@ -12,8 +12,8 @@ <th ng-class="{'crm-search-result-select': $ctrl.settings.actions}" ng-include="'~/crmSearchDisplayTable/crmSearchDisplayTaskHeader.html'" ng-if=":: $ctrl.hasExtraFirstColumn()"> </th> <th ng-repeat="col in $ctrl.settings.columns" ng-click="$ctrl.setSort(col, $event)" class="{{:: $ctrl.isSortable(col) ? 'crm-sortable-col' : ''}}" title="{{:: $ctrl.isSortable(col) ? ts('Click to sort results (shift-click to sort by multiple).') : '' }}"> - <i ng-if=":: $ctrl.isSortable(col)" class="crm-i {{ $ctrl.getSort(col) }}"></i> - <span>{{:: col.label }}</span> + <i ng-if=":: $ctrl.isSortable(col)" class="crm-i crm-search-table-column-sort-icon {{ $ctrl.getSort(col) }}"></i> + <span class="crm-search-display-table-column-label">{{:: col.label }}</span> </th> </tr> </thead> diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js index 0168ba0d20..102e2bc36f 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/crmSearchInputVal.component.js @@ -160,6 +160,10 @@ return '~/crmSearchTasks/crmSearchInput/float.html'; } + if (field.input_type === 'Email') { + return '~/crmSearchTasks/crmSearchInput/email.html'; + } + return '~/crmSearchTasks/crmSearchInput/text.html'; }; diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/email.html b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/email.html new file mode 100644 index 0000000000..26e2bf84a5 --- /dev/null +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchInput/email.html @@ -0,0 +1,6 @@ +<div class="form-group" ng-if="!$ctrl.isMulti()" > + <input type="email" class="form-control" ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable"> +</div> +<div class="form-group" ng-if="$ctrl.isMulti()" > + <input class="form-control" ng-model="$ctrl.value" ng-required="!$ctrl.field.nullable" crm-ui-select="{multiple: true, tags: [], tokenSeparators: [','], formatNoMatches: ''}" ng-list> +</div> diff --git a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js index b0f96effe0..6b1d7d59bf 100644 --- a/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js +++ b/civicrm/ext/search_kit/ang/crmSearchTasks/crmSearchTasks.component.js @@ -42,8 +42,17 @@ return $scope.$eval('' + ctrl.ids.length + action.number); }; + this.updateActionData = function() { + if (this.entity === 'RelationshipCache') { + this.entity = 'Relationship'; + this.entityInfo.title = ts('Relationship'); + this.entityInfo.title_plural = ts('Relationships'); + } + }; + this.getActionTitle = function(action) { if (ctrl.isActionAllowed(action)) { + ctrl.updateActionData(); return ctrl.ids.length ? ts('Perform action on %1 %2', {1: ctrl.ids.length, 2: ctrl.entityInfo[ctrl.ids.length === 1 ? 'title' : 'title_plural']}) : ts('Perform action on all %1', {1: ctrl.entityInfo.title_plural}); @@ -55,6 +64,9 @@ if (!ctrl.isActionAllowed(action)) { return; } + // Update data specific to entity actions. + ctrl.updateActionData(); + var data = { ids: ctrl.ids, entity: ctrl.entity, diff --git a/civicrm/ext/search_kit/css/crmSearchAdmin.css b/civicrm/ext/search_kit/css/crmSearchAdmin.css index 89c5391b74..e7ed6e9a0e 100644 --- a/civicrm/ext/search_kit/css/crmSearchAdmin.css +++ b/civicrm/ext/search_kit/css/crmSearchAdmin.css @@ -11,6 +11,10 @@ top: 0; } +#bootstrap-theme .crm-search-admin-search-listing-buttons { + min-width: 65px; +} + #bootstrap-theme.crm-search .nav-stacked { margin-left: 0; margin-right: 20px; @@ -28,6 +32,16 @@ width: 275px; } +/* Style expires_date date/time width */ +#bootstrap-theme.crm-search #expires_date + input, +#bootstrap-theme.crm-search #expires_date + input + input { + width: calc(100% - 30px); +} +/* Hide time field if date & time are both empty */ +#bootstrap-theme.crm-search #expires_date + input:placeholder-shown + input:placeholder-shown { + display: none; +} + #bootstrap-theme.crm-search div.form-control.disabled, #bootstrap-theme.crm-search div.form-control.disabled * { cursor: not-allowed; diff --git a/civicrm/ext/search_kit/css/crmSearchDisplayTable.css b/civicrm/ext/search_kit/css/crmSearchDisplayTable.css index 331e8bebb1..9ac158c2bb 100644 --- a/civicrm/ext/search_kit/css/crmSearchDisplayTable.css +++ b/civicrm/ext/search_kit/css/crmSearchDisplayTable.css @@ -1,5 +1,20 @@ /* SearchKit table display styling */ +#bootstrap-theme .crm-search-display-table > table.table > thead > tr > th { + position: relative; +} + +#bootstrap-theme .crm-search-display-table > table.table > thead > tr > th i.crm-search-table-column-sort-icon { + position: absolute; + left: 2px; + bottom: 10px; +} + +#bootstrap-theme .crm-search-display-table > table.table > thead > tr > th i.crm-search-table-column-sort-icon + .crm-search-display-table-column-label { + margin-left: 4px; + display: inline-block; +} + #bootstrap-theme .crm-search-display-table > table.table > thead > tr > th.crm-search-result-select { padding-left: 0; padding-right: 0; diff --git a/civicrm/ext/search_kit/css/crmSearchTasks.css b/civicrm/ext/search_kit/css/crmSearchTasks.css index bdb38fbc2d..d70be29fff 100644 --- a/civicrm/ext/search_kit/css/crmSearchTasks.css +++ b/civicrm/ext/search_kit/css/crmSearchTasks.css @@ -5,6 +5,7 @@ } .crm-search-display.crm-search-display-table td > crm-search-display-editable, +.crm-search-display.crm-search-display-table td > .crm-editable-disabled, .crm-search-display.crm-search-display-table td > .crm-editable-enabled { display: block !important; } @@ -13,12 +14,13 @@ position: relative; } -.crm-search-display crm-search-display-editable + span { +.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: -22px; + bottom: -24px; left: 0; + min-width: 50px; } diff --git a/civicrm/ext/search_kit/info.xml b/civicrm/ext/search_kit/info.xml index 9b557d9954..fe1bcc43f4 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.63.2</version> + <version>5.64.0</version> <develStage>stable</develStage> <tags> <tag>mgmt:required</tag> </tags> <compatibility> - <ver>5.63</ver> + <ver>5.64</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/search_kit.php b/civicrm/ext/search_kit/search_kit.php index 1347c6f402..a305ff155d 100644 --- a/civicrm/ext/search_kit/search_kit.php +++ b/civicrm/ext/search_kit/search_kit.php @@ -36,25 +36,6 @@ function search_kit_civicrm_permission(&$permissions) { ]; } -/** - * Implements hook_civicrm_alterApiRoutePermissions(). - * - * Allow anonymous users to run a search display. Permissions are checked internally. - * - * @see CRM_Utils_Hook::alterApiRoutePermissions - */ -function search_kit_civicrm_alterApiRoutePermissions(&$permissions, $entity, $action) { - if ($entity === 'SearchDisplay') { - if ($action === 'run' || $action === 'download' || $action === 'getSearchTasks') { - $permissions = CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION; - } - } - // An autocomplete is a type of search dislay and should always be allowed - if ($action === 'autocomplete') { - $permissions = CRM_Core_Permission::ALWAYS_ALLOW_PERMISSION; - } -} - /** * Implements hook_civicrm_angularModules(). * 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 053d51d33b..f453238050 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 @@ -43,10 +43,9 @@ class AbstractRunActionTest extends \PHPUnit\Framework\TestCase implements Headl $entity = 'SearchDisplay'; $action = 'run'; - $params = array( + $params = [ 'return' => 'page:1', - 'savedSearch' => - array( + 'savedSearch' => [ 'id' => 1, 'name' => 'Multi_Select_Test', 'label' => 'Multi Select Test', @@ -54,185 +53,153 @@ class AbstractRunActionTest extends \PHPUnit\Framework\TestCase implements Headl 'mapping_id' => NULL, 'search_custom_id' => NULL, 'api_entity' => 'Contact', - 'api_params' => - array( + 'api_params' => [ 'version' => 4, - 'select' => - array( - 0 => 'display_name', - 1 => 'Foods.I_Like:label', - ), - 'orderBy' => - array(), - 'where' => - array( - 0 => - array( - 0 => 'contact_type:name', - 1 => '=', - 2 => 'Individual', - ), - 1 => - array( - 0 => 'Foods.I_Like:name', - 1 => 'IS NOT EMPTY', - ), - ), - 'groupBy' => - array( - 0 => 'id', - ), - 'having' => - array(), - ), + 'select' => [ + 'display_name', + 'Foods.I_Like:label', + ], + 'orderBy' => [], + 'where' => [ + [ + 'contact_type:name', + '=', + 'Individual', + ], + [ + 'Foods.I_Like:name', + 'IS NOT EMPTY', + ], + ], + 'groupBy' => [ + 'id', + ], + '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' => - array(), - 'groups' => - array(), - 'displays' => - array( - 0 => - array( + 'tag_id' => [], + 'groups' => [], + 'displays' => [ + [ 'id' => 1, 'name' => 'Contacts_Table_1', 'label' => 'Contacts Table 1', 'saved_search_id' => 1, 'type' => 'table', - 'settings' => - array( + 'settings' => [ 'actions' => TRUE, 'limit' => 50, - 'classes' => - array( - 0 => 'table', - 1 => 'table-striped', - ), - 'pager' => - array(), + 'classes' => [ + 'table', + 'table-striped', + ], + 'pager' => [], 'placeholder' => 5, - 'sort' => - array( - 0 => - array( - 0 => 'sort_name', - 1 => 'ASC', - ), - ), - 'columns' => - array( - 0 => - array( + 'sort' => [ + [ + 'sort_name', + 'ASC', + ], + ], + 'columns' => [ + [ 'type' => 'field', 'key' => 'display_name', 'dataType' => 'String', 'label' => 'Display Name', 'sortable' => TRUE, 'link' => - array( + [ 'path' => '', 'entity' => 'Contact', 'action' => 'view', 'join' => '', 'target' => '_blank', - ), + ], 'title' => 'View Contact', - ), - 1 => - array( + ], + [ 'type' => 'field', 'key' => 'Foods.I_Like:label', 'dataType' => 'String', 'label' => 'Foods: I Like', 'sortable' => TRUE, 'rewrite' => '[Foods.I_Like:label]', - ), - ), - ), + ], + ], + ], 'acl_bypass' => FALSE, - ), - ), - ), - 'display' => - array( + ], + ], + ], + 'display' => [ 'id' => 1, 'name' => 'Contacts_Table_1', 'label' => 'Contacts Table 1', 'saved_search_id' => 1, 'type' => 'table', - 'settings' => - array( + 'settings' => [ 'actions' => TRUE, 'limit' => 50, - 'classes' => - array( - 0 => 'table', - 1 => 'table-striped', - ), - 'pager' => - array(), + 'classes' => [ + 'table', + 'table-striped', + ], + 'pager' => [], 'placeholder' => 5, - 'sort' => - array( - 0 => - array( - 0 => 'sort_name', - 1 => 'ASC', - ), - ), - 'columns' => - array( - 0 => - array( + 'sort' => [ + [ + 'sort_name', + 'ASC', + ], + ], + 'columns' => [ + [ 'type' => 'field', 'key' => 'display_name', 'dataType' => 'String', 'label' => 'Display Name', 'sortable' => TRUE, 'link' => - array( + [ 'path' => '', 'entity' => 'Contact', 'action' => 'view', 'join' => '', 'target' => '_blank', - ), + ], 'title' => 'View Contact', - ), - 1 => - array( + ], + [ 'type' => 'field', 'key' => 'Foods.I_Like:label', 'dataType' => 'String', 'label' => 'Foods: I Like', 'sortable' => TRUE, 'rewrite' => '[Foods.I_Like:label]', - ), - ), - ), + ], + ], + ], 'acl_bypass' => FALSE, - ), - 'sort' => - array( - 0 => - array( - 0 => 'sort_name', - 1 => 'ASC', - ), - ), + ], + 'sort' => [ + [ + 'sort_name', + 'ASC', + ], + ], 'limit' => 50, 'seed' => 1660599799146, - 'filters' => - array(), + 'filters' => [], 'afform' => NULL, 'debug' => TRUE, 'checkPermissions' => TRUE, - ); + ]; $result = civicrm_api4($entity, $action, $params); $resultData = $result[0]['data']['Foods.I_Like:label']; $this->assertTrue(implode(', ', $resultData) === $result[0]['columns'][1]['val']); 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 985d000248..9efcb9c7b4 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 @@ -406,7 +406,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertEquals('testmail@unit.test', $result[0]['columns'][1]['val']); $this->assertEquals($email, $result[0]['columns'][1]['edit']['record']['id']); $this->assertEquals('Email', $result[0]['columns'][1]['edit']['entity']); - $this->assertEquals('Text', $result[0]['columns'][1]['edit']['input_type']); + $this->assertEquals('Email', $result[0]['columns'][1]['edit']['input_type']); $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']); @@ -436,7 +436,7 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $this->assertNull($result[1]['columns'][1]['val']); $this->assertEquals(['contact_id' => $contacts[1], 'is_primary' => TRUE], $result[1]['columns'][1]['edit']['record']); $this->assertEquals('Email', $result[1]['columns'][1]['edit']['entity']); - $this->assertEquals('Text', $result[1]['columns'][1]['edit']['input_type']); + $this->assertEquals('Email', $result[1]['columns'][1]['edit']['input_type']); $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']); @@ -1422,6 +1422,49 @@ class SearchRunTest extends Api4TestBase implements TransactionalInterface { $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' => 500, 'currency' => 'JPY'], + ['total_amount' => 200, 'currency' => 'USD'], + ], + ]); + + $params = [ + 'checkPermissions' => FALSE, + 'return' => 'page:1', + 'savedSearch' => [ + 'api_entity' => 'Contribution', + 'api_params' => [ + 'version' => 4, + 'select' => ['SUM(total_amount) AS total', 'COUNT(id) AS count', 'currency'], + 'where' => [['id', 'IN', $contributions->column('id')]], + 'groupBy' => ['currency'], + ], + ], + 'display' => NULL, + 'sort' => [['currency', 'ASC']], + ]; + + $result = civicrm_api4('SearchDisplay', 'run', $params); + $this->assertCount(3, $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(1, $result[0]['columns'][1]['val']); + + $this->assertEquals('JPY', $result[1]['data']['currency']); + $this->assertEquals('Â¥500', $result[1]['columns'][0]['val']); + $this->assertEquals(1, $result[1]['columns'][1]['val']); + + $this->assertEquals('USD', $result[2]['data']['currency']); + $this->assertEquals('$400.00', $result[2]['columns'][0]['val']); + $this->assertEquals(2, $result[2]['columns'][1]['val']); + } + public function testSelectEquations() { $activities = $this->saveTestRecords('Activity', [ 'records' => [ diff --git a/civicrm/ext/sequentialcreditnotes/info.xml b/civicrm/ext/sequentialcreditnotes/info.xml index 372c91a492..bd1ed8b5b9 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.63.2</version> + <version>5.64.0</version> <tags> <tag>mgmt:hidden</tag> </tags> <develStage>stable</develStage> <compatibility> - <ver>5.63</ver> + <ver>5.64</ver> </compatibility> <mixins> <mixin>setting-php@1.0.0</mixin> diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php new file mode 100644 index 0000000000..ad9305b61c --- /dev/null +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/BAO/Role.php @@ -0,0 +1,30 @@ +<?php +// phpcs:disable +use CRM_Standaloneusers_ExtensionUtil as E; +// phpcs:enable + +class CRM_Standaloneusers_BAO_Role extends CRM_Standaloneusers_DAO_Role { + + /** + * Create a new Role based on array-data + * + * @param array $params key-value pairs + * @return CRM_Standaloneusers_DAO_Role|NULL + */ + /* + public static function create($params) { + $className = 'CRM_Standaloneusers_DAO_Role'; + $entityName = 'Role'; + $hook = empty($params['id']) ? 'create' : 'edit'; + + CRM_Utils_Hook::pre($hook, $entityName, CRM_Utils_Array::value('id', $params), $params); + $instance = new $className(); + $instance->copyValues($params); + $instance->save(); + CRM_Utils_Hook::post($hook, $entityName, $instance->id, $instance); + + return $instance; + } + */ + +} diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php new file mode 100644 index 0000000000..585f241f2f --- /dev/null +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/Role.php @@ -0,0 +1,304 @@ +<?php + +/** + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + * + * Generated from standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml + * DO NOT EDIT. Generated by CRM_Core_CodeGen + * (GenCodeChecksum:d5053ae97fba22b13adecdce76ebb30f) + */ +use CRM_Standaloneusers_ExtensionUtil as E; + +/** + * Database access object for the Role entity. + */ +class CRM_Standaloneusers_DAO_Role extends CRM_Core_DAO { + const EXT = E::LONG_NAME; + const TABLE_ADDED = ''; + + /** + * Static instance to hold the table name. + * + * @var string + */ + public static $_tableName = 'civicrm_role'; + + /** + * Field to show when displaying a record. + * + * @var string + */ + public static $_labelField = 'label'; + + /** + * Should CiviCRM log any modifications to this table in the civicrm_log table. + * + * @var bool + */ + public static $_log = TRUE; + + /** + * Unique Role ID + * + * @var int|string|null + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $id; + + /** + * Machine name for this role + * + * @var string + * (SQL type: varchar(60)) + * Note that values will be retrieved from the database as a string. + */ + public $name; + + /** + * Human friendly name for this role + * + * @var string + * (SQL type: varchar(128)) + * Note that values will be retrieved from the database as a string. + */ + public $label; + + /** + * List of permissions granted by this role + * + * @var string + * (SQL type: text) + * Note that values will be retrieved from the database as a string. + */ + public $permissions; + + /** + * Only active roles grant permissions + * + * @var bool|string|null + * (SQL type: tinyint) + * Note that values will be retrieved from the database as a string. + */ + public $is_active; + + /** + * Class constructor. + */ + public function __construct() { + $this->__table = 'civicrm_role'; + parent::__construct(); + } + + /** + * Returns localized title of this entity. + * + * @param bool $plural + * Whether to return the plural version of the title. + */ + public static function getEntityTitle($plural = FALSE) { + return $plural ? E::ts('Roles') : E::ts('Role'); + } + + /** + * Returns all the column names of this table + * + * @return array + */ + public static function &fields() { + if (!isset(Civi::$statics[__CLASS__]['fields'])) { + Civi::$statics[__CLASS__]['fields'] = [ + 'id' => [ + 'name' => 'id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('ID'), + 'description' => E::ts('Unique Role ID'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_role.id', + 'table_name' => 'civicrm_role', + 'entity' => 'Role', + 'bao' => 'CRM_Standaloneusers_DAO_Role', + 'localizable' => 0, + 'html' => [ + 'type' => 'Number', + ], + 'readonly' => TRUE, + 'add' => NULL, + ], + 'name' => [ + 'name' => 'name', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Name'), + 'description' => E::ts('Machine name for this role'), + 'required' => TRUE, + 'maxlength' => 60, + 'size' => CRM_Utils_Type::BIG, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_role.name', + 'table_name' => 'civicrm_role', + 'entity' => 'Role', + 'bao' => 'CRM_Standaloneusers_DAO_Role', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => NULL, + ], + 'label' => [ + 'name' => 'label', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Label'), + 'description' => E::ts('Human friendly name for this role'), + 'required' => TRUE, + 'maxlength' => 128, + 'size' => CRM_Utils_Type::HUGE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_role.label', + 'table_name' => 'civicrm_role', + 'entity' => 'Role', + 'bao' => 'CRM_Standaloneusers_DAO_Role', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => NULL, + ], + 'permissions' => [ + 'name' => 'permissions', + 'type' => CRM_Utils_Type::T_TEXT, + 'title' => E::ts('Permissions'), + 'description' => E::ts('List of permissions granted by this role'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_role.permissions', + 'table_name' => 'civicrm_role', + 'entity' => 'Role', + 'bao' => 'CRM_Standaloneusers_DAO_Role', + 'localizable' => 0, + 'serialize' => self::SERIALIZE_SEPARATOR_BOOKEND, + 'html' => [ + 'type' => 'Select', + ], + 'pseudoconstant' => [ + 'callback' => 'CRM_Core_SelectValues::permissions', + ], + 'add' => NULL, + ], + 'is_active' => [ + 'name' => 'is_active', + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'title' => E::ts('Role is active'), + 'description' => E::ts('Only active roles grant permissions'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_role.is_active', + 'default' => '1', + 'table_name' => 'civicrm_role', + 'entity' => 'Role', + 'bao' => 'CRM_Standaloneusers_DAO_Role', + 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + ], + 'add' => NULL, + ], + ]; + CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); + } + return Civi::$statics[__CLASS__]['fields']; + } + + /** + * Return a mapping from field-name to the corresponding key (as used in fields()). + * + * @return array + * Array(string $name => string $uniqueName). + */ + public static function &fieldKeys() { + if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) { + Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields())); + } + return Civi::$statics[__CLASS__]['fieldKeys']; + } + + /** + * Returns the names of this table + * + * @return string + */ + public static function getTableName() { + return self::$_tableName; + } + + /** + * Returns if this table needs to be logged + * + * @return bool + */ + public function getLog() { + return self::$_log; + } + + /** + * Returns the list of fields that can be imported + * + * @param bool $prefix + * + * @return array + */ + public static function &import($prefix = FALSE) { + $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'role', $prefix, []); + return $r; + } + + /** + * Returns the list of fields that can be exported + * + * @param bool $prefix + * + * @return array + */ + public static function &export($prefix = FALSE) { + $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'role', $prefix, []); + return $r; + } + + /** + * Returns the list of indices + * + * @param bool $localize + * + * @return array + */ + public static function indices($localize = TRUE) { + $indices = []; + return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; + } + +} diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php new file mode 100644 index 0000000000..d814534a78 --- /dev/null +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/DAO/User.php @@ -0,0 +1,539 @@ +<?php + +/** + * @package CRM + * @copyright CiviCRM LLC https://civicrm.org/licensing + * + * Generated from standaloneusers/xml/schema/CRM/Standaloneusers/User.xml + * DO NOT EDIT. Generated by CRM_Core_CodeGen + * (GenCodeChecksum:44014e10073e5e7f63059f09956e77ca) + */ +use CRM_Standaloneusers_ExtensionUtil as E; + +/** + * Database access object for the User entity. + */ +class CRM_Standaloneusers_DAO_User extends CRM_Core_DAO { + const EXT = E::LONG_NAME; + const TABLE_ADDED = ''; + + /** + * Static instance to hold the table name. + * + * @var string + */ + public static $_tableName = 'civicrm_user'; + + /** + * Field to show when displaying a record. + * + * @var string + */ + public static $_labelField = 'username'; + + /** + * Should CiviCRM log any modifications to this table in the civicrm_log table. + * + * @var bool + */ + public static $_log = TRUE; + + /** + * Paths for accessing this entity in the UI. + * + * @var string[] + */ + protected static $_paths = [ + 'add' => 'civicrm/user', + 'update' => 'civicrm/user/#?User1=[id]', + ]; + + /** + * Unique User ID + * + * @var int|string|null + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $id; + + /** + * FK to Contact - possibly redundant + * + * @var int|string|null + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $contact_id; + + /** + * @var string + * (SQL type: varchar(60)) + * Note that values will be retrieved from the database as a string. + */ + public $username; + + /** + * Hashed password + * + * @var string + * (SQL type: varchar(128)) + * Note that values will be retrieved from the database as a string. + */ + public $password; + + /** + * Email (e.g. for password resets) + * + * @var string + * (SQL type: varchar(255)) + * Note that values will be retrieved from the database as a string. + */ + public $email; + + /** + * FK to Role + * + * @var string|null + * (SQL type: varchar(128)) + * Note that values will be retrieved from the database as a string. + */ + public $roles; + + /** + * @var string|null + * (SQL type: timestamp) + * Note that values will be retrieved from the database as a string. + */ + public $when_created; + + /** + * @var string + * (SQL type: timestamp) + * Note that values will be retrieved from the database as a string. + */ + public $when_last_accessed; + + /** + * @var string + * (SQL type: timestamp) + * Note that values will be retrieved from the database as a string. + */ + public $when_updated; + + /** + * @var bool|string + * (SQL type: tinyint) + * Note that values will be retrieved from the database as a string. + */ + public $is_active; + + /** + * User's timezone + * + * @var string + * (SQL type: varchar(32)) + * Note that values will be retrieved from the database as a string. + */ + public $timezone; + + /** + * The language for the user. + * + * @var int|string|null + * (SQL type: int unsigned) + * Note that values will be retrieved from the database as a string. + */ + public $language; + + /** + * Class constructor. + */ + public function __construct() { + $this->__table = 'civicrm_user'; + parent::__construct(); + } + + /** + * Returns localized title of this entity. + * + * @param bool $plural + * Whether to return the plural version of the title. + */ + public static function getEntityTitle($plural = FALSE) { + return $plural ? E::ts('Users') : E::ts('User'); + } + + /** + * Returns foreign keys and entity references. + * + * @return array + * [CRM_Core_Reference_Interface] + */ + public static function getReferenceColumns() { + if (!isset(Civi::$statics[__CLASS__]['links'])) { + Civi::$statics[__CLASS__]['links'] = static::createReferenceColumns(__CLASS__); + Civi::$statics[__CLASS__]['links'][] = new CRM_Core_Reference_Basic(self::getTableName(), 'contact_id', 'civicrm_contact', 'id'); + CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'links_callback', Civi::$statics[__CLASS__]['links']); + } + return Civi::$statics[__CLASS__]['links']; + } + + /** + * Returns all the column names of this table + * + * @return array + */ + public static function &fields() { + if (!isset(Civi::$statics[__CLASS__]['fields'])) { + Civi::$statics[__CLASS__]['fields'] = [ + 'id' => [ + 'name' => 'id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('ID'), + 'description' => E::ts('Unique User ID'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.id', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'html' => [ + 'type' => 'Number', + ], + 'readonly' => TRUE, + 'add' => NULL, + ], + 'contact_id' => [ + 'name' => 'contact_id', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('Contact ID'), + 'description' => E::ts('FK to Contact - possibly redundant'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.contact_id', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'FKClassName' => 'CRM_Contact_DAO_Contact', + 'add' => NULL, + ], + 'username' => [ + 'name' => 'username', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Username'), + 'required' => TRUE, + 'maxlength' => 60, + 'size' => CRM_Utils_Type::BIG, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.username', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => NULL, + ], + 'password' => [ + 'name' => 'password', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Password'), + 'description' => E::ts('Hashed password'), + 'required' => TRUE, + 'maxlength' => 128, + 'size' => CRM_Utils_Type::HUGE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.password', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'add' => NULL, + ], + 'email' => [ + 'name' => 'email', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Email'), + 'description' => E::ts('Email (e.g. for password resets)'), + 'required' => TRUE, + 'maxlength' => 255, + 'size' => CRM_Utils_Type::HUGE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.email', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => NULL, + ], + 'roles' => [ + 'name' => 'roles', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Roles'), + 'description' => E::ts('FK to Role'), + 'maxlength' => 128, + 'size' => CRM_Utils_Type::HUGE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.roles', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'serialize' => self::SERIALIZE_SEPARATOR_BOOKEND, + 'html' => [ + 'type' => 'Select', + ], + 'pseudoconstant' => [ + 'table' => 'civicrm_role', + 'keyColumn' => 'id', + 'labelColumn' => 'label', + 'nameColumn' => 'name', + 'condition' => 'name != "everyone"', + ], + 'add' => NULL, + ], + 'when_created' => [ + 'name' => 'when_created', + 'type' => CRM_Utils_Type::T_TIMESTAMP, + 'title' => E::ts('When Created'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.when_created', + 'default' => 'CURRENT_TIMESTAMP', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'add' => NULL, + ], + 'when_last_accessed' => [ + 'name' => 'when_last_accessed', + 'type' => CRM_Utils_Type::T_TIMESTAMP, + 'title' => E::ts('When Last Accessed'), + 'required' => FALSE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.when_last_accessed', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'add' => NULL, + ], + 'when_updated' => [ + 'name' => 'when_updated', + 'type' => CRM_Utils_Type::T_TIMESTAMP, + 'title' => E::ts('When Updated'), + 'required' => FALSE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.when_updated', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'add' => NULL, + ], + 'is_active' => [ + 'name' => 'is_active', + 'type' => CRM_Utils_Type::T_BOOLEAN, + 'title' => E::ts('Enabled'), + 'required' => TRUE, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.is_active', + 'default' => '1', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'html' => [ + 'type' => 'CheckBox', + ], + 'add' => NULL, + ], + 'timezone' => [ + 'name' => 'timezone', + 'type' => CRM_Utils_Type::T_STRING, + 'title' => E::ts('Timezone'), + 'description' => E::ts('User\'s timezone'), + 'required' => FALSE, + 'maxlength' => 32, + 'size' => CRM_Utils_Type::MEDIUM, + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.timezone', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'html' => [ + 'type' => 'Text', + ], + 'add' => NULL, + ], + 'language' => [ + 'name' => 'language', + 'type' => CRM_Utils_Type::T_INT, + 'title' => E::ts('Language'), + 'description' => E::ts('The language for the user.'), + 'usage' => [ + 'import' => FALSE, + 'export' => FALSE, + 'duplicate_matching' => FALSE, + 'token' => FALSE, + ], + 'where' => 'civicrm_user.language', + 'table_name' => 'civicrm_user', + 'entity' => 'User', + 'bao' => 'CRM_Standaloneusers_DAO_User', + 'localizable' => 0, + 'html' => [ + 'type' => 'Select', + ], + 'pseudoconstant' => [ + 'optionGroupName' => 'languages', + 'optionEditPath' => 'civicrm/admin/options/languages', + ], + 'add' => NULL, + ], + ]; + CRM_Core_DAO_AllCoreTables::invoke(__CLASS__, 'fields_callback', Civi::$statics[__CLASS__]['fields']); + } + return Civi::$statics[__CLASS__]['fields']; + } + + /** + * Return a mapping from field-name to the corresponding key (as used in fields()). + * + * @return array + * Array(string $name => string $uniqueName). + */ + public static function &fieldKeys() { + if (!isset(Civi::$statics[__CLASS__]['fieldKeys'])) { + Civi::$statics[__CLASS__]['fieldKeys'] = array_flip(CRM_Utils_Array::collect('name', self::fields())); + } + return Civi::$statics[__CLASS__]['fieldKeys']; + } + + /** + * Returns the names of this table + * + * @return string + */ + public static function getTableName() { + return self::$_tableName; + } + + /** + * Returns if this table needs to be logged + * + * @return bool + */ + public function getLog() { + return self::$_log; + } + + /** + * Returns the list of fields that can be imported + * + * @param bool $prefix + * + * @return array + */ + public static function &import($prefix = FALSE) { + $r = CRM_Core_DAO_AllCoreTables::getImports(__CLASS__, 'user', $prefix, []); + return $r; + } + + /** + * Returns the list of fields that can be exported + * + * @param bool $prefix + * + * @return array + */ + public static function &export($prefix = FALSE) { + $r = CRM_Core_DAO_AllCoreTables::getExports(__CLASS__, 'user', $prefix, []); + return $r; + } + + /** + * Returns the list of indices + * + * @param bool $localize + * + * @return array + */ + public static function indices($localize = TRUE) { + $indices = [ + 'UI_username' => [ + 'name' => 'UI_username', + 'field' => [ + 0 => 'username', + ], + 'localizable' => FALSE, + 'unique' => TRUE, + 'sig' => 'civicrm_user::1::username', + ], + ]; + return ($localize && !empty($indices)) ? CRM_Core_DAO_AllCoreTables::multilingualize(__CLASS__, $indices) : $indices; + } + +} diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php new file mode 100644 index 0000000000..4c17752a97 --- /dev/null +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Page/Login.php @@ -0,0 +1,27 @@ +<?php +use CRM_Standaloneusers_ExtensionUtil as E; + +class CRM_Standaloneusers_Page_Login extends CRM_Core_Page { + + public function run() { + // // Example: Set the page-title dynamically; alternatively, declare a static title in xml/Menu/*.xml + // CRM_Utils_System::setTitle(E::ts('Login')); + // + // // Example: Assign a variable for use in a template + // $this->assign('currentTime', date('Y-m-d H:i:s')); + $this->assign('logoUrl', E::url('images/civicrm-logo.png')); + + parent::run(); + } + + /** + * Log out. + */ + public function logout() { + // Same as CRM_Authx_Page_AJAX::logout() + _authx_uf()->logoutSession(); + // Dump them back on the log-IN page. + CRM_Utils_System::redirect('/civicrm/login?justLoggedOut'); + } + +} diff --git a/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php new file mode 100644 index 0000000000..ecde5dc978 --- /dev/null +++ b/civicrm/ext/standaloneusers/CRM/Standaloneusers/Upgrader.php @@ -0,0 +1,160 @@ +<?php +use CRM_Standaloneusers_ExtensionUtil as E; + +/** + * Collection of upgrade steps. + */ +class CRM_Standaloneusers_Upgrader extends CRM_Extension_Upgrader_Base { + + // By convention, functions that look like "function upgrade_NNNN()" are + // upgrade tasks. They are executed in order (like Drupal's hook_update_N). + + /** + * Ensure that we're installing on suitable environment. + * + * @return void + * @throws \CRM_Core_Exception + */ + public function onInstall() { + $config = \CRM_Core_Config::singleton(); + // We generally only want to run on standalone. In theory, we might also run headless tests. + if (!in_array(get_class($config->userPermissionClass), ['CRM_Core_Permission_Standalone', 'CRM_Core_Permission_Headless'])) { + throw new \CRM_Core_Exception("standaloneusers can only be installed on standalone"); + } + if (!in_array(get_class($config->userSystem), ['CRM_Utils_System_Standalone', 'CRM_Utils_System_Headless'])) { + throw new \CRM_Core_Exception("standaloneusers can only be installed on standalone"); + } + parent::onInstall(); + } + + /** + * Example: Run an external SQL script when the module is installed. + * + * public function install() { + * $this->executeSqlFile('sql/myinstall.sql'); + * } + * + * /** + * Example: Work with entities usually not available during the install step. + * + * This method can be used for any post-install tasks. For example, if a step + * of your installation depends on accessing an entity that is itself + * created during the installation (e.g., a setting or a managed entity), do + * so here to avoid order of operation problems. + */ + public function postInstall() { + + Civi::settings()->set('authx_login_cred', array_unique(array_merge( + Civi::settings()->get('authx_login_cred'), + ['pass'] + ))); + + $users = \Civi\Api4\User::get(FALSE)->selectRowCount()->execute()->countMatched(); + if ($users == 0) { + CRM_Core_DAO::executeQuery('DELETE FROM civicrm_uf_match'); + } + + // `standaloneusers` is installed as part of the overall install process for `Standalone`. + // A subsequent step will configure some default users (*depending on local options*). + // See also: `StandaloneUsers.civi-setup.php` + } + + /** + * Example: Run an external SQL script when the module is uninstalled. + */ + // public function uninstall() { + // $this->executeSqlFile('sql/myuninstall.sql'); + // } + + /** + * Example: Run a simple query when a module is enabled. + */ + // public function enable() { + // CRM_Core_DAO::executeQuery('UPDATE foo SET is_active = 1 WHERE bar = "whiz"'); + // } + + /** + * Example: Run a simple query when a module is disabled. + */ + // public function disable() { + // CRM_Core_DAO::executeQuery('UPDATE foo SET is_active = 0 WHERE bar = "whiz"'); + // } + + /** + * Example: Run a couple simple queries. + * + * @return TRUE on success + * @throws Exception + */ + // public function upgrade_4200(): bool { + // $this->ctx->log->info('Applying update 4200'); + // CRM_Core_DAO::executeQuery('UPDATE foo SET bar = "whiz"'); + // CRM_Core_DAO::executeQuery('DELETE FROM bang WHERE willy = wonka(2)'); + // return TRUE; + // } + + + /** + * Example: Run an external SQL script. + * + * @return TRUE on success + * @throws Exception + */ + // public function upgrade_4201(): bool { + // $this->ctx->log->info('Applying update 4201'); + // // this path is relative to the extension base dir + // $this->executeSqlFile('sql/upgrade_4201.sql'); + // return TRUE; + // } + + + /** + * Example: Run a slow upgrade process by breaking it up into smaller chunk. + * + * @return TRUE on success + * @throws Exception + */ + // public function upgrade_4202(): bool { + // $this->ctx->log->info('Planning update 4202'); // PEAR Log interface + + // $this->addTask(E::ts('Process first step'), 'processPart1', $arg1, $arg2); + // $this->addTask(E::ts('Process second step'), 'processPart2', $arg3, $arg4); + // $this->addTask(E::ts('Process second step'), 'processPart3', $arg5); + // return TRUE; + // } + // public function processPart1($arg1, $arg2) { sleep(10); return TRUE; } + // public function processPart2($arg3, $arg4) { sleep(10); return TRUE; } + // public function processPart3($arg5) { sleep(10); return TRUE; } + + /** + * Example: Run an upgrade with a query that touches many (potentially + * millions) of records by breaking it up into smaller chunks. + * + * @return TRUE on success + * @throws Exception + */ + // public function upgrade_4203(): bool { + // $this->ctx->log->info('Planning update 4203'); // PEAR Log interface + + // $minId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(min(id),0) FROM civicrm_contribution'); + // $maxId = CRM_Core_DAO::singleValueQuery('SELECT coalesce(max(id),0) FROM civicrm_contribution'); + // for ($startId = $minId; $startId <= $maxId; $startId += self::BATCH_SIZE) { + // $endId = $startId + self::BATCH_SIZE - 1; + // $title = E::ts('Upgrade Batch (%1 => %2)', array( + // 1 => $startId, + // 2 => $endId, + // )); + // $sql = ' + // UPDATE civicrm_contribution SET foobar = whiz(wonky()+wanker) + // WHERE id BETWEEN %1 and %2 + // '; + // $params = array( + // 1 => array($startId, 'Integer'), + // 2 => array($endId, 'Integer'), + // ); + // $this->addTask($title, 'executeSql', $sql, $params); + // } + // return TRUE; + // } + +} diff --git a/civicrm/ext/standaloneusers/Civi/Api4/Role.php b/civicrm/ext/standaloneusers/Civi/Api4/Role.php new file mode 100644 index 0000000000..678779fa3a --- /dev/null +++ b/civicrm/ext/standaloneusers/Civi/Api4/Role.php @@ -0,0 +1,13 @@ +<?php +namespace Civi\Api4; + +/** + * Role entity. + * + * Provided by the Standalone Users extension. + * + * @package Civi\Api4 + */ +class Role extends Generic\DAOEntity { + +} diff --git a/civicrm/ext/standaloneusers/Civi/Api4/User.php b/civicrm/ext/standaloneusers/Civi/Api4/User.php new file mode 100644 index 0000000000..ddb629fadd --- /dev/null +++ b/civicrm/ext/standaloneusers/Civi/Api4/User.php @@ -0,0 +1,13 @@ +<?php +namespace Civi\Api4; + +/** + * User entity. + * + * Provided by the Standalone Users extension. + * + * @package Civi\Api4 + */ +class User extends Generic\DAOEntity { + +} diff --git a/civicrm/ext/standaloneusers/Civi/Authx/Standalone.php b/civicrm/ext/standaloneusers/Civi/Authx/Standalone.php new file mode 100644 index 0000000000..0eea52cc9f --- /dev/null +++ b/civicrm/ext/standaloneusers/Civi/Authx/Standalone.php @@ -0,0 +1,61 @@ +<?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\Authx; + +use Civi\Standalone\Security; + +class Standalone implements AuthxInterface { + + /** + * @inheritDoc + */ + public function checkPassword(string $username, string $password) { + $security = Security::singleton(); + $user = $security->loadUserByName($username); + return $security->checkPassword($password, $user['password'] ?? '') ? $user['id'] : NULL; + } + + /** + * @inheritDoc + */ + public function loginSession($userId) { + $user = Security::singleton()->loadUserByID($userId); + Security::singleton()->loginAuthenticatedUserRecord($user, TRUE); + } + + /** + * @inheritDoc + */ + public function logoutSession() { + \CRM_Core_Session::singleton()->reset(); + } + + /** + * @inheritDoc + */ + public function loginStateless($userId) { + $user = Security::singleton()->loadUserByID($userId); + Security::singleton()->loginAuthenticatedUserRecord($user, FALSE); + } + + /** + * @inheritDoc + */ + public function getCurrentUserId() { + global $loggedInUserId; + if (empty($loggedInUserId) && session_status() === PHP_SESSION_ACTIVE) { + $loggedInUserId = \CRM_Core_Session::singleton()->get('ufID'); + } + return $loggedInUserId; + } + +} diff --git a/civicrm/ext/standaloneusers/Civi/Standalone/Security.php b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php new file mode 100644 index 0000000000..222d00daa3 --- /dev/null +++ b/civicrm/ext/standaloneusers/Civi/Standalone/Security.php @@ -0,0 +1,450 @@ +<?php +namespace Civi\Standalone; + +use CRM_Core_Session; + +/** + * This is a single home for security related functions for Civi Standalone. + * + * Things may yet move around in the codebase; at the time of writing this helps + * keep core PRs to a minimum. + * + */ +class Security { + + public const ITOA64 = './0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'; + + public static $minHashCount = 7; + public static $maxHashCount = 30; + public static $hashLength = 55; + public static $hashMethod = 'sha512'; + + /** + * @return static + */ + public static function singleton() { + if (!isset(\Civi::$statics[__METHOD__])) { + \Civi::$statics[__METHOD__] = new static(); + } + return \Civi::$statics[__METHOD__]; + } + + /** + * Check whether a password matches a hashed version. + */ + public function checkPassword(string $plaintextPassword, string $storedHashedPassword): bool { + $type = substr($storedHashedPassword, 0, 3); + switch ($type) { + case '$S$': + // A normal Drupal 7 password. + $hash = $this->_password_crypt(static::$hashMethod, $plaintextPassword, $storedHashedPassword); + break; + + default: + // Invalid password + return FALSE; + } + return hash_equals($storedHashedPassword, $hash); + } + + /** + * CRM_Core_Permission_Standalone::check() delegates here. + * + * @param \CRM_Core_Permission_Standalone $permissionObject + * + * @param string $permissionName + * The permission to check. + * + * @param int $userID + * It is unclear if this typehint is true: The Drupal version has a default NULL! + * + * @return bool + * true if yes, else false + */ + public function checkPermission(\CRM_Core_Permission_Standalone $permissionObject, string $permissionName, $userID) { + + // I think null means the current logged-in user + $userID = $userID ?? $this->getLoggedInUfID() ?? 0; + + if (!isset(\Civi::$statics[__METHOD__][$userID])) { + + $roleIDs = []; + if ($userID > 0) { + $roleIDs = \Civi\Api4\User::get(FALSE)->addWhere('id', '=', $userID) + ->addSelect('roles')->execute()->first()['roles']; + } + + $permissionsPerRoleApiCall = \Civi\Api4\Role::get(FALSE) + ->addSelect('permissions') + ->addWhere('is_active', '=', TRUE); + + if ($roleIDs) { + $permissionsPerRoleApiCall->addClause( + 'OR', + ['id', 'IN', $roleIDs], + ['name', '=', 'everyone'], + ); + } + else { + $permissionsPerRoleApiCall->addWhere('name', '=', 'everyone'); + } + $permissions = array_unique(array_merge(...$permissionsPerRoleApiCall->execute()->column('permissions'))); + \Civi::$statics[__METHOD__][$userID] = $permissions; + } + + // print "Does user $userID have $permissionName? " . (in_array($permissionName, \Civi::$statics[__METHOD__][$userID]) ? 'yes': 'no') . "\n"; + return in_array($permissionName, \Civi::$statics[__METHOD__][$userID]); + } + + /** + */ + public function getUserIDFromUsername(string $username): ?int { + return \Civi\Api4\User::get(FALSE) + ->addWhere('username', '=', $username) + ->execute() + ->single()['id'] ?? NULL; + } + + /** + * Load an active user by username. + * + * @return array|bool FALSE if not found. + */ + public function loadUserByName(string $username) { + $user = \Civi\Api4\User::get(FALSE) + ->addWhere('username', '=', $username) + ->addWhere('is_active', '=', TRUE) + ->execute()->first() ?? []; + if ($user) { + return $user; + } + return FALSE; + } + + /** + * Load an active user by internal user ID. + * + * @return array|bool FALSE if not found. + */ + public function loadUserByID(int $userID) { + $user = \Civi\Api4\User::get(FALSE) + ->addWhere('id', '=', $userID) + ->addWhere('is_active', '=', TRUE) + ->execute()->first() ?? []; + if ($user) { + return $user; + } + return FALSE; + } + + /** + */ + public function logoutUser() { + // @todo + } + + /** + * Create a user in the CMS. + * + * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method. + * + * @param array $params keys: + * - 'cms_name' + * - 'cms_pass' plaintext password + * - 'notify' boolean + * @param string $mail + * Email address for cms user. + * + * @return int|bool + * uid if user was created, false otherwise + */ + public function createUser(&$params, $mail) { + try { + // Q. should this be in the api for User.create? + $hashedPassword = $this->_password_crypt(static::$hashMethod, $params['cms_pass'], $this->_password_generate_salt()); + + $userID = \Civi\Api4\User::create(FALSE) + ->addValue('username', $params['cms_name']) + ->addValue('email', $mail) + ->addValue('password', $hashedPassword) + ->execute()->single()['id']; + } + catch (\Exception $e) { + \Civi::log()->warning("Failed to create user '$mail': " . $e->getMessage()); + return FALSE; + } + + // @todo This is what Drupal does, but it's unclear why. + // I think it assumes we want to be logged in as this contact, and as there's no uf match, it's not in civi. + // But I'm not sure if we are always becomming this user; I'm not sure waht calls this function. + // CRM_Core_Config::singleton()->inCiviCRM = FALSE; + + return (int) $userID; + } + + /** + * Update a user's email + * + * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method. + */ + public function updateCMSName($ufID, $email) { + \Civi\Api4\User::update(FALSE) + ->addWhere('id', '=', $ufID) + ->addValue('email', $email) + ->execute(); + } + + /** + * Authenticate the user against the CMS db. + * + * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method. + * + * @param string $name + * The user name. + * @param string $password + * The password for the above user. + * @param bool $loadCMSBootstrap + * Load cms bootstrap?. + * @param string $realPath + * Filename of script + * + * @return array|bool + * [contactID, ufID, unique string] else false if no auth + * @throws \CRM_Core_Exception. + */ + public function authenticate($name, $password, $loadCMSBootstrap = FALSE, $realPath = NULL) { + + // this comment + session lines: copied from Drupal's implementation in case it's important... + /* Before we do any loading, let's start the session and write to it. + * We typically call authenticate only when we need to bootstrap the CMS + * directly via Civi and hence bypass the normal CMS auth and bootstrap + * process typically done in CLI and cron scripts. See: CRM-12648 + */ + $session = CRM_Core_Session::singleton(); + $session->set('civicrmInitSession', TRUE); + + $user = $this->loadUserByName($name); + + if (!$this->checkPassword($password, $user['password'] ?? '')) { + return FALSE; + } + + // Note: random_int is more appropriate for cryptographical use than mt_rand + // The long number is the max 32 bit value. + return [$user['contact_id'], $user['id'], random_int(0, 2147483647)]; + } + + /** + * Currently only used by CRM_Utils_System_Standalone::loadBootstrap + */ + public function loginAuthenticatedUserRecord(array $user, bool $withSession) { + global $loggedInUserId, $loggedInUser; + $loggedInUserId = $user['id']; + $loggedInUser = $user; + + if ($withSession) { + $session = \CRM_Core_Session::singleton(); + $session->set('ufID', $user['id']); + + // Identify the contact + $contactID = civicrm_api3('UFMatch', 'get', [ + 'sequential' => 1, + 'return' => ['contact_id'], + 'uf_id' => $user['id'], + ])['values'][0]['contact_id'] ?? NULL; + // Confusingly, Civi stores it's *Contact* ID as *userID* on the session. + $session->set('userID', $contactID); + } + } + + /** + * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method. + */ + public function isUserLoggedIn(): bool { + return !empty($this->getLoggedInUfID()); + } + + public function getCurrentLanguage() { + // @todo + \Civi::log()->debug('CRM_Utils_System_Standalone::getCurrentLanguage: not implemented'); + return NULL; + } + + /** + * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method. + */ + public function getLoggedInUfID(): ?int { + $authX = new \Civi\Authx\Standalone(); + return $authX->getCurrentUserId(); + } + + /** + * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method. + */ + public function languageNegotiationURL($url, $addLanguagePart = TRUE, $removeLanguagePart = FALSE) { + // @todo + return $url; + } + + /** + * This is the (perhaps temporary location for) the implementation of CRM_Utils_System_Standalone method. + * Return the CMS-specific url for its permissions page + * @return array + */ + public function getCMSPermissionsUrlParams() { + return ['ufAccessURL' => '/fixme/standalone/permissions/url/params']; + } + + /** + * Since our User entity contains a FK to a contact, it's not possible for a User to exist without a contact. + * + * @todo review this (what if contact is deleted?) + */ + public function synchronizeUsers() { + + $userCount = \Civi\Api4\User::get(FALSE)->selectRowCount()->execute()->countMatched(); + return [ + 'contactCount' => $userCount, + 'contactMatching' => $userCount, + 'contactCreated' => 0, + ]; + } + + /** + * This is taken from Drupal 7.91 + * + * Hash a password using a secure stretched hash. + * + * By using a salt and repeated hashing the password is "stretched". Its + * security is increased because it becomes much more computationally costly + * for an attacker to try to break the hash by brute-force computation of the + * hashes of a large number of plain-text words or strings to find a match. + * + * @param $algo + * The string name of a hashing algorithm usable by hash(), like 'sha256'. + * @param $password + * Plain-text password up to 512 bytes (128 to 512 UTF-8 characters) to hash. + * @param $setting + * An existing hash or the output of _password_generate_salt(). Must be + * at least 12 characters (the settings and salt). + * + * @return string|bool + * A string containing the hashed password (and salt) or FALSE on failure. + * The return string will be truncated at DRUPAL_HASH_LENGTH characters max. + */ + public function _password_crypt($algo, $password, $setting) { + // Prevent DoS attacks by refusing to hash large passwords. + if (strlen($password) > 512) { + return FALSE; + } + // The first 12 characters of an existing hash are its setting string. + $setting = substr($setting, 0, 12); + + if ($setting[0] != '$' || $setting[2] != '$') { + return FALSE; + } + + $count_log2 = strpos(self::ITOA64, $setting[3]); + + // Hashes may be imported from elsewhere, so we allow != DRUPAL_HASH_COUNT + if ($count_log2 < self::$minHashCount || $count_log2 > self::$maxHashCount) { + return FALSE; + } + $salt = substr($setting, 4, 8); + // Hashes must have an 8 character salt. + if (strlen($salt) != 8) { + return FALSE; + } + + // Convert the base 2 logarithm into an integer. + $count = 1 << $count_log2; + $hash = hash($algo, $password, TRUE); + do { + $hash = hash($algo, $hash . $password, TRUE); + } while (--$count); + + $len = strlen($hash); + $output = $setting . $this->_password_base64_encode($hash, $len); + // _password_base64_encode() of a 16 byte MD5 will always be 22 characters. + // _password_base64_encode() of a 64 byte sha512 will always be 86 characters. + $expected = 12 + ceil((8 * $len) / 6); + return (strlen($output) == $expected) ? substr($output, 0, self::$hashLength) : FALSE; + } + + /** + * This is taken from Drupal 7.91 + * + * Generates a random base 64-encoded salt prefixed with settings for the hash. + * + * Proper use of salts may defeat a number of attacks, including: + * - The ability to try candidate passwords against multiple hashes at once. + * - The ability to use pre-hashed lists of candidate passwords. + * - The ability to determine whether two users have the same (or different) + * password without actually having to guess one of the passwords. + * + * @param $count_log2 + * Integer that determines the number of iterations used in the hashing + * process. A larger value is more secure, but takes more time to complete. + * + * @return string + * A 12 character string containing the iteration count and a random salt. + */ + public function _password_generate_salt($count_log2 = NULL): string { + + // Standalone: D7 has this stored as a CMS variable setting. + // @todo use global setting that can be changed in civicrm.settings.php + // For now, we just pick a value half way between our hard-coded min and max. + if ($count_log2 === NULL) { + $count_log2 = (int) ((static::$maxHashCount + static::$minHashCount) / 2); + } + $output = '$S$'; + // Ensure that $count_log2 is within set bounds. + $count_log2 = max(static::$minHashCount, min(static::$maxHashCount, $count_log2)); + // We encode the final log2 iteration count in base 64. + $output .= self::ITOA64[$count_log2]; + // 6 bytes is the standard salt for a portable phpass hash. + $output .= $this->_password_base64_encode(random_bytes(6), 6); + return $output; + } + + /** + * This is taken from Drupal 7.91 + * + * Encodes bytes into printable base 64 using the *nix standard from crypt(). + * + * @param $input + * The string containing bytes to encode. + * @param $count + * The number of characters (bytes) to encode. + * + * @return string + * Encoded string + */ + public function _password_base64_encode($input, $count): string { + $output = ''; + $i = 0; + $itoa64 = self::ITOA64; + do { + $value = ord($input[$i++]); + $output .= $itoa64[$value & 0x3f]; + if ($i < $count) { + $value |= ord($input[$i]) << 8; + } + $output .= $itoa64[($value >> 6) & 0x3f]; + if ($i++ >= $count) { + break; + } + if ($i < $count) { + $value |= ord($input[$i]) << 16; + } + $output .= $itoa64[($value >> 12) & 0x3f]; + if ($i++ >= $count) { + break; + } + $output .= $itoa64[($value >> 18) & 0x3f]; + } while ($i < $count); + + return $output; + } + +} diff --git a/civicrm/ext/standaloneusers/LICENSE.txt b/civicrm/ext/standaloneusers/LICENSE.txt new file mode 100644 index 0000000000..bba6f54a32 --- /dev/null +++ b/civicrm/ext/standaloneusers/LICENSE.txt @@ -0,0 +1,667 @@ +Package: standaloneusers +Copyright (C) 2022, Rich Lott / Artful Robot <code.commits@artfulrobot.uk> +Licensed under the GNU Affero Public License 3.0 (below). + +------------------------------------------------------------------------------- + + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If your software can interact with users remotely through a computer +network, you should also make sure that it provides a way for users to +get its source. For example, if your program is a web application, its +interface could display a "Source" link that leads users to an archive +of the code. There are many ways you could offer source, and different +solutions will be better for different programs; see section 13 for the +specific requirements. + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU AGPL, see +<http://www.gnu.org/licenses/>. diff --git a/civicrm/ext/standaloneusers/README.md b/civicrm/ext/standaloneusers/README.md new file mode 100644 index 0000000000..0979eb3772 --- /dev/null +++ b/civicrm/ext/standaloneusers/README.md @@ -0,0 +1,52 @@ +# Users, Roles, Permissions for Standalone CiviCRM + +**âš ï¸ Do not use this extension if you have CiviCRM installed the normal way (e.g. on Drupal, WordPress, Joomla, Backdrop...)!** + +This is only for people running [CiviCRM Standalone](https://github.com/civicrm/civicrm-standalone/) which is currently highly experimental, insecure and definitely NOT for production use! + +Normally, CiviCRM sits atop a CMS which provides role-based authentication: users can login, users are granted different roles, roles are granted different permissions. But standalone doesn't have these structures and relies on this extension for them. + +The extension is licensed under [AGPL-3.0](LICENSE.txt). + +## Requirements + +* PHP v7.4+ +* CiviCRM (standalone) + +## Getting started + +Normal installation methods (such as `cv core:install` or `civibuild`) should enable `standaloneusers` by default. +The installer should display the default user account, such as: + +``` + "adminUser": "super", + "adminPass": "O5fAlyXgdEU", + "adminEmail": "admin@localhost.localdomain" +``` + +If not, you may also find the default credentials in the local log. + +``` +[notice] Created new user "admin" (user ID #1, contact ID #203) with default password "admin" and ALL permissions. +``` + +If you try to load your site it should fail: you've got no access rights. + +At this stage, because you're moving from a system that had no concept of users to one that does, you'll need to clear your browser cookies for the site, otherwise login will get confused (You may see a "session already active" authx error.) + +Done that? Then head to `/civicrm/login`, enter your credentials and hopefully you're now back in the admin interface! + +## Advanced + +To customize the default credentials, pass any of these arguments to the installer: + +```bash +cv core:install ... \ + -m 'extras.adminUser=zeta' \ + -m 'extras.adminPass=SECRET' \ + -m 'extras.adminEmail=zeta@example.com' +``` + +## Conventions + +From the `Civi\Auth\Standalone` class, the User.id is stored in the global `$loggedInUserId` and when there's a session, under the key `ufId`. diff --git a/civicrm/ext/standaloneusers/afformEntities/Role.php b/civicrm/ext/standaloneusers/afformEntities/Role.php new file mode 100644 index 0000000000..7c59603a55 --- /dev/null +++ b/civicrm/ext/standaloneusers/afformEntities/Role.php @@ -0,0 +1,9 @@ +<?php +return [ + 'type' => 'primary', + 'entity' => 'Role', + 'label' => 'Role', + 'defaults' => '{}', + 'icon' => 'fa-graduation-cap', + 'unique_fields' => ['name'], +]; diff --git a/civicrm/ext/standaloneusers/afformEntities/User.php b/civicrm/ext/standaloneusers/afformEntities/User.php new file mode 100644 index 0000000000..1d8d36b707 --- /dev/null +++ b/civicrm/ext/standaloneusers/afformEntities/User.php @@ -0,0 +1,17 @@ +<?php +// Hacked from +// https://docs.civicrm.org/dev/en/latest/afform/form-builder/ +// https://github.com/civicrm/civicrm-core/blob/master/ext/afform/admin/afformEntities/Individual.php +// https://github.com/civicrm/civicrm-core/blob/master/ext/afform/admin/afformEntities/Phone.php +return [ + 'type' => 'primary', + 'entity' => 'User', + 'label' => 'User', + 'defaults' => <<<JSON + { + "password": "password123haha" + } + JSON, + 'icon' => 'fa-user', + 'unique_fields' => ['username'], +]; diff --git a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html new file mode 100644 index 0000000000..739d072112 --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.html @@ -0,0 +1,12 @@ +<af-form ctrl="afform"> + <af-entity password="password123haha" type="User" name="User1" label="User 1" actions="{create: true, update: true}" security="RBAC" url-autofill="1" /> + <fieldset af-fieldset="User1" class="af-container" af-title="User"> + <af-field name="roles" /> + <af-field name="username" /> + <af-field name="email" /> + <af-field name="is_active" /> + <af-field name="timezone" /> + <af-field name="language" /> + </fieldset> + <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">Submit</button> +</af-form> diff --git a/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.json b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.json new file mode 100644 index 0000000000..a8c6ea005f --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afformEditUserAccount.aff.json @@ -0,0 +1,19 @@ +{ + "type": "form", + "requires": [], + "entity_type": null, + "join_entity": null, + "title": "Edit User account", + "description": "", + "is_dashlet": false, + "is_public": false, + "is_token": false, + "contact_summary": null, + "summary_contact_type": null, + "icon": "fa-list-alt", + "server_route": "civicrm/admin/user", + "permission": "cms:administer users", + "redirect": "/civicrm/admin/users", + "create_submission": true, + "navigation": null +} diff --git a/civicrm/ext/standaloneusers/ang/afformX.aff.html b/civicrm/ext/standaloneusers/ang/afformX.aff.html new file mode 100644 index 0000000000..0af704bf35 --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afformX.aff.html @@ -0,0 +1,10 @@ +<af-form ctrl="afform"> + <af-entity type="Role" name="Role1" label="Role 1" actions="{create: true, update: true}" security="RBAC" url-autofill="1" /> + <fieldset af-fieldset="Role1" class="af-container" af-title="Role 1"> + <af-field name="name" /> + <af-field name="label" /> + <af-field name="permissions" /> + <af-field name="is_active" /> + </fieldset> + <button class="af-button btn btn-primary" crm-icon="fa-check" ng-click="afform.submit()">Submit</button> +</af-form> diff --git a/civicrm/ext/standaloneusers/ang/afformX.aff.json b/civicrm/ext/standaloneusers/ang/afformX.aff.json new file mode 100644 index 0000000000..d7979beb90 --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afformX.aff.json @@ -0,0 +1,19 @@ +{ + "type": "form", + "title": "Edit Role", + "icon": "fa-list-alt", + "server_route": "civicrm/admin/role", + "permission": "access CiviCRM", + "redirect": "civicrm/admin/roles", + "create_submission": true, + "requires": [], + "description": "", + "is_dashlet": false, + "is_public": false, + "is_token": false, + "entity_type": null, + "join_entity": null, + "contact_summary": null, + "summary_contact_type": null, + "navigation": null +} diff --git a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html new file mode 100644 index 0000000000..fd9a7e7c9d --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.html @@ -0,0 +1,17 @@ +<div af-fieldset=""> + <div class="af-markup"> + + + <div class="help"><p>{{:: ts('User accounts allow people to access CiviCRM. What they can access is determined by which roles the users have, and what permissions are granted to those roles.') }}</p> + </div> + + + </div> + <div class="af-container af-layout-cols" af-title="Filters"> + <af-field name="username" defn="{required: false, input_attrs: {}}" /> + <af-field name="email" defn="{required: false, input_attrs: {}}" /> + <af-field name="is_active" defn="{label: 'Active'}" /> + <af-field name="roles" defn="{input_attrs: {multiple: true}}" /> + </div> + <crm-search-display-table search-name="Users" display-name="Users"></crm-search-display-table> +</div> diff --git a/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json new file mode 100644 index 0000000000..30cf8bf663 --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afsearchAdministerUserAccounts.aff.json @@ -0,0 +1,23 @@ +{ + "type": "search", + "requires": [], + "entity_type": null, + "join_entity": null, + "title": "Administer User Accounts", + "description": "", + "is_dashlet": false, + "is_public": false, + "is_token": false, + "contact_summary": null, + "summary_contact_type": null, + "icon": "fa-users", + "server_route": "civicrm/admin/users", + "permission": "cms:administer users", + "redirect": null, + "create_submission": false, + "navigation": { + "parent": "Administer", + "label": "Administer User Accounts", + "weight": 0 + } +} diff --git a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.html b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.html new file mode 100644 index 0000000000..15ecb4796e --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.html @@ -0,0 +1,10 @@ +<p class="af-text">Enter text</p> +<div class="af-markup"> + <div class="help"> + <p>{{:: ts('Roles define sets of permissions for different types of users. You can give users roles to grant them permissions appropriate to their needs.') }}</p> + </div> + +</div> +<div af-fieldset=""> + <crm-search-display-table search-name="Roles" display-name="Roles_Table_1"></crm-search-display-table> +</div> diff --git a/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json new file mode 100644 index 0000000000..cc62bb4a7e --- /dev/null +++ b/civicrm/ext/standaloneusers/ang/afsearchUserRoles.aff.json @@ -0,0 +1,23 @@ +{ + "type": "search", + "title": "User Roles", + "description": "List of roles defined on the system.", + "icon": "fa-graduation-cap", + "server_route": "civicrm/admin/roles", + "permission": "cms:administer users", + "navigation": { + "parent": "Administer", + "label": "User Roles", + "weight": 0 + }, + "requires": [], + "is_dashlet": false, + "is_public": false, + "is_token": false, + "entity_type": null, + "join_entity": null, + "contact_summary": null, + "summary_contact_type": null, + "redirect": null, + "create_submission": null +} diff --git a/civicrm/ext/standaloneusers/images/civicrm-logo.png b/civicrm/ext/standaloneusers/images/civicrm-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5ec2f055e96302078679b1f9bc913911c2fb3771 GIT binary patch literal 28835 zcmXt9byOSe)5TqyVx_n{6e#ZQZpBNn;uLpxcXyWpr4$cRC>E?xq__r`5TFnwe0hK8 ze1GgF=OibaooAkzJNMp=*Va_R$9ao`goK2zqAahAgoM0}cprj=fjB?S4!uUaV7n_D zdm<qb{QB=e&gLMXKtiHLQjwR@_bWQ<3oSA;2!449+A8KeecK5;`xr-;%tl`w#5zKZ z`W=9*13(5K$Fq*7BuJ??HGvM){5k8Z#THg`8a^cUCJdm|vBKr6;|gf$KUER)>b`~j z%Bxus80{LJJ_`<g5kA}uyvX;ox69nH5j+!1oi6IW?zw!FJS_3tl$zn8(*nE_y1!|~ z9+?rKA?smb4h@}a&+pk(9u+C5jEqiL-CMt9xw;iN<>3zZLQM>(j^3zqC9@J!cKPP! z(gqK@czAD4HUz>+ATb7X^Kjktt?&m$TmJGCz0y*|A=mx#^NxPli9jk40`J3a_n4)G z(+;&5cQ#PWWz*)?o!|hBF}#okK8iu|8a6rTEzzmbd_+L^VUwZnc1L=<(>-w5_@$^G zrpdk?kvBn0xq&=J{8K+;+-@Ez;oC#K=gs4+_#0BOQdp4X=H52|V**h$kDhC>gsY(w z<y$~hp^RkocUyPxs&VGlN>uLPG}@c(AeJzEZvwi0x*&e0)rRjyIFeC?l_H{V*cRBj zmJcDAydl#M1^^I@JqYOoD{DfPsu77aKxLkmo|%gl5;cTh@xUuTTJx%;gaqtac9rfq z_gwYUH&=%Ee!7nuJ%nS|T)sT;j^vW!tpfCYhQHwM;n9R#xzC3zZpTi~d*c)%FmV(i zHs^a)BM<5ptR-|(c}DNp;(gulJ9?-<R@?Gd%f-bRSh35!qV*s)N%z8qKra2|sy-xS zHQTBNLU;M{aYQIV{{DSz>Bha{dy+HCkeuD+ucqy<=33Z1f=;ehU(kNbuVfG^JUU=X z(SdSbHDgjkMq_Ku;Vh_<$jqT=uAI8R6)bFy0<gBG9NjMy-+uguVadoJ{$n<@V^2=F zRF>p3fmAO<q00_<0Kr85Uo?hJ^+l*DObjWkNq=HgG=0+eG^^6{W-H!Z5@PWC^uNn{ z)$E6U-zKundV+204{;JaEjd>Dl6-0eZ3JJaZ<||Nv*%1Zk3BBbi627RXhLaAL}J}g zfeqZ+U_QX!mgDYngGyr9+>eB~v@(;QsC~4TNY4iaw~cV;=^lgYT2nX+?xsOPf9F2? zhT^78y3v94C&J6XO$8_ns*c&8UVEW84#}JLyQ6;DATf6LykChY4CZkp^t_M6;-Mdl zcUN!FCwX-`N6*N%pgzfGWoO0iC!d1!%o5dN(R;DW|6kPo%b;SWSIr)`6#fh&6ajfH zNx{*l9LO({z(>2+m!Vqj6ZYd_!fznu1if{fh&;iRyxDM@{O<~(=RF4L?6vik`pM8K z$&7dW6|Jm$?5Z61HbKHaBeRIj+2~7ACA;l58Y=I6L+trC&0`jhM(aNu=&5u@+=BB7 zfIO)9^A~q3DW#PxJkcl8l>xl5rMCAT)i|HMmX4)3p0DQC+=~DH`Ql26`-N`}ly7b; zMQwCL8QwJbh1LyY#)vf<a;*GCRFIQx>Sq%6LksOC)tRZ7U?xoB4dkc5U#{QIm%mMQ z%rKn-QVu?+*okCwEMk2?DXMSaAr^jX1E?_1%+vuweqX`V2)7JGgXXwPEZ|(%y?5@) zhm2o1)kp1$TN<9u+c}mkG9hMdAqG_q95S1@MZaxa-}|?p%~TtPanXB_9C1YkcP`ld zcxT58qxf>h(Y~AA5m9>l<1q+J2{}RhUnH`Wl9psagN$ITn;g&psDxsKN`|yie*RUT zE+u-k3bw;$o_RA>x=kMY%xnQoGH)Lypi1p2)$N6DN&25Dg~!kBgzJ|$4S0SLqHj^W zd8?nJs*IV5Ph{^|_lIeO9BHZko5^<n&;Isg;;XN$FUO;akI_q6_6!Obx8ey9ouBq{ z;kD#jX9b11k;q%@8V1I*J8NW8g(ruU{mA{D117I;P!wE|%&}&g4YUu-R9&BzKF<o1 zGP6u`Q&6Q}93B0RCB7j0&;r8v%^Q9-m%iAJsEQWrfa8-7V1WisZIWJV!wzw5#?B<R zOr^G0?T#Aqk~n6B;?#dF0}QiX5ZeH~X#LHn*AGqUy7&@6<?`4%1M81&SJ=&f=^9NR zw<{M1l9`=a{L4)x)F2(x;^9v0&4B(EWJxTq#s&kQlnS*&b{78Z=wE>@=sfIuSg94_ zaYw#7{vY{rxQzP1m`d{L780#20beN9ax>OC`ApTED`!)7HF)dj#|^iGv1q8zOnc9z zbL@M!H;TWR*nX(Gsx5Ghwy(rf7wXS9gWs+sxK$JJ3{CCWlZB)Zyk<9Q;0S9$#tn+? zBtJ(Dk<A{{p@wb9k9E$7pWDYi&!t<pT!`9utk^hrTxmZJh_3(9`RF^w#Uy|sEfj`_ zY)Ou|T%$rOfhxOb($8u|(1MYp<V@|c_WGanf3^<G1YV)Lhx3?jt3tmIAZ=J%Yf=kL z^uBc`i9|f4&RxqQCUm}itbMtD26;tU8`lRTdn}ZlO?OdJFdBm6A{)MxufDkV)E%B1 z&PU;=(OO8psLNKPv3ovTFZsV717*l~hlgJcwnyM&lLz!aPT=jzL5ZsgF@UC$Xy2NC zBf7`nta&NZav;ZICVGFQW0Z1-QcR~+TY}$m@|sAoUlRSnU5TK~mS-nKX%^0e^o5hQ zz-4s@Pu<=M62%*b;|LK8(<)mJ+aHZxt9i1A_RwTQNLb%roIR&VM)Bz4Dg2Ov#5>bb zH~n@Vo1LSap5rX@sD8@^RQf%j-Wj7#%(C(?{rHXB$&RS0$_$cZzHRV5zt2?!QRvK0 zVu+lJu67flS7Mt9+hO>j5w8m=xNmTL8`LglU%|PS{%;hOVCOB{KK)a8mCvoV{o6~9 zV;_FJ1IV95-^=0NPC$!DP~rAuwj&GVa!^%F2c%x|+8691SPxQ<d+pdBm!hj~(?YhB z$;GNdVD@=vYb5gZ*y!+crG4tv6Nzcw%Ywv$V@4sq%k~QS@QC&BuQI|gyn1N1lTmYV z-UZZIC}<p&TQ?_p-QmS*T6|k^lkXAv@~}3YWs5WE9mQ4hg<CXYJ#nR!+Oj~|j${yP z19Q6=U83pF2G*p^n@B-Ob4|t9yK<$TXD`k0mD$pz>w!wGWBA6UXb-dXagkBNw8+5B z)RDRfJ3dTk$QrmKC(0t?05gQ&bh#Y2+pK|Z&W62O9K4GxWtfsRBfnAHi-H6qIhG~g z6M<K`_X7vN`BFR1Nla&1HG;gE=hb&gBGG9o=x6;2q#m#6hP#Y|3x+!Zi2c6GG&CC~ z_lMVH5xDHQK6i+EmqI}JE7bF{ku(lcn*OcMF!Rdt`5|qUr^9<0ej2}(*x_8f)$Iga zFlbb$M*OQxIg+VAZ?9*qP9PbY3!i>oKBtgLyu4g}wTCBcX?Weci%oDC>lHN_k@kAA z3n0n+lm!vbonk(^u82}>F6&>xMYrwteV>{(|1@~G9*k%l-m+MWE?D*2zW06J?v+$( z%R>aPv*Lw|9k;C!u1SFewDGdpK1Et?Hf=|`=l!Ofp`wLCMTPV3s_;tpob2U#VY)N) z*4UCKdpDbQ45eEC3Io>rXf6}-kQO<1G$YX-XFD*EnOoc+Uprm;akgZ9eJ^0RJKti4 zp-4?|{u!;pNtFJ1VY(Dv8D9$DYsb`}^3A1dmu)gR`fc_Y>vu7GgGgk`X&qC&7HpZ9 zSBsStJM#BpSx$;dhGR}k=0K$VvB8S<Di#(h?_U&%O)B0Ru!k)Wjy{NuGfM`xiP|GM zM^?RkR9|wFGL}zxXPhW}C1QFUc)@dY6qlcbJ{RCWKVg1cd=Sp2m^CqRl>SI<b`$;I ziE8_&|24C3*nY=ck&FKK(*D?!-o*=nt?AK6iz=I7i}bs|@m|-g5`rMvWLX?K(GORC z%ZZ!Mlp#Lba{pl@IMSX%d(Ds?K!wCzlw5T^?psm#H;lS&)XrnSre{0)8PI;!JNTM^ z5<VeP60+~gK$ltlzc^4U7EAcQ`fp}g(b8nfSu;N!SyN%Qo4~wBA<EHVDK<}&Ej##; zv2~p^<sq1N?ogf%bKeMYE2$#4{)MR`XUBV}ck6-o7sb7zG#5v|A19v|Z`s9Z8%$+J zm6R|{Ry=zoHd`?9*o<;jDpTm>^$hUJA5F^pMtbk=VUGI~vxdMI>>XdCfUW=V%zvB8 zCE>D3pFyXOI^8$Qt-Z3=ZUAhbN<ipr(&oB|f_91=IO+fAvIlwp*U$cK^}Ql-uxdMn zFb>!+>ag(yoBq4JL7;q9*1%%^iF0XA5^Tv45X-YV;t*WuKRUGaYRqmW<FByiTcl2t zbz{ox2{&TiFO*-lB4e+fX{Z!kbdTclkf`+*@#()R`Ab_7(Tk0UIae5mn3g#VKUxne zEVXMX6w7je%1D4bH|pDo7gzOI{1jK7H~W?K>|jJe+L_Eg@o#wOCQgrvATlU8m%Lp< zv~vm~^sh%1z$J~W0{U;r*+iI$xevskKc?g-#QRuT*3zZ5^c-j@`qf5J+`d~5x$@ss z$x@z&c{L?>$i!XXQQeBWl9`>vIQvS`{?#fWx2JMlhrO}ae_kv;MkUX$EVd33(Gqe5 zX>EsW>wI+f@++JBm-~48OzJ=QzI$`(k^MDi)X(k%j+y+P3tb(_VD&bSe6D-M;3HC? zpx>-dR{lUlay&6=DPY=f-CuFEJf>(kz<7w<*mlOE^T|%BL6I6l45nbO2Ym{!d}UZx z6z7fyqW>7eS11}NxWF9UJoA=?`-LXuW#DBJsOzld@ZBz2Xm~YOYFbFOp5Y*#OKZ>c zj%tRdLn1px+2w;62aSTYOh>tRjJp&>LZ3$VZvtp$E*+IW#q0+j_K@n-$USJfkHsrg z=Rta|NVcGog@3x>-B~7;WwX9m6K0TMz<j!rU0>5#3XA{fn&k_Fbm-S_tW<gE>p$Y0 zrN2mQJ7f-+)#qrRD}2E4Kyjyc7jICL4%i?W%*>R9y__9nA-Ydn&NKUM%!am?GTiJf zZ%NBgsOuTHSIQ4V%-4G!z!u+~;ahY5nq!d{u!7cu3=WKQ)?U=0|1R<BdrA5oh3?=x zZ}gP}6oM-^0cVMg<KJ${tc<75zl16~j=c^b{1IC;vw6c>{QYM25htd^oA%tsJUZ_; zu;iRgqKqv3VW}4wA$UEkKUrwvF}Y+b!kixELZYcZ#<PxvmtcLTyit}X9q}=pl)8T| zF8T+Yrd;hUlo0SOFzS1XSDc;^7d&aNlw0ZR{dE`W^+qb_{`f3E>FAZlBs;mAqPZM1 z*RVOQsWc5TjM|+B^5&bjSJ%$3=00wkP;y-kRiP^V!sx2REEf)oEB(Hsde&|EgL>9) z2u$7!-|v<*n4;|0xB|mZc(J6UkLPcsQP1qitJM5<^HTfv5@`ClQov(x+mt;|1B$E0 zG4!=4&HU9G>5h(X(iqApgo%YsvPtM4fD^)^Jq!uC)S*-Vj{HL(aC>@~>lZ8NVa2?5 z*K*K-I7Eai#d_{%o)clmd$>nO-^6^uf}|=#3p-FWAJjF271p8Wx)8#2r7(@kVbqZB za|2ix&fmM50)c<@Zk^-ar493W4vsZRh5nE>5*ogcvVMa1d^w12j9RLF)H`cWur-R9 zDpr%B_-*f5^Zl~%vR8F9qbGz{drrU<FZ&RM-Vow3oe;dgeEeH0VQERoG?1r%h7HB6 zxM8+||KvFkV}Z+-1B;ua>+#Nj<m+DQmF%qz(mzbTM%)0Vge;a2`1^}~U+lFG-#;R5 zuYrMYv+YeRVjRoFq)U*frM)G_G303|s4OJ<g}{HD8B!`RF7+z6Wb?FZ=f|-=FU+0c zZ}!=z92`x^2in%p?htY!n)KUv<HN`0dZ-Fe$Xi0TUZN>*mZQ1rMoRKMFMx|wB?a@x zx_nbD3q=?a=A)e?nuNhqc}vUpQ=#gke6<jXm)%@9GwOH?e2)fp9s1Co?<*&xPvoQf zK9B_GmKU1TobJQT;ru#p?UOh?+qF9JKW)iZpcTBHvAC4A33EcEEwnx-FPmHICOg3& zcx+V*vI7EoUEBiDbrYTDKgB)+LXDK%b{%_#SFF22v88?YBBIK5ow^dnS(kOM;>}H+ z2zbX0C)p9dzV*_v>?Z6vTav<X?#!(0Gy82-1+6j6lt6~&oe5&15;{U}08-dExGtx@ zw^VTW21A5XB2e^xDLD3e_$5e`N=Kb>AM~4NcD={0(kt=mAm_{PM`=m4AS*AwkG_?_ zZk#S-)UCCYEu$kkv!grmZr9o6GZ_)ZD9w+!kS_l5eoOF5>GI^W!K)mkN#bN3f3uIL zN8{31mh#h^i1DWn;`u(=W|XImARyE=@<X#eA$ouONvpIV>O}D?ys1Jmw}4YyLT^XT z#6EuC;`7{EH}ZLSnZT)$0uC<PCczW>J1Ja%ePky-)QROQ+w}pP^?-O(OYmvF_|<i- z4*Q55T3?ws6Ks}q%fosH{|bi?*(e@*TVboIU_ICr;}guo_uSXXM;xz;U0&5t9Knf1 zO6%45+IThu<qf7!Sr1WFjJ94~vMot(I$&E@FQ{8LS^t(Q0!UO&hP3!W;X?LS72xmu z{$-u*%FRBgdtkM(;u5gGD9wTd>Pko{^O*iSK1h&oI+#=)$YG$Zy7cBmUWE8a=jgj0 z`===EX!8ou8v0&z=Cc{8tGX3cw*ip2+PrI|+d@dD3U6^eT`Bo9QOcL4@gvvq(9k^u zu#R^w+^9-T(s4wmveJY9GuyNd=Qr>d)F!&Yj0-~l>wLPCbkJ#5j}nA*qjCI;gGC)j z5#S}yYXtna)3s2p<MW{Xx<uoj*%JOIV)ta@e<29|!5i-#T9L|pZaOy=!9iz9mVb3# z@=IS>?=sJhkr-hsQM=h?=S7ZsJ`wkesJJ@oQzh222t`;G%;i1yWUY316uSeDJCL0P zi6!BizEymg1a0*X_p?wz0;zHk0iXj(3rPxz8cC2fDOuplo@up5^}|bf0M%~3N{uiL za`5pH<b(yqzi{!`qgs@vi$oZAoXey0hAj>BS9xQqKT0+x$JE|r)RYIPmK{z16{!T5 zl91D2QGtF6GhUX&)L=|zR9XmEJY}4axX&_8DVz!)nBJE$(8;&JFpi@aTKp&nXn5dB z+3uc9XK%$4&>sV=*s}OIqx&HD>i7gEd|Cx<!8X|0B?$Ik8<=y`o2Psw8pPOU-UgU< zOrI2N#hw`jxrMezxi<{552|mfD0{O&5VN&H-;ne8z`CV*jC*m#SOTaxPlLNB{1B-Y zsT2+VGls(c{XpOIVjFrN1NP5?o%I0pr_p6`^+WM#?$uVEv916tzvfQ7`lhXxQj4~b zMdQJ=25Ju3EWz*EA?Dwu>TsyiUvmV#C?W6<e(Y7R1R&kUdNTgI#;QU`5{DU_P8^Az zVQ}s1>lwC>xdj5wPg|4Easc|ous`8OWkqP5Q2uih7C4fx1XC+o$C|m?g>*OW-!tbQ z8%NPFo<xu8o;RNI%TGY@?jg8XniEPgQL0;8!o1+UN2q}8O^^Z1%hC7mm)HEZQhhf= z2%OZ5t*0Z$S|JJ)n8`u5=KxZI{Qv>7P^9C(_#sqRkh0b|apd(xs7RC>DqQw~Z4v<q zQqlV+IMdT|!1)bNny^blFEP7Epb~n&{aA(|a<Aerpj;NlW;nzg`n-s>b31sO))#Bm z`=0wsGs=nBm6Ct>y@G{m<xSFFa(ewT8&D^0Mm<E=`p=tZ=o?TW;DTFwsN1VsR|2Jr z{9X`3o%Lm{bEK@5JaZo->m19?JEwL^IRt_DbhpJ=)#NVK()E#NIoM!E@uo~Pvi{8* zan=I^EyoBdc%VVaV2gDqyN<K^-2lA6fz}}ur&@Qad24D<Y)h<&M(SUv_K5l>s5l+3 z;9@~RCXg;E_RV4=0FEep-t#HDjGpPaBETPy635z=oAB~VKsNzcEKfCnI>V@cV*gHl zRQ_)O_!Mm}6WL`)TYnZsG74fIwd3*fo7~6K-KbeUB=_l(<>S{Sp!h|bfg$^<f&@vn z0-&AT!Xj@8Fu|_!sU$!0o4-s8wt`@w1^<di9-@C5H|rar2(bl``SCQ=#{Je~Osy9% z*4nvXJKa-YL@}>vXi>cX(a?;!sn@KZYg#R33qwQ#<u@U_Axu-Iq#i_A^JLJjmc|rO zl;kJ{q1*1ou|(Z8K&)6t`C@(6z?$H?Zv@U^B%G*WCJ-X(iA-`X<Ii(cO?@c~pSgXG z=mdLEK}d~YZ((%#eU2?O@eqKza5vq{Cfrd7^a_Ii5&w58#8_Xd5!6(N_lce~myT2a zMuWfD(x3zBj;yamygSei{AiV-qVUK%8$L?-uW5sAND8Hv?x}ESMmt2{dF$3B^ZkP3 zkY0~tk@o{Lx1=vaBH<%G0w#XVXq5W2=J5rw3Q7#}oADk=9H9&&BtL#kX0s!}5nmP^ z0LBdAj<UUNS=APXTWFa?O*&4=ZVS*_qV<1h#xu8(Yvk_cA>i4_KE-MsakJiW#QCQ7 zY9JH0nu46eCAzaEwEuty>7p0#s;5{;yDHAK-{PVr2b6t+%}RsZUjwTC6vF}?HA)xP z49>%`kWWE_zvedvA9z#;sIC;%i;}>!46`$9<Vu2v)r1;YkmVeq*PDnB^}9E<*+FD^ zJ=>jo)H<6@s$>~k0A=17U;;y?wk$cPQG*&~N%DQ{JN{TBO`RV!jO=M!W~dYe3rvFs zOVS+sJVQA0xkxWb^XNbst44ZXq%C=2s(ayYxHpb6+#GjCWHUA)V~QA#WtJLzq*E<w z1#iMu{-vn6kFL#oy!5p=AcDN{8gW2{A%@|e+I@OyCfoy>rjss*$616}fsR8J(R*e= z7g{2BBdM3-XTP^L;l1%ko5FU5^j{LsM_SzC>-w;ay3U1;yE3H)7-re{og6F@AeUH| zgRCP@PCpu^s}_1MYWZGYe$q5PsLk_6sjYyjY)|$*%N>g1PjnWn1D#1H`qds#GLXF^ zf1ZWRCz)KyuA;cf6-fc^`sy^Cnt#7EqK7D8XcBC#S)MC+;X@3f62mWw2<C4FWc_Q9 zx2#K_ZMP3LLBDZKuL?ngoFsFf3&1NZz&sc97s`9z?c}98){Fsis@NkPhukWk%pi_T zWm0n0Bs73AN|Dsa;gs;LVFOe2q{6W)>wxucB2L3sG*Xf)0U|*W%>6_JoE0OAG~X7p zW<aH(rXcql7+M@uodQND*SRX*MCDKOhOKjq|I-fftn+%sH{oC7brPdUfb#at)Rf}P z^wA|67tn{|_v`cU*8!pD@(5Kc*ss=i<hZjI9hHaeEkRze-c9H>S!&1<56@Q(5QlYj z0%+sY0sEp!lbge%?2P`0v~fxtnMYL-j9rh=TWx{Osn{?E4-p||=>m0Yx?>hi<_T|c z2UYRel_uH?#z;I%-4AT^oe>1NkBurdPc!5DGPfa9RT){~A{vY$<#Ili4`1x@SoUr2 zi+$5OHw5nyCHxJTpH?iXmZQUY#KffxWVp@Yqt59FJ)F#Z>@%z9CfgxMLl!Wdh9ztQ zXMTOc8|N?f6R?Jpg$I$maUYtOfrYcS#@Wl3I1KXW++Y|;{zc5l*b`cC^XQZD@9Wni zA0R%mRlKj>=W`Xl9Rz@wQg+>b4HyTkLMkZ3kH|H^xj`Wc!uoS1qfg%X?5Riq!5?*y zSj3)XLmc@iM#!C&XK2i?R-%q6?0bR)kqKj=g$%8IMIS~gRm?#mRFAj8=Y&t~9B$+^ zXT9Lc!Ngb3rZSy{+?$$H-)-mXf?hE##Ywb(&S#h7k$ASJ@jEOG5q>E)dV*|ZwgU0| zBq8(w1V$zD`l=JGcESSU%c_o_>PJ6k-+6BhhL>Bv>W_msYTK`N+C~1J@H4a{5Wezl z8neF6=WWC-vq_OmhM3m@-`+HYogF8VQyEKygTQ&9!i>BZW@4(>`y4Y`A&i5`ueXET z0)cVPXw7IoJ?R*xA!`a<D0|P3K~F!_MAW-=t2;xFoVPs(Ro(6G<IB*Lv%|#sBgl>n z7M;TQWud*tUQad2`@UBZUi3iCw0562HFJ+Ri|Lw3t>-!}UcbC#RRT40-1nK)sBwGv zAVu0#&RHdzPyP{{&I<6Lka&3}$HA>PQXNgUn|NfXmoi>h!V1|Gib@!t9t-FdKG}5z zojISjL_<$?EAYO%v(~3))Kwg()tX;L20L|PeMR<9r|m3Tn5Ul~1!rcJ(#cqh_;~2X z+%4?4xrIK*kQiCOf9D|5C{QsL6HW~#p`DfMP9J*6xlo{rufh@j*JQheT4Pq<EWJNj z#xd_Y!G|%cr!ms*ufI{_-Wm6V>&`^qg5;0vUco*)!YSh~=}tiJCJm$5z8+L;zX(oi z^>>HjIa#@fbW7d3z6P=F&ZUPdon2#uw=|weB!r;&Mbj?MrI+2EQZRi%u5r2Y!8orC zBV&8wa2IkXYk0u}zPisCi6ZWLOrotZBTvx3)lEy4GwFuPVV3`B6|_#$xnVMZ6ZoOJ zr{vvbEu<5L|9R!lG-MhcDi0GqA~KF--!5$_DQ<YcvB#@n9Y_Ypx(qU(UfF~eRFCwP zJdr;U<xN|5Aonip4=}+{p+(s1`x-MITe)iawP{|GyFV<YRKXT%SF89QDq+4Qp-w+$ z{lttfhHMH451^0f?VsQczv^7&g}JS4-TJ6^m}q&>B-w`o@i@+P!C2vA_Ur?&ug4p- zy}(3C*6SnP*b#3huho4Aqo<EsT<t%zooG<{D0gh>ot0yV-e#wMkg$)1yxyxJ+E@S0 zgF*xJ*%+BbLM${hVri)5x^SwNWFJq|_cfO$V97!#h=SrR0&(~l-_Tybh`rXZw|nq) z-(~PTAw*N2`qx*>Wow83_X4;Sxi0}^E#_*MLD}V4RZ;UyN3YZP^}DsF0(3093nEl; z(_o}~uG|)PQ;1C90;}G-8L-j4Ms6R}(F?&OJz0<~_Fda`fk|m!v`8vLHx-ysCcW1m z6Gg9yEiYP70$SsOur8^XoWMyeJ3c`X4X(udq$IHKZz7#2uel3A)^{UZZ1Y@0yn|{0 z5kmg9#WYhXDt}^g>9UJxs3~peSCC~q1RWK0-}tNrbP{1x_im@tIG48xXUA38$5MEa zPb0ya)Hx@Zph-JK*?t_9x`&Eo3H_aF<5#0nnk#fN4I6<?ShK;C5M2adJ=|!nK*Wb- z4sFpQv@j0;2Gk5OJ&JHfCJltH&5+!UEL_o0kjEjA6B&sst5L(HQoPH`f@17+jR4}l z#Rf-~kVF-uM)DZW?3f1#EcB^$cD~4`s9hIEi9A;*OY|_l&VLp(hyD=TbnW(EMrg?v zw04Rw0$8{d*;<?3#GT@SVat_8?Fdzt;*~2ULM}}?Ii}ZD%_DB-F`!c0=M>Qz_ZRI$ zAlPWFgp-UP49cSv%8>^ty_3ueTO9PANY;oONED5beM@D5uNbb0l$!I{n3~|u07}Qo ztqfqZo8~=E;Z{*rxRG3o7pk<mt5V!-E=(~UoFWZ!7V={iU7J7LfCO8KUh8R-kE*9k z;`81Y=9^Yug*Eh>%3tW(-hJ3>dWwK1<%=`k?*E5jN(XzxNd`&cidyoFH~jsj<@>?= z97S6;cw?DcSMLzHXLRYTD~K(?|EU9+BHVk1u~iNrLbk|Zu>XOjLZ2lyPM&o+i(^qt z36Z3(kfN^^!dD%?HaoT6(a<lWF4vztIgfr$u%xHAN516Q-})<DM2eWRx#~}B>mK2J zmzvp1G6P)fZa4d5i$INif9WixSIvf=w1Z@fg-Wk0owaxLP_A|0*gL_7BAuWC@YB*W za}w@)b;DTx(-Qt)V_RqFMT}nGLWsZRc?1nY8FWI}EQIJE{I}oASjMW>T1plq)tg!` zF0lcjW_SS-?71(~ePoumcS1Q!l=C9Ton*j&?WSpCME*}qLh*;aNVacwj*8}QWruvy zuehV`P?uBjTQocPo%dT|3FX@Ue_bF*)FYe}T?Adke!aAl`iq+ksS!ZWuk9NFX8Dlj zXkbMoOf>xT%g<X;;0m#{6n;i?F{$#Y%IZRLaR&)v!hjw99e1?6I?ohOk!f!>tKY=^ zs(5=IhiDBJ99o?8rAGHhA3B0<kwd@8>Z<h5r<rH8Iq+!Nzxl`k*+F0k>k1&X6@EjX zjKBKYS*xm_0d64C*l`nMCDO{O@>;r^!V2v--9N31W^evwAjWYWd#66}m-@NQ-Q0xn z6&3O>sHupXUN*W63>C!AIC}&cl<(Gk=7=^$??!$j?-iIpOic!6j^c@s#Ny+NgiX&K zL8RB$ET7+wm$G?1C=tB9(k<m~>O;}&uwC8H*SJTh;z)%Ep5fLmt?*S0nx;|vwc&hC zbKc5)nsYcfmj&xuHB%|{GB#1toPDHN;g;+6M|SLnsQ!?iIvDP#GUuBxPTu{lq`29I z`fI!ngcW3}q-40|;^w;t4H?tRA~3%uQAGPl@sy0%GGp>06#FkYPq{;6qcNDHMTdfc z%$x0ooOKA<ef*tc%rrs^DA(NH!@<qOrs}S<IH(_?U$16&`w#a44d8m&EOd=wf~cVe z7cHA%?t<g|+Rw<4+t!`%3RacTvE%9mm3l_5j|YfWUCDsj8-AC|v8V*-CjW3YiOM)E zWB*AOLMY&`m=!(ImgXZ$U>CwlC;AmMVON<cZZQXrC_-B&*|#jcG{oD<xdN+_MB_4U z{N&&nU?;+HQn+c!m~WVMi-dmpj3CwmyLJ1tcQ(qlUUeaubNHKTy`66Q0K9ShxTnT8 z9@vkAPAs0G$U#yAbBqkBINHe{be&%ghA;Wy{i`HyBv+_TOD&?9UDEQ+7%6;m^8TL7 z&q(tg+}XSLQXw8k{{s61{Vsw2#y?5hc}TkTidr9kq0SKJe$!2p!W4^3qQS-Fm0HI) z6BOl3n<{Zxf)TSN&}-GD&F1O+>ijWS3kbavGWsF}EwLBd)FRvXL)ikg$EwW>uw(y_ zgRus3ia_+{MFjD6pLMTgP=XYKkPfk@s`v+x1rJ)PNZp>l<6D!EK?)6FnNA4w?The) zaF9HA(IQHVGH3uZ+cP{Cw<J65xy08Y^GBQQ-Z?!Ua^n2v=%-)mcD+@d0|B#tmH)tq z6l~k?{Hm3r)I31%Sq6fr{LH3H*6yJ~{vpNU|ABhM=$38As;-G%60c3vMY7+FXk6!T z34Ab54ciW)6pbRjAPO+fSq8?;dpc3=2~&(JJN*v#z*xm_(~5fdg(%z?Xqzz*W&;Ug z<%8rjmoMll{ytu;QqPy@*1jRv`M9dpUHd(C(sjY-uRfeA*1slvL(6Uy6Ck}DHl;Nd z|839L^-T6&)P3Uffp-tNtNyFxtg066gwLXo3%7~qCibr@Nwq%(a^LPEI!$_>KpLYp z1FVj;PM7GOEUFRJ{*z{-IDc5De?w<P+n2Iub}h6ZnY1<S;9@c*FOa1rLM3XPp&r|@ z|C@YtO%%}tc736tqW){#jJFX1C5u}SNuh^+`duAm|NL;<!fF{9E0oEX>WS_lh$pkd zV9gwKmUI|MU{%bp{(*YU!SzSzBlFAqU4z@n2(u*RiI$uU{un)?m5IQBVdTt#V#t3; z5q0^iap#F4pxb25)8JTB%fRCx!^`W}le6b+3Qx!$VL*klSR1zc&V$|Kgz2wFsfl50 z&xP!wSdeN_yV@u^hQ9NWF%6o9Q<J1n<n;WsC>7bMFSWwmIj&@S{SjDU=I)4gh|KEw zF#;Gko&LGez}w0rGVXcSP+aWSKi(*(vr%TQ>(T~s{&20grXinV?EI%k!|n>743UFg zr587g*Q?h&rRv+3kNs)EOb-kd^;e>_%NOt_qW>}<d<gmWCcACu2^aq-ioeO&8u?hZ ze2OS6JDK&aD_V~>RQAyT?l6|Pj+?adbxG$n2d`6TE0N(TR4NeKO9S~&;zt1*rr|1d z5%MQtFoKL$pi){?k59`fM<}AjBA}lSc3G{i#R&hxWn1RQKlarqb>ES|=U6(TAD!6> z@tMUG_P-;t&n0|{SVt#jW9!aWl>Ls-JBMSDJ8+b_#4MRO(Cnhc=ho1}DTQLU7BoN- z<W{}9=;XsxfD?*P;%%;}OqNJ6FTP9?hVN<HtI67H2v-H%OP<0W_L?+cov8hPc~$L{ z4nDt3v>;@$G4XKsthu0GV&)w%)T<>uNvm3|P}j#ez{_tNU|`Oo;Adsv7P_HG+dQSf zcZM4RaCa?#I&z^ubH9F_vE?88$c`Xq+zh=U3%8;&S{$Bf^C`1v&?E<;olKjqPB4<_ z+z6nCfndEXF<a%p+1tnU;@Oj;q-tD`bHefEPDZofrQ^bbft^J{%MQEe2G={|dT-jH zL_msXu4vWOrB?*15kfl_m+jNV^@jW9z3Mlp7IFDc9YT;+TgXuSZPPLugac?2^=`2` z@G+J&=P?#;GUrzIFue&s(eBnYU)tZK@BW9gWm?aT;7>x6PlV9m2onFj{zVJ7iw>M2 zEL8Tk5NGQ@=+-gzK4#OH@*dSMvI3Vcwca&lkYKx^b!X93Lb3@e1-W0S!uOAJ2pE`@ z66JeGM^6#tUo=c1%Dcu9bKf0A=d|K5R+Rk3mXV%j;nNe&NB{8krg{CV7Q-X%H2d1P zDr@J9uScR!Hxr)HSJuO*2$VZV&U-Vi|F_81P{saOvr`<C0>0YcE*3@+PBz1#0iSH~ zq5cl$x0L*T?Mp;;%`id#O9j?@iytLSYT>>+D{>M?b-g!nL^UYYWIVtwA<wF#YA%hg zl}S<Z51alDl|hr)WJ0~}51a0iLeQtWwh#YsESvGN-__=trMly|ql}-*T(aI7X>oTE zB1%yMuKfPqU@y8Mj>qevUg^st0af8xp0uX4P!2@6d!)0(!UX8QzZS-}m7dc=@Ck{9 z<Dpe?>*b)*$gi*3%=ax(I}s_WfN!H*kDv(@M2s?$X*1kCH|ODK?rxF5AF7ztEhk5x zS|3#2{@dhdPc5Hr7BBe2Y%=ex@`3o?3-5xH)1hCkM<$q{#S-w>EQ|;H!GwZz=8EUu zf>n#d@3BZIjuaFsw36qQGm8Ses1$dJ8ZiBsJ3!_oSg^fdjbM!gvpmYcZcd0{X!U+I z+ezs8I=1xsXKL^Pp)dTPvl^DZX7PS5Bcsu+{lopAy^gEeF&AqOU2Qs)hwz^WjVPOT z4L5)s#HMm2@}sY+!6Np1Auz&|KkT|NkSojKPAIo#SLG7jf*VOfjA9RC4KFv0fRxgd zY|WOCtP#4qfC`EMrO4f~uZb{vbYZ9}TMSH@j0{liFfw=xGPBWhyxKJTg-`*K!xjg5 z<8w35Ch?2#fc<9V6>MzwY0<)M*hcZ3<AU44;l(3%RMCQh<Nm)eQ$h-BfY8pqM$6nF zYY~juam~?-34E3}U%%sm^%VT%XGYEhNuXz$vvv96Tszr%Iud-G1EX=9XX^Kp;5LF% zlC90jKg@pZnZvT)e{PNiUoPAg{=FdQh6-*Y9A!+ItwBM2Ih71Qop>CRtsc#@CRBC^ zQ}3C0gpUt@O=#{O++l%vv}X{qL$<LVW>KPWVt28W8X=ZPCzZ5M^v#4(nyX?$2<}|c zw!v++anxo!#T&wxH_9yE?w?dEfQ*GKCjl}MSY&BMPkLI|G+X?H6Q*%IMh)hyEo~xK z`<UA|n`c4$l%dhC`bIs3Uy?Z$EW=d4OVz(%zCv_)<sFg<0bd^X*yZy<Yj~dx2{0|R zaOX7X_xk3c?zrax*r?=Wa_>yYl*ntnw=+$@EoC@mV>y}^f%nF+gmC!)LmUBhL*3}9 z5V3B%1-wv&ji?5FYJW5va~aK32wK)+NLr{O#Cml5SvR<NWOR+_QYz7%c*--61h%nt z@A0DDGRPvM^{$r(V>OY;DlaM8p7TlL={uS0_e)w!ctQ?wGiDFNlx|gSl~$YCMog1C zzwYw4VA~=u`s6G|{17ca_2`-?vUHeW`X6(j`^HRXH)nUKZ7UO5%dVz#nuWqFkFeX) zv>WRNJ6s(tkTyU%Bo4@*tp}%<kHgk@D4bjK&fHMGc<v7U*TW4E?sruucEYaM!z#t& z49BiUeOkjQ<)9H7&>X)T94{@Z+RYs}CLYxx_q=DyGTL8yR!hRR$IBlK20-2nnJf5( zPa+zF5Dfk^)U{Qd3t_rDc^%cpczk;TetGXB_$@FLu&HOLms5*>WjV6;NzmYx%7y?& zrqJ+!%f6f1f1(y{dTL}d=hv5uA~uqMk{*_RNKq-ur~yv)Kpb_nhYy-p<B7_O8HbqM zJO0<cI6)5Y*Va~yy8M<iy_Dx3-sHxv&B-HAN$#1qSggC7hR|}AXVvCq=J)3h*8-ds z<N=-w<-M)g76lPrdWdHBwp{=BS=zlQ%;1t~fXoNPKg<+*08XIl{ruXn9n3O@lsMmz z3;jtg%tgUVF(<_L?JdNOAE+mp1~xijVLumwA(GqGz;ip$99Fo!_-2S`CitgM`M;1B z_+PIAuQeU~H{3&&MP+t;h8*W#cv?=Kw0r)14%7_kKrQ{^Q<2bmE|Fxkg<PU2LiqO< zQ{OwWkgbzv*1&Y+tfWSy1k(iG(TiaF6(cs2JV^0Z6UBVl6TA+cEMZ6TN>%C1w$!Yl zPQ?A}C@Ey=7gNzQ?>h|6?yUdSXp9@ZD!-hDV+E03UAJ6HY_?hOO)^b>^>l;EPN~S! zcUs%s+wEX_b2<wngZ*ACh7^^s^pcDuUhgcN{p^4Gj+<^;EMO;6ay%ncuiy;Zzouf> z$~DYmm3~X2;{W%-%RaJoiyrq!9D(>IM=9q3`p@3{9L!fA;>Q90{<Nm26VC{kdqD@- zdH8tg?F&<_V4o443wn+XL=%jGV8!Y3*5+%3KJ(le^-6R59$NZALn-(POlDb<d@c7D z)~qRZ5g^!+zWaKrxb<OQ>&v6BDV7UeXfI+!a#YztjWZ)|kb*sw%179Y-QNSrB&r*I zNR*q5VH}*P`Xby^MTAl7VV8fWiOuLTwU#~NaNbD@{`&@(;NH~IBHPr}ec%0|nZp{S zX2m~#NEAeh;sa8vd!IfGCZ98NO-xS=gB?4mPv0$gTE>c0GmT5tzw@@}zkMp!xR;x) zbry$6`7ofb<T&9R&_=msgtkm?wx&7=iI+dsJeFPB`#Z<ook#d|L!~{~^Om&xk2VU| zOFJ)^P8HP;zP_GbCVbhX8g!upy5N$9aWY!onMsa7-;b4+e@i-ZNO|I;8&Z-TE4DM` z#();Ku2T4~61VswTv|(Q=cj)N`jhwF2>;_B%FS4YC~!|xjb0WhRc{)uwEFho6Dr+0 z23w`lkzhhB&LsK!O#RH>EcFjzn8l6#zx@WHvy|r~`ggCgF~e{AcNQnDKT!t;2usiX zg-GMirG}|9S`9?S{-LupYt|100%Jf8DWL#_BWZ?gC*#cc;yxQm7uA)(`7Te_jz#!; zP4e$}6ynK+rlIt1W6TKhg?A;(u2b;_7k&L!2f2}@haEp_Grdq?0&4jGTEv&$h7!3e z);*m&?`t@A#Cc!hcanIEMRHCx7n}u}hPGf|f|?q>{~24mybezU0s+dgtFCkimkZ92 zElP1dUH(LBz3*vJpkB!_o9n`%&>D-sBlL%W1$a%G6j?>KRE3y@JOD&Nd(IF_u^sr> z$h2*a6$)r@EB{CTj$2#ie1}msX*{(sXCN5zJ?Qe3mDDPC;WGHdgb+JA%NZ~_`y+H~ zsydO_8Q!zSR^uQ;t=~0U{1-_CyjXb<b`uj+lP5`a6Sv+5O*vCE=xf~Ge1E=1T_8kh z2Ib%!M3Euuy03C;TkeQ({Q~K~A_`m%g1bZuW$Hu0dpBTLk?AgR1e32>W|<|>u)-+Q z`J}+82uqUyOo3_qxA3baur9>j8wPlws7Z`qr6T)2`q|gr;)CII1J_R6TBtxQCHA7` zc%bm&7UPnrJ>=lNwzwwI7kVnu%jCaGF6Brd-p$b`x1dg{v6Wl4$vEYc@gn`77eghg zlhv$J8)r#qppSNMa4l>NVXoYDTDHVvXTdW2Q}@(#3FJZ{?It3Y|L*={&?iZO1Qb^I zQ(M$#<<YQz3jkYAoDYo79V{3WueSR8+jAE&BAC~0nz{2Mp}2i}WFmt)2$(nP>ntuu z>~|)s<9|T!@^-el{ihgIWGbC;S5!?^GZC0LF)$3Hy*3AS1%1pcu3B!e+PQY)2>L!n zn`Iemr%&B$d-RE<o1hE1Tn8q_ITR})Nh~f@`77V&RIiV>paxL_nC0(<KcDR;>(n8Q z(R=91^cPI%MGZ)2S?HfuzOPu*mb4s~B8I3!O{Fl_8^q63e20GTCVzvi)h*$R{D^$Q zM00yQQwu*u6CJ*t4yju97CKs_5As4d9{&UXn!Gw?Vqr}9lUqM>F;%5ogb0qh{+_)f z#Ma#pcC+)ozo&;v#4t+W-!rbCWI4NvGaAU2KQhpg@+uW0E1}Vp_n672j3rGx#K`Kw zH{FyHR$3dwY{ZUSxURII`P7ZsP1s%?G~U^DY8weY-D2l&D7d(Ko2WNi?&030t2m{L zF+)!?dEy8&hO#^v>S4o)=}6I4VW4G+IAXnUnJv4wHnfIO1==Fd@AU^CZ%=jbf=ttt z!mNpat7#ogpN!H7u{$|aQxP>ZFwCHaa8k2S<zJ0amlC58tU=SYcPhnZU2MWF@{kn7 zPXTcpD(emBp7)oi@3hl))c?6}voE!Wc%Y0H0*14*9yT5Yq96O5diM8spGRYF_pt7c zzVtc#FG_nlhLJ_J6~!3>NgrWrH}-0**O{wDO^*TvCQ;^jyrUKBvca)ib=qb@>ECaf zh;wKAclv%8*2i_B?`|GKJzHFmB?+IZy9H?eC{+=4Q4-}qz&FWRuU?2-+)L^>zY=2C zkayuSlGA_wC1pUFv54!0#G=a79`o#x7{)#K3s>uKT{MTvI%>-;PWEXHx0HgRakgd5 ztrX05XLQ*3?JxTpSvc^GZGN158f!YjLqSbN-BlYFsti+7c~&9*eDWbyZnj@W0^`9! zKSe_V1*wggaC;pwVE7@3tVGXHB7cu3exQ59kd6r4*tAf(+uw_E;AY&uL`;8l(oGs5 zlw;ojr9ld!R9dU_&%8sfWsb={j0?vacy@7ESsrNrQRsZ`ZaN++4H+VDc#xDK4Kpg0 zyTx>Dc=9AZmIB^>k0r=nHh&T<vs56Q7F-+rGz?DtvfHn(d!)|!X!d!jj0HmK8<_9T zKcAF<1JWX6`xiWBI>~c7RaDu%E>j~87X3Z9gN$H<Saco$r1y_4s~M65X5?=vsVvS* za?Na{qeMT0o)=-PEe)B9Dw~V0GLoOf%2)@-z@?4I4z-LOczn*v@u*((6Ze(5*4ANX z{~+ZFrMb1qSM@pumXdX^<K3;?UVhWqXBtz^{xz_3ZJcbE<_h;JzoF+u$w^pIX(C(H z?LlL=A_=kNh4>CWQtU6gQKS#Y{SeqkkrlE2(R}gW;{jmM@AJXz!EzO2hozi=cUE1Y z<^2qtX)H#**2=y|fm{v6T~GXkHVpK4?{_YDJz>)aAHgN&th4%HDQ&-K6MOq7+iiUv z83mP3EE8yA04u(nlCjbwW9*>n;{C0y`%Tqb8~s=X8-R_Al=hZ0Oa)j=8te!5>;xYE zI&=;e7&o9*>Q4Dk;HnKr$N}a|0Qz2q*x-)``1P-QXNu*T5YNZmMd5G}Y|G{K4JV34 za>bAJl4tFQ<jSg^TSa*fu6SES!uqlHowu#2OATSDMN#hR8wO4iapMdPLA?ra2PPbL z^u~q0$7?FR^jw>z9vJxi+Wn6e+$CyOR^b-bKH{a*kB19s{zPQ|_&Y)oEJ<rXYQ@x# zde5;<G%+C+{uHyS=)?6!<E}!)iaJajCy3%E=+B&=4Dk*WL5h#grF+3X{bl9c*TSR3 zFM7T2MsFmPn*5cTaJ?`@D}kf_4ko>r1<ohAFBTd|tZX(9u8lKm`Mm$uH2yK?_kI<S z@?KYLVnFKZA2F~H&?<(<oWO6n_5Fb5$<_CmD0JziQmo`5OQO^OyuZK;_yQ7UyFPPm zd2&N_MYsegl%zFAjJH@t+`6h7Tv^a}2qae%z4~HJW(NRvJdg`U(kl~2V!uJ|ORPax z;VXawg|m2h?phO@X?0d;cPQ5HWfXI(x?ecM)(qXZE7AL+cNYO2&O|RC`^{IJ;za5s zS(87<KLpIhSsn$hZC_*ljaKo%PwYXs;kh=@f!YRACoVzrj_}H)mTl_6vi%&o==-W$ z%bmT31?Smxc-#5W=cw%Rz{Gv*s#!fRtGI!<vsdYB1y{K@0}oGvtdI01df6{wJC@K0 zmX0jZ-E(6v9^Qk6i!fUQxnIUJbbKxhFYrMG6<!(Eo<O~`{POUC*Iw{@!=Tq~dzL!x zP|9}J-T+KomX%ZMeZ-f%tG)}$mLe=O6ZzZeBMz|hoqsU_yZwp4GPikThy}*&2SNiG zE*Cmw6M#qBSXKd$0^4_DopVgs6DNW52R$C0w5j{d`eF_SIgKmijdAw8q3H~-L^h!H zdo2xXBkKK*zxdU}-U<sb=M?zw`YMO4oMSj<c*>b&lng4An)v6sg!|t4aJ>ip(DBz4 zvS4|aaA!LxG8ogEzSwlIEEJ;GA0J(k$#w}9;&Z)}*`K??63k6qF?#l}R>puuRS2-X zASxS@7l};}6VIWMwqPK1;o4Ve;pxfFM^VqehW#ac)YnIIl-_YQIOGq0rshef$cSUN zr<>`xR3>5ueFawa#)gPQSIXXQHMxDk%gh`~IDFCy8gZhQw8&l_Vc%E*nwyq1x99rx zy23cHz9Y}!l5CWW6S4I$6jQp8{j2<|FnkkdjI!r*;^$y_)icn!Tg}{6|3Nq~T1#+v z#;#g~MT+DaYyJpfJk^&vCO~CQN23@zLN;7!{i?`!Fisupm(##47&O0wG`y9>vo0tK z3<v}emJZZ2T>Op@6%`RF;1ZBDQw8~VR`e2yci;(t^GeW2`1;NI75-}uUNh*h#rH{+ z+_T4{k<QYvv;xl@7T`Beosh&NaXH6G^C}D=4H|UKq4_x#pYZIJS5xnnha+b}euzEY z_l3-IWopZg>;}qA&>qC7E_`#pXv%P0N@xN!*<v%SGyR`s5c5sx&EW)PMOCUAC1*=Z zpnva#RHa`z*$qLKb;9X@Luz}$H|L2K|36OfNIk7p%8@S~OFqH=s~bnODw#Z?+nU?e zh{r*ldwjrL_2TKYYYOWsEQ;}eFZ<$r#K;p-Lb<yW<`5&z_|MoZ5B;zeC*c0u5?(<* zuzqeTeI$cg;(9Y^X<vQZ8N=*Bbp|yc_(0=+mh1yq69sy&#k#KV?v@w2x@)G!^LUc< z;XcO}D#AVP=hIuISXw{W^J{o7m~b(=W2E-<76-~Pb8F@p18L|%+4(~sM6;+idGL3_ z5PEtbW~ucH-_3sGJCV=zsr@s*zAIU}i?M{qef$l|A=x<b$vcK`Ye)$eG0DJgE9tc+ zi3Aa!Z#pF!fwO2$lP#Sj(&gfM*#lINdQUri;Md}aDo;yY(KS(Q#7<P-(dbP#4F`|h z(l}-U29~eIxJ3_Z&HQGxj!znN3eS{p73;+Him@$(O?*&7Q;!-kjG8x2bm;@u|KAG$ zvVPrA$nQ&@(T2;#_3P~N#BSj^G5~$sl)Bstz<m?QV4*kE8!#^AzCn(GPflK*!u^(t z+E0C3^Tn^tMx#A}6LrSj?-v)uQj?Ta6(+)OH6S4<4slm5k%jlOq<vLrNDYYraVdJU zd_(YA(JHwJW~h1SkzzT%V^}StGvcYi?l=Z4@_f$#kVIKGYsRB8nGp=a29urOTacCF zwzB|UtFUA)?3}_11iJ33BAB0*4R<V@P8I4rId?;|=xckR`}e~dK4)TCvjOlFac?=? zTh*>FA*PuF5)jvaXJ0LZo{G|`lk*`<7Emqz&5LR{AnVWYtqg(?k|W69zsVHxgegcJ z+>u>=`lO|#DX~fs0Y0wNe#a4ap$n!27)$*1ot#N~Vv0^4eY<RC+ujz%Kq5lgM&mX9 z2g-k@`+pr>Wk8dE7o|%nC8S#r5Co*VMWjoKfq)>A0s^B(cXx+$OGu7J8U`XA+vpyQ zh5_&X@3(z=;_lw_J2%dKgna3*&k+~E!{=+n^;;ss%-Z~CU_ab+q|v#JKsZOSY6;7$ z$D}OHU7<CbQ~8I>x0wb+x$@sXFr5d=t*xNKt|g~G^cOopa3@aBZx9&GEcCe>Ib3*& zjIehw79?@MGy8vW$loR%cXop-$7Ez3E+^7KGcsye(~=hZyTp#VPJw+Y_M0fHbi{cA zpY5-ju46yKo*U*TlmJ2pp5eOe9oCYZ3gM&|>c*bgsaDo$>;|%N`@jhIq;2sn@20-@ zFg`Tn)q1-3x9Dtu#LikBZ`Q-RT|Geycth|T5(8S=Z4`@-6fAab(auY|ZsE*huS`nG z&7L%2{7VSVaNxi4NB|k1&Jmz6c5wmsZ;6D$;@;hC6t%b^2~B|edY9VS9|nU~e{%C_ zeW!aSg=I?WyNxdG4$+M;u^<(B>)O+;aCQ$S;;q6YZrC^cdqX5bwR?pdmrTlCUT>^2 za$d~>PR<e&K(F!0;DGU3qfbw#KXbYyaSuscQJ)!6VcX8W8azyO=!@Z?7=6B;zht1f z(&%*W+NC&Jg03UZ|I@FGv0X3B9C>ZVHKuqavDXUoUWRx6{>47e`-jyvmcUOgpV_bS zykZLfZ`l;5Che|X6Y2h`Wo>T6@EHXF2TYSFDZHrN-Fv4yn~EiRacQ*b`2OC*(EO?s zwb@+AaoVNmi9@_bu;rAX>V_$;G1T8a@S;FttA3uk+_jKj>lr;oA|z%G;hCGx*#k}F zOgFFDnUU&l#6*B)HO#p`(P=#$z$wbvm@vpRyKxLa2>Vo!1_HA1QV(@a3?i&PdSBPI zU2o9=r(ZqB*D8Mdpt(&MLYK(Rt#x-GVnMdmgzmO8p&3W^A?qhDkXkkJ-RgIHpk&y_ zh$YoL;v}POZ|b);{5qe7w3z(SufNPMqn&7oMeUeSr`*j7J=a`gT0v6fnnaK&)X!50 z5Xc)<#Py~3M_O8_9ar*{?xMv%RmmFsLCBEn4uF#22=m>aET<$|CK<>AD=48hH?2DF zqb!Gl7op9nn+~?!FuHSS2jtk=*q#T+XG!~2(tz?6uD^d+UV6HMo)cHaF$@4;yW+jq zzv>bMPEx{kVg0YSMJL<@pD#qtCGe)7ctmi2TNcQ`#`uq&2X6c=p%N#}6Vi^uV6<nC z2ZHn1T}<cdIp}N&2DRX&Hpoq`ihOhvxmmefNWo+nQQforElL0LkEP0y&WW~q6|%&w z44UceWrYX3J~Um?gwY!KMHA?>OS3CD3jPFJi26b9aUl=bMN8j=IUj<Jm1FPIX7k&T z6g1S0lIuUvJy0{%k_uE}-}8d(2K-ke#uj%eMLHc!HJ)`>MoKc1e?*_XDb~Iu&Nr63 z(c(ATR2vM0CUrxi7k>)MzD&5t-a#YX8Wv*!L(#i<hH(?K%TY1z{I5EBD~SD3j$$k7 zEbz|wj4M=wFRNe_k9;wb9j>PVtk792Ll4h{{_EaQv0HkENRQ8k#@Hz3p^F7e=-CX3 z1fy5Ckb>`4z;jvz!MJwz_+y&!+2HCA2*x}r>x5N&q$G8jg651(E^VGQ#EotgJLRq_ zm(`U<fg(+n5r^@sS{^$?N*TN|d=9yM>?K(;?+%|^NKm@)zW69N&6uLMtny&jlYKF9 zn@)rvOH86^M60$e0k5`ic$!^Cc>McxKqu<!3toSmZU{zj%ns=zEr5fpE7)Mu=`sAf zIT;Cq8#V!ZsqWm5ANHt>iMWHf$@@6awHMD`5elA4GRjwZte9pG6c(j1S6BW&axFOb zWQ(T9;@;$LlZ0r&6Q37~(Q1gk<XQ(k-5p)&6z4Z{GIHBA*8}=KWNzfQNa>pJM@zm$ zyzJB4XLWcxNW0kS@z9kU)J-Oow%H9$AlDn}t~s%L%ufX+nM1U*1%T*5IS&F?V%Ep) zZho!2l8hQAzXukpSyQb!j?x`*N#ESu6Db)dfN5S#+*5~Vho1(r3~mp{9SkqBGM7IC zF(}O{U2L=&*(TrEn5>i{H~;=XS|3Q!jm)q<UJj^JjXbwE<ymkf18Yuk<q^QYpwDBO zb+r2S9sGiMKH_iY(~a4ep;mFUTYsN`#v>t%?<**t+f(r77cbqoaU>&gRwKl{HYw4L zhG=g_q(ycn$_ge2Z^jK+>JE9oH~kJ{Jp^QKN_x?n+AGC|ASvIqem=qlpyGIGNJkZ- zyJ8Blh<~`0@4p#6Uh!W_>*nI1<f{*to<HR`3d7)&FDZVYgX}6=u~jKDXlv(5+$2Zx z?hRlzTm;_uJX;gTm6eeCr4Bnr`NNynv)&jIo)fQC8yS^G;GvcY^JBkAtQAhw717z4 z{^xqDMDrGxQY52RdkwCj---1fwema(62{MoLTvmt_y#~94eTq1vUWf@gjL~Ndq?Qf zx+%L&d6gz($WhNu?ggY~*y<C`*7vdca@p+nz-9(O?!h9F-o#7NPp+(tJm>=BNYV&4 z-=hpXG#aN?bx+0O=S!(hsY#BV`;hd!OQCH~1WR1(dT0<*=eK$c@?~@%3HiNA!c0IS z8vl-8S?i@iQ5KgJYf+T1YI3p|^%klsjl@iNZlB(V!F3ZY2?&oi6k9uo)Sp>G_-qaw z-K2cCjy+QzoY7*IFqiZW=H)GZm-YhHkQ;S=7x_RbjH}N!KhcFCpVtDC`UkIL9n>e! z+wUGwNK{V72BJajwYal_VL8$g!Dzm%f?CGn_rGVJ{~R91WAh=e9zAu^Gh2R4Fk+Sd zk3N1^CuCWn{Qk?RX=78=w%`s-aWD_^$QYukabLFqB{a2Zk*-cw4RL}cSpv^J#uqpB z5{FW>J~Fn@ycIOfMmp<(Gyf*OIMXa11$ArQ@KV5wMG`@E|LH?BGiV^vztsxe*4S<H z>m$_x^@;s?GLxIuDRbe2TUI;~#rHtsRt?w<mp$IyoD+IS#`5^79XAMP;9FdB2ZO=C z%wGl89qfci>K@(jNJvJ{)h11s#RFPM%l!`BBt0}`8{*cCja`wht?rtJ1JtGI>~ldF zMxgDQ2>_*dUBF{zL9{eDn{n_dWfO1wm~3QL@wetyc`6zq!n!*O#+nY%kze1+2p&N` zJ4|1U47P3{T?ViIvJ8IY=XuViU@XLIArK*;$Wus3qu;}1)uGKrV^UGp9JeIxLAs$X z)T!_~ohSbL$(6HTXaucX6FKOuVlZp*3u~+=0$7&T%1>Dukd;<3U%0A{^JFKbukw7> z+7O+$sbHh7Tm#@v?p5dAaU-J5Hop-fe&?Wxr980q`{)Gm6kL~YDj__js?B&Tzgb!! zg~2`68^T9?a{3BSvMx2&Yo<gzHv0MMt--qs<1g<MvW}p)D0y?WIe#zI1#hTcACjy{ z*KHlp!lCsZ7fHd}lO_H*Iban=Ya^fg^3HJ8{e7lCo<49EYs5|Iq{Q{2gkXL^Ab4h` zkEZM~%+nMpqzQO*9<gV$Gh_ZPO1;miMwf(7;YaB*lBTij;Us?0{!<9Uh8KkMM#eaj zQl@J7v*c3<SoTsjt?2fXvwGm2-Ao~QrtJGL@F_uTlpnSbzgJ_>Ytez;P0?|m&`sw& zLnmAhpdy#iVDyKaWz&*9)!&Dgtt<Ak1K`d!fW6pN({Cv%XCI(ta4aVSTKE7H_bb(} zGaz~5OO+@lYQD}pX0-LE#|L}uS+{N&QUVKFz?A6V&vh6C&<5^r--C^nIcYapYC7t^ zxn74q@{a%5V@4|t{$yhk{y=7(K1LB;hWw-l=^J9#X<2{R5-73+hLfe?e~}EL^D1=& zj&n(jjh{m1q(jbUoPd(goaxPM<P*8JG4ME#x{zz_8E(k|l&S^~nd|CXH7TRBv6ZH> z!W>m|3|EqCz!8Yp9f#Hw^`C)yYlfZTpNqIg%C~BBV#mrCtE{L$l-ac%R%4}(8YIxn zT-2*~FdcHI5BKYPAR3HKDHtL-eOR<wCN!obn@{kC^87eW9gB~ZD#eZ8uOr$AQ-8lE ztjc`iQ>|?ZP3+ZOr2ZFaR(@i5^5hh825eO*jZ>pTgu#{_=5X~c=4%xmJq+(3j`IkW zq55P+z&?I}TQX41yx9;HFVQ70yP$(5e&AlbiOH(NNMY?6ELD69l@kfyN1o=(dsn6w zgBCNUvN6A_?kJ}q>*l#P%GWY3IT#+o+#^s@&M}J*$gBdXQe(4ZhnuW=Db}PX2~*7R z^)ke_cIlw9^~S*LVoK$lCiOOqXFrF6^EC4$+QC(8fG^(0nps(CAph;CvU%{{?`~M% zJSxa4{XVf`k08mLf}Vo%V28O+HGtXy?PCzf#ip9Y3OBbT*@G|h+{rx#tn|YqTrP26 zu<i<EicfCYza@{o`4>z|NCE5)_qt}A0`^94jwTihwPaJ(;arZbr?d1&_)`8m&YZl? z?j{(R3{}oZFNvw@ka{3<(dcXjULx7qU`=HQB1@Cf3|2FTK;;YLEwaAUZ`(>aj`k#= z=QIar1Z8+qFEwuPk?~?O6cKD3cE5U6l^$-tZZV6%q7~yFjIcPpQNbwow#mHC^@kER z$S+ftMK_f4H8`~@P__YcVRz(FL>a%&i;+6fWLR$*$(6v^vwp^T&+9GYnA)OudP&|M zuUo@8KH+wby{A8@liqEH8i05G05!YsFYn~E?TFFIAmjD?0^X*Hs);`2|NT7fzm|@f zj<$~Dqrw;yuqU^N`p`Ght0wk4$6kOO@#c>af*~eC(Swn@qWLLjJ|?1HjenBGU)X9m zeNt><+8lh@ogW_Q^~a*Eo#MQkf;E+?KuSUtIJ^xX<}PITl3W#aOt6$x1r?JAaE`7H z67DyD6@NI;?!psiTcH9WT8e@^FE%J9QCp4i8K_FscseJseMS4z=O;f6NTnvhrVkyk ze7mfU?tDJx#lVK508mJ2bUjyU6?Twm)<rbk+C;X_Wnx+LR{eo=5bB97z{Yq@b3n2Y zOpMpki@UoQe%87B?Ti`H2ZP)|AN`KhAJ-$D0p8R72j=cedIR<1GE=V$C4zbM7~Y;< ze+qECa>suY;yR5+CdLm`A77WFV4t?UYn~PPQnW%f6N{IVlidZ4O$kkdPxv?qWY=sP zv+u$dL`MtP6iCczYx($7TWT+Y$SBq|mP8Cc7d~VALf7LZvS(d;8O_c%fI-X(F4V7O zJ&{P5#bpS30nfVq`o)zGiJ>znb0+%bZt?3-!REOHpo-oQe$R|QYu|H*5~sYjg{21f zqs^59>U9<xBqcF=m0HDvA6`|Z-oLkEsQ%!w;n!vLxw}ke2{*l4K#NH^*_~BuUy~}5 zLVB@7<Xn>myxgXFlmx@cy_9V5FDr<6r0AOsMZtrLv1u`PepdG*4zpz@L;B`(tnh95 z;w>&8@UE#HerIU_CCQv)<0{6Q7Yer+G4FG@`fiJOKyIkvg{dCO<!}ISd$98nnf`b> zGJ~Hs@IfnkyR#fzarFKnC-?;;_5<dofr*G?2XO3DMaNA<N=spj8B@)n-WGNNzHYky z(wSD24V7TETpQ8#In3n(NWu?VSmlNIwPls)`Bs=R@TOLQYEGmRm|m^Oe5~yfB9x>O zRG?v6o*7F^TQ;C6#vS7sbH>RoF+&CS<i?`(+HpSOf!Pwvbr`qg4LaRqHb<QDg%>JV z>Z6YZr9-(5`rYX33>Yz*H-mvVH?pLyfRM*TUOD?{5ObX)`hF#EP0ctJa9hn_d?C*1 zVO2Zg$BzmRdmc4Pvdv<dRMdtKtl)@4MX^Jo#Ch4{`h??-sVR)&yIw~avB_Mui+?cr zH#ypC&JN73l1eSg6H$gKI5!cZCw6daJ=KR@a)s?*z;8BEWmKnMPvaJJ<XUMfsyMIK z+WIg~&iB5DJ4HxR?g0;NS~4St?rZnZD&_0TB#u+Nm%i3ikb+;}=5Mw<r-Ol7m~{&c zcFRM}4oe=euPLHU{G{Z^7&l~<OwSSnbLJ<SHA>5*FrG%c7*?3xi@BJ||8gfn`oe?v zHWO}tW7XlKC)~^iDERF7HSuEuAY$_(NC--B(f_@qn%3w9_iK_9*R$xq0^3}bRe^4% z4_U7-B^b`>4a9|h+zF4m-FrE@eI>CRL`GOp%O^XTf3L0u7GuF}sYY9%ve;mpEsez{ zV>XaQD7T5S*AdL+M^%sG#kBip4WS2RiUH1OY^`2*7e2f>4u4L$Icz#@KVcj5A1rNw z#=5$kY+wW1Nn}eO551f?ucg-7=(z*lVM8Tu_gh(p(^fXWyItB-|DC#BMiJ-kh?NlJ zBpE2AC1UsWPvraM>BM3&LK&*oW<b?Kvb7D5mc-AiYieMDt;yPCUlqgs(qr`#g&atT z!Yw(#jJ7sTVlAAF2ZSLjDAI)I)e-?__?X=MN#WrWRf_13!-x-&NV5>0K!(ZD?II*t zK^noe=yvrg0fO<JFYCjSiQuP^pql48_hO?*Xs+Xoj>Ci8BRqe8S$3Cq*X8=PwOpw! zdBncDFx3Jk{MCSRc(QQ9Ju^sXp><j|U-NX4O?_FnC6M?EfI|Iz8%cL-Xkp}knj1^6 zjDs%Bj5Wx;5C>j<rozU#f#@@i&Ev7CNq<jzun@YprNl@6?e?w_3`IJ@NIL$!8kW5i z(+hEC_AS$|?W%YS{$U{Wa5O3;2L7Q@Vd{rHDgq0a!~JX~mnR?ELP9k^@gm}oYb{lF zk0TM+(zzx-bH9-iV4)DAX2i(fxv~M*^&q`_h+4WzZ=!qI%J<bg4z0k0<u@@Iv3<b3 zDJrWN4JS`4N#th$2CNpeP>w>oq(ZKjaZB^;zs+qOiGeq(!fcK~Nz;1XI@*t;dl8;o z<2u|3G*UDq)<;9}R%&-;vFr~EIFyvPG`ge%T+tcwf8a2mxnuU`#su#8bpWr(0L{wM zM`y<Zx5}TY)3Td26m~7F>PNBOW0j!+_}n#t0c~*)7$9^=`!YV>uv7|j2Cr1VR;99< z>@$N6#aTL$En!0(d-2Dvoo&CLRXCrB=v|4jMc)UKSme>F1iGmq@SQLo1U$p5kL%n! ze>1LPebb81Y?RtxGisRjFjjtYk(gu-<VBRr7}M~lR;3r*62r#HK*M-{%K31`so@Tk zi+bEfEj+i1IzY0|qN9PuJF8QX7+l0gcjS11KPtW3Bfw9^o_~3*(9K}k23bl~O%%2S zbLg==R3s5?@-IZ`m*>BE{ItPI>1Lc<q~!oKpgB1?zF3spnM{^9#6;#jfo}Y*tVf<o z26o^A_Rpx<bz7My6j4TSn}p8S*DY*X8Qpph;z)$G)Tgo`Q17b8+hQhZl159vtLY?= zwF6h*z~CdN{-ogA+<5t|$$Q~dC_OJiCWS}7yJ4&PV9>6(=n@>n_ti(f(=hV|uhFCC z6rsUd^t%+1Zxv6*s(-4h(!Iy2#^ckTeey<CScCZxZG^i3Y@%@OSn^05GrR_c&%%AQ zXgLP&bMl?9vQS;&uS^N50`eH99GibDOiCk=MLpsr2fvBXf0I2Cg3=RF<ntK7Tls;& z)P!mEFzvG@a-mB-c;odvjn3C<rHQ{ZfJJ<yic%fsB$|ghCrbzT2ma`hkYB6r3+V|V zx_iI1ub07gOM+crc^N(IYG8<A{|3LAU$I!=tK4KZ85jQ{&Uf>qFu|p3XO^2>iGS~n zjx21#j7pWpuL5M$O1~&boz7T3Nveu}=qG9>uFVNW2@LT9qC1A9g$F*VzC5D;f~3c3 z1_s)qAtM6Bs<;$39tu)jKY|U{CVHB?bt66&<P&VomblKwcKZ!%GSSc(<C~HoZQcN$ znfreSXlabXB^PmD>fdnprLwmBjFlcp90M<&``^qw8MIH0)NS+5?5PW=Ddh~BF=_7P zbo6Q;=|>w+Z`J@kgCY@|_SS{?D4@|n>Ip^SZ-O?|Iql0pQcixyLWM)N_dAxWS+CS+ zXjNIebQOuM$^Fv{T7pbp<OJ0pf!X2-NXz$EH}i*bHeb=7FZ<ZaRB3BXitaw_zO9Wn zWVLX%YxO4YGpM|6e!G&rBoxx9VE<RoEjT~odp_S#PGw3z+oaG~G?WkI)4TE0H1{oc zs0t*L8y)Tj$vK)?`$Idj_~2J&wVaFEYg1h9ELtVs>)d3z+<#4m?i)pbOzRBR(eL(T zJ7#eM3+09gWP^~<UP+3gxB5vfeFW4wjmLt*;mOyqiksA&pZyFoa(-R{rA2rD69043 zudgZ}iD$d94cR8Pw6c$_Z>P4ica5eUd$w3t5Up8$Y+nEJ)0Z(?ski^CCB((Q0@EL) z{o;v?R!P~1@WbK4LZy3o>KZfaC%<X{Y>WZ9Ty+>ug{_HWqZ`#2O>WDXIc<Hd-gcYM zHFr)_oRP{?Z*LPi9935ZF(U@KexFWHIBn*)jV0@AFJs)6?Tc|v-3+eQP#3P5@ztTD z9{)i_Y4jV_Q;w~q^DYni<60$ti7i{eiCx>d4UF>Lz9A1^o%Xn_xrR+~KCoAEu%!_E zX_e?Seih|@(R75%>B}HfKQ!c7C%ol+(oWr&E;<C|pyLzF9F3B%(_G3Hxo%0}9FjF! zQ^^WPdf=_)VoyNQMCQAD%WlPW;Kgh#kHZUpVq%ERFjmS=SSam%qqnq{X9n&nvHbi5 zKw>MRHz&2dV|jTo0QC*lsyH9O15I}tE$x-HJJ1u2`Is(kKM~KYaThM-lDb-bXcI&& z$*=UDVcVZQ`?Iam?=h7@0}wh%d$CY*@)^dnQIvhJ{h6hRB9MLX<z6JG=liQTyAy9C zCV5e#C#X*5t6(R0)$bL(5aC^<*siBtaoZ@i8Z#1|=EbP!N9xV%d34H3*w3~_28h{7 zb(?ZKcRo+72?CSE%(L@!TzJ3J&eNxJ`xE`)r?=>ExZLqcTq6&!^LFc#6VaoY>I)%G zFqx$7Vc117{JYoIez4_sB8#x^h&RbtRk_hBvw1>yiMOK=8c2*SUVOH@+%GAshEp*U z{<dQ?|Gfz{&XamH1=2|_yYV^iz#3JQbLx^FM*{KB+5Ykm5_hh;DMGSQHhJlK@-0DK z&oun6%KW1?wYL3~Exe5v{Gp9y9w_Sz{43d;nD~?XtM;p-g`F)?CGwlW-U;jiH2=mC z33gDp=KiK4K@7iBYEb40uwPw)-LsC!{QJjMy79$9c1R#4T)CAFEq|Q$szH{V8q=1u z>X-T|7E3v)K9M1e31&pre!mG#IfNEr=I>U8y<34POzhzY)Xl4kB0SN%mZ5P{tRGmV zz8v~Je6Ub#rzZF#No>HJ16J_uY`zglVS)YbA$@b!HrW_z32eB1BPoS1?~DZ?Mn-wp zxSAA@ze+P-4E9nPLsG}$UZQu9O+k21@dez9Ki_8rOPT^MB_4AZk~`yTs{jH#pMfj= zcdoatl$~w`QU!ezi=D%?cbm8g?tF%_=AuLV&5-U2DWtlyJ|gW3V=-vr6B6+OOc&E9 zHKQ$2XnBv3qp>l1D?WziOBAs�=s4hA_T_Gm6M+-W!hwIe$v_ATC|T#S7l9lMB6# z4u9~aUX(t=#_}no>MLavG<Z_yZ^jWXu@RIgC&(p|*%`e_cwdh1@Ux)t_xo#)xIS;m zhG9i(zIBJ*LH1wNa6^ODFqbPY$3~_v+;0!B&U6aH_Lr4EZqF$hSWeNA0Y~|(An5%g z_U~3vbx&^d-$+FLqx-|*143ZPNT@&5oP_Jt$}cdJvBb4tkvu{E*~|=c-|_dnFeyGb z_woDZFvOkO@_@1V0j3*xCTCcrWLGzr$a!?M<ZWeq=*uq_qWUsml?#g1*#%ez&!pSp zA)$_7Du<`TZlX4Mu9LT!^)mLUBfapNWjU2YR^=)t18E%7nUL;&Jw$Iv%u2>9%9(OP zPv$*(hj${~wUnLCrPvb2ndn?5+u##FE8Sm_w{}<qD<V`|D&x&VG^fr{MqS)}_yN7+ zZVBzPPKKW$IoF<CG6*}j4YJl_WyQ-kVR-i#QF$+iB|gZd02BWMP>#_*JvPd5T8R(i z0e&C4PyrEtp=DAx|LRwo@7oUVC+eT_Ms_#2@15I}6|GW2#t@{+BvZC8ER#eo)l!P6 zi@*xXkY`0JsXcQ2>(TV$$KR}eaq5t89jd8xJXVfMZxm7buxd+gj^*p3F-2%JHKG<b zG64G<;NRH6?@^YhRIxI5bb5xPLa`RIDEP%FB_11!&sR0ieYbtrC1S>HgioQOy~fv9 zP&pWMh<Tq76%#ifWHO*|`xHGha2mX|ZycD8Ri`@}8&oa-5%c_x&-<Wsyp4xNsC5)G z#H_~y_K0!C32~W3qLVN>G8tlTiD8UUoW4#XXPP>LOTH9;V|emZl~JK-gm?hU;33^3 z^9inP;HMeS68+k|(i5P*XvCX>H!Q=_1&G>tk(MY~87o@)TE_5S%2V?N4aUmJ2CEJD zg*vso7#L&%|9vCCZS7(x$yT)c>a`Js{5-ibhv58)D}fLz2-Imv_@lKWPo<fZIOu`? zv%xk!i%)(4^zk!ce#fQ$?cK(|qo<oQHU;OT%uM#{VNP15^@SysIoR!=lqU6Ohf_I^ z)H@8t+`^YQaL$!Sok5~Kmya!J;r;^e%&oOzioj$SwuNe3jDmMW{NLzL&hWyk)Rn~m za4#KAc`v?QV}nnx`UFEUQ$B|DM`;oW#@Q*M7yV(aVmAy)hE>C5a2tgGaAGRN;fr95 z$$17z>DO&p@=>2Ur#VGx^)c5D4ZH(XjIxk3Vllds(B}(38hW{1zA0nQ30r)L#27uc zF5cg-i%`I`GQ9rlLP?nx-9R$^BPu6k-%ZJyxOAhLqKV0xXroI8=TLPq{DcRlQ<gXI zgau^R+O9ht8&OR;J4De2@@*2F-b@0{XbJi1#%tng>U_}+xkI~&)$7`en+(my26DJq z%IdqNK*Du9Uq}}6>U4W`W~UIX)#8rfdF*Z9n;OpqMI;5w8DiR6^zq6BoyZ}(AekV} zb=AQzLvEC*g@HvET|kB1;#mcMe)HRBhT{IMgW{H3hDwiao#?%3GtE+LR*C_6SPe92 z`J4Kajf6!L2_Nr?pKl85_-$Mp;_v+1vlvKg|NGe`gS*vH;9L>!Br{d(Z^Qbiuwkar z^tRfq<gbgcpicDw(Ob&hPn5BM9ii@W_?@1b$+rt%MYej}A<o?5hhpJ~UI%+|W2F15 zu213O?i!@s?@rj3!|^En<9>~{em^roQtU>r`^emuP#?=*^sOs<5)EU*LeVw#s}Eah zeX3nr2GF?SZ@-+jRDiC82h>IptjRaSwYCDy8;kVUM*`;;pRgx#d(6e*@yma;I*?3+ z;BKNN=i>Wx@c|0_1Cv|RJfXke2D?863*}!Mwz2|NW8%O1s<5yz+}=mPlPRwzsOA}T zfbA5}>VDmGne&rqOlKpqDjV#j6>s_oRx^={p<VO4yE6W_vXXpXC1ssW2Y8e>dB-nj znm1|C+%^n}H#Nak)>^yG3apM^Idm6@cDuVv<-BAV%a!#f@yRpQq<D3IU!VJAEl@DU z!S9gw9)f|OwP4b=-i*o!bx{U(^(bG(Ex&`{IoEw3LzboRu|Bp;2_3^bu%Vi^<M+9Y z{?o8z+`QQ6+QU3^^4t72U*sH=={UZ(I;S~>FKLWwysKTm7BFuesE1=CTUVJwjM8f$ z`Px%^^o_uGb0m4<f=K<=iiD9CR_im5M4PTK>bvN&v_PL?M#ki2^{(a&X!$zg4J8dv z_GM-V$ZL-bK^Cu#X|q(&6x}jEpz&9SF2kwc1eu@th$1LPFAwg!L*NI3xdQg!9gO)e zG&c|$4M}Ww|6X+LRYY8Yk9z&;8x+4|FS85v?fZ`|X1KJ6B4g0y86a~$HGG+Cr{HP% z%Qb5{v5H8k0;QiyiLO_E_N}+K$-v!dd5oW2El0=SmBYzA@cXPiA|959mbFu4u%SWW zG3ohEVf^jQTy?`1lhkXSFWnu>1x%iL<*)c=lbjyFJ4m72P-lAYYvo{1)y73lES(R- zBLj?@e-zk#@l%CX>?}ap?7#44V>6zwxguj?%)q9pk5R*Sfx>$<;EMWGcX@+Csh*ys z3{_BD((+*57=na&irP+M|3^^&;qz7k>oRKnvi@_ZOc&R)w9c<GNRvdK42>b&ZU}W( zrfbySXiO-{oFgn7{V0-jh`Cdni<e5$zSJ8N0fLKNwq{_976gZ+OzPeq0l5?2y@gFv zZpPE~Y9lIu32p6KTJ?sSCeONXxxaRZp3ukb%Si=sF&$=lpneQ|RrbLaHAbohi{y+i z={Da(L=z4R#fk6S0d@-FKJAqypD35HguZBLxE9iY6o0lW)5#+2qOALqb4lFrC<y?N zLUXUh5~xS{-(Q`WMWwTMx%I!BThz+OZ9%s_fJz2hf;W6G(`B?i!=jE9lMBj%&;W=_ z1G>1jeNu<KyN(S!j<zJxy8OPJd*F2fH#ol<;{BBLXA^P;4~XcZOqEP3dT+Kbb`QZp zbQCBKPJcN}jz=pp-rohOV2b<3@Iy^cj)j%?SZ_KQ5VAw8GM7H2&`z&MX_uKJ+H1zH z<&(DE;0nEr^MJm8*W3ijTrHcLm5onInSU^8X^h?O<ex0Z>J&Tw`?yB<ve{GM(Klk| zJmlr`{gnS8s^i#f?4SNX5=VV5o@U+1dhLO{(wbhKqleX|XY+$?Kzz<qY8ahbG$H(6 zr3XTKf#n;hFerV#><d>U&W2PCmwO6z4ZB>OM3W-?sXF<U5gw$_Rj)H?V!n*y>k;Mj zXCbG?xFLvFmo2=<-rj-Sv`;_}E5Xp`)7=K{ua<JU=~^cld&reXkIm~~W1>0ZN6Y!q zmF&H5bA-0)?VBk=2zA;Vz=mzdTnBEwCtax|X0Yx<CqPwtXDa5^7D0*MA^JfYM2h|d zkd{Pyou916UO^2Wvwq&r^m~fSM6wH0{tBA=MdSbS*y`yD|F0o>jf~JBg98bw!fsic z9k!AZ_1leqt)g4`rd5^a7kmE#gNFv7s0VK+)Wg}$5hAXz8$_#ddZPmrOv=MiA?tE) zx@b%Af?Bi{*u-``1`T26<nyf`>FES+KWF-x00%hSC^N9P=vkgcOT3cyy@IVm{fIiN zq*1IrPX@|ASU<^#No*|B;%L%sJRrsLTw;3_c<wbi&hhl_lK<fGo+<4^VqWvV6j|0c zZ^&dXXTptEy(Wk`wT{;sgE;Ol33{a-&-1p2UclLURKbdt?Fx@Vy{eOC&M}0(EkJ?T zSUK`FXRfF>G9X!y%xPg*P5JZs7iWd7NToH~|2$^iVx#2V-Ul7t>90cW7yX%S`9wB; z8z=mhL-!?1*E0}bgAc@H`*QQrzFuwcl(K$rrlmZg-h%ZcT|bB3KAg$AjKyn;nXsDC zDlesU!!fw>u~on|DrUuxm!~2#_ii*H)n3zO`GaHp-{cfN8eJQ{rSpCFy~}|Q`X|U! zHaf2+9}UTLh_b@^F7zQm$o~N=o}=Sy;{x?06Iq40QSRdpC|!||sLTzQ%kb~1J!9U9 z=BM|YaD&sNhXwe24@ei@;dg&}W8{CUJpX_+f}qZm9`=N3#ddpl@?CBO`@W3GOXU_q za0kM9o6)g!W!N3+azv|2O*gal!>u=*f;vh3U-=KVHOSe;Y^CUYzbEP1pKA(yr1$lo z5F`Jb(5@b@$mFI4GsRtKd<^mI%ZDk?BXvL%A{+9_jcYE${df*g^;OWU`aiCVt)+Fz zFj<<!kxgRQ#`NVK>}Qos3tY~;+n+7!V{Xmd-}5(NWFUk4G-gEAd{&;=9K)^ibLgmr z@}{}Na>Nkh;L!7)-#(C5X6gKE8^LQS<I_VCUmnH7$F+V>&b98aATSw(u`Bu%U95}_ zlr;FkUEeeUS6C$4*~|zlLF=JJt47=PH0k3@ON-q3=A@}VCWFg3@9_NZH<A51*7vhS zeT*<c80zCzsa8yv#gBi~AncE}xZ}=_-!|iiYl2eHd6K}b={qn}L=l74HXYP(zBMD^ z^b%x`FT~_k6(U>GBx`wT$M>T!9G#Qp$1U}sV=ErY!Agoj$715>pi(Qcpxj{do;eO4 zvV(H6uo!WF`mDsqb@jf7=-y9&RK_%F9*sNKdm~?ozEHs5lQTja>`Y9#jpniDgL9JH z#H*esjx9S^?@F^G)6jiLjNB>+ZZG<vdQh(Y&1bnbjzRS~s`d;>Hk|K_`aoM}!w~D# zcLxzpv8^y**!}Ndk68kid0#sXJPFso$%=5&XD1H%9Nw?cyfu8-OPN>i>k3<Zbh6w> zBYx~p0(<)B9>uD754VxFygs+_(~c1i<O}s*W}06ya}ygGVVdim#~eCow*FV&j-Cx9 zl9cDex@6M1cP9W4^(cQ>8p$W5jGdyAkUcliX^$`x-7q8i(G}(GD(&kDU*1c&{2TpN z`oF6Fbs{$>mKsH+!$HC~OU6GLqg+upBZ^h)CLni(ChN#ATf|lq!{Uaio~Y$nrWe1j zxKpcwUu^i~d0k6wAsMkJ@jW<Bb0rm=RRxdiZDpLbl~@$L-lpnU|Ds}JBsEF7tV0uq z=g|FjfOldUnyB*W&)VbC5G?)4k=7@<_YbIY7Nd#f_>@`gkzFVB(?EZbV|eV1Es_!6 zw8lk~MW!?MN5ENYpLy&&H>rD6ZJdgPtDu8~bu~e8k(|t1<k?IOZ91zl0r+)MG~r0s z#}gK!y^+qYaD<cZwB!m&X*j|krNN3MSF-YHGT(pv{iI3vnW2<bl5JfcbF+ziEHqO} zn=J8y+msZg1>>_qf2}0<z7NYMuq9@m`-)!<*g*tUmEbsbB3JJ=i5gZWcYHH>EX?9B z<DA~TwYAodAb|Ph^MfUB1Qu&uvj^Ke1Yk$b2~etCb85*OG?uQvZbLZj=AJ`$82uAr zh!?BkejYcnD06w%1ZphoMYVToee~n@FH}eWxxc*`TZJ4RL_eF!eBq#W`f=G$s&6dN z_PyY~W0=<Q1;ua)x<!7eIR%*>yelgG>3%41B5-_Vm|t@YryUO+FyY?+-P)9K^6+(p zN#}+kld-Ggl&qFb2eUcc-1?eF#8EP4pGqIS-<F|L;<IBw!C*$zO|(@e>I&o!o96mk z7K1DB7;~^t|7wldXvRDnHjT}UsF>$&;j;#I5F#L$cY_tHP#blBY+d~XG8?{Y?f%&) zswZ8l(hYBCJln$&t|&??YX0Y&PYnPhIjnsJKa;t%0#R74o_hj%r2Z!xwx|mMY(0~S zVH(>Mhw2~Rb1rcWiB0kNB$#Nd;Wn2^+B$Og{Yq{){f7lxMDIffZpNPQ88H5*;IDTl zEcZ=k^k@e9=c-&)o|c9#ikWyVQMaM;MzYfTr5C_DhnY6ijvB(wnvR+8x-NMY0mjTz zV_O}?pgzs2C_J(2I$`-{vk>LwNryg+6@0zXS8CBCwYinKJOQy@>$bI%UpMz<z4gM6 zEfUEt%Zt=ZNba$LJr7Kdm8b-(Vnfq?zf*g`eA_9qv^~E2`$webdmtR^u4dM^Aow!+ z@hb=_#Ez%rn%|@hQx#nf^uH$!Uz2?7bhvav-(mgw3*DsOGxR{bZ-N!`%JsWjyT?pt zqHrZ3bzl1a?@|4-^sBEhv!X@5Hbbcts3Qgb-!6c03EJx0ZJ@&cUrm%wTs6?06xzRY za$(G&(ndI|9^l7v_ETJ_$mz<ttmlTn{9<L2!DOu{ke^oLw|&NPZ)n(>YIc-0awehe zITd!-r;_@A{rrsJ?D@*I^Al-bGIMSt%sFf$%({9K>PE6Brb0hQ^|11BWP)9KBxhQ9 zMt#^%C#XI%5Pq9a;8j}EeHR%m>^KIES+QR#M7!3B^!{`;x`B6zUblA6s)VMkfDr!= p^gH1J2n;ChpigwoQqd!+e13P~OZHnw^j8Nl)RZ-qY85Pk{s*+L@$&!x literal 0 HcmV?d00001 diff --git a/civicrm/ext/standaloneusers/info.xml b/civicrm/ext/standaloneusers/info.xml new file mode 100644 index 0000000000..d8aae56be5 --- /dev/null +++ b/civicrm/ext/standaloneusers/info.xml @@ -0,0 +1,50 @@ +<?xml version="1.0"?> +<extension key="standaloneusers" type="module"> + <file>standaloneusers</file> + <name>Standalone Users</name> + <description>Provides user management, roles, permissions for standalone CiviCRM.</description> + <license>AGPL-3.0</license> + <maintainer> + <author>Rich Lott / Artful Robot</author> + <email>code.commits@artfulrobot.uk</email> + </maintainer> + <urls> + <url desc="Main Extension Page">http://FIXME</url> + <url desc="Documentation">http://FIXME</url> + <url desc="Support">http://FIXME</url> + <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> + </urls> + <releaseDate>2022-11-11</releaseDate> + <version>5.64.0</version> + <develStage>alpha</develStage> + <compatibility> + <ver>5.64</ver> + </compatibility> + <requires> + <ext>org.civicrm.search_kit</ext> + <ext>authx</ext> + <ext>org.civicrm.afform</ext> + </requires> + <comments>Don't enable this on a standard CMS-based install!</comments> + <classloader> + <psr4 prefix="Civi\" path="Civi"/> + <psr0 prefix="CRM_" path="."/> + </classloader> + <civix> + <namespace>CRM/Standaloneusers</namespace> + <format>23.02.1</format> + <angularModule>crmStandaloneusers</angularModule> + </civix> + <mixins> + <mixin>mgd-php@1.0.0</mixin> + <mixin>setting-php@1.0.0</mixin> + <mixin>menu-xml@1.0.0</mixin> + <mixin>smarty-v2@1.0.1</mixin> + <mixin>entity-types-php@1.0.0</mixin> + <mixin>afform-entity-php@1.0.0</mixin> + </mixins> + <upgrader>CRM_Standaloneusers_Upgrader</upgrader> + <tags> + <tag>mgmt:hidden</tag> + </tags> +</extension> diff --git a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php new file mode 100644 index 0000000000..692ea568bd --- /dev/null +++ b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Roles.mgd.php @@ -0,0 +1,97 @@ +<?php +use CRM_Standaloneusers_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_Roles', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Roles', + 'label' => E::ts('Roles'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'Role', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'label', + 'is_active', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Roles_SearchDisplay_Roles_Table_1', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Roles_Table_1', + 'label' => E::ts('Roles Table 1'), + 'saved_search_id.name' => 'Roles', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'label', + 'dataType' => 'String', + 'label' => E::ts('Label'), + 'sortable' => TRUE, + 'link' => [ + 'path' => '/civicrm/admin/role#?Role1=[id]', + 'entity' => '', + 'action' => '', + 'join' => '', + 'target' => '', + ], + ], + [ + 'type' => 'field', + 'key' => 'is_active', + 'dataType' => 'Boolean', + 'label' => E::ts('Active'), + 'sortable' => TRUE, + 'rewrite' => '', + 'alignment' => '', + ], + ], + 'actions' => TRUE, + 'classes' => [ + 'table', + 'table-striped', + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php new file mode 100644 index 0000000000..d4e0e2ac8a --- /dev/null +++ b/civicrm/ext/standaloneusers/managed/SavedSearch_Administer_Users.mgd.php @@ -0,0 +1,137 @@ +<?php +use CRM_Standaloneusers_ExtensionUtil as E; + +return [ + [ + 'name' => 'SavedSearch_Users', + 'entity' => 'SavedSearch', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Users', + 'label' => E::ts('Administer Users'), + 'form_values' => NULL, + 'mapping_id' => NULL, + 'search_custom_id' => NULL, + 'api_entity' => 'User', + 'api_params' => [ + 'version' => 4, + 'select' => [ + 'id', + 'username', + 'email', + 'is_active', + 'when_created', + 'when_last_accessed', + ], + 'orderBy' => [], + 'where' => [], + 'groupBy' => [], + 'join' => [], + 'having' => [], + ], + 'expires_date' => NULL, + 'description' => NULL, + ], + 'match' => [ + 'name', + ], + ], + ], + [ + 'name' => 'SavedSearch_Users_SearchDisplay_Users', + 'entity' => 'SearchDisplay', + 'cleanup' => 'always', + 'update' => 'unmodified', + 'params' => [ + 'version' => 4, + 'values' => [ + 'name' => 'Users', + 'label' => E::ts('Users'), + 'saved_search_id.name' => 'Users', + 'type' => 'table', + 'settings' => [ + 'description' => NULL, + 'sort' => [], + 'limit' => 50, + 'pager' => [], + 'placeholder' => 5, + 'columns' => [ + [ + 'type' => 'field', + 'key' => 'id', + 'dataType' => 'Integer', + 'label' => E::ts('id'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'username', + 'dataType' => 'String', + 'label' => E::ts('Username'), + 'sortable' => TRUE, + 'link' => [ + 'path' => '/civicrm/admin/user#?User1=[id]', + 'entity' => '', + 'action' => '', + 'join' => '', + 'target' => '', + ], + ], + [ + 'type' => 'field', + 'key' => 'email', + 'dataType' => 'String', + 'label' => E::ts('Email'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'is_active', + 'dataType' => 'Boolean', + 'label' => E::ts('Active?'), + 'sortable' => TRUE, + 'editable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'when_created', + 'dataType' => 'Timestamp', + 'label' => E::ts('When Created'), + 'sortable' => TRUE, + ], + [ + 'type' => 'field', + 'key' => 'when_last_accessed', + 'dataType' => 'Timestamp', + 'label' => E::ts('When Last Accessed'), + 'sortable' => TRUE, + ], + ], + 'actions' => [ + 'delete', + 'disable', + 'download', + 'enable', + ], + 'classes' => [ + 'table', + 'table-striped', + ], + 'addButton' => [ + 'path' => '/civicrm/admin/user#', + 'text' => E::ts('Add User'), + 'icon' => 'fa-plus', + ], + ], + 'acl_bypass' => FALSE, + ], + 'match' => [ + 'name', + 'saved_search_id', + ], + ], + ], +]; diff --git a/civicrm/ext/standaloneusers/phpunit.xml.dist b/civicrm/ext/standaloneusers/phpunit.xml.dist new file mode 100644 index 0000000000..ea391745fa --- /dev/null +++ b/civicrm/ext/standaloneusers/phpunit.xml.dist @@ -0,0 +1,18 @@ +<?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"> + <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/> + </listener> + </listeners> +</phpunit> diff --git a/civicrm/ext/standaloneusers/standaloneusers.civix.php b/civicrm/ext/standaloneusers/standaloneusers.civix.php new file mode 100644 index 0000000000..fb08289f80 --- /dev/null +++ b/civicrm/ext/standaloneusers/standaloneusers.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_Standaloneusers_ExtensionUtil { + const SHORT_NAME = 'standaloneusers'; + const LONG_NAME = 'standaloneusers'; + const CLASS_PREFIX = 'CRM_Standaloneusers'; + + /** + * 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_Standaloneusers_ExtensionUtil as E; + +/** + * (Delegated) Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config + */ +function _standaloneusers_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 _standaloneusers_civix_civicrm_install() { + _standaloneusers_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 _standaloneusers_civix_civicrm_enable(): void { + _standaloneusers_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 _standaloneusers_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 = _standaloneusers_civix_insert_navigation_menu($entry['child'], implode('/', $path), $item); + } + } + return $found; + } +} + +/** + * (Delegated) Implements hook_civicrm_navigationMenu(). + */ +function _standaloneusers_civix_navigationMenu(&$nodes) { + if (!is_callable(['CRM_Core_BAO_Navigation', 'fixNavigationMenu'])) { + _standaloneusers_civix_fixNavigationMenu($nodes); + } +} + +/** + * Given a navigation menu, generate navIDs for any items which are + * missing them. + */ +function _standaloneusers_civix_fixNavigationMenu(&$nodes) { + $maxNavID = 1; + array_walk_recursive($nodes, function($item, $key) use (&$maxNavID) { + if ($key === 'navID') { + $maxNavID = max($maxNavID, $item); + } + }); + _standaloneusers_civix_fixNavigationMenuItems($nodes, $maxNavID, NULL); +} + +function _standaloneusers_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'])) { + _standaloneusers_civix_fixNavigationMenuItems($nodes[$origKey]['child'], $maxNavID, $nodes[$origKey]['attributes']['navID']); + } + } +} diff --git a/civicrm/ext/standaloneusers/standaloneusers.php b/civicrm/ext/standaloneusers/standaloneusers.php new file mode 100644 index 0000000000..d3bae6f5d2 --- /dev/null +++ b/civicrm/ext/standaloneusers/standaloneusers.php @@ -0,0 +1,66 @@ +<?php + +require_once 'standaloneusers.civix.php'; +// phpcs:disable +use CRM_Standaloneusers_ExtensionUtil as E; +// phpcs:enable + +/** + * Implements hook_civicrm_config(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_config/ + */ +function standaloneusers_civicrm_config(&$config) { + _standaloneusers_civix_civicrm_config($config); +} + +/** + * Implements hook_civicrm_install(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_install + */ +function standaloneusers_civicrm_install() { + _standaloneusers_civix_civicrm_install(); +} + +/** + * Implements hook_civicrm_enable(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_enable + */ +function standaloneusers_civicrm_enable() { + _standaloneusers_civix_civicrm_enable(); +} + +// --- Functions below this ship commented out. Uncomment as required. --- + +/** + * Implements hook_civicrm_preProcess(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_preProcess + */ +//function standaloneusers_civicrm_preProcess($formName, &$form) { +// +//} + +/** + * Implements hook_civicrm_navigationMenu(). + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_navigationMenu + */ +// function standaloneusers_civicrm_navigationMenu(&$menu) { +// _standalineusers_addUserMenus($menu); +// } + +// function _standaloneusers_addUserMenus(&$menu) { +// _standaloneusers_civix_insert_navigation_menu($menu, 'Administer/Users and Permissions', [ +// 'label' => E::ts('Users'), +// 'name' => 'admin_users', +// 'url' => 'civicrm/search#/display/Users/Users', +// 'permission' => 'cms:administer users', +// 'operator' => 'OR', +// 'separator' => 0, +// 'weight' => 0, +// ]); +// _standaloneusers_civix_navigationMenu($menu); +// } diff --git a/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl new file mode 100644 index 0000000000..3a50bfd7a2 --- /dev/null +++ b/civicrm/ext/standaloneusers/templates/CRM/Standaloneusers/Page/Login.tpl @@ -0,0 +1,339 @@ +<style> +{literal} +/***Structure**** + Variables (comment out your subtheme) + - Finsbury Park + - Jerry Seinfeld + - Shoreditch (soon) + - Aah (soon) + Resets + Base +****************/ + +/*************** + Variables +****************/ + +/* Finsbury Park + +:root { + --roundness: 0.25rem; + --font-family: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans, Ubuntu,Cantarell,"Helvetica Neue",Helvetica,Arial,sans-serif,"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; + --text-colour: #000; + --text-size: 0.9rem; + --error-colour: #aa0c0c; + --label-colour: #000; + --background-colour: #ededed; + --box-border: 1px #cdcdcd solid; + --box-padding: 2rem 1.75rem; + --box-shadow: none; + --box-roundness: 0.25rem; + --box-background: #fff; + --input-border: 1px solid #ccc; + --input-padding: 0.5rem; + --input-shadow: inset 0 1px 1px rgba(0,0,0,.075); + --button-border: 1px solid #bbb; + --button-shadow: 0 1px 2px rgba(0,0,0,0.05); + --button-padding: 5px 15px; + --button-text-colour: #3e3e3e; + --button-background: #f0f0f0; +} + +/* Shoreditch + +:root { + --roundness: 2px; + --font-family: "Open Sans","Helvetica Neue",Helvetica,Arial,sans-serif; + --text-colour: #232429; + --text-size: 0.9rem; + --error-colour: #cf3458; + --label-colour: #464354; + --background-colour: #f3f6f7; + --box-border: 0 transparent solid; + --box-padding: 20px; + --box-shadow: 0 3px 18px 0 rgba(48,40,40,0.25); + --box-roundness: 2px; + --box-background: #fff; + --input-border: 1px solid #c2cfd8; + --input-padding: 5px 10px; + --input-shadow: inset 0 0 3px 0 rgba(0,0,0,0.2); + --button-border: 0 solid transparent; + --button-shadow: none; + --button-padding: 8px 28px; + --button-text-colour: #fff; + --button-background: #0071bd; +} + +/* Aah */ + +:root { + --roundness: 3px; + --font-family: Lato,Helvetica,Arial,sans-serif; + --text-colour: #222; + --text-size: 0.9rem; + --error-colour: #a00; + --success-colour: #86c66c; + --label-colour: #464354; + --background-colour: rgb(242,242,237); + --box-border: 0 transparent solid; + --box-padding: 1.6rem; + --box-shadow: none; + --box-roundness: 0; + --box-background: #fff; + --input-border: 1px solid rgba(0,0,0,.2); + --input-padding: 5px 10px; + --input-shadow: inset 0 0 3px 0 rgba(0,0,0,0.2); + --button-border: 0 solid transparent; + --button-shadow: 0 0 6px rgba(0,0,0,.2); + --button-padding: .4rem 1.6rem; + --button-text-colour: #fff; + --button-background: #2c98ed; + --button-text-shadow: none; +} + +/* Ffresh + +:root { + --roundness: 2rem; + --font-family: Lato,Helvetica,Arial,sans-serif; + --text-colour: #222; + --text-size: 1rem; + --error-colour: #a00; + --label-colour: #464354; + --background-colour: #2c98ed; + --box-border: 0 transparent solid; + --box-padding: 1.6rem; + --box-shadow: 0 0 10px 0 rgba(0,0,0,0.2); + --box-roundness: 1.75rem; + --box-background: #fff; + --input-border: 2px solid #2c98ed; + --input-padding: 0.75rem; + --input-shadow: none; + --button-border: 0 solid transparent; + --button-shadow: none; + --button-padding: 0.75rem 2rem; + --button-text-colour: #fff; + --button-background: #2c98ed; +} + +/*************** + Base +****************/ + +body { + background-color: var(--background-colour); + font-family: var(--font-family); + color: var(--text-colour); + font-size: var(--text-size); +} +#crm-container.standalone-entry * { + box-sizing: border-box; +} +a { + text-decoration: none; + font-size: 90%; +} +a:hover, a:focus { + text-decoration: underline; +} +.flex { + display: flex; + justify-content: space-between; + align-items: center; +} + +/*************** + UI Elements +****************/ + +#crm-container.standalone-entry .mid-block { + margin: 0; + background-color: var(--box-background); + border: var(--box-border); + border-radius: var(--box-roundness); + padding: var(--box-padding); + box-shadow: var(--box-shadow); +} +#crm-container.standalone-entry img { + width: 100%; + max-width: 400px; + margin-bottom: 2rem; +} +#crm-container.standalone-entry label { + display: inline-block; + max-width: 100%; + margin-bottom: 5px; + font-weight: 700; + color: var(--label-colour); +} +#crm-container.standalone-entry input { + display: block; + width: 100%; + color: #555; + background-color: #fff; + background-image: none; + margin-bottom: 0.75rem; + padding: var(--input-padding); + font-size: var(--text-size); + border-radius: var(--roundness); + border: var(--input-border); + box-shadow: var(--input-shadow); +} +#crm-container.standalone-entry input:focus, +#crm-container.standalone-entry input:focus-visible { + border: 1px solid #66afe9; +} +#crm-container.standalone-entry .btn { + display: inline-block; + margin:0; + text-align: center; + vertical-align: middle; + touch-action: manipulation; + cursor: pointer; + background-image: none; + font-size: var(--text-size); + background-color: var(--button-background); + color: var(--button-text-colour); + border: var(--button-border); + padding: var(--button-padding); + border-radius: var(--roundness); + font-family: var(--font-family); + box-shadow: var(--button-shadow); + text-shadow: var(--button-text-shadow); +} +#crm-container.standalone-entry .btn:hover, +#crm-container.standalone-entry .btn:focus { + filter: brightness(80%); +} +#crm-container.standalone-entry .float-right { + float: right; + font-size: 90%; + margin-top: 0.2rem; +} +#crm-container.standalone-entry .form-alert { + color: var(--error-colour); + margin: 1rem 0; +} + + +#loggedOutNotice { + text-align: center; + font-weight: bold; + padding: var(--box-padding); + background-color: var(--success-colour); + margin: 1rem 0; + border-radius: var(--box-roundness); +} + +@media (min-width: 768px) { + #crm-container.standalone-entry { + width: 60vw; + margin: 20vh auto 0; + } +} +@media (min-width: 960px) { + #crm-container.standalone-entry { + width: 30vw; + } +} +{/literal} +</style> + +<div id="crm-container" class="crm-container standalone-entry"> + <div class="mid-block"> + <img src="{$logoUrl}" alt="logo for CiviCRM, with an intersecting blue and green triangle"> + <div class="message info" style="display:none;" id="loggedOutNotice">You have been logged out.</div> + <form> + <div> + <label for="exampleInputEmail1" class="form-label">Username</label> + <input type="email" class="form-control" id="usernameInput" aria-describedby="emailHelp"> + </div> + <div> + <label for="exampleInputPassword1" class="form-label">Password</label> + <input type="password" class="form-control" id="passwordInput"> + </div> + <div id="error" style="display:none;" class="form-alert">Your username and password do not match</div> + <div class="flex"> + <a href="request.html">Forgotten password?</a> + <button id="loginSubmit" type="submit" class="btn btn-secondary crm-button">Submit</button> + </div> + </form> + </div> +</div> +{literal} +<script> +document.addEventListener('DOMContentLoaded', () => { + + const submitBtn = document.getElementById('loginSubmit'), + username = document.getElementById('usernameInput'), + password = document.getElementById('passwordInput'), + loggedOutNotice = document.getElementById('loggedOutNotice'); + + if (window.location.search === '?justLoggedOut') { + loggedOutNotice.style.display = ''; + console.log("successful logout"); + } + else { + console.log("no successful logout"); + } + + submitBtn.addEventListener('click', async e => { + e.preventDefault(); + + const response = await fetch(CRM.url("civicrm/authx/login"), { + method: 'POST', + headers: { + 'Content-Type': 'application/x-www-form-urlencoded' + }, + //body: '_authx=Basic ' + btoa(encodeURIComponent(`${username.value}:${password.value}`)) + body: '_authx=Basic ' + encodeURIComponent(btoa(`${username.value}:${password.value}`)) + }); + if (!response.ok) { + const contentType = response.headers.get("content-type"); + let msg = 'Unexpected error'; + if (!contentType || !contentType.includes("application/json")) { + // Non-JSON response; an error. + msg = await response.text(); + // Example error string: 'HTTP 401 Invalid credential' + msg = msg.replace(/^HTTP \d{3} /,''); + } + else { + let responseObj = await response.json(); + console.log("responseObj with error", responseObj); + } + alert(`Sorry, that didn‘t work. ${msg}`); + } + else { + // OK response (it includes contact_id and user_id in JSON, but we don't need those) + window.location = '/civicrm/'; + } + }); +}); +/* (function($) { */ +/* var request = new XMLHttpRequest(); */ +/* request.open("POST", ); */ +/* request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); */ +/* request.responseType = "json"; */ +/* request.onreadystatechange = function() { */ +/* console.log(request.response); */ +/* if (request.readyState == 4) { */ +/* if (request.status == 200) { */ +/* if (request.response.user_id > 0) { */ +/* window.location.href = "/civicrm?reset=1"; */ +/* } else { */ +/* // probably won't ever be here? */ +/* alert("Success but fail because ???"); */ +/* console.log(request.response); */ +/* } */ +/* } else { */ +/* // todo - send errors back to the form via whatever forms framework we'll be using */ +/* alert("Fail with status code " + request.status + " " + request.statusText); */ +/* console.log(request.response); */ +/* } */ +/* } */ +/* }; */ +/* var data = '_authx=Basic ' + btoa(encodeURIComponent($('#username').val()) + ':' + $('#password').val()); */ +/* request.send(data); */ +/* }); */ +</script> +{/literal} diff --git a/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php b/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php new file mode 100644 index 0000000000..9336b7ae23 --- /dev/null +++ b/civicrm/ext/standaloneusers/tests/phpunit/Civi/Standalone/SecurityTest.php @@ -0,0 +1,148 @@ +<?php +namespace Civi\Standalone; + +use CRM_Standaloneusers_ExtensionUtil as E; +use Civi\Test\EndToEndInterface; +use Civi\Test\TransactionalInterface; + +/** + * FIXME - Add test description. + * + * Tips: + * - With HookInterface, you may implement CiviCRM hooks directly in the test class. + * Simply create corresponding functions (e.g. "hook_civicrm_post(...)" or similar). + * - With TransactionalInterface, any data changes made by setUp() or test****() functions will + * rollback automatically -- as long as you don't manipulate schema or truncate tables. + * If this test needs to manipulate schema or truncate tables, then either: + * a. Do all that using setupHeadless() and Civi\Test. + * b. Disable TransactionalInterface, and handle all setup/teardown yourself. + * + * Fun fact: Running E2E tests with TransactionalInterface is usually prohibitive because of the + * split DB. However, with Standalone, there's a single DB, so it may work some of the time. + * (It only becomes prohibitive if you actually use HTTP.) + * + * @group e2e + */ +class SecurityTest extends \PHPUnit\Framework\TestCase implements EndToEndInterface, TransactionalInterface { + + protected $originalUF; + protected $originalUFPermission; + protected $contactID; + protected $userID; + + const ADMIN_ROLE_ID = 1; + + public static function setUpBeforeClass(): void { + parent::setUpBeforeClass(); + \Civi\Test::e2e() + // ->install(['authx', 'org.civicrm.search_kit', 'org.civicrm.afform', 'standaloneusers']) + // We only run on "Standalone", so all the above is given. + // ->installMe(__DIR__) This causes failure, so we do ↑ + ->apply(FALSE); + } + + public function setUp():void { + parent::setUp(); + if (CIVICRM_UF !== 'Standalone') { + $this->markTestSkipped('Test only applies on Standalone'); + } + } + + public function tearDown():void { + $this->switchBackFromOurUFClasses(TRUE); + parent::tearDown(); + } + + public function testCreateUser():void { + [$contactID, $userID, $security] = $this->createFixtureContactAndUser(); + + $user = \Civi\Api4\User::get(FALSE) + ->addSelect('*', 'uf_match.*') + ->addWhere('id', '=', $userID) + ->addJoin('UFMatch AS uf_match', 'INNER', ['uf_match.uf_id', '=', 'id']) + ->execute()->single(); + + $this->assertEquals('user_one', $user['username']); + $this->assertEquals('user_one@example.org', $user['email']); + $this->assertStringStartsWith('$', $user['password']); + + $this->assertTrue($security->checkPassword('secret1', $user['password'])); + $this->assertFalse($security->checkPassword('some other password', $user['password'])); + } + + public function testPerms() { + [$contactID, $userID, $security] = $this->createFixtureContactAndUser(); + + // Create a custom role + $roleID = \Civi\Api4\Role::create(FALSE) + ->setValues([ + 'name' => 'demo_role', + 'label' => 'demo_role', + 'permissions' => [ + // Main control for access to the main CiviCRM backend and API. Give to trusted roles only. + 'access CiviCRM', + 'view all contacts', + 'add contacts', + 'edit all contacts', + // 'administer CiviCRM' // Perform all tasks in the Administer CiviCRM control panel and Import Contacts + ], + ])->execute()->first()['id']; + + // Give our user this role only. + \Civi\Api4\User::update(FALSE) + ->addValue('roles:name', ['demo_role']) + ->addWhere('id', '=', $userID) + ->execute(); + + $this->switchToOurUFClasses(); + foreach (['access CiviCRM', 'view all contacts', 'add contacts', 'edit all contacts'] as $allowed) { + $this->assertTrue(\CRM_Core_Permission::check([$allowed], $contactID), "Should have '$allowed' permission but don't"); + } + foreach (['administer CiviCRM', 'access uploaded files'] as $notAllowed) { + $this->assertFalse(\CRM_Core_Permission::check([$notAllowed], $contactID), "Should NOT have '$allowed' permission but do"); + } + $this->switchBackFromOurUFClasses(); + } + + protected function switchToOurUFClasses() { + if (!empty($this->originalUFPermission)) { + throw new \RuntimeException("are you calling switchToOurUFClasses twice?"); + } + $this->originalUFPermission = \CRM_Core_Config::singleton()->userPermissionClass; + $this->originalUF = \CRM_Core_Config::singleton()->userSystem; + \CRM_Core_Config::singleton()->userPermissionClass = new \CRM_Core_Permission_Standalone(); + \CRM_Core_Config::singleton()->userSystem = new \CRM_Utils_System_Standalone(); + } + + protected function switchBackFromOurUFClasses($justInCase = FALSE) { + if (!$justInCase && empty($this->originalUFPermission)) { + throw new \RuntimeException("are you calling switchBackFromOurUFClasses() twice?"); + } + \CRM_Core_Config::singleton()->userPermissionClass = $this->originalUFPermission; + \CRM_Core_Config::singleton()->userSystem = $this->originalUF; + $this->originalUFPermission = $this->originalUF = NULL; + } + + public function createFixtureContactAndUser(): array { + + $contactID = \Civi\Api4\Contact::create(FALSE) + ->setValues([ + 'contact_type' => 'Individual', + 'display_name' => 'Admin McDemo', + ])->execute()->first()['id']; + + $security = Security::singleton(); + $params = ['cms_name' => 'user_one', 'cms_pass' => 'secret1', 'notify' => FALSE, 'contactID' => $contactID, 'user_one@example.org' => 'user_one@example.org']; + + $this->switchToOurUFClasses(); + $userID = \CRM_Core_BAO_CMSUser::create($params, 'user_one@example.org'); + $this->switchBackFromOurUFClasses(); + + $this->assertGreaterThan(0, $userID); + $this->contactID = $contactID; + $this->userID = $userID; + + return [$contactID, $userID, $security]; + } + +} diff --git a/civicrm/ext/standaloneusers/tests/phpunit/bootstrap.php b/civicrm/ext/standaloneusers/tests/phpunit/bootstrap.php new file mode 100644 index 0000000000..eaa8379442 --- /dev/null +++ b/civicrm/ext/standaloneusers/tests/phpunit/bootstrap.php @@ -0,0 +1,65 @@ +<?php + +ini_set('memory_limit', '2G'); + +// phpcs:disable +eval(cv('php:boot --level=classloader', 'phpcode')); +// phpcs:enable +// Allow autoloading of PHPUnit helper classes in this extension. +$loader = new \Composer\Autoload\ClassLoader(); +$loader->add('CRM_', [__DIR__ . '/../..', __DIR__]); +$loader->addPsr4('Civi\\', [__DIR__ . '/../../Civi', __DIR__ . '/Civi']); +$loader->add('api_', [__DIR__ . '/../..', __DIR__]); +$loader->addPsr4('api\\', [__DIR__ . '/../../api', __DIR__ . '/api']); + +$loader->register(); + +/** + * Call the "cv" command. + * + * @param string $cmd + * The rest of the command to send. + * @param string $decode + * Ex: 'json' or 'phpcode'. + * @return mixed + * Response output (if the command executed normally). + * For 'raw' or 'phpcode', this will be a string. For 'json', it could be any JSON value. + * @throws \RuntimeException + * If the command terminates abnormally. + */ +function cv(string $cmd, string $decode = 'json') { + $cmd = 'cv ' . $cmd; + $descriptorSpec = [0 => ['pipe', 'r'], 1 => ['pipe', 'w'], 2 => STDERR]; + $oldOutput = getenv('CV_OUTPUT'); + putenv('CV_OUTPUT=json'); + + // Execute `cv` in the original folder. This is a work-around for + // phpunit/codeception, which seem to manipulate PWD. + $cmd = sprintf('cd %s; %s', escapeshellarg(getenv('PWD')), $cmd); + + $process = proc_open($cmd, $descriptorSpec, $pipes, __DIR__); + putenv("CV_OUTPUT=$oldOutput"); + fclose($pipes[0]); + $result = stream_get_contents($pipes[1]); + fclose($pipes[1]); + if (proc_close($process) !== 0) { + throw new RuntimeException("Command failed ($cmd):\n$result"); + } + switch ($decode) { + case 'raw': + return $result; + + case 'phpcode': + // If the last output is /*PHPCODE*/, then we managed to complete execution. + if (substr(trim($result), 0, 12) !== '/*BEGINPHP*/' || substr(trim($result), -10) !== '/*ENDPHP*/') { + throw new \RuntimeException("Command failed ($cmd):\n$result"); + } + return $result; + + case 'json': + return json_decode($result, 1); + + default: + throw new RuntimeException("Bad decoder format ($decode)"); + } +} diff --git a/civicrm/ext/standaloneusers/xml/Menu/standaloneusers.xml b/civicrm/ext/standaloneusers/xml/Menu/standaloneusers.xml new file mode 100644 index 0000000000..e82ee26f44 --- /dev/null +++ b/civicrm/ext/standaloneusers/xml/Menu/standaloneusers.xml @@ -0,0 +1,14 @@ +<?xml version="1.0"?> +<menu> + <item> + <path>civicrm/login</path> + <page_callback>CRM_Standaloneusers_Page_Login</page_callback> + <title>Login</title> + <access_arguments>*always allow*</access_arguments> + </item> + <item> + <path>civicrm/logout</path> + <page_callback>CRM_Standaloneusers_Page_Login::logout</page_callback> + <access_arguments>*always allow*</access_arguments> + </item> +</menu> diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.entityType.php b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.entityType.php new file mode 100644 index 0000000000..881922985e --- /dev/null +++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.entityType.php @@ -0,0 +1,10 @@ +<?php +// This file declares a new entity type. For more details, see "hook_civicrm_entityTypes" at: +// https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes +return [ + [ + 'name' => 'Role', + 'class' => 'CRM_Standaloneusers_DAO_Role', + 'table' => 'civicrm_role', + ], +]; diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml new file mode 100644 index 0000000000..4c0e0d0abc --- /dev/null +++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/Role.xml @@ -0,0 +1,71 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> + +<table> + <base>CRM/Standaloneusers</base> + <class>Role</class> + <name>civicrm_role</name> + <comment>A Role holds a set of permissions. Roles may be granted to Users.</comment> + <log>true</log> + + <field> + <name>id</name> + <type>int unsigned</type> + <required>true</required> + <comment>Unique Role ID</comment> + <html> + <type>Number</type> + </html> + </field> + <primaryKey> + <name>id</name> + <autoincrement>true</autoincrement> + </primaryKey> + + <field> + <name>name</name> + <comment>Machine name for this role</comment> + <type>varchar</type> + <length>60</length> + <required>true</required> + <html> + <type>Text</type> + </html> + </field> + + <field> + <name>label</name> + <comment>Human friendly name for this role</comment> + <type>varchar</type> + <length>128</length> + <required>true</required> + <html> + <type>Text</type> + </html> + </field> + + <field> + <name>permissions</name> + <comment>List of permissions granted by this role</comment> + <type>text</type> + <required>true</required> + <pseudoconstant> + <callback>CRM_Core_SelectValues::permissions</callback> + </pseudoconstant> + <html> + <type>Select</type> + </html> + <serialize>SEPARATOR_BOOKEND</serialize> + </field> + + <field> + <name>is_active</name> + <title>Role is active</title> + <comment>Only active roles grant permissions</comment> + <type>boolean</type> + <default>1</default> + <html> + <type>CheckBox</type> + </html> + </field> + +</table> diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php new file mode 100644 index 0000000000..5ef16e5b9d --- /dev/null +++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.entityType.php @@ -0,0 +1,10 @@ +<?php +// This file declares a new entity type. For more details, see "hook_civicrm_entityTypes" at: +// https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_entityTypes +return [ + [ + 'name' => 'User', + 'class' => 'CRM_Standaloneusers_DAO_User', + 'table' => 'civicrm_user', + ], +]; diff --git a/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml new file mode 100644 index 0000000000..4cb23909f5 --- /dev/null +++ b/civicrm/ext/standaloneusers/xml/schema/CRM/Standaloneusers/User.xml @@ -0,0 +1,149 @@ +<?xml version="1.0" encoding="iso-8859-1" ?> + +<table> + <base>CRM/Standaloneusers</base> + <class>User</class> + <name>civicrm_user</name> + <comment>A standalone user account</comment> + <labelField>username</labelField> + <searchField>username</searchField> + <descriptionField>email</descriptionField> + <log>true</log> + <paths> + <add>civicrm/user</add> + <update>civicrm/user/#?User1=[id]</update> + </paths> + + <field> + <name>id</name> + <type>int unsigned</type> + <required>true</required> + <comment>Unique User ID</comment> + <html> + <type>Number</type> + </html> + </field> + <primaryKey> + <name>id</name> + <autoincrement>true</autoincrement> + </primaryKey> + + <field> + <name>contact_id</name> + <type>int unsigned</type> + <comment>FK to Contact - possibly redundant</comment> + </field> + <foreignKey> + <name>contact_id</name> + <table>civicrm_contact</table> + <key>id</key> + <onDelete>CASCADE</onDelete> + </foreignKey> + + <field> + <label>Username</label> + <name>username</name> + <required>true</required> + <type>varchar</type> + <length>60</length> + <html> + <type>Text</type> + </html> + </field> + <index> + <name>UI_username</name> + <fieldName>username</fieldName> + <unique>true</unique> + </index> + + <field> + <name>password</name> + <type>varchar</type> + <required>true</required> + <length>128</length> + <comment>Hashed password</comment> + </field> + + <field> + <name>email</name> + <type>varchar</type> + <required>true</required> + <length>255</length> + <comment>Email (e.g. for password resets)</comment> + <html> + <type>Text</type> + </html> + </field> + + <field> + <name>roles</name> + <type>varchar</type> + <title>Roles</title> + <length>128</length> + <comment>FK to Role</comment> + <pseudoconstant> + <table>civicrm_role</table> + <keyColumn>id</keyColumn> + <labelColumn>label</labelColumn> + <nameColumn>name</nameColumn> + <condition>name != "everyone"</condition> + </pseudoconstant> + <html> + <type>Select</type> + </html> + <serialize>SEPARATOR_BOOKEND</serialize> + </field> + + <field> + <name>when_created</name> + <type>timestamp</type> + <default>CURRENT_TIMESTAMP</default> + </field> + + <field> + <name>when_last_accessed</name> + <type>timestamp</type> + <required>false</required> + </field> + + <field> + <name>when_updated</name> + <type>timestamp</type> + <required>false</required> + </field> + + <field> + <name>is_active</name> + <type>boolean</type> + <default>1</default> + <required>true</required> + <html> + <type>CheckBox</type> + </html> + </field> + + <field> + <name>timezone</name> + <type>varchar</type> + <length>32</length> + <required>false</required> + <comment>User's timezone</comment> + <html> + <type>Text</type> + </html> + </field> + + <field> + <name>language</name> + <type>int unsigned</type> + <title>Language</title> + <pseudoconstant> + <optionGroupName>languages</optionGroupName> + </pseudoconstant> + <html> + <type>Select</type> + </html> + <comment>The language for the user.</comment> + </field> + +</table> diff --git a/civicrm/install/civicrm.php b/civicrm/install/civicrm.php index 6d08fcf94f..fa497fe7ff 100644 --- a/civicrm/install/civicrm.php +++ b/civicrm/install/civicrm.php @@ -197,7 +197,7 @@ function civicrm_config(&$config) { // Ex: $extraSettings[] = '$civicrm_settings["domain"]["foo"] = "bar";'; $extraSettings = []; - $params = array( + $params = [ 'crmRoot' => $crmPath, 'templateCompileDir' => $compileDir, 'frontEnd' => 0, @@ -209,7 +209,7 @@ function civicrm_config(&$config) { // SSL connection to MySQL is needed. 'dbSSL' => '', 'CMSdbSSL' => '', - ); + ]; $params['baseURL'] = $config['base_url'] ?? civicrm_cms_base(); if ($installType == 'drupal' && defined('VERSION')) { diff --git a/civicrm/install/index.php b/civicrm/install/index.php index a7c96f1f2e..aa14a8e5fb 100644 --- a/civicrm/install/index.php +++ b/civicrm/install/index.php @@ -115,7 +115,7 @@ foreach ($langs as $locale => $_) { if ($locale == 'en_US') { continue; } - if (!file_exists(implode(CIVICRM_DIRECTORY_SEPARATOR, array($crmPath, 'sql', "civicrm_data.$locale.mysql")))) { + if (!file_exists(implode(CIVICRM_DIRECTORY_SEPARATOR, [$crmPath, 'sql', "civicrm_data.$locale.mysql"]))) { unset($langs[$locale]); } } @@ -123,11 +123,11 @@ foreach ($langs as $locale => $_) { // Set the CMS // This is mostly sympbolic, since nothing we do during the install // really requires CIVICRM_UF to be defined. -$installTypeToUF = array( +$installTypeToUF = [ 'wordpress' => 'WordPress', 'drupal' => 'Drupal', 'backdrop' => 'Backdrop', -); +]; $uf = ($installTypeToUF[$installType] ?? 'Drupal'); define('CIVICRM_UF', $uf); @@ -200,9 +200,9 @@ if ($installType == 'drupal') { $pattern = '/' . preg_quote(CIVICRM_DIRECTORY_SEPARATOR . 'modules', CIVICRM_DIRECTORY_SEPARATOR) . '/'; if (!preg_match($pattern, str_replace("\\", "/", $_SERVER['SCRIPT_FILENAME']))) { - $directory = implode(CIVICRM_DIRECTORY_SEPARATOR, array('sites', 'all', 'modules')); + $directory = implode(CIVICRM_DIRECTORY_SEPARATOR, ['sites', 'all', 'modules']); $errorTitle = ts("Oops! Please correct your install location"); - $errorMsg = ts("Please untar (uncompress) your downloaded copy of CiviCRM in the <strong>%1</strong> directory below your Drupal root directory.", array(1 => $directory)); + $errorMsg = ts("Please untar (uncompress) your downloaded copy of CiviCRM in the <strong>%1</strong> directory below your Drupal root directory.", [1 => $directory]); errorDisplayPage($errorTitle, $errorMsg); } } @@ -214,7 +214,7 @@ if ($installType == 'backdrop') { if (!preg_match($pattern, str_replace("\\", "/", $_SERVER['SCRIPT_FILENAME']))) { $directory = 'modules'; $errorTitle = ts("Oops! Please correct your install location"); - $errorMsg = ts("Please untar (uncompress) your downloaded copy of CiviCRM in the <strong>%1</strong> directory below your Drupal root directory.", array(1 => $directory)); + $errorMsg = ts("Please untar (uncompress) your downloaded copy of CiviCRM in the <strong>%1</strong> directory below your Drupal root directory.", [1 => $directory]); errorDisplayPage($errorTitle, $errorMsg); } } @@ -225,21 +225,21 @@ if ($alreadyInstalled) { $settings_directory = $cmsPath; if ($installType == 'drupal') { - $settings_directory = implode(CIVICRM_DIRECTORY_SEPARATOR, array( + $settings_directory = implode(CIVICRM_DIRECTORY_SEPARATOR, [ ts('[your Drupal root directory]'), 'sites', $siteDir, - )); + ]); } if ($installType == 'backdrop') { - $settings_directory = implode(CIVICRM_DIRECTORY_SEPARATOR, array( + $settings_directory = implode(CIVICRM_DIRECTORY_SEPARATOR, [ ts('[your Backdrop root directory]'), $siteDir, - )); + ]); } $docLink = CRM_Utils_System::docURL2('Installation and Upgrades', FALSE, ts('Installation Guide'), NULL, NULL, "wiki"); - $errorMsg = ts("CiviCRM has already been installed. <ul><li>To <strong>start over</strong>, you must delete or rename the existing CiviCRM settings file - <strong>civicrm.settings.php</strong> - from <strong>%1</strong>.</li><li>To <strong>upgrade an existing installation</strong>, refer to the online documentation: %2.</li></ul>", array(1 => $settings_directory, 2 => $docLink)); + $errorMsg = ts("CiviCRM has already been installed. <ul><li>To <strong>start over</strong>, you must delete or rename the existing CiviCRM settings file - <strong>civicrm.settings.php</strong> - from <strong>%1</strong>.</li><li>To <strong>upgrade an existing installation</strong>, refer to the online documentation: %2.</li></ul>", [1 => $settings_directory, 2 => $docLink]); errorDisplayPage($errorTitle, $errorMsg, FALSE); } @@ -261,12 +261,12 @@ if ($installType == 'drupal') { } define('DRUPAL_ROOT', $cmsPath); - $drupalVersionFiles = array( + $drupalVersionFiles = [ // D6 - implode(CIVICRM_DIRECTORY_SEPARATOR, array($cmsPath, 'modules', 'system', 'system.module')), + implode(CIVICRM_DIRECTORY_SEPARATOR, [$cmsPath, 'modules', 'system', 'system.module']), // D7 - implode(CIVICRM_DIRECTORY_SEPARATOR, array($cmsPath, 'includes', 'bootstrap.inc')), - ); + implode(CIVICRM_DIRECTORY_SEPARATOR, [$cmsPath, 'includes', 'bootstrap.inc']), + ]; foreach ($drupalVersionFiles as $drupalVersionFile) { if (file_exists($drupalVersionFile)) { require_once $drupalVersionFile; @@ -290,7 +290,7 @@ if ($installType == 'drupal') { if (!defined('VERSION') or version_compare(VERSION, '6.0') < 0) { $errorTitle = ts("Oops! Incorrect Drupal version"); - $errorMsg = ts("This version of CiviCRM can only be used with Drupal 6.x or 7.x. Please ensure that '%1' exists if you are running Drupal 7.0 and over.", array(1 => implode("' or '", $drupalVersionFiles))); + $errorMsg = ts("This version of CiviCRM can only be used with Drupal 6.x or 7.x. Please ensure that '%1' exists if you are running Drupal 7.0 and over.", [1 => implode("' or '", $drupalVersionFiles)]); errorDisplayPage($errorTitle, $errorMsg); } } @@ -304,10 +304,10 @@ elseif ($installType == 'backdrop') { define('BACKDROP_ROOT', $cmsPath); - $backdropVersionFiles = array( + $backdropVersionFiles = [ // Backdrop - implode(CIVICRM_DIRECTORY_SEPARATOR, array($cmsPath, 'core', 'includes', 'bootstrap.inc')), - ); + implode(CIVICRM_DIRECTORY_SEPARATOR, [$cmsPath, 'core', 'includes', 'bootstrap.inc']), + ]; foreach ($backdropVersionFiles as $backdropVersionFile) { if (file_exists($backdropVersionFile)) { require_once $backdropVersionFile; @@ -315,7 +315,7 @@ elseif ($installType == 'backdrop') { } if (!defined('BACKDROP_VERSION') or version_compare(BACKDROP_VERSION, '1.0') < 0) { $errorTitle = ts("Oops! Incorrect Backdrop version"); - $errorMsg = ts("This version of CiviCRM can only be used with Backdrop 1.x. Please ensure that '%1' exists if you are running Backdrop 1.0 and over.", array(1 => implode("' or '", $backdropVersionFiles))); + $errorMsg = ts("This version of CiviCRM can only be used with Backdrop 1.x. Please ensure that '%1' exists if you are running Backdrop 1.0 and over.", [1 => implode("' or '", $backdropVersionFiles)]); errorDisplayPage($errorTitle, $errorMsg); } } @@ -342,12 +342,12 @@ if ($installType == 'wordpress') { $databaseConfig = $_POST['mysql']; } else { - $databaseConfig = array( + $databaseConfig = [ "server" => DB_HOST, "username" => DB_USER, "password" => DB_PASSWORD, "database" => DB_NAME, - ); + ]; } } @@ -361,12 +361,12 @@ if ($installType == 'drupal') { if (!empty($databases['default']['default']['port'])) { $dbServer .= ':' . $databases['default']['default']['port']; } - $drupalConfig = array( + $drupalConfig = [ "server" => $dbServer, "username" => $databases['default']['default']['username'], "password" => $databases['default']['default']['password'], "database" => $databases['default']['default']['database'], - ); + ]; } } @@ -376,12 +376,12 @@ if ($installType == 'backdrop') { $backdropConfig = $_POST['backdrop']; } else { - $backdropConfig = array( + $backdropConfig = [ "server" => "localhost", "username" => "backdrop", "password" => "", "database" => "backdrop", - ); + ]; } } @@ -455,53 +455,53 @@ class InstallRequirements { */ public function checkdatabase($databaseConfig, $dbName) { if ($this->requireFunction('mysqli_connect', - array( + [ ts("PHP Configuration"), ts("MySQL support"), ts("MySQL support not included in PHP."), - ) + ] ) ) { $this->requireMySQLServer($databaseConfig['server'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts("Does the server exist?"), - ts("Can't find the a MySQL server on '%1'.", array(1 => $databaseConfig['server'])), + ts("Can't find the a MySQL server on '%1'.", [1 => $databaseConfig['server']]), $databaseConfig['server'], - ) + ] ); if ($this->requireMysqlConnection($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts("Are the access credentials correct?"), ts("That username/password doesn't work"), - ) + ] ) ) { @$this->requireMySQLVersion(CRM_Upgrade_Incremental_General::MIN_INSTALL_MYSQL_VER, - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), - ts("MySQL version at least %1", array(1 => CRM_Upgrade_Incremental_General::MIN_INSTALL_MYSQL_VER)), - ts("MySQL version %1 or higher is required, you are running MySQL %2.", array(1 => CRM_Upgrade_Incremental_General::MIN_INSTALL_MYSQL_VER, 2 => mysqli_get_server_info($this->conn))), - ts("MySQL %1", array(1 => mysqli_get_server_info($this->conn))), - ) + [ + ts("MySQL %1 Configuration", [1 => $dbName]), + ts("MySQL version at least %1", [1 => CRM_Upgrade_Incremental_General::MIN_INSTALL_MYSQL_VER]), + ts("MySQL version %1 or higher is required, you are running MySQL %2.", [1 => CRM_Upgrade_Incremental_General::MIN_INSTALL_MYSQL_VER, 2 => mysqli_get_server_info($this->conn)]), + ts("MySQL %1", [1 => mysqli_get_server_info($this->conn)]), + ] ); $this->requireMySQLAutoIncrementIncrementOne($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts("Is auto_increment_increment set to 1"), ts("An auto_increment_increment value greater than 1 is not currently supported. Please see issue CRM-7923 for further details and potential workaround."), - ) + ] ); - $testDetails = array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + $testDetails = [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts("Is the provided database name valid?"), ts("The database name provided is not valid. Please use only 0-9, a-z, A-Z, _ and - as characters in the name."), - ); + ]; if (!CRM_Core_DAO::requireSafeDBName($databaseConfig['database'])) { $this->error($testDetails); return FALSE; @@ -514,12 +514,12 @@ class InstallRequirements { $databaseConfig['password'], $databaseConfig['database'], self::MINIMUM_THREAD_STACK, - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), - ts("Does MySQL thread_stack meet minimum (%1k)", array(1 => self::MINIMUM_THREAD_STACK)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), + ts("Does MySQL thread_stack meet minimum (%1k)", [1 => self::MINIMUM_THREAD_STACK]), "", // "The MySQL thread_stack does not meet minimum " . CRM_Upgrade_Form::MINIMUM_THREAD_STACK . "k. Please update thread_stack in my.cnf.", - ) + ] ); } $onlyRequire = $dbName == 'Drupal' || $dbName == 'Backdrop'; @@ -528,11 +528,11 @@ class InstallRequirements { $databaseConfig['username'], $databaseConfig['password'], $databaseConfig['database'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts("Can I access/create the database?"), - ts("I can't create new databases and the database '%1' doesn't exist.", array(1 => $databaseConfig['database'])), - ), + ts("I can't create new databases and the database '%1' doesn't exist.", [1 => $databaseConfig['database']]), + ], $onlyRequire ); if ($dbName != 'Drupal' && $dbName != 'Backdrop') { @@ -541,61 +541,61 @@ class InstallRequirements { $databaseConfig['username'], $databaseConfig['password'], $databaseConfig['database'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts("Does the database have data from a previous installation?"), - ts("CiviCRM data from previous installation exists in '%1'.", array(1 => $databaseConfig['database'])), - ) + ts("CiviCRM data from previous installation exists in '%1'.", [1 => $databaseConfig['database']]), + ] ); $this->requireMySQLInnoDB($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], $databaseConfig['database'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts("Can I access/create InnoDB tables in the database?"), ts("Unable to create InnoDB tables. MySQL InnoDB support is required for CiviCRM but is either not available or not enabled in this MySQL database server."), - ) + ] ); $this->requireMySQLTempTables($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], $databaseConfig['database'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts('Can I create temporary tables in the database?'), ts('Unable to create temporary tables. This MySQL user is missing the CREATE TEMPORARY TABLES privilege.'), - ) + ] ); $this->requireMySQLLockTables($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], $databaseConfig['database'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts('Can I create lock tables in the database?'), ts('Unable to lock tables. This MySQL user is missing the LOCK TABLES privilege.'), - ) + ] ); $this->requireMySQLTrigger($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], $databaseConfig['database'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts('Can I create triggers in the database?'), ts('Unable to create triggers. This MySQL user is missing the CREATE TRIGGERS privilege.'), - ) + ] ); $this->requireMySQLUtf8mb4($databaseConfig['server'], $databaseConfig['username'], $databaseConfig['password'], $databaseConfig['database'], - array( - ts("MySQL %1 Configuration", array(1 => $dbName)), + [ + ts("MySQL %1 Configuration", [1 => $dbName]), ts('Is the <code>utf8mb4</code> character set supported?'), ts('This MySQL server does not support the <code>utf8mb4</code> character set.'), - ) + ] ); } } @@ -635,40 +635,40 @@ class InstallRequirements { $this->errors = NULL; - $this->requirePHPVersion(array( + $this->requirePHPVersion([ ts("PHP Configuration"), ts("PHP7 installed"), - )); + ]); // Check that we can identify the root folder successfully $this->requireFile($crmPath . CIVICRM_DIRECTORY_SEPARATOR . 'README.md', - array( + [ ts("File permissions"), ts("Does the webserver know where files are stored?"), ts("The webserver isn't letting me identify where files are stored."), $this->getBaseDir(), - ), + ], TRUE ); // CRM-6485: make sure the path does not contain PATH_SEPARATOR, as we don’t know how to escape it $this->requireNoPathSeparator( - array( + [ ts("File permissions"), ts('Does the CiviCRM path contain PATH_SEPARATOR?'), - ts('The path %1 contains PATH_SEPARATOR (the %2 character).', array(1 => $this->getBaseDir(), 2 => PATH_SEPARATOR)), + ts('The path %1 contains PATH_SEPARATOR (the %2 character).', [1 => $this->getBaseDir(), 2 => PATH_SEPARATOR]), $this->getBaseDir(), - ) + ] ); - $requiredDirectories = array('CRM', 'packages', 'templates', 'js', 'api', 'i', 'sql'); + $requiredDirectories = ['CRM', 'packages', 'templates', 'js', 'api', 'i', 'sql']; foreach ($requiredDirectories as $dir) { $this->requireFile($crmPath . CIVICRM_DIRECTORY_SEPARATOR . $dir, - array( + [ ts("File permissions"), - ts("Folder '%1' exists?", array(1 => $dir)), - ts("There is no '%1' folder.", array(1 => $dir)), - ), TRUE + ts("Folder '%1' exists?", [1 => $dir]), + ts("There is no '%1' folder.", [1 => $dir]), + ], TRUE ); } @@ -678,7 +678,7 @@ class InstallRequirements { if ($installType == 'drupal') { // make sure that we can write to sites/default and files/ - $writableDirectories = array( + $writableDirectories = [ $cmsPath . CIVICRM_DIRECTORY_SEPARATOR . 'sites' . CIVICRM_DIRECTORY_SEPARATOR . $siteDir . CIVICRM_DIRECTORY_SEPARATOR . @@ -686,16 +686,16 @@ class InstallRequirements { $cmsPath . CIVICRM_DIRECTORY_SEPARATOR . 'sites' . CIVICRM_DIRECTORY_SEPARATOR . $siteDir, - ); + ]; } elseif ($installType == 'backdrop') { // make sure that we can write to sites/default and files/ - $writableDirectories = array( + $writableDirectories = [ $cmsPath . CIVICRM_DIRECTORY_SEPARATOR . 'files', $cmsPath, - ); + ]; } elseif ($installType == 'wordpress') { // make sure that we can write to uploads/civicrm/ @@ -704,16 +704,16 @@ class InstallRequirements { if (!file_exists($files_dirname)) { wp_mkdir_p($files_dirname); } - $writableDirectories = array($files_dirname); + $writableDirectories = [$files_dirname]; } foreach ($writableDirectories as $dir) { $dirName = CIVICRM_WINDOWS ? $dir : CIVICRM_DIRECTORY_SEPARATOR . $dir; - $testDetails = array( + $testDetails = [ ts("File permissions"), - ts("Is the %1 folder writeable?", array(1 => $dir)), + ts("Is the %1 folder writeable?", [1 => $dir]), NULL, - ); + ]; $this->requireWriteable($dirName, $testDetails, TRUE); } @@ -730,56 +730,56 @@ class InstallRequirements { } // Check for $_SERVER configuration - $this->requireServerVariables(array('SCRIPT_NAME', 'HTTP_HOST', 'SCRIPT_FILENAME'), array( + $this->requireServerVariables(['SCRIPT_NAME', 'HTTP_HOST', 'SCRIPT_FILENAME'], [ ts("Webserver config"), ts("Recognised webserver"), ts("You seem to be using an unsupported webserver. The server variables SCRIPT_NAME, HTTP_HOST, SCRIPT_FILENAME need to be set."), - )); + ]); // Check for MySQL support - $this->requireFunction('mysqli_connect', array( + $this->requireFunction('mysqli_connect', [ ts("PHP Configuration"), ts("MySQL support"), ts("MySQL support not included in PHP."), - )); + ]); // Check for XML support - $this->requireFunction('simplexml_load_file', array( + $this->requireFunction('simplexml_load_file', [ ts("PHP Configuration"), ts("SimpleXML support"), ts("SimpleXML support not included in PHP."), - )); + ]); // Check for JSON support - $this->requireFunction('json_encode', array( + $this->requireFunction('json_encode', [ ts("PHP Configuration"), ts("JSON support"), ts("JSON support not included in PHP."), - )); + ]); // check for Multibyte support such as mb_substr. Required for proper handling of Multilingual setups. - $this->requireFunction('mb_substr', array( + $this->requireFunction('mb_substr', [ ts("PHP Configuration"), ts("Multibyte support"), ts("Multibyte support not enabled in PHP."), - )); + ]); // Check for xcache_isset and emit warning if exists - $this->checkXCache(array( + $this->checkXCache([ ts("PHP Configuration"), ts("XCache compatibility"), ts("XCache is installed and there are known compatibility issues between XCache and CiviCRM. Consider using an alternative PHP caching mechanism or disable PHP caching altogether."), - )); + ]); // Check memory allocation $this->requireMemory(32 * 1024 * 1024, 64 * 1024 * 1024, - array( + [ ts("PHP Configuration"), ts("Memory allocated (PHP config option 'memory_limit')"), - ts("CiviCRM needs a minimum of %1 MB allocated to PHP, but recommends %2 MB.", array(1 => 32, 2 => 64)), + ts("CiviCRM needs a minimum of %1 MB allocated to PHP, but recommends %2 MB.", [1 => 32, 2 => 64]), ini_get("memory_limit"), - ) + ] ); return $this->errors; @@ -795,15 +795,15 @@ class InstallRequirements { $mem = $this->getPHPMemory(); if ($mem < $min && $mem > 0) { - $testDetails[2] .= " " . ts("You only have %1 allocated", array(1 => ini_get("memory_limit"))); + $testDetails[2] .= " " . ts("You only have %1 allocated", [1 => ini_get("memory_limit")]); $this->error($testDetails); } elseif ($mem < $recommended && $mem > 0) { - $testDetails[2] .= " " . ts("You only have %1 allocated", array(1 => ini_get("memory_limit"))); + $testDetails[2] .= " " . ts("You only have %1 allocated", [1 => ini_get("memory_limit")]); $this->warning($testDetails); } elseif ($mem == 0) { - $testDetails[2] .= " " . ts("We can't determine how much memory you have allocated. Install only if you're sure you've allocated at least %1 MB.", array(1 => 32)); + $testDetails[2] .= " " . ts("We can't determine how much memory you have allocated. Install only if you're sure you've allocated at least %1 MB.", [1 => 32]); $this->warning($testDetails); } } @@ -906,18 +906,18 @@ class InstallRequirements { if ($aboveMinVersion) { if (version_compare($phpVersion, CRM_Upgrade_Incremental_General::MIN_RECOMMENDED_PHP_VER) < 0) { - $testDetails[2] = ts('This webserver is running an outdated version of PHP (%1). It is strongly recommended to upgrade to PHP %2 or later, as older versions can present a security risk. The preferred version is %3.', array( + $testDetails[2] = ts('This webserver is running an outdated version of PHP (%1). It is strongly recommended to upgrade to PHP %2 or later, as older versions can present a security risk. The preferred version is %3.', [ 1 => $phpVersion, 2 => CRM_Upgrade_Incremental_General::MIN_RECOMMENDED_PHP_VER, 3 => preg_replace(';^(\d+\.\d+(?:\.[1-9]\d*)?).*$;', '\1', CRM_Upgrade_Incremental_General::RECOMMENDED_PHP_VER), - )); + ]); $this->warning($testDetails); } return TRUE; } if (empty($testDetails[2])) { - $testDetails[2] = ts("You need PHP version %1 or later, only %2 is installed. Please upgrade your server, or ask your web-host to do so.", array(1 => CRM_Upgrade_Incremental_General::MIN_INSTALL_PHP_VER, 2 => $phpVersion)); + $testDetails[2] = ts("You need PHP version %1 or later, only %2 is installed. Please upgrade your server, or ask your web-host to do so.", [1 => CRM_Upgrade_Incremental_General::MIN_INSTALL_PHP_VER, 2 => $phpVersion]); } $this->error($testDetails); @@ -934,7 +934,7 @@ class InstallRequirements { $filename = $this->getBaseDir() . $filename; } if (!file_exists($filename)) { - $testDetails[2] .= " (" . ts("file '%1' not found", array(1 => $filename)) . ')'; + $testDetails[2] .= " (" . ts("file '%1' not found", [1 => $filename]) . ')'; $this->error($testDetails); } } @@ -957,7 +957,7 @@ class InstallRequirements { $this->testing($testDetails); $filename = $this->getBaseDir() . $filename; if (file_exists($filename)) { - $testDetails[2] .= " (" . ts("file '%1' found", array(1 => $filename)) . ")"; + $testDetails[2] .= " (" . ts("file '%1' found", [1 => $filename]) . ")"; $this->error($testDetails); } } @@ -998,7 +998,7 @@ class InstallRequirements { if (!isset($testDetails[2])) { $testDetails[2] = NULL; } - $testDetails[2] .= ts("The user account used by your web-server %1 needs to be granted write access to the following directory in order to configure the CiviCRM settings file:", array(1 => $name)) . "\n$filename"; + $testDetails[2] .= ts("The user account used by your web-server %1 needs to be granted write access to the following directory in order to configure the CiviCRM settings file:", [1 => $name]) . "\n$filename"; $this->error($testDetails); } } @@ -1058,7 +1058,7 @@ class InstallRequirements { $this->testing($testDetails); if (!mysqli_get_server_info($this->conn)) { - $testDetails[2] = ts('Cannot determine the version of MySQL installed. Please ensure at least version %1 is installed.', array(1 => $version)); + $testDetails[2] = ts('Cannot determine the version of MySQL installed. Please ensure at least version %1 is installed.', [1 => $version]); $this->warning($testDetails); } else { @@ -1299,7 +1299,7 @@ class InstallRequirements { else { $values = mysqli_fetch_row($result); if ($values[1] < (1024 * $minValueKB)) { - $testDetails[2] = ts('MySQL "thread_stack" is %1 kb', array(1 => ($values[1] / 1024))); + $testDetails[2] = ts('MySQL "thread_stack" is %1 kb', [1 => ($values[1] / 1024)]); $this->error($testDetails); } } @@ -1332,7 +1332,7 @@ class InstallRequirements { } } - $testDetails[3] = ts('CiviCRM data from previous installation does not exist in %1.', array(1 => $database)); + $testDetails[3] = ts('CiviCRM data from previous installation does not exist in %1.', [1 => $database]); $this->testing($testDetails); } @@ -1360,7 +1360,7 @@ class InstallRequirements { $okay = "Database '$database' exists"; } elseif ($onlyRequire) { - $testDetails[2] = ts("The database: '%1' does not exist.", array(1 => $database)); + $testDetails[2] = ts("The database: '%1' does not exist.", [1 => $database]); $this->error($testDetails); return; } @@ -1370,7 +1370,7 @@ class InstallRequirements { $okay = ts("Able to create a new database."); } else { - $testDetails[2] .= " (" . ts("user '%1' doesn't have CREATE DATABASE permissions.", array(1 => $username)) . ")"; + $testDetails[2] .= " (" . ts("user '%1' doesn't have CREATE DATABASE permissions.", [1 => $username]) . ")"; $this->error($testDetails); return; } @@ -1397,7 +1397,7 @@ class InstallRequirements { return TRUE; } else { - $testDetails[2] = " (" . ts('the following PHP variables are missing: %1', array(1 => implode(", ", $missing))) . ")"; + $testDetails[2] = " (" . ts('the following PHP variables are missing: %1', [1 => implode(", ", $missing)]) . ")"; $this->error($testDetails); } } @@ -1491,7 +1491,7 @@ class InstallRequirements { $message .= " ($testDetails[3])"; } - $this->tests[$section][$test] = array("good", $message); + $this->tests[$section][$test] = ["good", $message]; } /** @@ -1501,7 +1501,7 @@ class InstallRequirements { $section = $testDetails[0]; $test = $testDetails[1]; - $this->tests[$section][$test] = array("error", $testDetails[2]); + $this->tests[$section][$test] = ["error", $testDetails[2]]; $this->errors[] = $testDetails; } @@ -1512,7 +1512,7 @@ class InstallRequirements { $section = $testDetails[0]; $test = $testDetails[1]; - $this->tests[$section][$test] = array("warning", $testDetails[2]); + $this->tests[$section][$test] = ["warning", $testDetails[2]]; $this->warnings[] = $testDetails; } @@ -1554,7 +1554,7 @@ class Installer extends InstallRequirements { if (@mysqli_query($conn, $query)) { } else { - $errorTitle = ts("Oops! Could not create database %1", array(1 => $database)); + $errorTitle = ts("Oops! Could not create database %1", [1 => $database]); $errorMsg = ts("We encountered an error when attempting to create the database. Please check your MySQL server permissions and the database name and try again."); errorDisplayPage($errorTitle, $errorMsg); } @@ -1586,7 +1586,7 @@ class Installer extends InstallRequirements { $registerSiteURL = "https://civicrm.org/register-site"; $commonOutputMessage - = "<li>" . ts("Have you registered this site at CiviCRM.org? If not, please help strengthen the CiviCRM ecosystem by taking a few minutes to <a %1>fill out the site registration form</a>. The information collected will help us prioritize improvements, target our communications and build the community. If you have a technical role for this site, be sure to check Keep in Touch to receive technical updates (a low volume mailing list).", array(1 => "href='$registerSiteURL' target='_blank'")) . "</li>" + = "<li>" . ts("Have you registered this site at CiviCRM.org? If not, please help strengthen the CiviCRM ecosystem by taking a few minutes to <a %1>fill out the site registration form</a>. The information collected will help us prioritize improvements, target our communications and build the community. If you have a technical role for this site, be sure to check Keep in Touch to receive technical updates (a low volume mailing list).", [1 => "href='$registerSiteURL' target='_blank'"]) . "</li>" . "<li>" . ts("We have integrated KCFinder with CKEditor and TinyMCE. This allows a user to upload images. All uploaded images are public.") . "</li>"; $output = NULL; @@ -1614,8 +1614,8 @@ class Installer extends InstallRequirements { $drupalPermissionsURL = "{$drupalURL}index.php?q=admin/people/permissions"; $drupalURL .= "index.php?q=civicrm/admin/configtask&reset=1"; - $output .= "<li>" . ts("Drupal user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", array(1 => "target='_blank' href='{$drupalPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'")) . "</li>"; - $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", array(1 => "target='_blank' href='$drupalURL'")) . "</li>"; + $output .= "<li>" . ts("Drupal user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", [1 => "target='_blank' href='{$drupalPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'"]) . "</li>"; + $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", [1 => "target='_blank' href='$drupalURL'"]) . "</li>"; $output .= $commonOutputMessage; // automatically enable CiviCRM module once it is installed successfully. @@ -1649,7 +1649,7 @@ class Installer extends InstallRequirements { system_rebuild_module_data(); // now enable civicrm module. - module_enable(array('civicrm', 'civicrmtheme')); + module_enable(['civicrm', 'civicrmtheme']); // SystemInstallEvent will be called from here with the first call of CRM_Core_Config, // which calls Core_BAO_ConfigSetting::applyLocale(), who will default to calling @@ -1696,8 +1696,8 @@ class Installer extends InstallRequirements { $backdropPermissionsURL = "{$backdropURL}index.php?q=admin/config/people/permissions"; $backdropURL .= "index.php?q=civicrm/admin/configtask&reset=1"; - $output .= "<li>" . ts("Backdrop user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", array(1 => "target='_blank' href='{$backdropPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'")) . "</li>"; - $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", array(1 => "target='_blank' href='$backdropURL'")) . "</li>"; + $output .= "<li>" . ts("Backdrop user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", [1 => "target='_blank' href='{$backdropPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'"]) . "</li>"; + $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", [1 => "target='_blank' href='$backdropURL'"]) . "</li>"; $output .= $commonOutputMessage; // automatically enable CiviCRM module once it is installed successfully. @@ -1732,7 +1732,7 @@ class Installer extends InstallRequirements { system_rebuild_module_data(); // now enable civicrm module. - module_enable(array('civicrm', 'civicrmtheme')); + module_enable(['civicrm', 'civicrmtheme']); // clear block, page, theme, and hook caches backdrop_flush_all_caches(); @@ -1746,10 +1746,10 @@ class Installer extends InstallRequirements { //change the default language to one chosen if (isset($config['seedLanguage']) && $config['seedLanguage'] != 'en_US') { - civicrm_api3('Setting', 'create', array( + civicrm_api3('Setting', 'create', [ 'domain_id' => 'current_domain', 'lcMessages' => $config['seedLanguage'], - )); + ]); } $output .= '</ul>'; @@ -1777,8 +1777,8 @@ class Installer extends InstallRequirements { $drupalPermissionsURL = "{$drupalURL}index.php?q=admin/user/permissions"; $drupalURL .= "index.php?q=civicrm/admin/configtask&reset=1"; - $output .= "<li>" . ts("Drupal user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", array(1 => "target='_blank' href='{$drupalPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'")) . "</li>"; - $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", array(1 => "target='_blank' href='$drupalURL'")) . "</li>"; + $output .= "<li>" . ts("Drupal user permissions have been automatically set - giving anonymous and authenticated users access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", [1 => "target='_blank' href='{$drupalPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'"]) . "</li>"; + $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", [1 => "target='_blank' href='$drupalURL'"]) . "</li>"; $output .= $commonOutputMessage; // explicitly setting error reporting, since we cannot handle drupal related notices @@ -1803,7 +1803,7 @@ class Installer extends InstallRequirements { module_rebuild_cache(); // now enable civicrm module. - module_enable(array('civicrm')); + module_enable(['civicrm']); // clear block, page, theme, and hook caches drupal_flush_all_caches(); @@ -1822,8 +1822,8 @@ class Installer extends InstallRequirements { $cmsURL .= "wp-admin/admin.php?page=CiviCRM&q=civicrm/admin/configtask&reset=1"; $wpPermissionsURL = "wp-admin/admin.php?page=CiviCRM&q=civicrm/admin/access/wp-permissions&reset=1"; - $output .= "<li>" . ts("WordPress user permissions have been automatically set - giving Anonymous and Subscribers access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", array(1 => "target='_blank' href='{$wpPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'")) . "</li>"; - $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", array(1 => "target='_blank' href='$cmsURL'")) . "</li>"; + $output .= "<li>" . ts("WordPress user permissions have been automatically set - giving Anonymous and Subscribers access to public CiviCRM forms and features. We recommend that you <a %1>review these permissions</a> to ensure that they are appropriate for your requirements (<a %2>learn more...</a>)", [1 => "target='_blank' href='{$wpPermissionsURL}'", 2 => "target='_blank' href='http://wiki.civicrm.org/confluence/display/CRMDOC/Default+Permissions+and+Roles'"]) . "</li>"; + $output .= "<li>" . ts("Use the <a %1>Configuration Checklist</a> to review and configure settings for your new site", [1 => "target='_blank' href='$cmsURL'"]) . "</li>"; $output .= $commonOutputMessage; $output .= '</ul>'; @@ -1849,7 +1849,7 @@ function civicrm_install_set_drupal_perms() { db_query('UPDATE {permission} SET perm = CONCAT( perm, \', access CiviMail subscribe/unsubscribe pages, access all custom data, access uploaded files, make online contributions, profile listings and forms, register for events, view event info, view event participants\') WHERE rid IN (1, 2)'); } else { - $perms = array( + $perms = [ 'access all custom data', 'access uploaded files', 'make online contributions', @@ -1860,7 +1860,7 @@ function civicrm_install_set_drupal_perms() { 'view event info', 'view event participants', 'access CiviMail subscribe/unsubscribe pages', - ); + ]; // Adding a permission that has not yet been assigned to a module by // a hook_permission implementation results in a database error. @@ -1869,7 +1869,7 @@ function civicrm_install_set_drupal_perms() { foreach (array_diff($perms, $allPerms) as $perm) { watchdog('civicrm', 'Cannot grant the %perm permission because it does not yet exist.', - array('%perm' => $perm), + ['%perm' => $perm], WATCHDOG_ERROR ); } @@ -1880,7 +1880,7 @@ function civicrm_install_set_drupal_perms() { } function civicrm_install_set_backdrop_perms() { - $perms = array( + $perms = [ 'access all custom data', 'access uploaded files', 'make online contributions', @@ -1891,7 +1891,7 @@ function civicrm_install_set_backdrop_perms() { 'view event info', 'view event participants', 'access CiviMail subscribe/unsubscribe pages', - ); + ]; // Adding a permission that has not yet been assigned to a module by // a hook_permission implementation results in a database error. @@ -1900,7 +1900,7 @@ function civicrm_install_set_backdrop_perms() { foreach (array_diff($perms, $allPerms) as $perm) { watchdog('civicrm', 'Cannot grant the %perm permission because it does not yet exist.', - array('%perm' => $perm), + ['%perm' => $perm], WATCHDOG_ERROR ); } @@ -1961,7 +1961,7 @@ function errorDisplayPage($errorTitle, $errorMsg, $showRefer = TRUE) { // Add a link to the documentation if ($showRefer) { - if (is_callable(array('CRM_Utils_System', 'docURL2'))) { + if (is_callable(['CRM_Utils_System', 'docURL2'])) { $docLink = CRM_Utils_System::docURL2('Installation and Upgrades', FALSE, 'Installation Guide', NULL, NULL, "wiki"); } else { diff --git a/civicrm/js/model/crm.uf.js b/civicrm/js/model/crm.uf.js index 636304bad7..77eb19489a 100644 --- a/civicrm/js/model/crm.uf.js +++ b/civicrm/js/model/crm.uf.js @@ -358,12 +358,15 @@ * */ markDuplicates: function() { - var ufFieldModelsByKey = this.groupBy(function(ufFieldModel) { + const ufFieldModelsByKey = this.groupBy(function(ufFieldModel) { return ufFieldModel.getSignature(); }); this.each(function(ufFieldModel){ - var is_duplicate = ufFieldModelsByKey[ufFieldModel.getSignature()].length > 1; - if (is_duplicate != ufFieldModel.get('is_duplicate')) { + const length = ufFieldModelsByKey[ufFieldModel.getSignature()].length > 1; + // Allow multiple free html fields, but note this would only work on an English install, and only if the field label hasn't been changed. + const label = ufFieldModelsByKey[ufFieldModel.getSignature()][0].attributes.label !== 'Free HTML'; + const is_duplicate = length && label; + if (is_duplicate !== ufFieldModel.get('is_duplicate')) { ufFieldModel.set('is_duplicate', is_duplicate); } }); @@ -514,7 +517,7 @@ help: ts('Select a group if you want contacts to be automatically added to that group when the profile is submitted.'), type: 'Number' }, - 'cancel_URL': { + 'cancel_url': { title: ts('Cancel Redirect URL'), help: ts('If you are using this profile as a contact signup or edit form, and want to redirect the user to a static URL if they click the Cancel button - enter the complete URL here. If this field is left blank, the built-in Profile form will be redisplayed.'), type: 'Text' @@ -605,7 +608,7 @@ help: ts('If you want member(s) of your organization to receive a notification email whenever this Profile form is used to enter or update contact information, enter one or more email addresses here. Multiple email addresses should be separated by a comma (e.g. jane@example.org, paula@example.org). The first email address listed will be used as the FROM address in the notifications.'), type: 'TextArea' }, - 'post_URL': { + 'post_url': { title: ts('Redirect URL'), help: ts("If you are using this profile as a contact signup or edit form, and want to redirect the user to a static URL after they've submitted the form, you can also use contact tokens in URL - enter the complete URL here. If this field is left blank, the built-in Profile form will be redisplayed with a generic status message - 'Your contact information has been saved.'"), type: 'Text' diff --git a/civicrm/js/view/crm.profile-selector.js b/civicrm/js/view/crm.profile-selector.js index 257dfd226f..53fac85ec4 100644 --- a/civicrm/js/view/crm.profile-selector.js +++ b/civicrm/js/view/crm.profile-selector.js @@ -110,9 +110,9 @@ var profileSelectorView = this; var designerDialog = new CRM.Designer.DesignerDialog({ findCreateUfGroupModel: function(options) { - var ufId = profileSelectorView.getUfGroupId(); + var ufID = profileSelectorView.getUfGroupId(); // Retrieve UF group and fields from the api - CRM.api('UFGroup', 'getsingle', {id: ufId, "api.UFField.get": 1}, { + CRM.api('UFGroup', 'getsingle', {id: ufID, "api.UFField.get": 1}, { success: function(formData) { // Note: With chaining, API returns some extraneous keys that aren't part of UFGroupModel var ufGroupModel = new CRM.UF.UFGroupModel(_.pick(formData, _.keys(CRM.UF.UFGroupModel.prototype.schema))); @@ -132,9 +132,9 @@ var profileSelectorView = this; var designerDialog = new CRM.Designer.DesignerDialog({ findCreateUfGroupModel: function(options) { - var ufId = profileSelectorView.getUfGroupId(); + var ufID = profileSelectorView.getUfGroupId(); // Retrieve UF group and fields from the api - CRM.api('UFGroup', 'getsingle', {id: ufId, "api.UFField.get": 1}, { + CRM.api('UFGroup', 'getsingle', {id: ufID, "api.UFField.get": 1}, { success: function(formData) { // Note: With chaining, API returns some extraneous keys that aren't part of UFGroupModel var ufGroupModel = new CRM.UF.UFGroupModel(_.pick(formData, _.keys(CRM.UF.UFGroupModel.prototype.schema))); diff --git a/civicrm/packages/IDS/Caching/Apc.php b/civicrm/packages/IDS/Caching/Apc.php index 405aca3efd..57cb766708 100644 --- a/civicrm/packages/IDS/Caching/Apc.php +++ b/civicrm/packages/IDS/Caching/Apc.php @@ -59,7 +59,7 @@ class IDS_Caching_Apc implements IDS_Caching_Interface /** * Cache configuration * - * @var array + * @var IDS_Init */ private $config = null; @@ -82,7 +82,7 @@ class IDS_Caching_Apc implements IDS_Caching_Interface * Constructor * * @param string $type caching type - * @param array $init the IDS_Init object + * @param IDS_Init $init the IDS_Init object * * @return void */ diff --git a/civicrm/packages/IDS/Caching/Memcached.php b/civicrm/packages/IDS/Caching/Memcached.php index 1d092967f4..8a3472d20f 100644 --- a/civicrm/packages/IDS/Caching/Memcached.php +++ b/civicrm/packages/IDS/Caching/Memcached.php @@ -92,7 +92,7 @@ class IDS_Caching_Memcached implements IDS_Caching_Interface * Constructor * * @param string $type caching type - * @param array $init the IDS_Init object + * @param IDS_Init $init the IDS_Init object * * @return void */ diff --git a/civicrm/packages/IDS/Filter.php b/civicrm/packages/IDS/Filter.php index 1540d69b77..f198b0e3e6 100644 --- a/civicrm/packages/IDS/Filter.php +++ b/civicrm/packages/IDS/Filter.php @@ -51,6 +51,12 @@ */ class IDS_Filter { + /** + * Filter ID + * + * @var integer + */ + protected $id; /** * Filter rule diff --git a/civicrm/packages/IDS/Log/Database.php b/civicrm/packages/IDS/Log/Database.php index 47283795ad..b0e696ab3c 100644 --- a/civicrm/packages/IDS/Log/Database.php +++ b/civicrm/packages/IDS/Log/Database.php @@ -115,7 +115,7 @@ class IDS_Log_Database implements IDS_Log_Interface /** * Prepared SQL statement * - * @var string + * @var PDOStatement */ private $statement = null; @@ -126,6 +126,13 @@ class IDS_Log_Database implements IDS_Log_Interface */ private $ip = 'local/unknown'; + /** + * Holds current HTTP_X_FORWARDED_FOR address + * + * @var string + */ + private $ip2 = ''; + /** * Instance container * diff --git a/civicrm/packages/IDS/Log/Email.php b/civicrm/packages/IDS/Log/Email.php index ec4c1f059d..c005a28355 100644 --- a/civicrm/packages/IDS/Log/Email.php +++ b/civicrm/packages/IDS/Log/Email.php @@ -73,6 +73,13 @@ class IDS_Log_Email implements IDS_Log_Interface */ protected $headers = null; + /** + * Optional envelope string + * + * @var string + */ + protected $envelope = null; + /** * Safemode switch * @@ -160,7 +167,6 @@ class IDS_Log_Email implements IDS_Log_Interface } elseif (is_array($config)) { $this->recipients[] = $config['recipients']; $this->subject = $config['subject']; - $this->additionalHeaders = $config['header']; } // determine correct IP address and concat them if necessary diff --git a/civicrm/packages/IDS/Monitor.php b/civicrm/packages/IDS/Monitor.php index 6ca35cf2b9..c62c9bcaa6 100644 --- a/civicrm/packages/IDS/Monitor.php +++ b/civicrm/packages/IDS/Monitor.php @@ -162,6 +162,13 @@ class IDS_Monitor */ private $tmpJsonString = ''; + /** + * Centrifuge data + * + * @var array + */ + public $centrifuge = []; + /** * Constructor diff --git a/civicrm/release-notes.md b/civicrm/release-notes.md index d59b53ae4c..a52acdc4c8 100644 --- a/civicrm/release-notes.md +++ b/civicrm/release-notes.md @@ -15,6 +15,17 @@ Other resources for identifying changes are: * https://github.com/civicrm/civicrm-joomla * https://github.com/civicrm/civicrm-wordpress +## CiviCRM 5.64.0 + +Released August 2, 2023 + +- **[Synopsis](release-notes/5.64.0.md#synopsis)** +- **[Features](release-notes/5.64.0.md#features)** +- **[Bugs resolved](release-notes/5.64.0.md#bugs)** +- **[Miscellany](release-notes/5.64.0.md#misc)** +- **[Credits](release-notes/5.64.0.md#credits)** +- **[Feedback](release-notes/5.64.0.md#feedback)** + ## CiviCRM 5.63.2 Released July 26, 2023 @@ -44,6 +55,15 @@ Released July 5, 2023 - **[Credits](release-notes/5.63.0.md#credits)** - **[Feedback](release-notes/5.63.0.md#feedback)** +## CiviCRM 5.62.1 + +Released June 16, 2023 + +- **[Synopsis](release-notes/5.62.1.md#synopsis)** +- **[Bugs resolved](release-notes/5.62.1.md#bugs)** +- **[Credits](release-notes/5.62.1.md#credits)** +- **[Feedback](release-notes/5.62.1.md#feedback)** + ## CiviCRM 5.62.0 Released June 7, 2023 @@ -55,6 +75,42 @@ Released June 7, 2023 - **[Credits](release-notes/5.62.0.md#credits)** - **[Feedback](release-notes/5.62.0.md#feedback)** +## CiviCRM 5.61.4 + +Released May 24, 2023 + +- **[Synopsis](release-notes/5.61.4.md#synopsis)** +- **[Bugs resolved](release-notes/5.61.4.md#bugs)** +- **[Credits](release-notes/5.61.4.md#credits)** +- **[Feedback](release-notes/5.61.4.md#feedback)** + +## CiviCRM 5.61.3 + +Released May 19, 2023 + +- **[Synopsis](release-notes/5.61.3.md#synopsis)** +- **[Bugs resolved](release-notes/5.61.3.md#bugs)** +- **[Credits](release-notes/5.61.3.md#credits)** +- **[Feedback](release-notes/5.61.3.md#feedback)** + +## CiviCRM 5.61.2 + +Released May 8, 2023 + +- **[Synopsis](release-notes/5.61.2.md#synopsis)** +- **[Bugs resolved](release-notes/5.61.2.md#bugs)** +- **[Credits](release-notes/5.61.2.md#credits)** +- **[Feedback](release-notes/5.61.2.md#feedback)** + +## CiviCRM 5.61.1 + +Released May 5, 2023 + +- **[Synopsis](release-notes/5.61.1.md#synopsis)** +- **[Bugs resolved](release-notes/5.61.1.md#bugs)** +- **[Credits](release-notes/5.61.1.md#credits)** +- **[Feedback](release-notes/5.61.1.md#feedback)** + ## CiviCRM 5.61.0 Released May 3, 2023 @@ -77,6 +133,42 @@ Released April 5, 2023 - **[Credits](release-notes/5.60.0.md#credits)** - **[Feedback](release-notes/5.60.0.md#feedback)** +## CiviCRM 5.59.4 + +Released March 27, 2023 + +- **[Synopsis](release-notes/5.59.4.md#synopsis)** +- **[Bugs resolved](release-notes/5.59.4.md#bugs)** +- **[Credits](release-notes/5.59.4.md#credits)** +- **[Feedback](release-notes/5.59.4.md#feedback)** + +## CiviCRM 5.59.3 + +Released March 15, 2023 + +- **[Synopsis](release-notes/5.59.3.md#synopsis)** +- **[Bugs resolved](release-notes/5.59.3.md#bugs)** +- **[Credits](release-notes/5.59.3.md#credits)** +- **[Feedback](release-notes/5.59.3.md#feedback)** + +## CiviCRM 5.59.2 + +Released March 10, 2023 + +- **[Synopsis](release-notes/5.59.2.md#synopsis)** +- **[Bugs resolved](release-notes/5.59.2.md#bugs)** +- **[Credits](release-notes/5.59.2.md#credits)** +- **[Feedback](release-notes/5.59.2.md#feedback)** + +## CiviCRM 5.59.1 + +Released March 3, 2023 + +- **[Synopsis](release-notes/5.59.1.md#synopsis)** +- **[Bugs resolved](release-notes/5.59.1.md#bugs)** +- **[Credits](release-notes/5.59.1.md#credits)** +- **[Feedback](release-notes/5.59.1.md#feedback)** + ## CiviCRM 5.59.0 Released March 1, 2023 @@ -88,6 +180,16 @@ Released March 1, 2023 - **[Credits](release-notes/5.59.0.md#credits)** - **[Feedback](release-notes/5.59.0.md#feedback)** +## CiviCRM 5.58.1 + +Released February 15, 2023 + +- **[Synopsis](release-notes/5.58.1.md#synopsis)** +- **[Security advisories](release-notes/5.58.1.md#security)** +- **[Bugs resolved](release-notes/5.58.1.md#bugs)** +- **[Credits](release-notes/5.58.1.md#credits)** +- **[Feedback](release-notes/5.58.1.md#feedback)** + ## CiviCRM 5.58.0 Released February 1, 2023 diff --git a/civicrm/release-notes/5.58.1.md b/civicrm/release-notes/5.58.1.md new file mode 100644 index 0000000000..4cfbe5f296 --- /dev/null +++ b/civicrm/release-notes/5.58.1.md @@ -0,0 +1,53 @@ +# CiviCRM 5.58.1 + +Released February 15, 2023 + +- **[Synopsis](#synopsis)** +- **[Security advisories](#security)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +| --------------------------------------------------------------- | -------- | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| **Fix security vulnerabilities?** | **yes** | + +## <a name="security"></a>Security advisories + +* **[CIVI-SA-2023-04](https://civicrm.org/advisory/civi-sa-2023-04-file-type-restrictions): File Type Restrictions (Remote code execution)** +* **[CIVI-SA-2023-05](https://civicrm.org/advisory/civi-sa-2023-05-quick-add-widget): Quick Add Widget (Javascript execution)** +* **[CIVI-SA-2023-06](https://civicrm.org/advisory/civi-sa-2023-06-dompdf-203): Dompdf 2.0.3 (Remote code exeuction)** + +## <a name="bugs"></a>Bugs resolved + +* **_CiviContribute_: PDF invoice renders with incorrect formatting ([dev/core#4080](https://lab.civicrm.org/dev/core/-/issues/4080): [#25547](https://github.com/civicrm/civicrm-core/pull/25547))** +* **_CiviEvent_: Excessive validation of title field ([dev/core#4119](https://lab.civicrm.org/dev/core/-/issues/4119): [#25578](https://github.com/civicrm/civicrm-core/pull/25578))** +* **_CiviReports_: Error "no such field" when displaying to limited-access user ([dev/core#4068](https://lab.civicrm.org/dev/core/-/issues/4068): [#25525](https://github.com/civicrm/civicrm-core/pull/25525))** +* **_Extensions_: During installation, new classes may not initially load ([dev/core#4055](https://lab.civicrm.org/dev/core/-/issues/4055): [#25379](https://github.com/civicrm/civicrm-core/pull/25379))** +* **_Status Check_: Tweak severity of new timezone warning ([#25583](https://github.com/civicrm/civicrm-core/pull/25583/))** +* **_Testing_: Headless tests should initialize timezone ([#25534](https://github.com/civicrm/civicrm-core/pull/25534))** +* **_Tokens_: Tokens like `{contact.email_primary.email}` do not render consistently ([dev/core#4109](https://lab.civicrm.org/dev/core/-/issues/4109): [#25548](https://github.com/civicrm/civicrm-core/pull/25548/))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wikimedia Foundation - Eileen McNaughton; timinaust; Tadpole Collective - Kevin Cristiano; +Megaphone Technology Consulting - Jon Goldberg; Maria; JMA Consulting - Seamus Lee; +Deloitte - Andrea Intilangelo; Dave D; CiviDesk - Yashodha Chaku; CiviCRM - Tim Otten; +CiviCoop - Klaas Eikelboom, Erik Hommel; Circle Interactive - Pradeep Nayak; Bob Silvern; +ben_fairless; Australian Greens - Andrew Cormick-Dockery + +## <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.59.1.md b/civicrm/release-notes/5.59.1.md new file mode 100644 index 0000000000..e66582b65e --- /dev/null +++ b/civicrm/release-notes/5.59.1.md @@ -0,0 +1,41 @@ +# CiviCRM 5.59.1 + +Released March 3, 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 + +* **_CiviContribute_: Contribution pages crash if CiviMember is disabled ([#25729](https://github.com/civicrm/civicrm-core/pull/25729))** +* **_Tokens_: Abbreviated state/province does not display ([dev/core#4147](https://lab.civicrm.org/dev/core/-/issues/4147): [#25704](https://github.com/civicrm/civicrm-core/pull/25704))** +* **_Multilingual_: Site reports `DB Error: -32` after running upgrade ([dev/core#4155](https://lab.civicrm.org/dev/core/-/issues/4155): [#25733](https://github.com/civicrm/civicrm-core/pull/25733))** + + If you previously ran the 5.59.0 upgrade on a multilingual site and have a persistent fatal error, then you may wish to (a) consult the Gitlab discussion for resolution steps or (b) rollback to the original DB and upgrade to 5.59.1 instead. + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wikimedia Foundation - Eileen McNaughton; Megaphone Technology Consulting - Jon Goldberg; +JMA Consulting - Seamus Lee; CiviCRM - Tim Otten; 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.59.2.md b/civicrm/release-notes/5.59.2.md new file mode 100644 index 0000000000..b807de68d1 --- /dev/null +++ b/civicrm/release-notes/5.59.2.md @@ -0,0 +1,39 @@ +# CiviCRM 5.59.2 + +Released March 10, 2023 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +| --------------------------------------------------------------- | -------- | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_Import_: Contribution note does not accept empty string ([dev/core#4105](https://lab.civicrm.org/dev/core/-/issues/4105): [#25569](https://github.com/civicrm/civicrm-core/pull/25569))** +* **_PayPal Pro_: New recurring payments recorded twice ([dev/core#4158](https://lab.civicrm.org/dev/core/-/issues/4158): [#25775](https://github.com/civicrm/civicrm-core/pull/25775))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wikimedia Foundation - Eileen McNaughton; PERORA SRL - Samuele Masetto; MJW Consulting - +Matthew Wire; Megaphone Technology Consulting - Jon Goldberg; Korlon - Stuart Gaston; JMA +Consulting - Seamus Lee; Dave D; CiviCRM - Tim Otten + +## <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.59.3.md b/civicrm/release-notes/5.59.3.md new file mode 100644 index 0000000000..ccb3b0de04 --- /dev/null +++ b/civicrm/release-notes/5.59.3.md @@ -0,0 +1,38 @@ +# CiviCRM 5.59.3 + +Released March 15, 2023 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +| --------------------------------------------------------------- | -------- | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_Import_: Contribution import fails on empty soft credit ([dev/core#4166](https://lab.civicrm.org/dev/core/-/issues/4166): [#25806](https://github.com/civicrm/civicrm-core/pull/25806))** +* **_Dedupe_: Employer name becomes stale after merging organizations (partial fix) ([dev/core#4156](https://lab.civicrm.org/dev/core/-/issues/4156): [#25778](https://github.com/civicrm/civicrm-core/pull/25778))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wikimedia Foundation - Eileen McNaughton; lkuttner; Coop SymbioTIC - Mathieu Lutfy; +CiviCRM - Tim Otten; CiviCoop - Erik Hommel; 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.59.4.md b/civicrm/release-notes/5.59.4.md new file mode 100644 index 0000000000..59272f37d8 --- /dev/null +++ b/civicrm/release-notes/5.59.4.md @@ -0,0 +1,43 @@ +# CiviCRM 5.59.4 + +Released March 27, 2023 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +| --------------------------------------------------------------- | -------- | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_CiviCase_: "Delete Case" leads to "Network Error" ([dev/core#4190](https://lab.civicrm.org/dev/core/-/issues/4190): [#25849](https://github.com/civicrm/civicrm-core/pull/25849))** +* **_CiviContribute_: Sorting by soft-credit name/date leads to AJAX error ([dev/core#4187](https://lab.civicrm.org/dev/core/-/issues/4187): [#25846](https://github.com/civicrm/civicrm-core/pull/25846))** +* **_CiviContribute_: Confirmation screen displays extraneous debit fields ([dev/core#4189](https://lab.civicrm.org/dev/core/-/issues/4189): [#25910](https://github.com/civicrm/civicrm-core/pull/25910))** +* **_CiviEvent_: Event created via API incorrectly marked as template ([dev/core#4205](https://lab.civicrm.org/dev/core/-/issues/4205): [#25932](https://github.com/civicrm/civicrm-core/pull/25932))** +* **_Dedupe/Merge_: Harden against possibility of inconsistent value for `is_view` ([dev/core#4197](https://lab.civicrm.org/dev/core/-/issues/4197): [#25912](https://github.com/civicrm/civicrm-core/pull/25912))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wikimedia Foundation - Eileen McNaughton; Romy Ebert; MJW Consulting - Matthew Wire; +Lemniscus - Noah Miller; Korlon - Stuart Gaston; JMA Consulting - Seamus Lee; Coop +SymbioTIC - Mathieu Lutfy; composerjk; CiviCRM - Tim Otten; Black Brick Software - David +Hayes; Benjamin W; Andreas Howiller + +## <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.61.1.md b/civicrm/release-notes/5.61.1.md new file mode 100644 index 0000000000..18216c4225 --- /dev/null +++ b/civicrm/release-notes/5.61.1.md @@ -0,0 +1,39 @@ +# CiviCRM 5.61.1 + +Released May 5, 2023 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +| --------------------------------------------------------------- | -------- | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_Drupal_: Fix compatibility with Drupal v9.5.9 ([drupal#82](https://github.com/civicrm/civicrm-drupal-8/pull/82), [#26159](https://github.com/civicrm/civicrm-core/pull/26159))** + + Drupal v9.5.9 modified the handling of "Route" data. This revision changes the CiviCRM-Drupal routes for compatibility. Administrators should manually clear Drupal caches (`drush cc` or "_Administration > Configuration > Development_"). + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Skvare - Mark Hanna; marvs5; JMA Consulting - Seamus Lee; Jens Schuppe; Dave D; CiviCRM - +Tim Otten + +## <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.61.2.md b/civicrm/release-notes/5.61.2.md new file mode 100644 index 0000000000..09ef0612d7 --- /dev/null +++ b/civicrm/release-notes/5.61.2.md @@ -0,0 +1,38 @@ +# CiviCRM 5.61.2 + +Released May 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? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_CiviMember_: Cannot submit certain membership forms (non-"quick config" forms) ([dev/core#4282](https://lab.civicrm.org/dev/core/-/issues/4282): [#26170](https://github.com/civicrm/civicrm-core/pull/26170))** +* **_Drupal_: Extraneous warnings logged for non-CiviCRM pages (Drupal 8/9/10) ([drupal#85](https://github.com/civicrm/civicrm-drupal-8/pull/85))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wikimedia Foundation - Eileen McNaughton; Semper IT - Karin Gerritsen; HeneryH; Fuzion - +Jitendra Purohit; Dave D; composerjk; CiviCRM - Tim Otten + +## <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.61.3.md b/civicrm/release-notes/5.61.3.md new file mode 100644 index 0000000000..4e7a283e55 --- /dev/null +++ b/civicrm/release-notes/5.61.3.md @@ -0,0 +1,38 @@ +# CiviCRM 5.61.3 + +Released May 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? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_CiviMember_: Renewal checkbox does not appear on contribution pages (when using non-"quick config" forms) ([dev/core#4282](https://lab.civicrm.org/dev/core/-/issues/4282): [#26268](https://github.com/civicrm/civicrm-core/pull/26268))** +* **_Payment Processing_: Warning about "frontend_title" ([#26267](https://github.com/civicrm/civicrm-core/pull/26267))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wikimedia Foundation - Eileen McNaughton; Klangsoft - David Reedy Jr; CiviCRM - Coleman +Watts + +## <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.61.4.md b/civicrm/release-notes/5.61.4.md new file mode 100644 index 0000000000..a06683522a --- /dev/null +++ b/civicrm/release-notes/5.61.4.md @@ -0,0 +1,41 @@ +# CiviCRM 5.61.4 + +Released May 24, 2023 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +| --------------------------------------------------------------- | -------- | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_CiviMember_: Fix erroneous layout on "Contribution Page" ([dev/core#4310](https://lab.civicrm.org/dev/core/-/issues/4310): [#26320](https://github.com/civicrm/civicrm-core/pull/26320))** +* **_CiviSMS/CiviMail_: Fix error processing help text ([dev/core#4306](https://lab.civicrm.org/dev/core/-/issues/4306): [#26010](https://github.com/civicrm/civicrm-core/pull/26010))** +* **_Custom Data_: Fix error processing help text ([dev/core#4303](https://lab.civicrm.org/dev/core/-/issues/4303): [#26298](https://github.com/civicrm/civicrm-core/pull/26298))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wildsight - Lars Sanders-Green; wil_SRQ; Wikimedia Foundation - Eileen McNaughton; +Megaphone Technology Consulting - Jon Goldberg; JMA Consulting - Seamus Lee; +jhungerford; Dave D; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; CiviCRM - Tim +Otten, Coleman Watts; Agileware - Justin Freeman, Francis Whittle + +## <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.62.1.md b/civicrm/release-notes/5.62.1.md new file mode 100644 index 0000000000..c0086208bd --- /dev/null +++ b/civicrm/release-notes/5.62.1.md @@ -0,0 +1,42 @@ +# CiviCRM 5.62.1 + +Released June 16, 2023 + +- **[Synopsis](#synopsis)** +- **[Bugs resolved](#bugs)** +- **[Credits](#credits)** +- **[Feedback](#feedback)** + +## <a name="synopsis"></a>Synopsis + +| *Does this version...?* | | +| --------------------------------------------------------------- | -------- | +| Change the database schema? | no | +| Alter the API? | no | +| Require attention to configuration options? | no | +| Fix problems installing or upgrading to a previous version? | no | +| Introduce features? | no | +| **Fix bugs?** | **yes** | +| Fix security vulnerabilities? | no | + +## <a name="bugs"></a>Bugs resolved + +* **_CiviMail_: Click-through URLs broken on WordPress ([dev/core#4363](https://lab.civicrm.org/dev/core/-/issues/4363): [wordpress#296](https://github.com/civicrm/civicrm-wordpress/pull/296))** +* **_CiviMember_: Discounts not applied to memberships ([dev/core#4352](https://lab.civicrm.org/dev/core/-/issues/4352): [#26538](https://github.com/civicrm/civicrm-core/pull/26538))** +* **_CiviMember_: Membership block displayed unnecessarily ([#26541](https://github.com/civicrm/civicrm-core/pull/26541))** + +## <a name="credits"></a>Credits + +This release was developed by the following authors and reviewers: + +Wildsight - Lars Sander-Green; Wikimedia Foundation - Eileen McNaughton; Tadpole +Collective - Kevin Cristiano; Michael Labriola; Megaphone Technology Consulting - Jon +Goldberg; JMA Consulting - Seamus Lee; CiviCRM - Coleman Watts, Tim Otten; Calibrate - +Wouter Hechtermans; ASMAC (American Society of Music Arrangers and Composers) - Jeff +Kellem + +## <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.63.2.md b/civicrm/release-notes/5.63.2.md index 9351a718fa..31026b99b7 100644 --- a/civicrm/release-notes/5.63.2.md +++ b/civicrm/release-notes/5.63.2.md @@ -30,8 +30,8 @@ Released July 26, 2023 This release was developed by the following authors and reviewers: Wildsight - Lars Sander-Green; Wikimedia Foundation - Eileen McNaughton; Megaphone -Technology Consulting - Jon Goldberg; JMA Consulting - Seamus Lee; Dave D; Coop SymbioTIC -- Mathieu Lutfy; CiviDesk - Yashodha Chaku; CiviCRM - Coleman Watts, Tim Otten +Technology Consulting - Jon Goldberg; JMA Consulting - Seamus Lee; Dave D; Coop SymbioTIC - Mathieu +Lutfy; CiviDesk - Yashodha Chaku; CiviCRM - Coleman Watts, Tim Otten ## <a name="feedback"></a>Feedback diff --git a/civicrm/release-notes/5.64.0.md b/civicrm/release-notes/5.64.0.md new file mode 100644 index 0000000000..128cdac19c --- /dev/null +++ b/civicrm/release-notes/5.64.0.md @@ -0,0 +1,1077 @@ +# CiviCRM 5.64.0 + +Released August 2, 2023 + +- **[Synopsis](#synopsis)** +- **[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 + +- **System Requirements - Raise minimum recommended PHP to 7.4 + ([26799](https://github.com/civicrm/civicrm-core/pull/26799))** + + Sites running PHP 7.3 will now display a "PHP Out-of-Date" warning on the + system check. + +- **Add LEFT, RIGHT and SUBSTRING SQL functions + ([26549](https://github.com/civicrm/civicrm-core/pull/26549))** + + Adds LEFT, RIGHT and SUBSTRING SQL functions to APIv4. + +- **Log server-side validation errors so it is easier to troubleshoot/debug + afform issues ([25533](https://github.com/civicrm/civicrm-core/pull/25533))** + + Makes it easier to debug in afform by logging server-side validation errors. + +- **Render Email input as type="email" + ([26705](https://github.com/civicrm/civicrm-core/pull/26705) and + [26802](https://github.com/civicrm/civicrm-core/pull/26802))** + + Makes core email field inputs display as type=email. Email address validation + is enforced on data entry but not when searching. + +- **Specify 'match' in mgd.php files + ([26608](https://github.com/civicrm/civicrm-core/pull/26608))** + + Adds 'match' param to reduce conflicts when resolving managed entities. + +- **Towards consistency for displaying test entities. Stop hiding test entities + on some dashboards + ([23724](https://github.com/civicrm/civicrm-core/pull/23724))** + + Works towards consistent display of test entities by making all test entities + show up on the relevant contact summary tabs and not on the user dashboard. + +- **Add weights to contact search actions + ([26719](https://github.com/civicrm/civicrm-core/pull/26719))** + + Adds weights to contact search actions so extensions can more easily + manipulate them. + +- **Add weight to Group Links + ([26718](https://github.com/civicrm/civicrm-core/pull/26718))** + + Adds weights to group links so that extensions can more easily manipulate + them. + +- **Add import listing for admins + ([26316](https://github.com/civicrm/civicrm-core/pull/26316))** + + Adds a searchkit search to display a list of imports run on the site for + admins only to the civiimport extension. + +- **Add All imports menu item for users with Administer Queues + ([26516](https://github.com/civicrm/civicrm-core/pull/26516))** + + Adds a link to "All Imports" search to the menu bar for sites with the + civiimport extension enabled. + +- **[WIP] civicrm_admin_ui Find contacts replacement + ([26381](https://github.com/civicrm/civicrm-core/pull/26381))** + + When using the core AdminUI extension, replaces the "Find contacts" search + with a Search Kit + Form Builder version. + +- **Remove Search Builder link from search results + ([26670](https://github.com/civicrm/civicrm-core/pull/26670))** + + Removes the link to Search Builder from Advanced Search and Find Contacts + results screens. + +- **Add capitalize filter to tokens + ([26662](https://github.com/civicrm/civicrm-core/pull/26662))** + + Adds a token filter: capitalize, to apply title-case/name-case to token-values. + +- **crmMoney filter - allow coercing locale + ([26383](https://github.com/civicrm/civicrm-core/pull/26383))** + + Adds a crmMoney filter to tokens, comparable to crmDate, for coercing money + into a particular format. + +- **Note Form: use EntityFormTrait and setEntityId for postProcess hooks + ([26686](https://github.com/civicrm/civicrm-core/pull/26686))** + + Makes it easier for extension developers to use the postProcess hook when + notes are edited. + +- **Improve select for Add Navigation Menu Item > Parent + ([26550](https://github.com/civicrm/civicrm-core/pull/26550))** + + Improves the "Add Navigation Menu Item" parent field by making it a select2, + wider and the list ordered. + +- **AdminUI: Convert Job Log page civicrm/admin/joblog + ([26732](https://github.com/civicrm/civicrm-core/pull/26732))** + + Adds a "Job Log" page to the Admin UI extension. + +- **AdminUI: Convert Mail Accounts page civicrm/admin/mailSettings + ([26733](https://github.com/civicrm/civicrm-core/pull/26733))** + + Adds a "Mail Accounts" page to the Admin UI extension. + +- **Add select2s for Contribution, etc + ([26502](https://github.com/civicrm/civicrm-core/pull/26502))** + + Improves user experience by changing old-school selects to select2s on the + following forms: Contribution, Manage Contribution Page, Manage Event + Registration, Payments, PCPs, Pledges. + +- **Put link first in SearchDisplay Links options + ([26697](https://github.com/civicrm/civicrm-core/pull/26697))** + + Improves SearchKit -> SearchDisplay -> Links options user experience by + reordering the fields. + +- **Clarify dedupe rules as "Name or Email" + ([26673](https://github.com/civicrm/civicrm-core/pull/26673))** + + Renames the default Organizational and Household dedupe rules from "Name and + Email", to "Name or Email" which more accurately reflects how they work. + +- **Move last (hopefully) custom search classes to the extension, unhide + ([26664](https://github.com/civicrm/civicrm-core/pull/26664) and + [26660](https://github.com/civicrm/civicrm-core/pull/26660))** + + Unhides the Legacy Custom Search extension so that users can uninstall it. + +- **WorkflowMessage - Allow more dynamic-localized data. Unify language field. + ([26618](https://github.com/civicrm/civicrm-core/pull/26618) and + [26651](https://github.com/civicrm/civicrm-core/pull/26651))** + + Makes it possible for bespoke methods in WorkflowMessages to generate + localized content. + +- **Add deployID to civicrm.settings.php + ([26632](https://github.com/civicrm/civicrm-core/pull/26632))** + + Adds deployID to civicrm.settings.php file for redis implementations. + +- **Add Search Display of ACLs + ([26624](https://github.com/civicrm/civicrm-core/pull/26624), + [26627](https://github.com/civicrm/civicrm-core/pull/26627) and + [26617](https://github.com/civicrm/civicrm-core/pull/26617))** + + Adds a search kit built search display of ACLs into the new admin ui extension + and associated metadata that is needed. + +- **Allow negative rules for ACLs + ([dev/core#3753](https://lab.civicrm.org/dev/core/-/issues/3753): + [26041](https://github.com/civicrm/civicrm-core/pull/26041))** + + Permits ACL rules that negate (deny) access. + +- **Add "priority" column to ACLs and support ACL rule precedence + ([26592](https://github.com/civicrm/civicrm-core/pull/26592) and + [26609](https://github.com/civicrm/civicrm-core/pull/26609))** + + Adds the concept of a priority to ACL rules. This allows for allow or deny + rules to take precedence by the priority they are given. + +- **Move standalone classes and standaloneusers extension into core + ([26684](https://github.com/civicrm/civicrm-core/pull/26684), + [26621](https://github.com/civicrm/civicrm-core/pull/26621) and + [26631](https://github.com/civicrm/civicrm-core/pull/26631))** + + Adds support for Standalone builds. + +- **SearchKit - Provide context information to subscribers + ([26716](https://github.com/civicrm/civicrm-core/pull/26716))** + + Provides context information to subscribers in SearchKit. + +- **SearchKit - Allow custom fields in join conditions + ([26698](https://github.com/civicrm/civicrm-core/pull/26698))** + + Allows custom fields in SearchKit join conditions. + +- **SearchKit - Expose expires_date field to UI + ([26485](https://github.com/civicrm/civicrm-core/pull/26485))** + + Exposes expires_date field to the SearchKit UI. + +- **API/SearchKit - Improve dynamic pseudoconstant lookups and ACL adminUI + ([26639](https://github.com/civicrm/civicrm-core/pull/26639))** + + Improves metadata in the ACL entity, metadata handling in the API, and the + new AdminUI "Manage ACL" screen. + +- **APIv4 - Add EntitySet api for set-ops such as UNION + ([26536](https://github.com/civicrm/civicrm-core/pull/26536) and + [26583](https://github.com/civicrm/civicrm-core/pull/26583))** + + Makes it so one can use UNION in APIv4. + +- **APIv4 - Remove gatekeeper permission check for AJAX endpoint (with tests) + ([26391](https://github.com/civicrm/civicrm-core/pull/26391))** + + Historically the AJAX api has required either 'access CiviCRM' or 'access + AJAX API' as a broad hedge against security vulnerabilities, but this + interferes with legitimate use-cases for anonymous users to make ajax + requests. Since http requests are allowed by anon, and many Civi pages now + contain ajax elements, this PR replaces that broad hedge with unit tests for + AJAX security. + +- **APIv4 - Add more metadata to CustomValue entities; use AutoService + ([26710](https://github.com/civicrm/civicrm-core/pull/26710))** + + Metadata improvements for multi-record custom field pseudo-entities. + +- **Afform - Enable search operators to be exposed on the form + ([26496](https://github.com/civicrm/civicrm-core/pull/26496))** + + Allows search operators to be selectable on the form by the end-user in Form + Builder. + +- **Form Builder - Clarify "Security" options + ([26581](https://github.com/civicrm/civicrm-core/pull/26581))** + + Improves Form Builder user experience by clarifying Security options. + +### CiviCampaign + +- **Add apiv4 Survey entity + ([26653](https://github.com/civicrm/civicrm-core/pull/26653))** + + Adds the Survey entity to Apiv4. + +- **Add survey tokens + ([26661](https://github.com/civicrm/civicrm-core/pull/26661))** + + Adds email tokens for survey data. + +- **Add workflow message template for sign_petition, confirm petition + ([26654](https://github.com/civicrm/civicrm-core/pull/26654))** + + Adds workflow message template for sign_petition and confirm petition. + +### CiviCase + +- **APIv4, Case API, configure options and suffixes for medium_id field + ([25224](https://github.com/civicrm/civicrm-core/pull/25224))** + + Improves the APIv4 Case entity by making the options for `medium_id` a select + instead of a free text field. + +### CiviContribute + +- **[AuthorizeNetIPN] Use API for failure updates + ([26600](https://github.com/civicrm/civicrm-core/pull/26600))** + + Improves AuthorizeNetIPN integration by using APIv4 to log Failure updates. + +- **Make the `recur_id` field of Contributions available to FormBuilder + ([26745](https://github.com/civicrm/civicrm-core/pull/26745))** + + Makes the `recur_id` Contribution field available to FormBuilder. + +### CiviEvent + +- **Add unit test cover + nl2br for location in event emails + ([26296](https://github.com/civicrm/civicrm-core/pull/26296))** + + Makes it so the html version of the event location token converts line breaks + to page breaks. + +- **Expose a few more event fields as tokens + ([26575](https://github.com/civicrm/civicrm-core/pull/26575))** + + Makes the following information available as tokens when sending participants + emails: `is_share`, `is_share:label`, `requires_approval`, + `requires_approval:label` and `fee_label.` + +- **Enhance examples to cover additional participants + ([26573](https://github.com/civicrm/civicrm-core/pull/26573))** + + Adds additional examples to the event message templates preview and starts to + flesh out the data to present for them + +### CiviMail + +- **CiviMail - New autocompletes for selecting recipients + ([26585](https://github.com/civicrm/civicrm-core/pull/26585))** + + Breaks the "Recipients" field when building a CiviMail mailing into a select + for groups to include and a select for groups to exclude. + +- **Add missing Mailing Events to API4: Delivered, Forward, Reply + ([26683](https://github.com/civicrm/civicrm-core/pull/26683))** + + Adds the mailing events: Delivered, Forward and Reply to APIv4. + +- **Add calculated fields to API 4 for total mailing stats + ([26689](https://github.com/civicrm/civicrm-core/pull/26689) and + [26694](https://github.com/civicrm/civicrm-core/pull/26694))** + + Adds calculated fields to APIv4 for mailing stats, specifically: intended + recipients, successful deliveries, unique and total opens, unique and total + clicks, bounces, unsubscribes, opt outs, forwards and replies. + +### Drupal Integration + +- **Allow Drupal webstest user to view debug output + ([26703](https://github.com/civicrm/civicrm-core/pull/26703))** + + Makes it so the drupal webtest user can view debug output to make it easier + to debug. + +## <a name="bugs"></a>Bugs resolved + +### Core CiviCRM + +- **Make frontend_title consistently required and use it in all front end + presentations (Work Towards + [dev/core#4213](https://lab.civicrm.org/dev/core/-/issues/4213): + [26721](https://github.com/civicrm/civicrm-core/pull/26721))** + + Adds `frontend_title` to various data set up places. + +- **How to activate downloaded translations? + ([extensions/uplang#6](https://lab.civicrm.org/extensions/uplang/-/issues/6): + [26564](https://github.com/civicrm/civicrm-core/pull/26564))** + + Fixes menu description translations on the Administration Console. + +- **Migrate installers to "setup" API (Work Towards + [dev/core#1615](https://lab.civicrm.org/dev/core/-/issues/1615): + [26678](https://github.com/civicrm/civicrm-core/pull/26678) and + [26677](https://github.com/civicrm/civicrm-core/pull/26677))** + + Adds some distmaker options to speed up frequent rebuilds. Work towards + migrating the Joomla installer to use the setup api. + +- **OAUTH2 google doesn't seem to give you refresh tokens easily + ([dev/core#2184](https://lab.civicrm.org/dev/core/-/issues/2184): + [26531](https://github.com/civicrm/civicrm-core/pull/26531))** + +- **Errors on merging contacts with websites + ([dev/core#2549](https://lab.civicrm.org/dev/core/-/issues/2549): + [26605](https://github.com/civicrm/civicrm-core/pull/26605))** + +- **Proposal: Create stub extensions for civicrm core + all components + (Work Towards [dev/core#3961](https://lab.civicrm.org/dev/core/-/issues/3961): + [26208](https://github.com/civicrm/civicrm-core/pull/26208))** + + Moves component Api4 files to component extensions. + +- **Replace hard-coded call to legacyCustomSearch framework with a hook + ([dev/core#4056](https://lab.civicrm.org/dev/core/-/issues/4056): + [26611](https://github.com/civicrm/civicrm-core/pull/26611))** + +- **Finish making legacycustomsearches optional + (Work Towards [dev/core#4112](https://lab.civicrm.org/dev/core/-/issues/4112): + [26614](https://github.com/civicrm/civicrm-core/pull/26614) and + [26613](https://github.com/civicrm/civicrm-core/pull/26613))** + + Refactors code to move towards making legacycustomsearches optional. + +- **SearchKit/FormBuilder - handling monetary totals + ([dev/core#4207](https://lab.civicrm.org/dev/core/-/issues/4207): + [26498](https://github.com/civicrm/civicrm-core/pull/26498))** + +- **AdminUI: Redirection after creating new profile and adding fields is + incorrect / not user friendly + ([dev/core#4254](https://lab.civicrm.org/dev/core/-/issues/4254): + [26470](https://github.com/civicrm/civicrm-core/pull/26470))** + +- **SearchKit + FormBuilder: In place edit using a list view + ([dev/core#4319](https://lab.civicrm.org/dev/core/-/issues/4319): + [26473](https://github.com/civicrm/civicrm-core/pull/26473))** + + Fix in-place edit in SearchKit list and grid displays. + +- **GroupTest occasionally failing due to new test + ([dev/core#4327](https://lab.civicrm.org/dev/core/-/issues/4327): + [26478](https://github.com/civicrm/civicrm-core/pull/26478))** + +- **Prevent people from sneakily adding fields to your extension's reserved + custom groups by using the Move action + ([dev/core#4338](https://lab.civicrm.org/dev/core/-/issues/4338): + [26518](https://github.com/civicrm/civicrm-core/pull/26518))** + +- **SearchKit: two displays on dashboard using similar search incorrectly share + Total value -- variable leakage? + ([dev/core#4348](https://lab.civicrm.org/dev/core/-/issues/4348): + [26480](https://github.com/civicrm/civicrm-core/pull/26480))** + +- **New Activity with custom radio field gives fatal error + ([dev/core#4355](https://lab.civicrm.org/dev/core/-/issues/4355): + [26517](https://github.com/civicrm/civicrm-core/pull/26517))** + +- **Verbiage changes on Find Groups screen + ([dev/core#4358](https://lab.civicrm.org/dev/core/-/issues/4358): + [26525](https://github.com/civicrm/civicrm-core/pull/26525))** + +- **Afforms fields are doubled + ([dev/core#4359](https://lab.civicrm.org/dev/core/-/issues/4359): + [26528](https://github.com/civicrm/civicrm-core/pull/26528))** + +- **AdminUI: Advanced Search not accessible and Redirect after Search Actions + from Contacts in Group broken + ([dev/core#4360](https://lab.civicrm.org/dev/core/-/issues/4360) and + [dev/core#4384](https://lab.civicrm.org/dev/core/-/issues/4384): + [26669](https://github.com/civicrm/civicrm-core/pull/26669))** + +- **Trigger-based logging schema reconciliation fails when a column is renamed + to a different upper/lower case + ([dev/core#4369](https://lab.civicrm.org/dev/core/-/issues/4369): + [26548](https://github.com/civicrm/civicrm-core/pull/26548))** + +- **One of parameters (value: ) is not of the type CommaSeparatedIntegers for + lesser-permissioned users + ([dev/core#4383](https://lab.civicrm.org/dev/core/-/issues/4383): + [26577](https://github.com/civicrm/civicrm-core/pull/26577))** + + Fixes a crash for lesser permissioned users. + +- **parent_id constraint on civicrm_activity can lead to data loss + ([dev/core#4451](https://lab.civicrm.org/dev/core/-/issues/4451): + [26939](https://github.com/civicrm/civicrm-core/pull/26939))** + + This resolves a longstanding issue when follow-up activities were deleted when + the parent activity was deleted. + +- **SearchKit: Arithmetic field transformation broken + ([dev/core#4455](https://lab.civicrm.org/dev/core/-/issues/4455): + [26944](https://github.com/civicrm/civicrm-core/pull/26944))** + +- **PHP 8 Compatibility Issue - strlen of array + ([dev/core#4387](https://lab.civicrm.org/dev/core/-/issues/4387): + [26598](https://github.com/civicrm/civicrm-core/pull/26598))** + +- **Can't import using contact id + (Work Towards + [dev/core#4389](https://lab.civicrm.org/dev/core/-/issues/4389): + [26607](https://github.com/civicrm/civicrm-core/pull/26607))** + + Improves import help text. + +- **Installing a core extension results in an error + ([dev/core#4391](https://lab.civicrm.org/dev/core/-/issues/4391): + [26743](https://github.com/civicrm/civicrm-core/pull/26743))** + +- **AdminUI: Allow searching by "LastName, FirstName" in Find Contacts + ([dev/core#4396](https://lab.civicrm.org/dev/core/-/issues/4396): + [26682](https://github.com/civicrm/civicrm-core/pull/26682))** + +- **Translation for site default language not loaded + ([dev/core#4409](https://lab.civicrm.org/dev/core/-/issues/4409): + [26232](https://github.com/civicrm/civicrm-core/pull/26232) and + [26785](https://github.com/civicrm/civicrm-core/pull/26785))** + +- **Disabling and re-enabling a core extension removes it from the navigation + menu and from SK + ([dev/core#4413](https://lab.civicrm.org/dev/core/-/issues/4413): + [26744](https://github.com/civicrm/civicrm-core/pull/26744))** + +- **Membership tab on contribution page config broken + ([dev/core#4419](https://lab.civicrm.org/dev/core/-/issues/4419): + [26757](https://github.com/civicrm/civicrm-core/pull/26757))** + + Crash on membership tab of contribution page config. + +- **Admin UI - be like regular civi and don't show reserved custom groups + ([26668](https://github.com/civicrm/civicrm-core/pull/26668))** + +- **AdminUI - Alter core forms to redirect to the new AdminUI afform pages + ([26479](https://github.com/civicrm/civicrm-core/pull/26479))** + +- **SearchKit - Fix check for smarty syntax in rewrite output + ([26730](https://github.com/civicrm/civicrm-core/pull/26730))** + +- **SearchKit - Tidy up admin buttons and table header sort icons + ([26483](https://github.com/civicrm/civicrm-core/pull/26483))** + +- **Update Api.php to correct external_identifier to type STRING + ([26726](https://github.com/civicrm/civicrm-core/pull/26726) and + [26728](https://github.com/civicrm/civicrm-core/pull/26728))** + +- **APIv4 - Fix passing '0' as a function argument + ([26553](https://github.com/civicrm/civicrm-core/pull/26553))** + +- **Make implicit TRUE permissions check explicit in API 4 Explorer for PHP + ([26514](https://github.com/civicrm/civicrm-core/pull/26514))** + +- **Standalone - Fix some path calculations + ([26649](https://github.com/civicrm/civicrm-core/pull/26649))** + +- **Standalone - Auto-enable user subsystem. Tweak default user. + ([26643](https://github.com/civicrm/civicrm-core/pull/26643))** + +- **Standalone - Track logged-in user object + ([26672](https://github.com/civicrm/civicrm-core/pull/26672))** + +- **Standalone - Generate proper HTTP response code for permission-errors + ([26657](https://github.com/civicrm/civicrm-core/pull/26657))** + +- **Standalone - Suppress debug output + ([26656](https://github.com/civicrm/civicrm-core/pull/26656))** + +- **Remove obsolete 'Basic ACLs' + ([26612](https://github.com/civicrm/civicrm-core/pull/26612))** + + Removes unused code for an old permissioning system that no longer + exists. + +- **Fix ACLs to use the correct name of the civicrm_group table + ([26615](https://github.com/civicrm/civicrm-core/pull/26615))** + +- **Contribution WorkflowTrait updates to support event template changes + ([26633](https://github.com/civicrm/civicrm-core/pull/26633))** + +- **Allows multiple Free Text fields to be added to form layout + ([25271](https://github.com/civicrm/civicrm-core/pull/25271))** + +- **Converting CryptoException into status messages + ([dev/core#4308](https://lab.civicrm.org/dev/core/-/issues/4308): + [26444](https://github.com/civicrm/civicrm-core/pull/26444))** + + Fixes a white screen of death if you change the CIVICRM_CRED_KEYS variable + (or clone the site) and go to `/civicrm/admin/setting/smtp?reset=1`. + +- **Remove 'Payment Amount (most recent)' column from membership report + ([26566](https://github.com/civicrm/civicrm-core/pull/26566))** + +- **Add additional message to invoice template if present + ([26534](https://github.com/civicrm/civicrm-core/pull/26534))** + +- **Expire notifications for Shared Address Contact Delete & Financial Types + ([26503](https://github.com/civicrm/civicrm-core/pull/26503))** + +- **Don't add Contact to Domain Group on edit + ([26520](https://github.com/civicrm/civicrm-core/pull/26520))** + +- **Don't check for PHP 5 on Mapping Settings + ([26693](https://github.com/civicrm/civicrm-core/pull/26693))** + +- **Ensure counties are properly imported even if ambiguous + ([25989](https://github.com/civicrm/civicrm-core/pull/25989))** + +- **Show manually added Smart Groups on Contact edit + ([26521](https://github.com/civicrm/civicrm-core/pull/26521))** + +- **Fix some missing places where prioritisation is not incorporated + ([26610](https://github.com/civicrm/civicrm-core/pull/26610))** + +- **Group BAO - Remove secret param that was breaking groupNesting + ([26623](https://github.com/civicrm/civicrm-core/pull/26623))** + +- **wrong hook params + ([26500](https://github.com/civicrm/civicrm-core/pull/26500))** + +- **clearTempTables: fix condition for user_job check + ([26696](https://github.com/civicrm/civicrm-core/pull/26696))** + +- **Report on the most recent membership contribution, not the oldest + ([26111](https://github.com/civicrm/civicrm-core/pull/26111))** + +- **Don't show SQL text in SK if user does not have view debug permission + ([26711](https://github.com/civicrm/civicrm-core/pull/26711))** + +- **Fix group count for delete confirmation + ([26625](https://github.com/civicrm/civicrm-core/pull/26625))** + +- **Fix actions on Relationship search using Searchkit + ([26642](https://github.com/civicrm/civicrm-core/pull/26642))** + +- **Fix debug permissions for API 4 Explorer debug + ([26702](https://github.com/civicrm/civicrm-core/pull/26702))** + +- **[PHP8] Codegen - Don't generate invalid secondary emails + ([26680](https://github.com/civicrm/civicrm-core/pull/26680))** + +- **Don't show filtered from NaN on Groups when 0 groups found + ([26629](https://github.com/civicrm/civicrm-core/pull/26629))** + +- **SchemaHandler - Fix nonstandard index capitalization + code cleanup + ([26282](https://github.com/civicrm/civicrm-core/pull/26282))** + +- **[PHP8] Fix warnings on activity and event management forms + ([26432](https://github.com/civicrm/civicrm-core/pull/26432))** + +- **APIv4 Explorer - Fix regression in php generation + ([26622](https://github.com/civicrm/civicrm-core/pull/26622))** + +- **Do not generate unshared variable in shared `processMessageTemplate` + ([26567](https://github.com/civicrm/civicrm-core/pull/26567))** + +- **Add deprecation notice to legacy exception class aliases + ([26542](https://github.com/civicrm/civicrm-core/pull/26542))** + +- **Fix for domains that have the string .css in them + ([26530](https://github.com/civicrm/civicrm-core/pull/26530))** + +- **Smarty - When temporarily setting variable, fix cleanup for + previously-undefined values. + ([26465](https://github.com/civicrm/civicrm-core/pull/26465))** + +- **Lower-case field name uf_group.post_URL, cancel_URL + ([26460](https://github.com/civicrm/civicrm-core/pull/26460))** + +- **crmAutocomplete - Fix endless loop (again) + ([26681](https://github.com/civicrm/civicrm-core/pull/26681))** + +- **Fix ommitted port when constructing redirect URL + ([26685](https://github.com/civicrm/civicrm-core/pull/26685))** + +- **SearchKit - Fix saving created/modified fields + ([26484](https://github.com/civicrm/civicrm-core/pull/26484))** + +- **Add deprecation warning and fix deprecated constructor call (followup to + #26398) ([26495](https://github.com/civicrm/civicrm-core/pull/26495))** + +- **Remove unneeded and strange profile field save success alert + ([26751](https://github.com/civicrm/civicrm-core/pull/26751))** + +- **Attempt to fix some form notices on Contact Edit form new contact + ([26481](https://github.com/civicrm/civicrm-core/pull/26481))** + +- **Fix PHP errors on profiles and custom fields when using options per line + ([26763](https://github.com/civicrm/civicrm-core/pull/26763))** + +- **Fix another place weight is not passed + ([26736](https://github.com/civicrm/civicrm-core/pull/26736))** + +- **Fix Translation to load related language more reliably + ([26190](https://github.com/civicrm/civicrm-core/pull/26190))** + +- **Fix apiv4 bug on custom fields with spaces in name + ([26740](https://github.com/civicrm/civicrm-core/pull/26740))** + +- **Prevent API errors when CiviEvent is disabled + ([26497](https://github.com/civicrm/civicrm-core/pull/26497))** + +- **Prevent erroneous GroupContact hooks for Contact already in group + ([26523](https://github.com/civicrm/civicrm-core/pull/26523))** + +- **Stop passing around object, just to get the id in Anet.ipn + ([26562](https://github.com/civicrm/civicrm-core/pull/26562))** + +- **Misc ts fixes + ([26565](https://github.com/civicrm/civicrm-core/pull/26565))** + +- **Remove unused line item variable from signature + ([26571](https://github.com/civicrm/civicrm-core/pull/26571))** + +- **CiviImport - String fix + ([26593](https://github.com/civicrm/civicrm-core/pull/26593))** + +- **CiviImport - Fix table description + ([26590](https://github.com/civicrm/civicrm-core/pull/26590))** + +- **Move sending of email to recur function + ([26587](https://github.com/civicrm/civicrm-core/pull/26587))** + +- **CiviCRM 5.62.1 - CiviCRM core extension: Greenwich, Bootstrap CSS tries to + load glyphicons fonts from the incorrect paths returns 404 and icons do not + display ([dev/core#4414](https://lab.civicrm.org/dev/core/-/issues/4414): + [26831](https://github.com/civicrm/civicrm-core/pull/26831))** + + This fixes an issue where the Greenwich Bootstrap files include an invalid + reference to their font data. + +- **Breakage with 5.63 moving code to extensions + ([dev/core#4424](https://lab.civicrm.org/dev/core/-/issues/4424): + [26891](https://github.com/civicrm/civicrm-core/pull/26891) and + [26948](https://github.com/civicrm/civicrm-core/pull/26948))** + + When reconciling managed entities, errors are now logged instead of throwing + exceptions unless debug mode is enabled. Neither exceptions nor error logging + happens during install or upgrade. + +### CiviCase + +- **crmCaseType: fix New Case Type link visibility in obscure circumstances + ([26749](https://github.com/civicrm/civicrm-core/pull/26749))** + +- **Deleted activities filter no longer working on manage case + ([dev/core#4427](https://lab.civicrm.org/dev/core/-/issues/4427): + [26790](https://github.com/civicrm/civicrm-core/pull/26790)))** + +### CiviContribute + +- **Accepted credit cards not saved when creating or editing a payment processor + ([dev/core#4418](https://lab.civicrm.org/dev/core/-/issues/4418): + [26760](https://github.com/civicrm/civicrm-core/pull/26760), + [26755](https://github.com/civicrm/civicrm-core/pull/26755) and + [26758](https://github.com/civicrm/civicrm-core/pull/26758))** + +- **Error on saving amounts on edit Contribution Page + ([dev/core#4453](https://lab.civicrm.org/dev/core/-/issues/4453): + [26953](https://github.com/civicrm/civicrm-core/pull/26953))** + + This resolves a hard error in PHP 8.1+ if you try to save a Contribution Page + - Amounts tab with a fixed contribution option (not a price set). + +- **Call repeatTransation not completeOrder from repeatTransaction API + ([26557](https://github.com/civicrm/civicrm-core/pull/26557))** + +- **Update Recurring end_date when setting status to completed + ([26616](https://github.com/civicrm/civicrm-core/pull/26616))** + +- **Switch to Payment.create & repeattransaction in Authorize.net + ([26620](https://github.com/civicrm/civicrm-core/pull/26620) and + [26659](https://github.com/civicrm/civicrm-core/pull/26659))** + +- **Don't show pay_later processor on additional live Payment + ([26578](https://github.com/civicrm/civicrm-core/pull/26578))** + +- **PriceSet select options cause javascript errors + ([dev/core#4439](https://lab.civicrm.org/dev/core/-/issues/4439): + [26882](https://github.com/civicrm/civicrm-core/pull/26882))** + +- **Cleanup Email Invoice form to remove longest ever field label + ([26533](https://github.com/civicrm/civicrm-core/pull/26533))** + +- **Switch to token for tax_exclusive_amount in offline receipt + ([26602](https://github.com/civicrm/civicrm-core/pull/26602))** + +- **Fix e-notices in contribution_offline_receipt text by removing always-empty + field ([26599](https://github.com/civicrm/civicrm-core/pull/26599))** + +- **Update related contribution trxn_id before sending email + ([26737](https://github.com/civicrm/civicrm-core/pull/26737))** + +- **Reduce PHP warnings on Contribution + ([26506](https://github.com/civicrm/civicrm-core/pull/26506))** + +- **Reduce PHP warnings with paymentBlock + ([26505](https://github.com/civicrm/civicrm-core/pull/26505))** + +- **Fix two more broken checkboxes - PCP pages + ([26796](https://github.com/civicrm/civicrm-core/pull/26796))** + +- **Add start date back to recurring contributions display on contact + ([26811](https://github.com/civicrm/civicrm-core/pull/26811))** + +### CiviEvent + +- **Payment on Event Confirmation Page: Does not work when pay later is disabled + ([dev/core#4336](https://lab.civicrm.org/dev/core/-/issues/4336): + [26491](https://github.com/civicrm/civicrm-core/pull/26491))** + +- **Fix missing </table> tag on repeat event change confirm tpl. + ([26547](https://github.com/civicrm/civicrm-core/pull/26547))** + +- **Fix e-notices on New Participant form, strict smarty + ([26487](https://github.com/civicrm/civicrm-core/pull/26487))** + +- **Fix PHP warnings on front end Register + ([26476](https://github.com/civicrm/civicrm-core/pull/26476))** + +- **replace deprecated functions in event fee form + ([26691](https://github.com/civicrm/civicrm-core/pull/26691))** + +### CiviGrant + +- **CiviGrant - Support APIv4 autocompletes + ([26687](https://github.com/civicrm/civicrm-core/pull/26687))** + +### CiviMail + +- **Rebuild smart group cache for specific smart groups included in mailing at + scheduling time + ([dev/core#3890](https://lab.civicrm.org/dev/core/-/issues/3890): + [24681](https://github.com/civicrm/civicrm-core/pull/24681))** + +- **Update online event workflow template for more consistent participant amount + data and preview-ability + ([26574](https://github.com/civicrm/civicrm-core/pull/26574) and + [26893](https://github.com/civicrm/civicrm-core/pull/26893))** + +- **CRM_Mailing_Form_Optout, CRM_Mailing_Form_Unsubscribe: change properties to + protected from private + ([26713](https://github.com/civicrm/civicrm-core/pull/26713))** + +- **Typo correct for MailingEventReply.php + ([26692](https://github.com/civicrm/civicrm-core/pull/26692))** + +### CiviMember + +- **Fatal error when changing membership type, on membership with 0 + contributions + ([dev/core#4048](https://lab.civicrm.org/dev/core/-/issues/4048): + [26554](https://github.com/civicrm/civicrm-core/pull/26554))** + +- **Once you create a Membership price set, with membership options (ie Select) + you cannot then add a new Option as the Membership fields are not displaying + ([dev/core#4429](https://lab.civicrm.org/dev/core/-/issues/4429): + [26902](https://github.com/civicrm/civicrm-core/pull/26902))** + + This fixes the check to see if a price option is able to be used by CiviMember + or CiviEvent. + +- **Split MembershipBlock.tpl into 2 + ([26690](https://github.com/civicrm/civicrm-core/pull/26690))** + +- **Fix don't change membership status when saving a pending membership + ([25385](https://github.com/civicrm/civicrm-core/pull/25385))** + +- **Fix lifetime membership with end date error message + ([26558](https://github.com/civicrm/civicrm-core/pull/26558))** + +- **Fix recent breakage on membershipBlock.tpl + ([26777](https://github.com/civicrm/civicrm-core/pull/26777))** + +### Joomla Integration + +- **Undefined variable $store in Joomla.php on line 56 - + CRM_Core_Permission_Joomla error + ([dev/joomla#51](https://lab.civicrm.org/dev/joomla/-/issues/51): + [26699](https://github.com/civicrm/civicrm-core/pull/26699))** + +### WordPress Integration + +- **Fix UTC offsets when retrieving timezone string in WordPress + ([298](https://github.com/civicrm/civicrm-wordpress/pull/298) and + [26604](https://github.com/civicrm/civicrm-core/pull/26604))** + +## <a name="misc"></a>Miscellany + +- **Move recurring handling to recur function in PaypalIPN + ([26560](https://github.com/civicrm/civicrm-core/pull/26560))** + +- **CiviMail - Sundry cleanups + ([26626](https://github.com/civicrm/civicrm-core/pull/26626))** + +- **UFGroup DAO is out of date + ([26494](https://github.com/civicrm/civicrm-core/pull/26494))** + +- **Remove unused functions from `AuthorizeNetIPN` + ([26597](https://github.com/civicrm/civicrm-core/pull/26597))** + +- **Simplify use of contribution - we are only looking at status + ([26589](https://github.com/civicrm/civicrm-core/pull/26589))** + +- **Extract getContributionRecur, clean up input input... + ([26586](https://github.com/civicrm/civicrm-core/pull/26586))** + +- **Drop unused table civicrm_action_mapping + ([26646](https://github.com/civicrm/civicrm-core/pull/26646))** + +- **Remove copy-and-paste comment + ([26652](https://github.com/civicrm/civicrm-core/pull/26652))** + +- **Why? + ([26588](https://github.com/civicrm/civicrm-core/pull/26588))** + +- **Remove ids Variable that is dumb + ([26582](https://github.com/civicrm/civicrm-core/pull/26582))** + +- **Fix a couple more places to use the new event trait + ([26486](https://github.com/civicrm/civicrm-core/pull/26486))** + +- **Move code to complete `repeatTransation` into that function + ([26555](https://github.com/civicrm/civicrm-core/pull/26555))** + +- **APIv4 - Deprecate unused event + ([26537](https://github.com/civicrm/civicrm-core/pull/26537))** + +- **SearchKit - Reuse helpers from CRM_Core_Action + ([26663](https://github.com/civicrm/civicrm-core/pull/26663))** + +- **Delete unused tpl file + ([26671](https://github.com/civicrm/civicrm-core/pull/26671))** + +- **Add self to contributors + ([26584](https://github.com/civicrm/civicrm-core/pull/26584))** + +- **Duplicate the few lines of shared code between `completeOrder` into + `repeatTransaction` + ([26556](https://github.com/civicrm/civicrm-core/pull/26556))** + +- **FlexMailer\Listener\OpenTracker: remove deprecated isLegacy check + ([26526](https://github.com/civicrm/civicrm-core/pull/26526))** + +- **Remove unused variables, fix a couple of == + ([26734](https://github.com/civicrm/civicrm-core/pull/26734))** + +- **Remove unreachable code in event registration templates for tax total + ([26492](https://github.com/civicrm/civicrm-core/pull/26492) and + [26512](https://github.com/civicrm/civicrm-core/pull/26512))** + +- **Remove stray semi-colon + ([26490](https://github.com/civicrm/civicrm-core/pull/26490))** + +- **Remove obsolete comment + ([26489](https://github.com/civicrm/civicrm-core/pull/26489))** + +- **Remove redundant variable declared in the parent class + ([26482](https://github.com/civicrm/civicrm-core/pull/26482))** + +- **CiviEventDispatcher::dispatch() - add deprecation warning for deprecated + event class ([26338](https://github.com/civicrm/civicrm-core/pull/26338))** + +- **REF - Auto-generate links for CRM_Core_Page_Basic + ([26644](https://github.com/civicrm/civicrm-core/pull/26644))** + +- **[REF] Don't add Contacts to Groups they are already Added to on Edit + ([26519](https://github.com/civicrm/civicrm-core/pull/26519))** + +- **[REF][PHP8.1] Don't pass null to strtoupper in getDynamicCharacters + ([26508](https://github.com/civicrm/civicrm-core/pull/26508))** + +- **[REF] Use writeRecord in the revert function of MessageTemplate to ensure + that pre and post hooks are called + ([26754](https://github.com/civicrm/civicrm-core/pull/26754))** + +- **REF - Replace CRM_Utils_Array::value with ?? + ([26731](https://github.com/civicrm/civicrm-core/pull/26731))** + +- **[REF] Autoformat php short array syntax + ([26724](https://github.com/civicrm/civicrm-core/pull/26724))** + +- **[REF] Remove unnecessary CRM_Utils_Array::value and use short array syntax + ([26723](https://github.com/civicrm/civicrm-core/pull/26723))** + +- **[REF] Code cleanup; remove unused vars and remove CRM_Utils_Array::value + ([26714](https://github.com/civicrm/civicrm-core/pull/26714))** + +- **(REF) Simplify some more installation data + ([26675](https://github.com/civicrm/civicrm-core/pull/26675))** + +- **[REF] Switch a bunch of core pages to use auto-links + ([26658](https://github.com/civicrm/civicrm-core/pull/26658))** + +- **REF - Code cleanup and notice fixes in scheduled reminders + ([26647](https://github.com/civicrm/civicrm-core/pull/26647))** + +- **(REF) Convert dynamic translations from `ts()` to `_ts()` + ([26595](https://github.com/civicrm/civicrm-core/pull/26595))** + +- **[REF] CiviCase - Move more activity logic into case BAO via hook + ([26591](https://github.com/civicrm/civicrm-core/pull/26591))** + +- **[REF][PHP8.2] IDS fixes for dynamic property deprecation + ([363](https://github.com/civicrm/civicrm-packages/pull/363))** + +- **[NFC] Update test that's no longer doing what it was doing + ([26725](https://github.com/civicrm/civicrm-core/pull/26725))** + +- **NFC: standardise ufId to ufID to avoid confusion + ([26679](https://github.com/civicrm/civicrm-core/pull/26679))** + +- **[NFC] Change PHPDoc return type (findById) + ([26504](https://github.com/civicrm/civicrm-core/pull/26504))** + +- **NFC: Add debug level log message when afform submissions catch exceptions + ([26741](https://github.com/civicrm/civicrm-core/pull/26741))** + +- **Use EventTest helpers (a few more places) + ([26477](https://github.com/civicrm/civicrm-core/pull/26477))** + +- **Remove now unsed createEvent test function from test baseClass + ([26717](https://github.com/civicrm/civicrm-core/pull/26717))** + +- **Remove some unused test functions + ([26720](https://github.com/civicrm/civicrm-core/pull/26720))** + +- **Fix ChangeFeeSelectionTest to use eventCreatePaid + ([26709](https://github.com/civicrm/civicrm-core/pull/26709))** + +- **Install SK as part of headless test baseline + ([26712](https://github.com/civicrm/civicrm-core/pull/26712))** + +- **Fix participantTest class to call createEventPaid + ([26540](https://github.com/civicrm/civicrm-core/pull/26540))** + +- **[Test] Clean up payment processors when cleaning up other related entities + ([26640](https://github.com/civicrm/civicrm-core/pull/26640))** + +- **Use eventCreateUnpaid in participantCreate + ([26708](https://github.com/civicrm/civicrm-core/pull/26708))** + +- **Fix test to not use brittle xml, remove redundant crud tests + ([26648](https://github.com/civicrm/civicrm-core/pull/26648))** + +- **Update UFJoin test to not use brittle xml set up + ([26645](https://github.com/civicrm/civicrm-core/pull/26645))** + +- **Fix some test cleanup routines + ([26634](https://github.com/civicrm/civicrm-core/pull/26634))** + +- **Fix ACLPermissionTrait to use EventTest create function + ([26707](https://github.com/civicrm/civicrm-core/pull/26707))** + +- **Fix test to use created workflow + ([26655](https://github.com/civicrm/civicrm-core/pull/26655))** + +- **Remove duplicate test + ([26568](https://github.com/civicrm/civicrm-core/pull/26568))** + +- **Superficial clean up in test class + ([26559](https://github.com/civicrm/civicrm-core/pull/26559))** + +- **Very minor test cleanup + ([26635](https://github.com/civicrm/civicrm-core/pull/26635))** + +- **Test cleanup in BAO_ParticipantTest + ([26704](https://github.com/civicrm/civicrm-core/pull/26704))** + +- **[Tests] Fix a few more places to use eventTrait & remove `legacyEventCreate` + ([26701](https://github.com/civicrm/civicrm-core/pull/26701))** + +- **Cleanup AdditionalPaymentTest to use event trait + ([26570](https://github.com/civicrm/civicrm-core/pull/26570))** + +- **Fix Invoice test to user EventTestTrait, require less in order API + ([26543](https://github.com/civicrm/civicrm-core/pull/26543))** + +- **[TEST] APIv4 - Include CiviGrant in conformance tests + ([26511](https://github.com/civicrm/civicrm-core/pull/26511))** + +- **Include `entityTrait` in `ContactTestTrait` + ([26715](https://github.com/civicrm/civicrm-core/pull/26715))** + +- **Cleanup Apiv3-UfField test + ([26638](https://github.com/civicrm/civicrm-core/pull/26638))** + +- **Php8-proof SMSCommonTest + ([26545](https://github.com/civicrm/civicrm-core/pull/26545))** + +## <a name="credits"></a>Credits + +This release was developed by the following code authors: + +AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Artful Robot - Rich +Lott; Blackfly Solutions - Alan Dixon; BrightMinded Ltd - Bradley Taylor; +Business & Code - Alain Benbassat; Christian Wach; Circle Interactive - Pradeep +Nayak; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop +SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Fuzion - Jitendra Purohit, +Mike Beck; iXiam - Vangelis Pantazis; JMA Consulting - Seamus Lee; Megaphone +Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; +Progressive Technology Project - Jamie McClelland; Reflexive Communications - +Sandor Semsey; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin +Cristiano; The University of the West Indies - Howard Shand; Wikimedia +Foundation - Eileen McNaughton; Wildsight - Lars Sander-Green + +Most authors also reviewed code for this release; in addition, the following +reviewers contributed their comments: + +ALL IN APPLI admin; Fuzion - Luke Stewart; JMA Consulting - Monish Deb; Oxfam +Germany - Thomas Schüttler; Tobias Voigt; ziljah + +## <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 fa74835171..a8dbafd990 100644 --- a/civicrm/settings/Core.setting.php +++ b/civicrm/settings/Core.setting.php @@ -321,6 +321,7 @@ return [ 'help_text' => NULL, 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND, 'validate_callback' => 'CRM_Admin_Form_Setting_Search::enableOptionOne', + 'settings_pages' => ['search' => ['weight' => 80]], ], 'contact_reference_options' => [ 'group_name' => 'CiviCRM Preferences', @@ -340,6 +341,7 @@ return [ 'help_text' => NULL, 'serialize' => CRM_Core_DAO::SERIALIZE_SEPARATOR_BOOKEND, 'validate_callback' => 'CRM_Admin_Form_Setting_Search::enableOptionOne', + 'settings_pages' => ['search' => ['weight' => 90]], ], 'contact_smart_group_display' => [ 'group_name' => 'CiviCRM Preferences', diff --git a/civicrm/settings/Search.setting.php b/civicrm/settings/Search.setting.php index bac3e56fc3..62a97d8362 100644 --- a/civicrm/settings/Search.setting.php +++ b/civicrm/settings/Search.setting.php @@ -33,41 +33,6 @@ return [ 'description' => ts('The maximum number of contacts to show at a time when typing in an autocomplete field.'), 'help_text' => NULL, ], - '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' => ts('InnoDB Full Text Search'), - 'is_domain' => 1, - 'is_contact' => 0, - 'description' => ts('Enable InnoDB full-text search optimizations. (Requires MySQL 5.6+)'), - 'help_text' => NULL, - 'on_change' => [ - ['CRM_Core_InnoDBIndexer', 'onToggleFts'], - ], - ], - 'fts_query_mode' => [ - 'group_name' => 'Search Preferences', - 'group' => 'Search Preferences', - 'name' => 'fts_query_mode', - 'type' => 'String', - 'quick_form_type' => 'Element', - 'html_attributes' => [ - 'size' => 64, - 'maxlength' => 64, - ], - 'html_type' => 'text', - 'default' => 'simple', - 'add' => '4.5', - 'title' => ts('How to handle full-text queries'), - 'is_domain' => 1, - 'is_contact' => 0, - 'help_text' => NULL, - ], 'includeOrderByClause' => [ 'group_name' => 'Search Preferences', 'group' => 'Search Preferences', @@ -245,6 +210,7 @@ return [ 'is_contact' => 0, 'description' => ts('What is the default number of records to show on a search'), 'help_text' => NULL, + 'settings_pages' => ['search' => ['weight' => 120]], ], ]; diff --git a/civicrm/setup/plugins/init/Standalone.civi-setup.php b/civicrm/setup/plugins/init/Standalone.civi-setup.php deleted file mode 100644 index 8b47333fa8..0000000000 --- a/civicrm/setup/plugins/init/Standalone.civi-setup.php +++ /dev/null @@ -1,52 +0,0 @@ -<?php -/** - * @file - * - * Determine default settings for Standalone. - */ - -if (!defined('CIVI_SETUP')) { - exit("Installation plugins must only be loaded by the installer.\n"); -} - -\Civi\Setup::dispatcher() - ->addListener('civi.setup.checkAuthorized', function (\Civi\Setup\Event\CheckAuthorizedEvent $e) { - $model = $e->getModel(); - if ($model->cms !== 'Standalone') { - return; - } - - \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'checkAuthorized')); - $e->setAuthorized(TRUE); - }); - - -\Civi\Setup::dispatcher() - ->addListener('civi.setup.init', function (\Civi\Setup\Event\InitEvent $e) { - $model = $e->getModel(); - if ($model->cms !== 'Standalone') { - return; - } - \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'init')); - - // Compute settingsPath. - // We use this structure: /var/www/standalone/data/{civicrm.settings.php,templates_c} - // to reduce the number of directories that admins have to chmod - $model->settingsPath = implode(DIRECTORY_SEPARATOR, [$model->webroot, 'data', 'civicrm.settings.php']); - $model->templateCompilePath = implode(DIRECTORY_SEPARATOR, [$model->webroot, 'data', 'templates_c']); - - // Compute DSN. - $model->db = $model->cmsDb = [ - 'server' => 'localhost', - 'username' => '', - 'password' => '', - 'database' => '', - ]; - - // Compute URLs (@todo?) - $model->cmsBaseUrl = $_SERVER['HTTP_ORIGIN'] ?: $_SERVER['HTTP_REFERER']; - $model->mandatorySettings['userFrameworkResourceURL'] = $model->cmsBaseUrl . '/assets/civicrm/core'; - - // Compute default locale. - $model->lang = $_REQUEST['lang'] ?? 'en_US'; - }); diff --git a/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php b/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php new file mode 100644 index 0000000000..c8c886eebc --- /dev/null +++ b/civicrm/setup/plugins/init/StandaloneUsers.civi-setup.php @@ -0,0 +1,91 @@ +<?php +/** + * @file + * + * On "Standalone" UF, default policy is to enable `standaloneusers` and create user with admin role. + */ + +if (!defined('CIVI_SETUP')) { + exit("Installation plugins must only be loaded by the installer.\n"); +} + +\Civi\Setup::dispatcher() + ->addListener('civi.setup.init', function (\Civi\Setup\Event\InitEvent $e) { + if ($e->getModel()->cms !== 'Standalone') { + return; + } + + \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'init')); + + // Assign defaults. (These may be overridden by the agent performing installation.) + $e->getModel()->extensions[] = 'standaloneusers'; + + $toAlphanum = function ($bits) { + return preg_replace(';[^a-zA-Z0-9];', '', base64_encode($bits)); + }; + $defaults = [ + 'adminUser' => 'admin', + 'adminPass' => $toAlphanum(random_bytes(8)), + 'adminEmail' => 'admin@localhost.localdomain', + ]; + $e->getModel()->extras['adminPassWasSpecified'] = !empty($e->getModel()->extras['adminPass']); + $e->getModel()->extras = array_merge($defaults, $e->getModel()->extras); + }); + +\Civi\Setup::dispatcher() + ->addListener('civi.setup.installDatabase', function (\Civi\Setup\Event\InstallDatabaseEvent $e) { + if ($e->getModel()->cms !== 'Standalone' || !in_array('standaloneusers', $e->getModel()->extensions)) { + return; + } + + \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'installDatabase')); + + $roles = \Civi\Api4\Role::save(FALSE) + ->setDefaults([ + 'is_active' => TRUE, + ]) + ->setRecords([ + [ + 'name' => 'everyone', + 'label' => 'Everyone, including anonymous users', + // Provide default open permissions + 'permissions' => ['CiviMail subscribe/unsubscribe pages', 'make online contributions'], + ], + [ + 'name' => 'admin', + 'label' => 'Administrator', + 'permissions' => array_keys(\CRM_Core_SelectValues::permissions()), + ], + ]) + ->execute()->indexBy('name'); + + // Create contact+user for admin. + $contactID = \Civi\Api4\Contact::create(FALSE) + ->setValues([ + 'contact_type' => 'Individual', + 'first_name' => 'Standalone', + 'last_name' => 'Admin', + ]) + ->execute()->first()['id']; + $adminEmail = $e->getModel()->extras['adminEmail']; + $params = [ + 'cms_name' => $e->getModel()->extras['adminUser'], + 'cms_pass' => $e->getModel()->extras['adminPass'], + 'notify' => FALSE, + 'contactID' => $contactID, + ]; + $userID = \CRM_Core_BAO_CMSUser::create($params, $adminEmail); + + // Assign 'admin' role to user + \Civi\Api4\User::update(FALSE) + ->addWhere('id', '=', $userID) + ->addValue('roles:name', ['admin']) + ->execute(); + + $message = "Created new user \"{$e->getModel()->extras['adminUser']}\" (user ID #$userID, contact ID #$contactID) with 'admin' role and "; + $message .= empty($e->getModel()->extras['adminPassWasSpecified']) + ? "random password \"" . ($e->getModel()->extras['adminPass']) + : "specified password"; + \Civi::log()->notice($message); + + }, \Civi\Setup::PRIORITY_LATE); diff --git a/civicrm/setup/plugins/installFiles/GenerateCredKey.civi-setup.php b/civicrm/setup/plugins/installFiles/GenerateCredKey.civi-setup.php index 33676d5055..003843a655 100644 --- a/civicrm/setup/plugins/installFiles/GenerateCredKey.civi-setup.php +++ b/civicrm/setup/plugins/installFiles/GenerateCredKey.civi-setup.php @@ -25,6 +25,10 @@ if (!defined('CIVI_SETUP')) { $e->getModel()->credKeys = [$e->getModel()->credKeys]; } + if (empty($e->getModel()->deployID)) { + $e->getModel()->deployID = $toAlphanum(random_bytes(10)); + } + \Civi\Setup::log()->info(sprintf('[%s] Done %s', basename(__FILE__), 'installFiles')); }, \Civi\Setup::PRIORITY_PREPARE); diff --git a/civicrm/setup/plugins/installFiles/InstallJoomlaSettingsFile.civi-setup.php b/civicrm/setup/plugins/installFiles/InstallJoomlaSettingsFile.civi-setup.php new file mode 100644 index 0000000000..cbe3e42276 --- /dev/null +++ b/civicrm/setup/plugins/installFiles/InstallJoomlaSettingsFile.civi-setup.php @@ -0,0 +1,53 @@ +<?php +/** + * @file + * + * Generate the civicrm.settings.php file. + * + * The Joomla setup is unusual because it has two copies of the file, and they're + * slightly different. + */ + +if (!defined('CIVI_SETUP')) { + exit("Installation plugins must only be loaded by the installer.\n"); +} + +/** + * Read the $model and create the "civicrm.settings.php" files for Joomla. + */ +\Civi\Setup::dispatcher() + ->addListener('civi.setup.installFiles', function (\Civi\Setup\Event\InstallFilesEvent $e) { + if ($e->getModel()->cms !== 'Joomla') { + return; + } + + \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'installFiles')); + + $liveSite = substr_replace(JURI::root(), '', -1, 1); + + /** + * @var \Civi\Setup\Model $m + */ + $m = $e->getModel(); + $params = \Civi\Setup\SettingsUtil::createParams($m); + $files = [ + 'backend' => [ + 'file' => $m->settingsPath, + 'params' => ['baseURL' => $liveSite . '/administrator/'] + $params, + ], + 'frontend' => [ + 'file' => implode(DIRECTORY_SEPARATOR, [JPATH_SITE, 'components', 'com_civicrm', 'civicrm.settings.php']), + 'params' => ['baseURL' => $liveSite . '/'] + $params, + ], + ]; + + $tplPath = implode(DIRECTORY_SEPARATOR, + [$m->srcPath, 'templates', 'CRM', 'common', 'civicrm.settings.php.template'] + ); + + foreach ($files as $fileSpec) { + $str = \Civi\Setup\SettingsUtil::evaluate($tplPath, $fileSpec['params']); + JFile::write($fileSpec['file'], $str); + } + + }, \Civi\Setup::PRIORITY_LATE); diff --git a/civicrm/setup/plugins/installFiles/InstallSettingsFile.civi-setup.php b/civicrm/setup/plugins/installFiles/InstallSettingsFile.civi-setup.php index 8140f5d48d..7eab4536de 100644 --- a/civicrm/setup/plugins/installFiles/InstallSettingsFile.civi-setup.php +++ b/civicrm/setup/plugins/installFiles/InstallSettingsFile.civi-setup.php @@ -60,67 +60,18 @@ if (!defined('CIVI_SETUP')) { */ \Civi\Setup::dispatcher() ->addListener('civi.setup.installFiles', function (\Civi\Setup\Event\InstallFilesEvent $e) { + if ($e->getModel()->cms === 'Joomla') { + // Complicated. Another plugin will do it. + return; + } + \Civi\Setup::log()->info(sprintf('[%s] Handle %s', basename(__FILE__), 'installFiles')); /** * @var \Civi\Setup\Model $m */ $m = $e->getModel(); - - // Map from the logical $model to civicrm.settings.php variables. - $params = array(); - $params['crmRoot'] = addslashes(rtrim($m->srcPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR); - $params['templateCompileDir'] = addslashes($m->templateCompilePath); - // ??why is frontEnd=0?? - $params['frontEnd'] = 0; - $params['baseURL'] = addslashes(rtrim($m->cmsBaseUrl, '/')); - $params['dbUser'] = addslashes(urlencode($m->db['username'])); - $params['dbPass'] = addslashes(urlencode($m->db['password'])); - $params['dbHost'] = addslashes(implode(':', array_map('urlencode', explode(':', $m->db['server'])))); - $params['dbName'] = addslashes(urlencode($m->db['database'])); - // The '&' prefix is awkward, but we don't know what's already in the file. - // At the time of writing, it has ?new_link=true. If that is removed, - // then need to update this. - // The PHP_QUERY_RFC3986 is important because PEAR::DB will interpret plus - // signs as a reference to its old DSN format and mangle the DSN, so we - // need to use %20 for spaces. - $params['dbSSL'] = empty($m->db['ssl_params']) ? '' : addslashes('&' . http_build_query($m->db['ssl_params'], '', '&', PHP_QUERY_RFC3986)); - $params['cms'] = addslashes($m->cms); - $params['CMSdbUser'] = addslashes(urlencode($m->cmsDb['username'])); - $params['CMSdbPass'] = addslashes(urlencode($m->cmsDb['password'])); - $params['CMSdbHost'] = addslashes(implode(':', array_map('urlencode', explode(':', $m->cmsDb['server'])))); - $params['CMSdbName'] = addslashes(urlencode($m->cmsDb['database'])); - // The '&' prefix is awkward, but we don't know what's already in the file. - // At the time of writing, it has ?new_link=true. If that is removed, - // then need to update this. - // The PHP_QUERY_RFC3986 is important because PEAR::DB will interpret plus - // signs as a reference to its old DSN format and mangle the DSN, so we - // need to use %20 for spaces. - $params['CMSdbSSL'] = empty($m->cmsDb['ssl_params']) ? '' : addslashes('&' . http_build_query($m->cmsDb['ssl_params'], '', '&', PHP_QUERY_RFC3986)); - $params['siteKey'] = addslashes($m->siteKey); - $params['credKeys'] = addslashes(implode(' ', $m->credKeys)); - $params['signKeys'] = addslashes(implode(' ', $m->signKeys)); - - $extraSettings = array(); - - foreach ($m->paths as $key => $aspects) { - foreach ($aspects as $aspect => $value) { - $extraSettings[] = sprintf('$civicrm_paths[%s][%s] = %s;', var_export($key, 1), var_export($aspect, 1), var_export($value, 1)); - } - } - - foreach ($m->mandatorySettings as $key => $value) { - $extraSettings[] = sprintf('$civicrm_setting[%s][%s] = %s;', '\'domain\'', var_export($key, 1), var_export($value, 1)); - } - - // FIXME $m->defaultSettings, $m->components, $m->extensions, $m->callbacks - - if ($extraSettings) { - $params['extraSettings'] = "Additional settings generated by installer:\n" . implode("\n", $extraSettings); - } - else { - $params['extraSettings'] = ""; - } + $params = \Civi\Setup\SettingsUtil::createParams($m); $parent = dirname($m->settingsPath); if (!file_exists($parent)) { @@ -133,11 +84,7 @@ if (!defined('CIVI_SETUP')) { $tplPath = implode(DIRECTORY_SEPARATOR, [$m->srcPath, 'templates', 'CRM', 'common', 'civicrm.settings.php.template'] ); - $str = file_get_contents($tplPath); - foreach ($params as $key => $value) { - $str = str_replace('%%' . $key . '%%', $value, $str); - } - $str = trim($str) . "\n"; + $str = \Civi\Setup\SettingsUtil::evaluate($tplPath, $params); file_put_contents($m->settingsPath, $str); }, \Civi\Setup::PRIORITY_LATE); diff --git a/civicrm/setup/src/Setup.php b/civicrm/setup/src/Setup.php index 0ad56851d8..18e38b8964 100644 --- a/civicrm/setup/src/Setup.php +++ b/civicrm/setup/src/Setup.php @@ -54,7 +54,8 @@ class Setup { * * @param array $modelValues * List of default configuration options. - * Recommended fields: 'srcPath', 'cms' + * - cms: string name + * - srcPath: Path to CiviCRM-core source tree, i.e. .../vendor/civicrm/civicrm-core/ * @param callable $pluginCallback * Function which manipulates the list of plugin files. * Use this to add, remove, or re-order callbacks. diff --git a/civicrm/setup/src/Setup/Model.php b/civicrm/setup/src/Setup/Model.php index 3b740edc18..a8e00e1147 100644 --- a/civicrm/setup/src/Setup/Model.php +++ b/civicrm/setup/src/Setup/Model.php @@ -32,6 +32,8 @@ namespace Civi\Setup; * Ex: ['::abcd1234ABCD9876']. * @property string[] $signKeys * Ex: ['jwt-hs256::abcd1234ABCD9876']. + * @property string $deployID + * Ex: '1234ABCD9876'. * @property string|NULL $lang * The language of the default dataset. * Ex: 'fr_FR'. diff --git a/civicrm/setup/src/Setup/SettingsUtil.php b/civicrm/setup/src/Setup/SettingsUtil.php new file mode 100644 index 0000000000..508d258902 --- /dev/null +++ b/civicrm/setup/src/Setup/SettingsUtil.php @@ -0,0 +1,88 @@ +<?php +namespace Civi\Setup; + +/** + * Helpers for working with "civicrm.settings.php.template" data. + */ +class SettingsUtil { + + public static function createParams(Model $m) { + // Map from the logical $model to civicrm.settings.php variables. + $params = array(); + $params['crmRoot'] = addslashes(rtrim($m->srcPath, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR); + $params['templateCompileDir'] = addslashes($m->templateCompilePath); + // ??why is frontEnd=0?? + $params['frontEnd'] = 0; + $params['baseURL'] = addslashes(rtrim($m->cmsBaseUrl, '/')); + $params['dbUser'] = addslashes(urlencode($m->db['username'])); + $params['dbPass'] = addslashes(urlencode($m->db['password'])); + $params['dbHost'] = addslashes(implode(':', array_map('urlencode', explode(':', $m->db['server'])))); + $params['dbName'] = addslashes(urlencode($m->db['database'])); + // The '&' prefix is awkward, but we don't know what's already in the file. + // At the time of writing, it has ?new_link=true. If that is removed, + // then need to update this. + // The PHP_QUERY_RFC3986 is important because PEAR::DB will interpret plus + // signs as a reference to its old DSN format and mangle the DSN, so we + // need to use %20 for spaces. + $params['dbSSL'] = empty($m->db['ssl_params']) ? '' : addslashes('&' . http_build_query($m->db['ssl_params'], '', '&', PHP_QUERY_RFC3986)); + $params['cms'] = addslashes($m->cms); + $params['CMSdbUser'] = addslashes(urlencode($m->cmsDb['username'])); + $params['CMSdbPass'] = addslashes(urlencode($m->cmsDb['password'])); + $params['CMSdbHost'] = addslashes(implode(':', array_map('urlencode', explode(':', $m->cmsDb['server'])))); + $params['CMSdbName'] = addslashes(urlencode($m->cmsDb['database'])); + // The '&' prefix is awkward, but we don't know what's already in the file. + // At the time of writing, it has ?new_link=true. If that is removed, + // then need to update this. + // The PHP_QUERY_RFC3986 is important because PEAR::DB will interpret plus + // signs as a reference to its old DSN format and mangle the DSN, so we + // need to use %20 for spaces. + $params['CMSdbSSL'] = empty($m->cmsDb['ssl_params']) ? '' : addslashes('&' . http_build_query($m->cmsDb['ssl_params'], '', '&', PHP_QUERY_RFC3986)); + $params['siteKey'] = addslashes($m->siteKey); + $params['credKeys'] = addslashes(implode(' ', $m->credKeys)); + $params['signKeys'] = addslashes(implode(' ', $m->signKeys)); + $params['deployID'] = addslashes($m->deployID); + + $extraSettings = []; + + foreach ($m->paths as $key => $aspects) { + foreach ($aspects as $aspect => $value) { + $extraSettings[] = sprintf('$civicrm_paths[%s][%s] = %s;', var_export($key, 1), var_export($aspect, 1), var_export($value, 1)); + } + } + + foreach ($m->mandatorySettings as $key => $value) { + $extraSettings[] = sprintf('$civicrm_setting[%s][%s] = %s;', '\'domain\'', var_export($key, 1), var_export($value, 1)); + } + + // FIXME $m->defaultSettings, $m->components, $m->extensions, $m->callbacks + + if ($extraSettings) { + $params['extraSettings'] = "Additional settings generated by installer:\n" . implode("\n", $extraSettings); + } + else { + $params['extraSettings'] = ""; + } + + return $params; + } + + /** + * Evaluate the settings template. + * + * @param string $tplPath + * Readable path of the 'civicrm.settings.php.template' file. + * @param array $params + * List of values to pass into the template. + * @return string + * Evaluated template. + */ + public static function evaluate(string $tplPath, array $params): string { + $template = file_get_contents($tplPath); + $vars = []; + foreach ($params as $key => $value) { + $vars['%%' . $key . '%%'] = $value; + } + return trim(strtr($template, $vars)) . "\n"; + } + +} diff --git a/civicrm/sql/case_sample.mysql b/civicrm/sql/case_sample.mysql index e504c6c285..2e47e6ff09 100644 --- a/civicrm/sql/case_sample.mysql +++ b/civicrm/sql/case_sample.mysql @@ -84,4 +84,4 @@ SELECT 'Benefits Specialist is', 'Benefits Specialist is', 'Benefits Specialist' -- * -- *******************************************************/ -INSERT INTO `civicrm_group` ( `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `parents`, `children`, `is_hidden` ) (SELECT 'Case_Resources', 'Case Resources', 'Contacts in this group are listed with their phone number and email when viewing case. You also can send copies of case activities to these contacts.', NULL, NULL, 1, 'User and User Admin Only', ' ( `civicrm_group_contact-5`.group_id IN ( 5 ) AND `civicrm_group_contact-5`.status IN ("Added") ) ', 'a:10:{s:15:"civicrm_contact";i:1;s:15:"civicrm_address";i:1;s:22:"civicrm_state_province";i:1;s:15:"civicrm_country";i:1;s:13:"civicrm_email";i:1;s:13:"civicrm_phone";i:1;s:10:"civicrm_im";i:1;s:19:"civicrm_worldregion";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";s:6:"gender";i:1;}', 'a:2:{s:15:"civicrm_contact";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";}', '2', NULL, NULL, NULL, 0 FROM dual WHERE NOT EXISTS (SELECT * FROM `civicrm_group` WHERE `name` = 'Case_Resources')); +INSERT INTO `civicrm_group` (`name`, `title`, `frontend_title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `parents`, `children`, `is_hidden` ) (SELECT 'Case_Resources', 'Case Resources', 'Case Resources', 'Contacts in this group are listed with their phone number and email when viewing case. You also can send copies of case activities to these contacts.', NULL, NULL, 1, 'User and User Admin Only', ' ( `civicrm_group_contact-5`.group_id IN ( 5 ) AND `civicrm_group_contact-5`.status IN ("Added") ) ', 'a:10:{s:15:"civicrm_contact";i:1;s:15:"civicrm_address";i:1;s:22:"civicrm_state_province";i:1;s:15:"civicrm_country";i:1;s:13:"civicrm_email";i:1;s:13:"civicrm_phone";i:1;s:10:"civicrm_im";i:1;s:19:"civicrm_worldregion";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";s:6:"gender";i:1;}', 'a:2:{s:15:"civicrm_contact";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";}', '2', NULL, NULL, NULL, 0 FROM dual WHERE NOT EXISTS (SELECT * FROM `civicrm_group` WHERE `name` = 'Case_Resources')); diff --git a/civicrm/sql/civicrm.mysql b/civicrm/sql/civicrm.mysql index 3df4d08b73..d7bd8ba8da 100644 --- a/civicrm/sql/civicrm.mysql +++ b/civicrm/sql/civicrm.mysql @@ -157,7 +157,6 @@ DROP TABLE IF EXISTS `civicrm_acl_entity_role`; DROP TABLE IF EXISTS `civicrm_acl_cache`; DROP TABLE IF EXISTS `civicrm_acl`; DROP TABLE IF EXISTS `civicrm_recurring_entity`; -DROP TABLE IF EXISTS `civicrm_action_mapping`; DROP TABLE IF EXISTS `civicrm_prevnext_cache`; DROP TABLE IF EXISTS `civicrm_component`; DROP TABLE IF EXISTS `civicrm_worldregion`; @@ -414,27 +413,6 @@ CREATE TABLE `civicrm_prevnext_cache` ( ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; --- /******************************************************* --- * --- * civicrm_action_mapping --- * --- * Table to store mapping for the reminder. --- * --- *******************************************************/ -CREATE TABLE `civicrm_action_mapping` ( - `id` int unsigned NOT NULL AUTO_INCREMENT, - `entity` varchar(64) COMMENT 'Entity for which the reminder is created', - `entity_value` varchar(64) COMMENT 'Entity value', - `entity_value_label` varchar(64) COMMENT 'Entity value label', - `entity_status` varchar(64) COMMENT 'Entity status', - `entity_status_label` varchar(64) COMMENT 'Entity status label', - `entity_date_start` varchar(64) COMMENT 'Entity date', - `entity_date_end` varchar(64) COMMENT 'Entity date', - `entity_recipient` varchar(64) COMMENT 'Entity recipient', - PRIMARY KEY (`id`) -) -ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; - -- /******************************************************* -- * -- * civicrm_recurring_entity @@ -469,8 +447,10 @@ CREATE TABLE `civicrm_acl` ( `acl_table` varchar(64) COMMENT 'If this is a grant/revoke entry, what table are we granting?', `acl_id` int unsigned COMMENT 'ID of the ACL or ACL group being granted/revoked', `is_active` tinyint COMMENT 'Is this property active?', + `priority` int NOT NULL DEFAULT 0, PRIMARY KEY (`id`), - INDEX `index_acl_id`(acl_id) + INDEX `index_acl_id`(acl_id), + INDEX `index_priority`(priority) ) ENGINE=InnoDB DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; @@ -2819,14 +2799,14 @@ CREATE TABLE `civicrm_uf_group` ( `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.', `limit_listings_group_id` int unsigned COMMENT 'Group id, foreign key from civicrm_group', - `post_URL` varchar(255) COMMENT 'Redirect to URL.', + `post_url` varchar(255) COMMENT 'Redirect to URL on submit.', `add_to_group_id` int unsigned COMMENT 'foreign key to civicrm_group_id', `add_captcha` tinyint NOT NULL DEFAULT 0 COMMENT 'Should a CAPTCHA widget be included this Profile form.', `is_map` tinyint NOT NULL DEFAULT 0 COMMENT 'Do we want to map results from this profile.', `is_edit_link` tinyint NOT NULL DEFAULT 0 COMMENT 'Should edit link display in profile selector', `is_uf_link` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we display a link to the website profile in profile selector', `is_update_dupe` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we update the contact record if we find a duplicate', - `cancel_URL` varchar(255) COMMENT 'Redirect to URL when Cancle button clik .', + `cancel_url` varchar(255) COMMENT 'Redirect to URL when Cancel button clicked.', `is_cms_user` tinyint NOT NULL DEFAULT 0 COMMENT 'Should we create a cms user for this profile ', `notify` text, `is_reserved` tinyint NOT NULL DEFAULT 0 COMMENT 'Is this group reserved for use by some other CiviCRM functionality?', @@ -3564,7 +3544,7 @@ CREATE TABLE `civicrm_activity` ( INDEX `index_is_current_revision`(is_current_revision), INDEX `index_is_deleted`(is_deleted), CONSTRAINT FK_civicrm_activity_phone_id FOREIGN KEY (`phone_id`) REFERENCES `civicrm_phone`(`id`) ON DELETE SET NULL, - CONSTRAINT FK_civicrm_activity_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE CASCADE, + CONSTRAINT FK_civicrm_activity_parent_id FOREIGN KEY (`parent_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE SET NULL, CONSTRAINT FK_civicrm_activity_relationship_id FOREIGN KEY (`relationship_id`) REFERENCES `civicrm_relationship`(`id`) ON DELETE SET NULL, CONSTRAINT FK_civicrm_activity_original_id FOREIGN KEY (`original_id`) REFERENCES `civicrm_activity`(`id`) ON DELETE SET NULL, CONSTRAINT FK_civicrm_activity_campaign_id FOREIGN KEY (`campaign_id`) REFERENCES `civicrm_campaign`(`id`) ON DELETE SET NULL diff --git a/civicrm/sql/civicrm_acl.mysql b/civicrm/sql/civicrm_acl.mysql index e7525efc1d..9440e6d38b 100644 --- a/civicrm/sql/civicrm_acl.mysql +++ b/civicrm/sql/civicrm_acl.mysql @@ -12,76 +12,13 @@ -- sample acl entries -- Create ACL to edit and view contacts in all groups -INSERT INTO civicrm_acl (name, deny, entity_table, entity_id, operation, object_table, object_id, acl_table, acl_id, is_active) +INSERT INTO civicrm_acl (name, deny, entity_table, entity_id, operation, object_table, object_id, acl_table, acl_id, is_active, priority) VALUES -('Edit All Contacts', 0, 'civicrm_acl_role', 1, 'Edit', 'civicrm_saved_search', 0, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'view event info', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviContribute', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviEvent', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMail', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMember', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviPledge', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer CiviCase', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access my cases and activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access all cases and activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviCase', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviGrant', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access Contact Dashboard', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer Multiple Organizations', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviContribute', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviMail', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviPledge', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviEvent', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviMember', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'translate CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit grants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access uploaded files', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'add contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit all contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit event participants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit groups', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit memberships', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviReport', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access Report Criteria', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer Reports', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'import contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile create', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile edit', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile listings', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile view', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view all activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view all contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view event info', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view event participants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit all events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'view event info', NULL, NULL, NULL, 1); +('Edit All Contacts', 0, 'civicrm_acl_role', 1, 'Edit', 'civicrm_group', 0, NULL, NULL, 1, 1); -- Create default Groups for User Permissioning -INSERT INTO civicrm_group (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `group_type`) VALUES (1, 'Administrators', 'Administrators', 'Contacts in this group are assigned Administrator role permissions.', NULL, NULL, 1, 'User and User Admin Only', '1'); +INSERT INTO civicrm_group (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `group_type`, `frontend_title`) +VALUES (1, 'Administrators', 'Administrators', 'Contacts in this group are assigned Administrator role permissions.', NULL, NULL, 1, 'User and User Admin Only', '1', 'Administrators'); -- Assign above Group (entity) to the Administrator Role INSERT INTO civicrm_acl_entity_role diff --git a/civicrm/sql/civicrm_data.mysql b/civicrm/sql/civicrm_data.mysql index 7ad4e1599c..1939bafbc7 100644 --- a/civicrm/sql/civicrm_data.mysql +++ b/civicrm/sql/civicrm_data.mysql @@ -4887,8 +4887,9 @@ FROM civicrm_option_group WHERE (name = "acl_role") ; INSERT INTO civicrm_option_value (`color`,`component_id`,`description`,`domain_id`,`filter`,`grouping`,`icon`,`is_active`,`is_default`,`is_optgroup`,`is_reserved`,`label`,`name`,`option_group_id`,`value`,`visibility_id`,`weight`) VALUES -(NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","0","Administrator","Admin",@this_option_group_id,"1",NULL,"1"), -(NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","1","Authenticated","Auth",@this_option_group_id,"2",NULL,"2") +(NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","1","Everyone","Everyone",@this_option_group_id,"0",NULL,"1"), +(NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","0","Administrator","Admin",@this_option_group_id,"1",NULL,"2"), +(NULL,NULL,NULL,NULL,"0",NULL,NULL,"1","0","0","1","Authenticated","Auth",@this_option_group_id,"2",NULL,"3") ; INSERT INTO civicrm_option_group (`description`,`is_active`,`is_reserved`,`name`,`option_value_fields`,`title`) VALUES ("The following credit card options will be offered to contributors using Online Contribution pages. You will need to verify which cards are accepted by your chosen Payment Processor and update these entries accordingly.IMPORTANT: These options do not control credit card/payment method choices for sites and/or contributors using the PayPal Express service (e.g. where billing information is collected on the Payment Processor\\\'s website).","1","1","accept_creditcard","name,label,description","Accepted Credit Cards") @@ -6350,7 +6351,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@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 and Email","Supervised") +("Organization","0","OrganizationSupervised","10","Name or Email","Supervised") ; SELECT @drgid := max(id) FROM civicrm_dedupe_rule_group @@ -6361,7 +6362,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@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 and Email","Supervised") +("Household","0","HouseholdSupervised","10","Name or Email","Supervised") ; SELECT @drgid := max(id) FROM civicrm_dedupe_rule_group @@ -6382,7 +6383,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@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 and Email","Unsupervised") +("Organization","0","OrganizationUnsupervised","10","Name or Email","Unsupervised") ; SELECT @drgid := max(id) FROM civicrm_dedupe_rule_group @@ -6393,7 +6394,7 @@ INSERT INTO civicrm_dedupe_rule (`dedupe_rule_group_id`,`rule_field`,`rule_table (@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 and Email","Unsupervised") +("Household","0","HouseholdUnsupervised","10","Name or Email","Unsupervised") ; SELECT @drgid := max(id) FROM civicrm_dedupe_rule_group @@ -6809,14 +6810,6 @@ 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_action_mapping (`entity`,`entity_date_end`,`entity_date_start`,`entity_recipient`,`entity_status`,`entity_status_label`,`entity_value`,`entity_value_label`) VALUES -("civicrm_activity",NULL,"activity_date_time","activity_contacts","activity_status","Activity Status","activity_type","Activity Type"), -("civicrm_participant","event_end_date","event_start_date","event_contacts","civicrm_participant_status_type","Participant Status","event_type","Event Type"), -("civicrm_participant","event_end_date","event_start_date","event_contacts","civicrm_participant_status_type","Participant Status","civicrm_event","Event Name"), -("civicrm_membership","membership_end_date","membership_join_date",NULL,"auto_renew_options","Auto Renew Options","civicrm_membership_type","Membership Type"), -("civicrm_participant","event_end_date","event_start_date","event_contacts","civicrm_participant_status_type","Participant Status","event_template","Event Template"), -("civicrm_contact",NULL,"date_field",NULL,"contact_date_reminder_options","Annual Options","civicrm_contact","Date Field") -; 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), @@ -7390,9 +7383,7 @@ 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} -{if !empty($formValues.receipt_text)} -{$formValues.receipt_text} -{else}{ts}Below you will find a receipt for this contribution.{/ts}{/if} +{ts}Below you will find a receipt for this contribution.{/ts} =========================================================== {ts}Contribution Information{/ts} @@ -7422,7 +7413,7 @@ INSERT INTO civicrm_msg_template {if $isShowTax && {contribution.tax_amount|boolean}} -{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency} +{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount} {/if} {foreach from=$taxRateBreakdown item=taxDetail key=taxRate} {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} @@ -7525,11 +7516,7 @@ INSERT INTO civicrm_msg_template <tr> <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - {if !empty($formValues.receipt_text)} - <p>{$formValues.receipt_text|htmlize}</p> - {else} <p>{ts}Below you will find a receipt for this contribution.{/ts}</p> - {/if} </td> </tr> <tr> @@ -7617,7 +7604,7 @@ INSERT INTO civicrm_msg_template {ts} Amount before Tax : {/ts} </td> <td {$valueStyle}> - {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.currency}\'} + {contribution.tax_exclusive_amount} </td> </tr> @@ -7824,9 +7811,7 @@ 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} -{if !empty($formValues.receipt_text)} -{$formValues.receipt_text} -{else}{ts}Below you will find a receipt for this contribution.{/ts}{/if} +{ts}Below you will find a receipt for this contribution.{/ts} =========================================================== {ts}Contribution Information{/ts} @@ -7856,7 +7841,7 @@ INSERT INTO civicrm_msg_template {if $isShowTax && {contribution.tax_amount|boolean}} -{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency} +{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount} {/if} {foreach from=$taxRateBreakdown item=taxDetail key=taxRate} {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:\'{contribution.currency}\'} @@ -7959,11 +7944,7 @@ INSERT INTO civicrm_msg_template <tr> <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - {if !empty($formValues.receipt_text)} - <p>{$formValues.receipt_text|htmlize}</p> - {else} <p>{ts}Below you will find a receipt for this contribution.{/ts}</p> - {/if} </td> </tr> <tr> @@ -8051,7 +8032,7 @@ INSERT INTO civicrm_msg_template {ts} Amount before Tax : {/ts} </td> <td {$valueStyle}> - {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.currency}\'} + {contribution.tax_exclusive_amount} </td> </tr> @@ -9598,6 +9579,11 @@ INSERT INTO civicrm_msg_template </table> {/if} <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0"> + {if $email_comment} + <tr> + <td><font size="1" colspan="3">{$email_comment}</font></td> + </tr> + {/if} <tr> <td width="30%"><b><font size="4" align="center">{ts}INVOICE{/ts}</font></b></td> <td width="50%" valign="bottom"><b><font size="1" align="center">{ts}Invoice Date:{/ts}</font></b></td> @@ -9982,6 +9968,11 @@ INSERT INTO civicrm_msg_template </table> {/if} <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0"> + {if $email_comment} + <tr> + <td><font size="1" colspan="3">{$email_comment}</font></td> + </tr> + {/if} <tr> <td width="30%"><b><font size="4" align="center">{ts}INVOICE{/ts}</font></b></td> <td width="50%" valign="bottom"><b><font size="1" align="center">{ts}Invoice Date:{/ts}</font></b></td> @@ -12805,8 +12796,6 @@ INSERT INTO civicrm_msg_template {foreach from=$dataArray item=value key=priceset} {if $priceset || $priceset == 0} {$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{else} -{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency} {/if} {/foreach} {/if} @@ -13223,9 +13212,6 @@ INSERT INTO civicrm_msg_template {if $priceset || $priceset == 0} <td> {$taxTerm} {$priceset|string_format:"%.2f"}%</td> <td> {$value|crmMoney:$currency}</td> - {else} - <td> {ts}No{/ts} {$taxTerm}</td> - <td> {$value|crmMoney:$currency}</td> {/if} </tr> {/foreach} @@ -13634,8 +13620,6 @@ INSERT INTO civicrm_msg_template {foreach from=$dataArray item=value key=priceset} {if $priceset || $priceset == 0} {$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{else} -{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency} {/if} {/foreach} {/if} @@ -14052,9 +14036,6 @@ INSERT INTO civicrm_msg_template {if $priceset || $priceset == 0} <td> {$taxTerm} {$priceset|string_format:"%.2f"}%</td> <td> {$value|crmMoney:$currency}</td> - {else} - <td> {ts}No{/ts} {$taxTerm}</td> - <td> {$value|crmMoney:$currency}</td> {/if} </tr> {/foreach} @@ -14350,7 +14331,7 @@ INSERT INTO civicrm_msg_template {ts}You have been added to the WAIT LIST for this event.{/ts} -{if !empty($isPrimary)} +{if $isPrimary} {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} {/if} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} @@ -14360,7 +14341,7 @@ INSERT INTO civicrm_msg_template {ts}Your registration has been submitted.{/ts} -{if !empty($isPrimary)} +{if $isPrimary} {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} {/if} @@ -14410,21 +14391,19 @@ INSERT INTO civicrm_msg_template {$location.address.1.display|strip_tags:false} {/if}{*End of isShowLocation condition*} -{if !empty($location.phone.1.phone) || !empty($location.email.1.email)} +{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} {ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{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} -{/foreach} +{if {event.loc_block_id.phone_id.phone|boolean}} + {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} +{/if} {foreach from=$location.email item=eventEmail} {if $eventEmail.email} {ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} {/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} @@ -14444,7 +14423,7 @@ You were registered by: {$payer.name} {if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} {if $value neq \'skip\'} -{if !empty($isPrimary)} +{if $isPrimary} {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if} @@ -14455,19 +14434,19 @@ You were registered by: {$payer.name} {capture assign=ts_item}{ts}Item{/ts}{/capture} {capture assign=ts_qty}{ts}Qty{/ts}{/capture} {capture assign=ts_each}{ts}Each{/ts}{/capture} -{if !empty($dataArray)} +{if $isShowTax && {contribution.tax_amount|boolean}} {capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} {capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} {capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} {/if} {capture assign=ts_total}{ts}Total{/ts}{/capture} {if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$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} +{$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} -----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if} {foreach from=$value item=line} {if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|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:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} +{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$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} {/foreach} ---------------------------------------------------------------------------------------------------------------- {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} @@ -14476,17 +14455,11 @@ You were registered by: {$payer.name} {/foreach} {""|string_format:"%120s"} -{if !empty($dataArray)} -{if isset($totalAmount) and isset($totalTaxAmount)} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{else} -{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency} -{/if} +{if $isShowTax && {contribution.tax_amount|boolean}} +{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if} +{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if} +{foreach from=$taxRateBreakdown item=taxDetail key=taxRate} +{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'} {/foreach} {/if} {/if} @@ -14496,10 +14469,10 @@ You were registered by: {$payer.name} {/foreach} {/if} -{if isset($totalTaxAmount)} -{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency} +{if $isShowTax && {contribution.tax_amount|boolean}} +{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if} {/if} -{if !empty($isPrimary) } +{if $isPrimary} {ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} @@ -14664,12 +14637,12 @@ You were registered by: {$payer.name} <p> {if !empty($isOnWaitlist)} <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if !empty($isPrimary)} + {if $isPrimary} <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> {/if} {elseif !empty($isRequireApproval)} <p>{ts}Your registration has been submitted.{/ts}</p> - {if !empty($isPrimary)} + {if $isPrimary} <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> {/if} {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)} @@ -14770,28 +14743,28 @@ You were registered by: {$payer.name} {/foreach} {/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} + {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} <a href="{$icalFeed}">{ts}Download iCalendar entry for this event.{/ts}</a> </td> </tr> <tr> <td colspan="2" {$valueStyle}> - {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} + {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} <a href="{$gCalendar}">{ts}Add event to Google Calendar{/ts}</a> </td> </tr> {/if} - {if !empty($event.is_share)} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> + {if $event.is_share} + <tr> + <td colspan="2" {$valueStyle}> + {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q="id={event.id}&reset=1" a=true fe=1 h=1}{/capture} + {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'} + </td> + </tr> {/if} {if !empty($payer.name)} <tr> @@ -14805,111 +14778,92 @@ You were registered by: {$payer.name} </td> </tr> {/if} - {if !empty($event.is_monetary) and empty($isRequireApproval)} + {if {event.is_monetary|boolean} and empty($isRequireApproval)} <tr> <th {$headerStyle}> - {if !empty($event.fee_label)}{$event.fee_label}{/if} + {event.fee_label} </th> </tr> - {if !empty($lineItem)} - {foreach from=$lineItem item=value key=priceset} - {if $value neq \'skip\'} - {if !empty($isPrimary)} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> + {if $isShowLineItems} + {foreach from=$participants key=index item=participant} + {if $isPrimary || {participant.id} === $participant.id} + {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *} <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - {if !empty($dataArray)} - <th>{ts}SubTotal{/ts}</th> - <th>{ts}Tax Rate{/ts}</th> - <th>{ts}Tax Amount{/ts}</th> - {/if} - <th>{ts}Total{/ts}</th> - {if !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td {$tdfirstStyle}> - {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} + <td colspan="2" {$labelStyle}> + {ts 1=$participant.index}Participant %1{/ts} {$participant.contact.display_name} </td> - <td {$tdStyle} align="middle"> - {$line.qty} - </td> - <td {$tdStyle}> - {$line.unit_price|crmMoney:$currency} - </td> - {if !empty($dataArray)} - <td {$tdStyle}> - {$line.unit_price*$line.qty|crmMoney} - </td> - {if $line.tax_rate || $line.tax_amount != ""} - <td {$tdStyle}> - {$line.tax_rate|string_format:"%.2f"}% - </td> - <td {$tdStyle}> - {$line.tax_amount|crmMoney} - </td> - {else} - <td></td> - <td></td> - {/if} - {/if} - <td {$tdStyle}> - {$line.line_total+$line.tax_amount|crmMoney:$currency} + </tr> + {/if} + <tr> + <td colspan="2" {$valueStyle}> + <table> + <tr> + <th>{ts}Item{/ts}</th> + <th>{ts}Qty{/ts}</th> + <th>{ts}Each{/ts}</th> + {if $isShowTax && {contribution.tax_amount|boolean}} + <th>{ts}Subtotal{/ts}</th> + <th>{ts}Tax Rate{/ts}</th> + <th>{ts}Tax Amount{/ts}</th> + {/if} + <th>{ts}Total{/ts}</th> + {if !empty($pricesetFieldsCount)}<th>{ts}Total Participants{/ts}</th>{/if} + </tr> + {foreach from=$participant.line_items item=line} + <tr> + <td {$tdfirstStyle}>{$line.title}</td> + <td {$tdStyle} align="middle">{$line.qty}</td> + <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td> + {if $line.tax_rate || $line.tax_amount != ""} + <td>{$line.tax_rate|string_format:"%.2f"}%</td> + <td>{$line.tax_amount|crmMoney:$currency}</td> + {else} + <td></td> + <td></td> + {/if} + <td {$tdStyle}> + {$line.line_total+$line.tax_amount|crmMoney:$currency} + </td> + {if !empty($pricesetFieldsCount)}<td {$tdStyle}>{$line.participant_count}</td> {/if} + </tr> + {/foreach} + {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> + </tr> + {/if} + </table> </td> - {if !empty($pricesetFieldsCount) }<td {$tdStyle}>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - {if !empty($individual)} - <tr {$participantTotal}> - <td colspan=3>{ts}Participant Total{/ts}</td> - <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td> - <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td> - <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td> - </tr> - {/if} - </table> - </td> - </tr> + </tr> + {/if} + {/foreach} {/if} - {/foreach} - {if !empty($dataArray)} - {if isset($totalAmount) and isset($totalTaxAmount)} - <tr> - <td {$labelStyle}> - {ts} Amount Before Tax: {/ts} - </td> - <td {$valueStyle}> - {$totalAmount-$totalTaxAmount|crmMoney} - </td> + {if $isShowTax && {contribution.tax_amount|boolean}} + <tr> + <td {$labelStyle}> + {ts}Amount Before Tax:{/ts} + </td> + <td {$valueStyle}> + {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if} + </td> </tr> + + {if !$isPrimary} + {* Use the participant specific tax rate breakdown *} + {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown} + {/if} + {foreach from=$taxRateBreakdown item=taxDetail key=taxRate} + <tr> + <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td> + <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td> + </tr> + {/foreach} {/if} - {foreach from=$dataArray item=value key=priceset} - <tr> - {if $priceset || $priceset == 0} - <td> {$taxTerm} {$priceset|string_format:"%.2f"}%</td> - <td> {$value|crmMoney:$currency}</td> - {else} - <td> {ts}No{/ts} {$taxTerm}</td> - <td> {$value|crmMoney:$currency}</td> - {/if} - </tr> - {/foreach} - {/if} - {/if} {if !empty($amounts) && empty($lineItem)} {foreach from=$amounts item=amnt key=level} @@ -14921,23 +14875,23 @@ You were registered by: {$payer.name} {/foreach} {/if} - {if isset($totalTaxAmount)} + {if $isShowTax && {contribution.tax_amount|boolean}} <tr> <td {$labelStyle}> {ts}Total Tax Amount{/ts} </td> <td {$valueStyle}> - {$totalTaxAmount|crmMoney:$currency} + {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if} </td> </tr> {/if} - {if !empty($isPrimary)} + {if $isPrimary} <tr> <td {$labelStyle}> {ts}Total Amount{/ts} </td> <td {$valueStyle}> - {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> {if !empty($pricesetFieldsCount) } @@ -15111,7 +15065,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> @@ -15138,7 +15092,7 @@ You were registered by: {$payer.name} {ts}You have been added to the WAIT LIST for this event.{/ts} -{if !empty($isPrimary)} +{if $isPrimary} {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} {/if} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} @@ -15148,7 +15102,7 @@ You were registered by: {$payer.name} {ts}Your registration has been submitted.{/ts} -{if !empty($isPrimary)} +{if $isPrimary} {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} {/if} @@ -15198,21 +15152,19 @@ You were registered by: {$payer.name} {$location.address.1.display|strip_tags:false} {/if}{*End of isShowLocation condition*} -{if !empty($location.phone.1.phone) || !empty($location.email.1.email)} +{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} {ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{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} -{/foreach} +{if {event.loc_block_id.phone_id.phone|boolean}} + {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} +{/if} {foreach from=$location.email item=eventEmail} {if $eventEmail.email} {ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} {/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} @@ -15232,7 +15184,7 @@ You were registered by: {$payer.name} {if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} {if $value neq \'skip\'} -{if !empty($isPrimary)} +{if $isPrimary} {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if} @@ -15243,19 +15195,19 @@ You were registered by: {$payer.name} {capture assign=ts_item}{ts}Item{/ts}{/capture} {capture assign=ts_qty}{ts}Qty{/ts}{/capture} {capture assign=ts_each}{ts}Each{/ts}{/capture} -{if !empty($dataArray)} +{if $isShowTax && {contribution.tax_amount|boolean}} {capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} {capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} {capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} {/if} {capture assign=ts_total}{ts}Total{/ts}{/capture} {if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$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} +{$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} -----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if} {foreach from=$value item=line} {if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|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:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} +{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$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} {/foreach} ---------------------------------------------------------------------------------------------------------------- {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} @@ -15264,17 +15216,11 @@ You were registered by: {$payer.name} {/foreach} {""|string_format:"%120s"} -{if !empty($dataArray)} -{if isset($totalAmount) and isset($totalTaxAmount)} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{else} -{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency} -{/if} +{if $isShowTax && {contribution.tax_amount|boolean}} +{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if} +{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if} +{foreach from=$taxRateBreakdown item=taxDetail key=taxRate} +{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'} {/foreach} {/if} {/if} @@ -15284,10 +15230,10 @@ You were registered by: {$payer.name} {/foreach} {/if} -{if isset($totalTaxAmount)} -{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency} +{if $isShowTax && {contribution.tax_amount|boolean}} +{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if} {/if} -{if !empty($isPrimary) } +{if $isPrimary} {ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} @@ -15452,12 +15398,12 @@ You were registered by: {$payer.name} <p> {if !empty($isOnWaitlist)} <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if !empty($isPrimary)} + {if $isPrimary} <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> {/if} {elseif !empty($isRequireApproval)} <p>{ts}Your registration has been submitted.{/ts}</p> - {if !empty($isPrimary)} + {if $isPrimary} <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> {/if} {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)} @@ -15558,28 +15504,28 @@ You were registered by: {$payer.name} {/foreach} {/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} + {capture assign=icalFeed}{crmURL p=\'civicrm/event/ical\' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} <a href="{$icalFeed}">{ts}Download iCalendar entry for this event.{/ts}</a> </td> </tr> <tr> <td colspan="2" {$valueStyle}> - {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} + {capture assign=gCalendar}{crmURL p=\'civicrm/event/ical\' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} <a href="{$gCalendar}">{ts}Add event to Google Calendar{/ts}</a> </td> </tr> {/if} - {if !empty($event.is_share)} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> + {if $event.is_share} + <tr> + <td colspan="2" {$valueStyle}> + {capture assign=eventUrl}{crmURL p=\'civicrm/event/info\' q="id={event.id}&reset=1" a=true fe=1 h=1}{/capture} + {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl pageURL=$eventUrl title=\'{event.title}\'} + </td> + </tr> {/if} {if !empty($payer.name)} <tr> @@ -15593,111 +15539,92 @@ You were registered by: {$payer.name} </td> </tr> {/if} - {if !empty($event.is_monetary) and empty($isRequireApproval)} + {if {event.is_monetary|boolean} and empty($isRequireApproval)} <tr> <th {$headerStyle}> - {if !empty($event.fee_label)}{$event.fee_label}{/if} + {event.fee_label} </th> </tr> - {if !empty($lineItem)} - {foreach from=$lineItem item=value key=priceset} - {if $value neq \'skip\'} - {if !empty($isPrimary)} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> + {if $isShowLineItems} + {foreach from=$participants key=index item=participant} + {if $isPrimary || {participant.id} === $participant.id} + {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *} <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - {if !empty($dataArray)} - <th>{ts}SubTotal{/ts}</th> - <th>{ts}Tax Rate{/ts}</th> - <th>{ts}Tax Amount{/ts}</th> - {/if} - <th>{ts}Total{/ts}</th> - {if !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td {$tdfirstStyle}> - {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} - </td> - <td {$tdStyle} align="middle"> - {$line.qty} + <td colspan="2" {$labelStyle}> + {ts 1=$participant.index}Participant %1{/ts} {$participant.contact.display_name} </td> - <td {$tdStyle}> - {$line.unit_price|crmMoney:$currency} - </td> - {if !empty($dataArray)} - <td {$tdStyle}> - {$line.unit_price*$line.qty|crmMoney} - </td> - {if $line.tax_rate || $line.tax_amount != ""} - <td {$tdStyle}> - {$line.tax_rate|string_format:"%.2f"}% - </td> - <td {$tdStyle}> - {$line.tax_amount|crmMoney} - </td> - {else} - <td></td> - <td></td> - {/if} - {/if} - <td {$tdStyle}> - {$line.line_total+$line.tax_amount|crmMoney:$currency} + </tr> + {/if} + <tr> + <td colspan="2" {$valueStyle}> + <table> + <tr> + <th>{ts}Item{/ts}</th> + <th>{ts}Qty{/ts}</th> + <th>{ts}Each{/ts}</th> + {if $isShowTax && {contribution.tax_amount|boolean}} + <th>{ts}Subtotal{/ts}</th> + <th>{ts}Tax Rate{/ts}</th> + <th>{ts}Tax Amount{/ts}</th> + {/if} + <th>{ts}Total{/ts}</th> + {if !empty($pricesetFieldsCount)}<th>{ts}Total Participants{/ts}</th>{/if} + </tr> + {foreach from=$participant.line_items item=line} + <tr> + <td {$tdfirstStyle}>{$line.title}</td> + <td {$tdStyle} align="middle">{$line.qty}</td> + <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td> + {if $line.tax_rate || $line.tax_amount != ""} + <td>{$line.tax_rate|string_format:"%.2f"}%</td> + <td>{$line.tax_amount|crmMoney:$currency}</td> + {else} + <td></td> + <td></td> + {/if} + <td {$tdStyle}> + {$line.line_total+$line.tax_amount|crmMoney:$currency} + </td> + {if !empty($pricesetFieldsCount)}<td {$tdStyle}>{$line.participant_count}</td> {/if} + </tr> + {/foreach} + {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> + </tr> + {/if} + </table> </td> - {if !empty($pricesetFieldsCount) }<td {$tdStyle}>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - {if !empty($individual)} - <tr {$participantTotal}> - <td colspan=3>{ts}Participant Total{/ts}</td> - <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td> - <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td> - <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td> - </tr> - {/if} - </table> - </td> - </tr> + </tr> + {/if} + {/foreach} {/if} - {/foreach} - {if !empty($dataArray)} - {if isset($totalAmount) and isset($totalTaxAmount)} - <tr> - <td {$labelStyle}> - {ts} Amount Before Tax: {/ts} - </td> - <td {$valueStyle}> - {$totalAmount-$totalTaxAmount|crmMoney} - </td> + {if $isShowTax && {contribution.tax_amount|boolean}} + <tr> + <td {$labelStyle}> + {ts}Amount Before Tax:{/ts} + </td> + <td {$valueStyle}> + {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if} + </td> </tr> + + {if !$isPrimary} + {* Use the participant specific tax rate breakdown *} + {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown} + {/if} + {foreach from=$taxRateBreakdown item=taxDetail key=taxRate} + <tr> + <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td> + <td {$valueStyle}>{$taxDetail.amount|crmMoney:\'{contribution.currency}\'}</td> + </tr> + {/foreach} {/if} - {foreach from=$dataArray item=value key=priceset} - <tr> - {if $priceset || $priceset == 0} - <td> {$taxTerm} {$priceset|string_format:"%.2f"}%</td> - <td> {$value|crmMoney:$currency}</td> - {else} - <td> {ts}No{/ts} {$taxTerm}</td> - <td> {$value|crmMoney:$currency}</td> - {/if} - </tr> - {/foreach} - {/if} - {/if} {if !empty($amounts) && empty($lineItem)} {foreach from=$amounts item=amnt key=level} @@ -15709,23 +15636,23 @@ You were registered by: {$payer.name} {/foreach} {/if} - {if isset($totalTaxAmount)} + {if $isShowTax && {contribution.tax_amount|boolean}} <tr> <td {$labelStyle}> {ts}Total Tax Amount{/ts} </td> <td {$valueStyle}> - {$totalTaxAmount|crmMoney:$currency} + {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if} </td> </tr> {/if} - {if !empty($isPrimary)} + {if $isPrimary} <tr> <td {$labelStyle}> {ts}Total Amount{/ts} </td> <td {$valueStyle}> - {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> {if !empty($pricesetFieldsCount) } @@ -15899,7 +15826,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> @@ -24025,4 +23952,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.63.2'; +UPDATE civicrm_domain SET version = '5.64.0'; diff --git a/civicrm/sql/civicrm_data/civicrm_action_mapping.sqldata.php b/civicrm/sql/civicrm_data/civicrm_action_mapping.sqldata.php deleted file mode 100644 index c9346eaa1a..0000000000 --- a/civicrm/sql/civicrm_data/civicrm_action_mapping.sqldata.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php -// CRM-8150 -return CRM_Core_CodeGen_SqlData::create('civicrm_action_mapping') - ->addValues([ - [ - 'entity' => 'civicrm_activity', - 'entity_value' => 'activity_type', - 'entity_value_label' => 'Activity Type', - 'entity_status' => 'activity_status', - 'entity_status_label' => 'Activity Status', - 'entity_date_start' => 'activity_date_time', - 'entity_date_end' => NULL, - 'entity_recipient' => 'activity_contacts', - ], - [ - 'entity' => 'civicrm_participant', - 'entity_value' => 'event_type', - 'entity_value_label' => 'Event Type', - 'entity_status' => 'civicrm_participant_status_type', - 'entity_status_label' => 'Participant Status', - 'entity_date_start' => 'event_start_date', - 'entity_date_end' => 'event_end_date', - 'entity_recipient' => 'event_contacts', - ], - [ - 'entity' => 'civicrm_participant', - 'entity_value' => 'civicrm_event', - 'entity_value_label' => 'Event Name', - 'entity_status' => 'civicrm_participant_status_type', - 'entity_status_label' => 'Participant Status', - 'entity_date_start' => 'event_start_date', - 'entity_date_end' => 'event_end_date', - 'entity_recipient' => 'event_contacts', - ], - [ - 'entity' => 'civicrm_membership', - 'entity_value' => 'civicrm_membership_type', - 'entity_value_label' => 'Membership Type', - 'entity_status' => 'auto_renew_options', - 'entity_status_label' => 'Auto Renew Options', - 'entity_date_start' => 'membership_join_date', - 'entity_date_end' => 'membership_end_date', - 'entity_recipient' => NULL, - ], - [ - 'entity' => 'civicrm_participant', - 'entity_value' => 'event_template', - 'entity_value_label' => 'Event Template', - 'entity_status' => 'civicrm_participant_status_type', - 'entity_status_label' => 'Participant Status', - 'entity_date_start' => 'event_start_date', - 'entity_date_end' => 'event_end_date', - 'entity_recipient' => 'event_contacts', - ], - [ - 'entity' => 'civicrm_contact', - 'entity_value' => 'civicrm_contact', - 'entity_value_label' => 'Date Field', - 'entity_status' => 'contact_date_reminder_options', - 'entity_status_label' => 'Annual Options', - 'entity_date_start' => 'date_field', - 'entity_date_end' => NULL, - 'entity_recipient' => NULL, - ], - ]); diff --git a/civicrm/sql/civicrm_data/civicrm_contact_type.sqldata.php b/civicrm/sql/civicrm_data/civicrm_contact_type.sqldata.php index 09d2b580f0..938bec31d4 100644 --- a/civicrm/sql/civicrm_data/civicrm_contact_type.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_contact_type.sqldata.php @@ -1,34 +1,28 @@ <?php return CRM_Core_CodeGen_SqlData::create('civicrm_contact_type') + ->addDefaults([ + 'image_URL' => NULL, + 'parent_id' => NULL, + 'is_active' => 1, + 'is_reserved' => 1, + ]) ->addValues([ [ 'id' => 1, 'name' => 'Individual', 'label' => ts('Individual'), - 'image_URL' => NULL, - 'parent_id' => NULL, - 'is_active' => 1, - 'is_reserved' => 1, 'icon' => 'fa-user', ], [ 'id' => 2, 'name' => 'Household', 'label' => ts('Household'), - 'image_URL' => NULL, - 'parent_id' => NULL, - 'is_active' => 1, - 'is_reserved' => 1, 'icon' => 'fa-home', ], [ 'id' => 3, 'name' => 'Organization', 'label' => ts('Organization'), - 'image_URL' => NULL, - 'parent_id' => NULL, - 'is_active' => 1, - 'is_reserved' => 1, 'icon' => 'fa-building', ], ]); diff --git a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdSupervised.sqldata.php b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdSupervised.sqldata.php index b907f0cadd..36adf524cc 100644 --- a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdSupervised.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdSupervised.sqldata.php @@ -4,7 +4,7 @@ return CRM_Core_CodeGen_DedupeRule::create('HouseholdSupervised') 'contact_type' => 'Household', 'threshold' => 10, 'used' => 'Supervised', - 'title' => ts('Name and Email'), + 'title' => ts('Name or Email'), 'is_reserved' => 0, ]) ->addValueTable(['rule_table', 'rule_field', 'rule_weight'], [ diff --git a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdUnsupervised.sqldata.php b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdUnsupervised.sqldata.php index 37499430e6..a906b50a32 100644 --- a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdUnsupervised.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/HouseholdUnsupervised.sqldata.php @@ -4,7 +4,7 @@ return CRM_Core_CodeGen_DedupeRule::create('HouseholdUnsupervised') 'contact_type' => 'Household', 'threshold' => 10, 'used' => 'Unsupervised', - 'title' => ts('Name and Email'), + 'title' => ts('Name or Email'), 'is_reserved' => 0, ]) ->addValueTable(['rule_table', 'rule_field', 'rule_weight'], [ diff --git a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationSupervised.sqldata.php b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationSupervised.sqldata.php index 556feea24a..eeaa154210 100644 --- a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationSupervised.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationSupervised.sqldata.php @@ -4,7 +4,7 @@ return CRM_Core_CodeGen_DedupeRule::create('OrganizationSupervised') 'contact_type' => 'Organization', 'threshold' => 10, 'used' => 'Supervised', - 'title' => ts('Name and Email'), + 'title' => ts('Name or Email'), 'is_reserved' => 0, ]) ->addValueTable(['rule_table', 'rule_field', 'rule_weight'], [ diff --git a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationUnsupervised.sqldata.php b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationUnsupervised.sqldata.php index f1fe0c3368..6b1740283e 100644 --- a/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationUnsupervised.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_dedupe_rule/OrganizationUnsupervised.sqldata.php @@ -4,7 +4,7 @@ return CRM_Core_CodeGen_DedupeRule::create('OrganizationUnsupervised') 'contact_type' => 'Organization', 'threshold' => 10, 'used' => 'Unsupervised', - 'title' => ts('Name and Email'), + 'title' => ts('Name or Email'), 'is_reserved' => 0, ]) ->addValueTable(['rule_table', 'rule_field', 'rule_weight'], [ diff --git a/civicrm/sql/civicrm_data/civicrm_job.sqldata.php b/civicrm/sql/civicrm_data/civicrm_job.sqldata.php index 1bf00ed20e..5fbce16e0c 100644 --- a/civicrm/sql/civicrm_data/civicrm_job.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_job.sqldata.php @@ -2,8 +2,10 @@ // CRM-8358 return CRM_Core_CodeGen_SqlData::create('civicrm_job') ->addDefaults([ + 'is_active' => 0, 'domain_id' => new CRM_Utils_SQL_Literal('@domainID'), 'last_run' => NULL, + 'parameters' => NULL, ]) ->addValues([ [ @@ -13,7 +15,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job') // FIXME: "to to" 'api_entity' => 'job', 'api_action' => 'version_check', - 'parameters' => NULL, 'is_active' => 1, ], [ @@ -22,8 +23,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job') 'description' => 'Sends out scheduled CiviMail mailings', 'api_entity' => 'job', 'api_action' => 'process_mailing', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Hourly', @@ -31,8 +30,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job') 'description' => 'Fetches bounces from mailings and writes them to mailing statistics', 'api_entity' => 'job', 'api_action' => 'fetch_bounces', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Hourly', @@ -40,8 +37,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job') 'description' => 'Inserts activity for a contact or a case by retrieving inbound emails from a mail directory', 'api_entity' => 'job', 'api_action' => 'fetch_activities', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Daily', @@ -50,7 +45,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_job') 'api_entity' => 'job', 'api_action' => 'process_pledge', 'parameters' => 'send_reminders=[1 or 0] optional- 1 to send payment reminders', - 'is_active' => 0, ], [ 'run_frequency' => 'Daily', @@ -63,7 +57,6 @@ parse=[1 or 0] required start=[contact ID] optional-begin with this contact ID end=[contact ID] optional-process contacts with IDs less than this throttle=[1 or 0] optional-1 adds five second sleep', - 'is_active' => 0, ], [ 'run_frequency' => 'Daily', @@ -75,7 +68,6 @@ throttle=[1 or 0] optional-1 adds five second sleep', gt=[email_greeting or postal_greeting or addressee] required force=[0 or 1] optional-0 update contacts with null value, 1 update all limit=Number optional-Limit the number of contacts to update', - 'is_active' => 0, ], [ 'run_frequency' => 'Daily', @@ -85,7 +77,6 @@ limit=Number optional-Limit the number of contacts to update', 'api_action' => 'mail_report', 'parameters' => 'instanceId=[ID of report instance] required format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', - 'is_active' => 0, ], [ 'run_frequency' => 'Hourly', @@ -93,8 +84,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'description' => 'Sends out scheduled reminders via email', 'api_entity' => 'job', 'api_action' => 'send_reminder', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Always', @@ -102,8 +91,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'description' => 'Updates pending event participant statuses based on time', 'api_entity' => 'job', 'api_action' => 'process_participant', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Daily', @@ -111,8 +98,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'description' => 'Updates membership statuses. WARNING: Membership renewal reminders have been migrated to the Schedule Reminders functionality, which supports multiple renewal reminders.', 'api_entity' => 'job', 'api_action' => 'process_membership', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Always', @@ -120,8 +105,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'description' => 'Releases reserved survey respondents when they have been reserved for longer than the Release Frequency days specified for that survey.', 'api_entity' => 'job', 'api_action' => 'process_respondent', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Hourly', @@ -129,8 +112,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'description' => 'Removes temporary data and files, and clears old data from cache tables. Recommend running this job every hour to help prevent database and file system bloat.', 'api_entity' => 'job', 'api_action' => 'cleanup', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Always', @@ -138,8 +119,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'description' => 'Sends out scheduled SMS', 'api_entity' => 'job', 'api_action' => 'process_sms', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Always', @@ -148,7 +127,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'api_entity' => 'job', 'api_action' => 'group_rebuild', 'parameters' => 'limit=Number optional-Limit the number of smart groups rebuild', - 'is_active' => 0, ], [ 'run_frequency' => 'Daily', @@ -156,8 +134,6 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'description' => 'Disables relationships that have expired (ie. those relationships whose end date is in the past).', 'api_entity' => 'job', 'api_action' => 'disable_expired_relationships', - 'parameters' => NULL, - 'is_active' => 0, ], [ 'run_frequency' => 'Daily', @@ -166,6 +142,5 @@ format=[csv or print] optional-output CSV or print-friendly HTML, else PDF', 'api_entity' => 'mailing', 'api_action' => 'update_email_resetdate', 'parameters' => 'minDays, maxDays=Consider mailings that have completed between minDays and maxDays', - 'is_active' => 0, ], ]); diff --git a/civicrm/sql/civicrm_data/civicrm_location_type.sqldata.php b/civicrm/sql/civicrm_data/civicrm_location_type.sqldata.php index 4753ed7599..0d611080f0 100644 --- a/civicrm/sql/civicrm_data/civicrm_location_type.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_location_type.sqldata.php @@ -10,7 +10,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_location_type') 'display_name' => ts('Home'), 'vcard_name' => 'HOME', 'description' => ts('Place of residence'), - 'is_reserved' => 0, 'is_default' => 1, ], [ @@ -18,21 +17,18 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_location_type') 'display_name' => ts('Work'), 'vcard_name' => 'WORK', 'description' => ts('Work location'), - 'is_reserved' => 0, ], [ 'name' => ts('Main'), 'display_name' => ts('Main'), 'vcard_name' => NULL, 'description' => ts('Main office location'), - 'is_reserved' => 0, ], [ 'name' => ts('Other'), 'display_name' => ts('Other'), 'vcard_name' => NULL, 'description' => ts('Other location'), - 'is_reserved' => 0, ], // -- the following location must stay with the untranslated Billing name, CRM-2064 [ @@ -46,5 +42,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_location_type') ->addDefaults([ 'is_active' => 1, 'is_default' => NULL, + 'is_reserved' => 0, // FIXME: Doesn't 0 make more sense than NULL? ]); diff --git a/civicrm/sql/civicrm_data/civicrm_membership_status.sqldata.php b/civicrm/sql/civicrm_data/civicrm_membership_status.sqldata.php index 22e7431edb..ba555a2cb8 100644 --- a/civicrm/sql/civicrm_data/civicrm_membership_status.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_membership_status.sqldata.php @@ -1,6 +1,11 @@ <?php return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') + ->addDefaults([ + 'is_active' => 1, + 'is_default' => 0, + 'is_admin' => 0, + ]) ->addValues([ [ 'name' => 'New', @@ -12,10 +17,7 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') 'end_event_adjust_unit' => 'month', 'end_event_adjust_interval' => 3, 'is_current_member' => 1, - 'is_admin' => 0, 'weight' => 1, - 'is_default' => 0, - 'is_active' => 1, 'is_reserved' => 0, ], [ @@ -28,10 +30,8 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') 'end_event_adjust_unit' => NULL, 'end_event_adjust_interval' => NULL, 'is_current_member' => 1, - 'is_admin' => 0, 'weight' => 2, 'is_default' => 1, - 'is_active' => 1, 'is_reserved' => 0, ], [ @@ -44,10 +44,7 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') 'end_event_adjust_unit' => 'month', 'end_event_adjust_interval' => 1, 'is_current_member' => 1, - 'is_admin' => 0, 'weight' => 3, - 'is_default' => 0, - 'is_active' => 1, 'is_reserved' => 0, ], [ @@ -60,10 +57,7 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') 'end_event_adjust_unit' => NULL, 'end_event_adjust_interval' => NULL, 'is_current_member' => 0, - 'is_admin' => 0, 'weight' => 4, - 'is_default' => 0, - 'is_active' => 1, 'is_reserved' => 0, ], [ @@ -76,10 +70,7 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') 'end_event_adjust_unit' => NULL, 'end_event_adjust_interval' => NULL, 'is_current_member' => 0, - 'is_admin' => 0, 'weight' => 5, - 'is_default' => 0, - 'is_active' => 1, 'is_reserved' => 1, ], [ @@ -92,10 +83,7 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') 'end_event_adjust_unit' => NULL, 'end_event_adjust_interval' => NULL, 'is_current_member' => 0, - 'is_admin' => 0, 'weight' => 6, - 'is_default' => 0, - 'is_active' => 1, 'is_reserved' => 1, ], [ @@ -110,8 +98,6 @@ return CRM_Core_CodeGen_SqlData::create('civicrm_membership_status') 'is_current_member' => 0, 'is_admin' => 1, 'weight' => 7, - 'is_default' => 0, - 'is_active' => 1, 'is_reserved' => 1, ], ]); diff --git a/civicrm/sql/civicrm_data/civicrm_option_group/acl_role.sqldata.php b/civicrm/sql/civicrm_data/civicrm_option_group/acl_role.sqldata.php index 4caadde9cc..b53f59088a 100644 --- a/civicrm/sql/civicrm_data/civicrm_option_group/acl_role.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_option_group/acl_role.sqldata.php @@ -4,6 +4,12 @@ return CRM_Core_CodeGen_OptionGroup::create('acl_role', 'a/0008') 'title' => ts('ACL Role'), ]) ->addValues([ + [ + 'label' => ts('Everyone'), + 'value' => 0, + 'name' => 'Everyone', + 'is_reserved' => 1, + ], [ 'label' => ts('Administrator'), 'value' => 1, diff --git a/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php b/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php index ad638610b3..974fba7f4f 100644 --- a/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php +++ b/civicrm/sql/civicrm_data/civicrm_tag.sqldata.php @@ -1,34 +1,28 @@ <?php return CRM_Core_CodeGen_SqlData::create('civicrm_tag') + ->addDefaults([ + 'parent_id' => NULL, + 'used_for' => 'civicrm_contact', + ]) ->addValues([ [ 'name' => ts('Non-profit'), 'description' => ts('Any not-for-profit organization.'), - 'parent_id' => NULL, - 'used_for' => 'civicrm_contact', ], [ 'name' => ts('Company'), 'description' => ts('For-profit organization.'), - 'parent_id' => NULL, - 'used_for' => 'civicrm_contact', ], [ 'name' => ts('Government Entity'), 'description' => ts('Any governmental entity.'), - 'parent_id' => NULL, - 'used_for' => 'civicrm_contact', ], [ 'name' => ts('Major Donor'), 'description' => ts('High-value supporter of our organization.'), - 'parent_id' => NULL, - 'used_for' => 'civicrm_contact', ], [ 'name' => ts('Volunteer'), 'description' => ts('Active volunteers.'), - 'parent_id' => NULL, - 'used_for' => 'civicrm_contact', ], ]); diff --git a/civicrm/sql/civicrm_drop.mysql b/civicrm/sql/civicrm_drop.mysql index 41294ce302..a4219b207f 100644 --- a/civicrm/sql/civicrm_drop.mysql +++ b/civicrm/sql/civicrm_drop.mysql @@ -155,7 +155,6 @@ DROP TABLE IF EXISTS `civicrm_acl_entity_role`; DROP TABLE IF EXISTS `civicrm_acl_cache`; DROP TABLE IF EXISTS `civicrm_acl`; DROP TABLE IF EXISTS `civicrm_recurring_entity`; -DROP TABLE IF EXISTS `civicrm_action_mapping`; DROP TABLE IF EXISTS `civicrm_prevnext_cache`; DROP TABLE IF EXISTS `civicrm_component`; DROP TABLE IF EXISTS `civicrm_worldregion`; diff --git a/civicrm/sql/civicrm_generated.mysql b/civicrm/sql/civicrm_generated.mysql index 4ee7e20a15..b6934f7649 100644 --- a/civicrm/sql/civicrm_generated.mysql +++ b/civicrm/sql/civicrm_generated.mysql @@ -1,8 +1,8 @@ --- MySQL dump 10.13 Distrib 8.0.29, for macos12.2 (arm64) +-- MySQL dump 10.13 Distrib 8.0.33, for Linux (x86_64) -- --- Host: 127.0.0.1 Database: dmastercivi_pa1rx +-- Host: 127.0.0.1 Database: db -- ------------------------------------------------------ --- Server version 8.0.29 +-- Server version 8.0.34 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -21,73 +21,9 @@ LOCK TABLES `civicrm_acl` WRITE; /*!40000 ALTER TABLE `civicrm_acl` DISABLE KEYS */; -INSERT INTO `civicrm_acl` (`id`, `name`, `deny`, `entity_table`, `entity_id`, `operation`, `object_table`, `object_id`, `acl_table`, `acl_id`, `is_active`) VALUES - (1,'Edit All Contacts',0,'civicrm_acl_role',1,'Edit','civicrm_saved_search',0,NULL,NULL,1), - (2,'Core ACL',0,'civicrm_acl_role',0,'All','access CiviMail subscribe/unsubscribe pages',NULL,NULL,NULL,1), - (3,'Core ACL',0,'civicrm_acl_role',0,'All','access all custom data',NULL,NULL,NULL,1), - (4,'Core ACL',0,'civicrm_acl_role',0,'All','make online contributions',NULL,NULL,NULL,1), - (5,'Core ACL',0,'civicrm_acl_role',0,'All','make online pledges',NULL,NULL,NULL,1), - (6,'Core ACL',0,'civicrm_acl_role',0,'All','profile listings and forms',NULL,NULL,NULL,1), - (7,'Core ACL',0,'civicrm_acl_role',0,'All','view event info',NULL,NULL,NULL,1), - (8,'Core ACL',0,'civicrm_acl_role',0,'All','register for events',NULL,NULL,NULL,1), - (9,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviCRM',NULL,NULL,NULL,1), - (10,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviContribute',NULL,NULL,NULL,1), - (11,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviEvent',NULL,NULL,NULL,1), - (12,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviMail',NULL,NULL,NULL,1), - (13,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviMail subscribe/unsubscribe pages',NULL,NULL,NULL,1), - (14,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviMember',NULL,NULL,NULL,1), - (15,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviPledge',NULL,NULL,NULL,1), - (16,'Core ACL',0,'civicrm_acl_role',1,'All','administer CiviCase',NULL,NULL,NULL,1), - (17,'Core ACL',0,'civicrm_acl_role',1,'All','access my cases and activities',NULL,NULL,NULL,1), - (18,'Core ACL',0,'civicrm_acl_role',1,'All','access all cases and activities',NULL,NULL,NULL,1), - (19,'Core ACL',0,'civicrm_acl_role',1,'All','delete in CiviCase',NULL,NULL,NULL,1), - (20,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviGrant',NULL,NULL,NULL,1), - (21,'Core ACL',0,'civicrm_acl_role',1,'All','access Contact Dashboard',NULL,NULL,NULL,1), - (22,'Core ACL',0,'civicrm_acl_role',1,'All','administer Multiple Organizations',NULL,NULL,NULL,1), - (23,'Core ACL',0,'civicrm_acl_role',1,'All','delete activities',NULL,NULL,NULL,1), - (24,'Core ACL',0,'civicrm_acl_role',1,'All','delete in CiviContribute',NULL,NULL,NULL,1), - (25,'Core ACL',0,'civicrm_acl_role',1,'All','delete in CiviMail',NULL,NULL,NULL,1), - (26,'Core ACL',0,'civicrm_acl_role',1,'All','delete in CiviPledge',NULL,NULL,NULL,1), - (27,'Core ACL',0,'civicrm_acl_role',1,'All','delete contacts',NULL,NULL,NULL,1), - (28,'Core ACL',0,'civicrm_acl_role',1,'All','delete in CiviEvent',NULL,NULL,NULL,1), - (29,'Core ACL',0,'civicrm_acl_role',1,'All','delete in CiviMember',NULL,NULL,NULL,1), - (30,'Core ACL',0,'civicrm_acl_role',1,'All','translate CiviCRM',NULL,NULL,NULL,1), - (31,'Core ACL',0,'civicrm_acl_role',1,'All','edit grants',NULL,NULL,NULL,1), - (32,'Core ACL',0,'civicrm_acl_role',1,'All','access all custom data',NULL,NULL,NULL,1), - (33,'Core ACL',0,'civicrm_acl_role',1,'All','access uploaded files',NULL,NULL,NULL,1), - (34,'Core ACL',0,'civicrm_acl_role',1,'All','add contacts',NULL,NULL,NULL,1), - (35,'Core ACL',0,'civicrm_acl_role',1,'All','administer CiviCRM',NULL,NULL,NULL,1), - (36,'Core ACL',0,'civicrm_acl_role',1,'All','edit all contacts',NULL,NULL,NULL,1), - (37,'Core ACL',0,'civicrm_acl_role',1,'All','edit contributions',NULL,NULL,NULL,1), - (38,'Core ACL',0,'civicrm_acl_role',1,'All','edit event participants',NULL,NULL,NULL,1), - (39,'Core ACL',0,'civicrm_acl_role',1,'All','edit groups',NULL,NULL,NULL,1), - (40,'Core ACL',0,'civicrm_acl_role',1,'All','edit memberships',NULL,NULL,NULL,1), - (41,'Core ACL',0,'civicrm_acl_role',1,'All','edit pledges',NULL,NULL,NULL,1), - (42,'Core ACL',0,'civicrm_acl_role',1,'All','access CiviReport',NULL,NULL,NULL,1), - (43,'Core ACL',0,'civicrm_acl_role',1,'All','access Report Criteria',NULL,NULL,NULL,1), - (44,'Core ACL',0,'civicrm_acl_role',1,'All','administer Reports',NULL,NULL,NULL,1), - (45,'Core ACL',0,'civicrm_acl_role',1,'All','import contacts',NULL,NULL,NULL,1), - (46,'Core ACL',0,'civicrm_acl_role',1,'All','make online contributions',NULL,NULL,NULL,1), - (47,'Core ACL',0,'civicrm_acl_role',1,'All','make online pledges',NULL,NULL,NULL,1), - (48,'Core ACL',0,'civicrm_acl_role',1,'All','profile listings and forms',NULL,NULL,NULL,1), - (49,'Core ACL',0,'civicrm_acl_role',1,'All','profile create',NULL,NULL,NULL,1), - (50,'Core ACL',0,'civicrm_acl_role',1,'All','profile edit',NULL,NULL,NULL,1), - (51,'Core ACL',0,'civicrm_acl_role',1,'All','profile listings',NULL,NULL,NULL,1), - (52,'Core ACL',0,'civicrm_acl_role',1,'All','profile view',NULL,NULL,NULL,1), - (53,'Core ACL',0,'civicrm_acl_role',1,'All','register for events',NULL,NULL,NULL,1), - (54,'Core ACL',0,'civicrm_acl_role',1,'All','view all activities',NULL,NULL,NULL,1), - (55,'Core ACL',0,'civicrm_acl_role',1,'All','view all contacts',NULL,NULL,NULL,1), - (56,'Core ACL',0,'civicrm_acl_role',1,'All','view event info',NULL,NULL,NULL,1), - (57,'Core ACL',0,'civicrm_acl_role',1,'All','view event participants',NULL,NULL,NULL,1), - (58,'Core ACL',0,'civicrm_acl_role',1,'All','edit all events',NULL,NULL,NULL,1), - (59,'Core ACL',0,'civicrm_acl_role',2,'All','access CiviMail subscribe/unsubscribe pages',NULL,NULL,NULL,1), - (60,'Core ACL',0,'civicrm_acl_role',2,'All','access all custom data',NULL,NULL,NULL,1), - (61,'Core ACL',0,'civicrm_acl_role',2,'All','make online contributions',NULL,NULL,NULL,1), - (62,'Core ACL',0,'civicrm_acl_role',2,'All','make online pledges',NULL,NULL,NULL,1), - (63,'Core ACL',0,'civicrm_acl_role',2,'All','profile listings and forms',NULL,NULL,NULL,1), - (64,'Core ACL',0,'civicrm_acl_role',2,'All','register for events',NULL,NULL,NULL,1), - (65,'Core ACL',0,'civicrm_acl_role',2,'All','view event info',NULL,NULL,NULL,1), - (66,'Advisory board access to volunteers',0,'civicrm_acl_role',2,'Edit','civicrm_saved_search',3,NULL,NULL,1); +INSERT INTO `civicrm_acl` (`id`, `name`, `deny`, `entity_table`, `entity_id`, `operation`, `object_table`, `object_id`, `acl_table`, `acl_id`, `is_active`, `priority`) VALUES + (1,'Edit All Contacts',0,'civicrm_acl_role',1,'Edit','civicrm_group',0,NULL,NULL,1,1), + (2,'Advisory board access to volunteers',0,'civicrm_acl_role',2,'Edit','civicrm_saved_search',3,NULL,NULL,1,2); /*!40000 ALTER TABLE `civicrm_acl` ENABLE KEYS */; UNLOCK TABLES; @@ -117,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,869,'civicrm_group',4,1); + (2,870,'civicrm_group',4,1); /*!40000 ALTER TABLE `civicrm_acl_entity_role` ENABLE KEYS */; UNLOCK TABLES; @@ -130,22 +66,6 @@ LOCK TABLES `civicrm_action_log` WRITE; /*!40000 ALTER TABLE `civicrm_action_log` ENABLE KEYS */; UNLOCK TABLES; --- --- Dumping data for table `civicrm_action_mapping` --- - -LOCK TABLES `civicrm_action_mapping` WRITE; -/*!40000 ALTER TABLE `civicrm_action_mapping` DISABLE KEYS */; -INSERT INTO `civicrm_action_mapping` (`id`, `entity`, `entity_value`, `entity_value_label`, `entity_status`, `entity_status_label`, `entity_date_start`, `entity_date_end`, `entity_recipient`) VALUES - (1,'civicrm_activity','activity_type','Activity Type','activity_status','Activity Status','activity_date_time',NULL,'activity_contacts'), - (2,'civicrm_participant','event_type','Event Type','civicrm_participant_status_type','Participant Status','event_start_date','event_end_date','event_contacts'), - (3,'civicrm_participant','civicrm_event','Event Name','civicrm_participant_status_type','Participant Status','event_start_date','event_end_date','event_contacts'), - (4,'civicrm_membership','civicrm_membership_type','Membership Type','auto_renew_options','Auto Renew Options','membership_join_date','membership_end_date',NULL), - (5,'civicrm_participant','event_template','Event Template','civicrm_participant_status_type','Participant Status','event_start_date','event_end_date','event_contacts'), - (6,'civicrm_contact','civicrm_contact','Date Field','contact_date_reminder_options','Annual Options','date_field',NULL,NULL); -/*!40000 ALTER TABLE `civicrm_action_mapping` ENABLE KEYS */; -UNLOCK TABLES; - -- -- Dumping data for table `civicrm_action_schedule` -- @@ -162,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,9,'Subject for Tell a Friend','2023-06-02 07:05:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (2,NULL,9,'Subject for Tell a Friend','2022-08-09 07:39:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (3,NULL,1,'Subject for Meeting','2022-11-24 12:29:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (4,NULL,1,'Subject for Meeting','2023-03-27 03:29:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (5,NULL,22,'Subject for Print/Merge Document','2022-09-09 15:30:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (6,NULL,55,'Subject for Interview','2023-03-13 10:17:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (7,NULL,55,'Subject for Interview','2022-08-20 19:20:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (8,NULL,9,'Subject for Tell a Friend','2023-03-27 19:09:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (9,NULL,55,'Subject for Interview','2022-06-16 23:58:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (10,NULL,22,'Subject for Print/Merge Document','2023-01-17 23:26:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (11,NULL,1,'Subject for Meeting','2022-12-10 10:40:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (12,NULL,1,'Subject for Meeting','2023-02-11 15:08:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (13,NULL,9,'Subject for Tell a Friend','2022-07-23 00:49:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (14,NULL,2,'Subject for Phone Call','2023-01-20 15:54:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (15,NULL,1,'Subject for Meeting','2022-08-07 11:27:37',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (16,NULL,1,'Subject for Meeting','2022-11-30 01:33:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (17,NULL,2,'Subject for Phone Call','2023-05-05 11:01:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (18,NULL,1,'Subject for Meeting','2023-02-01 18:16:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (19,NULL,55,'Subject for Interview','2023-04-23 04:04:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (20,NULL,9,'Subject for Tell a Friend','2022-08-03 06:35:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (21,NULL,2,'Subject for Phone Call','2023-05-20 13:21:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (22,NULL,1,'Subject for Meeting','2022-11-25 19:32:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (23,NULL,1,'Subject for Meeting','2023-02-10 14:51:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (24,NULL,22,'Subject for Print/Merge Document','2022-11-03 04:44:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (25,NULL,2,'Subject for Phone Call','2022-09-05 01:19:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (26,NULL,1,'Subject for Meeting','2022-09-14 22:54:12',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (27,NULL,2,'Subject for Phone Call','2023-05-28 23:33:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (28,NULL,2,'Subject for Phone Call','2022-06-10 18:14:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (29,NULL,1,'Subject for Meeting','2023-05-06 07:30:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (30,NULL,2,'Subject for Phone Call','2022-10-27 10:24:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (31,NULL,1,'Subject for Meeting','2023-05-31 00:31:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (32,NULL,55,'Subject for Interview','2022-11-17 19:19:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (33,NULL,9,'Subject for Tell a Friend','2022-08-12 06:24:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (34,NULL,9,'Subject for Tell a Friend','2023-04-04 07:57:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (35,NULL,22,'Subject for Print/Merge Document','2023-03-16 17:46:09',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (36,NULL,1,'Subject for Meeting','2023-05-09 10:56:30',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (37,NULL,2,'Subject for Phone Call','2022-11-16 17:33:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (38,NULL,22,'Subject for Print/Merge Document','2023-01-03 19:10:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (39,NULL,1,'Subject for Meeting','2022-12-16 05:23:04',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (40,NULL,22,'Subject for Print/Merge Document','2022-11-20 13:27:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (41,NULL,1,'Subject for Meeting','2023-01-08 17:36:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (42,NULL,2,'Subject for Phone Call','2022-10-31 07:25:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (43,NULL,9,'Subject for Tell a Friend','2023-03-11 12:24:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (44,NULL,2,'Subject for Phone Call','2023-02-27 07:08:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (45,NULL,55,'Subject for Interview','2022-09-14 01:30:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (46,NULL,9,'Subject for Tell a Friend','2023-06-02 05:56:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (47,NULL,55,'Subject for Interview','2023-05-19 13:39:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (48,NULL,1,'Subject for Meeting','2022-09-22 13:40:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (49,NULL,9,'Subject for Tell a Friend','2022-12-05 02:30:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (50,NULL,9,'Subject for Tell a Friend','2022-11-15 03:31:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (51,NULL,1,'Subject for Meeting','2023-05-29 17:19:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (52,NULL,22,'Subject for Print/Merge Document','2023-04-05 23:08:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (53,NULL,2,'Subject for Phone Call','2022-09-14 04:28:26',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (54,NULL,9,'Subject for Tell a Friend','2022-07-03 21:25:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (55,NULL,55,'Subject for Interview','2023-03-24 01:33:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (56,NULL,22,'Subject for Print/Merge Document','2023-03-10 17:55:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (57,NULL,22,'Subject for Print/Merge Document','2022-07-24 08:50:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (58,NULL,55,'Subject for Interview','2022-11-11 18:47:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (59,NULL,55,'Subject for Interview','2022-07-05 03:30:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (60,NULL,55,'Subject for Interview','2023-04-16 08:26:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (61,NULL,2,'Subject for Phone Call','2022-06-23 17:09:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (62,NULL,9,'Subject for Tell a Friend','2022-11-24 03:03:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (63,NULL,2,'Subject for Phone Call','2022-06-16 22:41:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (64,NULL,55,'Subject for Interview','2023-03-16 20:56:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (65,NULL,1,'Subject for Meeting','2023-02-23 04:58:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (66,NULL,22,'Subject for Print/Merge Document','2022-09-06 11:49:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (67,NULL,9,'Subject for Tell a Friend','2022-09-06 04:19:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (68,NULL,9,'Subject for Tell a Friend','2022-09-21 00:32:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (69,NULL,22,'Subject for Print/Merge Document','2023-02-08 04:11:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (70,NULL,2,'Subject for Phone Call','2022-07-03 17:59:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (71,NULL,55,'Subject for Interview','2022-09-01 03:36:57',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (72,NULL,2,'Subject for Phone Call','2022-11-25 17:35:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (73,NULL,2,'Subject for Phone Call','2022-11-08 08:03:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (74,NULL,22,'Subject for Print/Merge Document','2023-02-19 03:22:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (75,NULL,1,'Subject for Meeting','2022-08-30 07:09:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (76,NULL,22,'Subject for Print/Merge Document','2023-02-06 14:41:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (77,NULL,2,'Subject for Phone Call','2022-09-02 20:45:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (78,NULL,1,'Subject for Meeting','2023-03-09 03:46:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (79,NULL,9,'Subject for Tell a Friend','2022-10-06 20:16:11',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (80,NULL,2,'Subject for Phone Call','2023-06-05 19:50:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (81,NULL,9,'Subject for Tell a Friend','2022-07-18 18:29:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (82,NULL,22,'Subject for Print/Merge Document','2022-10-08 14:43:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (83,NULL,1,'Subject for Meeting','2022-10-10 14:18:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (84,NULL,1,'Subject for Meeting','2023-01-23 08:43:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (85,NULL,55,'Subject for Interview','2023-03-17 14:11:47',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (86,NULL,2,'Subject for Phone Call','2023-04-07 14:46:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (87,NULL,9,'Subject for Tell a Friend','2023-05-20 01:51:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (88,NULL,55,'Subject for Interview','2022-07-26 04:16:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (89,NULL,22,'Subject for Print/Merge Document','2023-05-13 10:52:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (90,NULL,9,'Subject for Tell a Friend','2022-08-14 21:31:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (91,NULL,55,'Subject for Interview','2022-11-22 23:58:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (92,NULL,1,'Subject for Meeting','2023-05-16 02:18:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (93,NULL,1,'Subject for Meeting','2022-07-05 07:22:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (94,NULL,22,'Subject for Print/Merge Document','2023-05-17 18:23:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (95,NULL,1,'Subject for Meeting','2023-04-05 20:14:49',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (96,NULL,55,'Subject for Interview','2022-11-26 23:00:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (97,NULL,1,'Subject for Meeting','2023-01-09 05:22:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (98,NULL,9,'Subject for Tell a Friend','2022-08-25 03:18:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (99,NULL,1,'Subject for Meeting','2022-12-21 21:17:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (100,NULL,22,'Subject for Print/Merge Document','2022-10-21 08:28:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (101,NULL,2,'Subject for Phone Call','2023-04-25 18:48:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (102,NULL,22,'Subject for Print/Merge Document','2023-01-06 12:10:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (103,NULL,9,'Subject for Tell a Friend','2022-12-16 08:32:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (104,NULL,1,'Subject for Meeting','2022-08-12 08:25:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (105,NULL,9,'Subject for Tell a Friend','2022-07-15 13:36:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (106,NULL,55,'Subject for Interview','2022-11-27 11:22:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (107,NULL,2,'Subject for Phone Call','2023-06-07 20:18:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (108,NULL,22,'Subject for Print/Merge Document','2022-07-23 14:28:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (109,NULL,22,'Subject for Print/Merge Document','2022-12-22 03:35:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (110,NULL,2,'Subject for Phone Call','2023-04-09 09:50:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (111,NULL,1,'Subject for Meeting','2023-03-30 08:09:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (112,NULL,1,'Subject for Meeting','2022-06-12 22:10:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (113,NULL,55,'Subject for Interview','2022-11-22 15:55:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (114,NULL,1,'Subject for Meeting','2022-12-23 23:35:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (115,NULL,22,'Subject for Print/Merge Document','2022-07-11 21:21:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (116,NULL,55,'Subject for Interview','2023-06-07 01:00:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (117,NULL,55,'Subject for Interview','2023-02-26 15:19:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (118,NULL,22,'Subject for Print/Merge Document','2022-11-21 17:06:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (119,NULL,55,'Subject for Interview','2023-02-25 05:57:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (120,NULL,55,'Subject for Interview','2022-09-19 09:37:40',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (121,NULL,2,'Subject for Phone Call','2022-10-20 02:56:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (122,NULL,1,'Subject for Meeting','2022-12-18 02:28:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (123,NULL,9,'Subject for Tell a Friend','2022-12-20 12:08:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (124,NULL,55,'Subject for Interview','2023-01-05 05:29:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (125,NULL,2,'Subject for Phone Call','2022-10-02 06:44:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (126,NULL,1,'Subject for Meeting','2023-02-18 18:56:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (127,NULL,55,'Subject for Interview','2022-12-30 22:23:38',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (128,NULL,55,'Subject for Interview','2022-12-14 00:44:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (129,NULL,9,'Subject for Tell a Friend','2023-03-07 14:21:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (130,NULL,22,'Subject for Print/Merge Document','2022-11-12 10:42:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (131,NULL,22,'Subject for Print/Merge Document','2022-12-20 04:32:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (132,NULL,1,'Subject for Meeting','2022-06-22 00:29:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (133,NULL,2,'Subject for Phone Call','2023-04-06 12:21:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (134,NULL,2,'Subject for Phone Call','2023-03-19 15:23:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (135,NULL,2,'Subject for Phone Call','2023-03-29 09:06:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (136,NULL,2,'Subject for Phone Call','2023-05-14 17:42:42',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (137,NULL,22,'Subject for Print/Merge Document','2022-11-21 19:53:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (138,NULL,2,'Subject for Phone Call','2022-07-22 14:07:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (139,NULL,9,'Subject for Tell a Friend','2023-02-11 09:44:32',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (140,NULL,22,'Subject for Print/Merge Document','2022-10-03 03:01:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (141,NULL,55,'Subject for Interview','2022-08-07 11:48:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (142,NULL,22,'Subject for Print/Merge Document','2022-11-01 15:54:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (143,NULL,9,'Subject for Tell a Friend','2023-02-19 02:41:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (144,NULL,2,'Subject for Phone Call','2023-04-09 15:52:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (145,NULL,1,'Subject for Meeting','2022-12-04 00:57:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (146,NULL,22,'Subject for Print/Merge Document','2022-06-16 00:48:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (147,NULL,2,'Subject for Phone Call','2023-03-10 17:19:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (148,NULL,9,'Subject for Tell a Friend','2022-07-06 23:03:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (149,NULL,1,'Subject for Meeting','2023-01-09 12:08:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (150,NULL,2,'Subject for Phone Call','2022-12-31 15:41:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (151,NULL,2,'Subject for Phone Call','2023-04-17 05:34:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (152,NULL,55,'Subject for Interview','2023-02-28 06:22:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (153,NULL,1,'Subject for Meeting','2023-03-07 15:49:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (154,NULL,1,'Subject for Meeting','2022-08-03 20:14:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (155,NULL,22,'Subject for Print/Merge Document','2023-04-14 17:54:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (156,NULL,1,'Subject for Meeting','2023-03-19 16:33:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (157,NULL,2,'Subject for Phone Call','2022-07-03 03:39:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (158,NULL,22,'Subject for Print/Merge Document','2023-04-24 13:51:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (159,NULL,9,'Subject for Tell a Friend','2023-01-26 09:23:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (160,NULL,9,'Subject for Tell a Friend','2023-03-22 17:39:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (161,NULL,1,'Subject for Meeting','2022-10-31 22:13:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (162,NULL,9,'Subject for Tell a Friend','2022-08-17 08:21:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (163,NULL,2,'Subject for Phone Call','2022-10-25 15:46:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (164,NULL,9,'Subject for Tell a Friend','2022-06-19 04:05:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (165,NULL,2,'Subject for Phone Call','2022-11-17 09:33:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (166,NULL,22,'Subject for Print/Merge Document','2022-11-21 01:32:34',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (167,NULL,55,'Subject for Interview','2023-04-04 07:21:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (168,NULL,22,'Subject for Print/Merge Document','2022-07-02 23:23:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (169,NULL,9,'Subject for Tell a Friend','2022-09-06 22:28:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (170,NULL,9,'Subject for Tell a Friend','2022-09-19 04:16:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (171,NULL,55,'Subject for Interview','2022-07-24 06:43:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (172,NULL,1,'Subject for Meeting','2022-10-12 11:02:56',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (173,NULL,55,'Subject for Interview','2023-05-03 08:11:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (174,NULL,22,'Subject for Print/Merge Document','2022-07-10 14:07:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (175,NULL,1,'Subject for Meeting','2023-03-22 02:50:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (176,NULL,9,'Subject for Tell a Friend','2022-11-06 00:36:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (177,NULL,55,'Subject for Interview','2023-05-18 11:36:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (178,NULL,1,'Subject for Meeting','2022-09-17 14:26:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (179,NULL,9,'Subject for Tell a Friend','2022-10-08 09:17:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (180,NULL,22,'Subject for Print/Merge Document','2023-03-11 11:26:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (181,NULL,9,'Subject for Tell a Friend','2022-08-28 21:49:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (182,NULL,2,'Subject for Phone Call','2023-05-15 10:04:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (183,NULL,55,'Subject for Interview','2022-12-22 09:27:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (184,NULL,22,'Subject for Print/Merge Document','2022-07-10 13:04:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (185,NULL,2,'Subject for Phone Call','2023-05-14 01:07:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (186,NULL,22,'Subject for Print/Merge Document','2022-06-22 20:34:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (187,NULL,1,'Subject for Meeting','2022-06-19 05:45:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (188,NULL,22,'Subject for Print/Merge Document','2023-04-30 14:31:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (189,NULL,1,'Subject for Meeting','2022-06-11 17:46:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (190,NULL,2,'Subject for Phone Call','2022-08-25 21:10:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (191,NULL,22,'Subject for Print/Merge Document','2023-02-12 02:25:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (192,NULL,2,'Subject for Phone Call','2023-03-24 14:50:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (193,NULL,22,'Subject for Print/Merge Document','2023-03-20 20:20:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (194,NULL,9,'Subject for Tell a Friend','2022-10-26 20:58:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (195,NULL,55,'Subject for Interview','2022-07-08 07:42:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (196,NULL,55,'Subject for Interview','2022-10-25 15:56:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (197,NULL,1,'Subject for Meeting','2022-09-08 09:01:38',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (198,NULL,1,'Subject for Meeting','2023-03-01 00:51:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (199,NULL,9,'Subject for Tell a Friend','2022-08-02 15:04:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (200,NULL,22,'Subject for Print/Merge Document','2022-07-28 22:42:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (201,NULL,22,'Subject for Print/Merge Document','2023-01-12 12:50:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (202,NULL,22,'Subject for Print/Merge Document','2022-06-28 05:44:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (203,NULL,9,'Subject for Tell a Friend','2022-06-22 11:02:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (204,NULL,9,'Subject for Tell a Friend','2022-10-15 21:42:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (205,NULL,22,'Subject for Print/Merge Document','2023-06-04 20:38:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (206,NULL,22,'Subject for Print/Merge Document','2022-09-10 15:03:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (207,NULL,2,'Subject for Phone Call','2022-10-31 08:09:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (208,NULL,22,'Subject for Print/Merge Document','2023-04-30 19:40:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (209,NULL,22,'Subject for Print/Merge Document','2023-02-06 14:26:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (210,NULL,55,'Subject for Interview','2023-03-16 12:11:45',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (211,NULL,2,'Subject for Phone Call','2022-07-22 06:14:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (212,NULL,22,'Subject for Print/Merge Document','2023-04-11 14:05:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (213,NULL,1,'Subject for Meeting','2023-03-22 23:38:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (214,NULL,1,'Subject for Meeting','2023-03-11 13:34:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (215,NULL,55,'Subject for Interview','2022-11-29 11:41:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (216,NULL,55,'Subject for Interview','2023-05-26 10:11:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (217,NULL,2,'Subject for Phone Call','2022-10-15 20:41:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (218,NULL,9,'Subject for Tell a Friend','2023-03-11 05:55:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (219,NULL,9,'Subject for Tell a Friend','2023-06-05 23:17:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (220,NULL,55,'Subject for Interview','2022-11-30 21:58:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (221,NULL,9,'Subject for Tell a Friend','2023-01-12 09:36:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (222,NULL,9,'Subject for Tell a Friend','2023-02-24 10:11:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (223,NULL,55,'Subject for Interview','2023-02-19 20:37:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (224,NULL,1,'Subject for Meeting','2023-03-04 08:44:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (225,NULL,9,'Subject for Tell a Friend','2023-03-30 02:44:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (226,NULL,9,'Subject for Tell a Friend','2022-11-06 20:38:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (227,NULL,1,'Subject for Meeting','2023-05-24 04:16:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (228,NULL,55,'Subject for Interview','2023-05-30 15:22:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (229,NULL,9,'Subject for Tell a Friend','2022-10-16 09:07:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (230,NULL,1,'Subject for Meeting','2022-07-28 13:40:06',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (231,NULL,2,'Subject for Phone Call','2022-12-31 13:07:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (232,NULL,9,'Subject for Tell a Friend','2023-02-08 10:45:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (233,NULL,22,'Subject for Print/Merge Document','2022-09-28 11:27:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (234,NULL,2,'Subject for Phone Call','2022-06-15 19:47:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (235,NULL,55,'Subject for Interview','2023-03-28 10:35:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (236,NULL,22,'Subject for Print/Merge Document','2023-04-27 02:45:24',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (237,NULL,1,'Subject for Meeting','2022-08-02 16:00:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (238,NULL,1,'Subject for Meeting','2023-04-16 04:59:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (239,NULL,1,'Subject for Meeting','2022-12-09 09:33:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (240,NULL,9,'Subject for Tell a Friend','2022-10-19 03:23:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (241,NULL,1,'Subject for Meeting','2022-12-07 23:38:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (242,NULL,22,'Subject for Print/Merge Document','2022-10-29 08:21:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (243,NULL,22,'Subject for Print/Merge Document','2022-12-16 19:47:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (244,NULL,55,'Subject for Interview','2022-11-15 10:18:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (245,NULL,9,'Subject for Tell a Friend','2022-07-29 19:05:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (246,NULL,55,'Subject for Interview','2022-10-03 23:55:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (247,NULL,1,'Subject for Meeting','2023-01-27 22:27:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (248,NULL,2,'Subject for Phone Call','2023-04-28 21:16:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (249,NULL,9,'Subject for Tell a Friend','2022-08-29 22:50:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (250,NULL,1,'Subject for Meeting','2022-10-05 19:30:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (251,NULL,22,'Subject for Print/Merge Document','2022-07-21 02:32:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (252,NULL,9,'Subject for Tell a Friend','2023-05-21 17:02:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (253,NULL,22,'Subject for Print/Merge Document','2022-11-13 14:27:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (254,NULL,2,'Subject for Phone Call','2022-10-19 18:23:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (255,NULL,2,'Subject for Phone Call','2022-10-09 02:03:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (256,NULL,55,'Subject for Interview','2023-04-16 12:54:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (257,NULL,2,'Subject for Phone Call','2023-04-03 14:30:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (258,NULL,9,'Subject for Tell a Friend','2023-06-02 21:59:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (259,NULL,22,'Subject for Print/Merge Document','2023-05-27 17:49:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (260,NULL,9,'Subject for Tell a Friend','2022-11-08 12:38:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (261,NULL,9,'Subject for Tell a Friend','2022-10-31 07:07:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (262,NULL,2,'Subject for Phone Call','2023-04-25 04:58:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (263,NULL,22,'Subject for Print/Merge Document','2023-03-03 07:41:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (264,NULL,55,'Subject for Interview','2023-01-11 18:15:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (265,NULL,2,'Subject for Phone Call','2022-08-13 10:28:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (266,NULL,55,'Subject for Interview','2023-03-19 14:38:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (267,NULL,2,'Subject for Phone Call','2023-03-12 23:04:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (268,NULL,1,'Subject for Meeting','2022-07-22 08:51:11',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (269,NULL,55,'Subject for Interview','2022-12-27 10:15:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (270,NULL,22,'Subject for Print/Merge Document','2022-12-16 03:59:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (271,NULL,55,'Subject for Interview','2023-06-07 06:07:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (272,NULL,55,'Subject for Interview','2022-06-20 17:27:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (273,NULL,55,'Subject for Interview','2022-06-13 10:11:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (274,NULL,2,'Subject for Phone Call','2023-03-15 20:36:03',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (275,NULL,55,'Subject for Interview','2022-06-13 10:46:47',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (276,NULL,22,'Subject for Print/Merge Document','2023-04-02 10:46:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (277,NULL,22,'Subject for Print/Merge Document','2022-09-25 07:57:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (278,NULL,2,'Subject for Phone Call','2022-08-11 19:59:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (279,NULL,22,'Subject for Print/Merge Document','2022-08-31 08:01:39',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (280,NULL,2,'Subject for Phone Call','2022-11-11 11:23:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (281,NULL,1,'Subject for Meeting','2023-01-08 13:55:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (282,NULL,22,'Subject for Print/Merge Document','2022-08-16 13:54:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (283,NULL,55,'Subject for Interview','2023-03-07 12:34:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (284,NULL,1,'Subject for Meeting','2022-09-16 08:47:42',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (285,NULL,22,'Subject for Print/Merge Document','2023-04-30 00:40:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (286,NULL,1,'Subject for Meeting','2022-07-31 18:02:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (287,NULL,22,'Subject for Print/Merge Document','2022-07-16 21:23:43',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (288,NULL,9,'Subject for Tell a Friend','2022-07-11 02:46:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (289,NULL,22,'Subject for Print/Merge Document','2023-05-04 16:55:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (290,NULL,2,'Subject for Phone Call','2022-10-23 06:32:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (291,NULL,1,'Subject for Meeting','2022-12-10 01:59:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (292,NULL,2,'Subject for Phone Call','2023-01-12 05:42:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (293,NULL,1,'Subject for Meeting','2023-01-29 23:44:55',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (294,NULL,9,'Subject for Tell a Friend','2023-03-17 07:43:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (295,NULL,22,'Subject for Print/Merge Document','2022-07-23 23:18:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (296,NULL,55,'Subject for Interview','2022-10-05 22:03:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (297,NULL,2,'Subject for Phone Call','2022-12-15 05:51:03',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (298,NULL,55,'Subject for Interview','2022-09-25 03:50:19',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (299,NULL,2,'Subject for Phone Call','2023-01-03 13:22:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (300,NULL,2,'Subject for Phone Call','2022-07-07 01:22:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (301,NULL,55,'Subject for Interview','2022-12-19 10:13:00',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (302,NULL,55,'Subject for Interview','2023-03-15 20:03:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (303,NULL,22,'Subject for Print/Merge Document','2023-03-11 19:11:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (304,NULL,1,'Subject for Meeting','2022-12-12 09:39:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (305,NULL,1,'Subject for Meeting','2023-03-05 08:59:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (306,NULL,55,'Subject for Interview','2022-11-06 12:39:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (307,NULL,55,'Subject for Interview','2023-02-01 18:00:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (308,NULL,22,'Subject for Print/Merge Document','2023-05-04 19:10:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (309,NULL,2,'Subject for Phone Call','2023-04-08 06:46:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (310,NULL,22,'Subject for Print/Merge Document','2022-08-26 02:58:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (311,NULL,9,'Subject for Tell a Friend','2023-02-17 22:22:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (312,NULL,2,'Subject for Phone Call','2022-09-05 10:41:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (313,NULL,55,'Subject for Interview','2023-01-01 07:44:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (314,NULL,22,'Subject for Print/Merge Document','2023-02-09 09:51:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (315,NULL,55,'Subject for Interview','2023-04-12 03:49:24',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (316,NULL,55,'Subject for Interview','2022-12-11 06:41:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (317,NULL,2,'Subject for Phone Call','2022-06-11 23:37:56',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (318,NULL,22,'Subject for Print/Merge Document','2023-05-26 16:23:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (319,NULL,55,'Subject for Interview','2022-11-03 19:24:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (320,NULL,55,'Subject for Interview','2022-07-05 21:27:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (321,NULL,1,'Subject for Meeting','2022-07-30 21:49:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (322,NULL,2,'Subject for Phone Call','2023-01-05 12:37:45',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (323,NULL,2,'Subject for Phone Call','2023-05-12 01:20:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (324,NULL,9,'Subject for Tell a Friend','2022-10-16 13:44:20',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (325,NULL,22,'Subject for Print/Merge Document','2022-07-24 21:30:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (326,NULL,22,'Subject for Print/Merge Document','2022-08-22 05:11:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (327,NULL,9,'Subject for Tell a Friend','2022-09-24 15:20:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (328,NULL,55,'Subject for Interview','2022-12-09 20:47:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (329,NULL,2,'Subject for Phone Call','2022-10-21 21:19:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (330,NULL,1,'Subject for Meeting','2022-08-26 15:23:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (331,NULL,2,'Subject for Phone Call','2023-06-06 06:31:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (332,NULL,9,'Subject for Tell a Friend','2023-01-02 22:12:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (333,NULL,55,'Subject for Interview','2022-10-26 00:18:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (334,NULL,9,'Subject for Tell a Friend','2023-06-01 12:20:13',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (335,NULL,9,'Subject for Tell a Friend','2022-07-04 02:57:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (336,NULL,9,'Subject for Tell a Friend','2023-03-10 03:39:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (337,NULL,9,'Subject for Tell a Friend','2022-07-17 14:33:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (338,NULL,9,'Subject for Tell a Friend','2022-08-04 18:26:16',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (339,NULL,55,'Subject for Interview','2022-12-14 14:48:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (340,NULL,55,'Subject for Interview','2022-06-21 21:26:20',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (341,NULL,2,'Subject for Phone Call','2023-01-25 13:18:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (342,NULL,22,'Subject for Print/Merge Document','2023-04-03 13:14:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (343,NULL,1,'Subject for Meeting','2023-06-06 20:10:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (344,NULL,55,'Subject for Interview','2022-06-30 01:08:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (345,NULL,55,'Subject for Interview','2022-11-10 12:53:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (346,NULL,1,'Subject for Meeting','2023-03-22 13:20:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (347,NULL,9,'Subject for Tell a Friend','2023-05-31 13:45:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (348,NULL,55,'Subject for Interview','2023-05-03 12:07:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (349,NULL,22,'Subject for Print/Merge Document','2023-04-25 05:30:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (350,NULL,9,'Subject for Tell a Friend','2023-01-18 13:27:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (351,NULL,55,'Subject for Interview','2022-06-26 03:15:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (352,NULL,1,'Subject for Meeting','2022-10-20 13:14:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (353,NULL,9,'Subject for Tell a Friend','2022-08-17 11:55:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (354,NULL,2,'Subject for Phone Call','2022-09-03 12:56:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (355,NULL,55,'Subject for Interview','2022-08-31 14:39:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (356,NULL,9,'Subject for Tell a Friend','2022-10-28 03:50:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (357,NULL,9,'Subject for Tell a Friend','2022-10-03 07:08:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (358,NULL,1,'Subject for Meeting','2022-09-15 15:12:14',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (359,NULL,9,'Subject for Tell a Friend','2023-02-02 22:57:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (360,NULL,1,'Subject for Meeting','2022-07-02 12:04:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (361,NULL,22,'Subject for Print/Merge Document','2023-03-19 05:02:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (362,NULL,9,'Subject for Tell a Friend','2023-04-22 05:01:46',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (363,NULL,22,'Subject for Print/Merge Document','2023-02-22 00:34:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (364,NULL,9,'Subject for Tell a Friend','2023-05-05 13:41:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (365,NULL,55,'Subject for Interview','2022-11-17 16:50:15',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (366,NULL,55,'Subject for Interview','2022-12-16 02:45:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (367,NULL,55,'Subject for Interview','2022-07-16 16:45:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (368,NULL,1,'Subject for Meeting','2022-09-13 05:33:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (369,NULL,2,'Subject for Phone Call','2022-10-03 12:06:09',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (370,NULL,22,'Subject for Print/Merge Document','2022-09-29 04:13:26',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (371,NULL,9,'Subject for Tell a Friend','2023-02-28 03:25:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (372,NULL,22,'Subject for Print/Merge Document','2022-12-31 06:22:18',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (373,NULL,2,'Subject for Phone Call','2023-03-18 22:18:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (374,NULL,1,'Subject for Meeting','2023-01-18 22:16:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (375,NULL,9,'Subject for Tell a Friend','2023-01-12 18:43:01',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (376,NULL,55,'Subject for Interview','2022-07-04 20:52:46',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (377,NULL,2,'Subject for Phone Call','2023-04-26 12:19:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (378,NULL,9,'Subject for Tell a Friend','2023-01-26 16:05:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (379,NULL,9,'Subject for Tell a Friend','2022-10-04 16:41:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (380,NULL,1,'Subject for Meeting','2023-01-15 05:21:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (381,NULL,9,'Subject for Tell a Friend','2022-07-16 01:49:50',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (382,NULL,22,'Subject for Print/Merge Document','2022-09-25 23:41:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (383,NULL,9,'Subject for Tell a Friend','2023-01-05 16:19:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (384,NULL,9,'Subject for Tell a Friend','2023-01-02 17:37:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (385,NULL,55,'Subject for Interview','2023-04-12 06:26:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (386,NULL,22,'Subject for Print/Merge Document','2022-06-10 12:09:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (387,NULL,55,'Subject for Interview','2023-01-01 00:36:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (388,NULL,22,'Subject for Print/Merge Document','2023-04-10 07:08:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (389,NULL,1,'Subject for Meeting','2022-06-10 14:02:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (390,NULL,22,'Subject for Print/Merge Document','2022-06-25 03:36:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (391,NULL,55,'Subject for Interview','2023-05-29 14:15:48',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (392,NULL,22,'Subject for Print/Merge Document','2022-09-15 02:35:38',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (393,NULL,9,'Subject for Tell a Friend','2023-05-30 18:45:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (394,NULL,9,'Subject for Tell a Friend','2023-02-18 15:08:49',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (395,NULL,9,'Subject for Tell a Friend','2022-10-05 15:31:17',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (396,NULL,2,'Subject for Phone Call','2022-08-28 02:20:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (397,NULL,9,'Subject for Tell a Friend','2022-09-18 13:27:55',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (398,NULL,9,'Subject for Tell a Friend','2022-06-12 23:44:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (399,NULL,9,'Subject for Tell a Friend','2022-07-29 21:21:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (400,NULL,22,'Subject for Print/Merge Document','2022-09-13 01:05:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (401,NULL,2,'Subject for Phone Call','2022-12-28 04:55:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (402,NULL,22,'Subject for Print/Merge Document','2023-05-04 23:05:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (403,NULL,9,'Subject for Tell a Friend','2023-02-05 01:15:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (404,NULL,22,'Subject for Print/Merge Document','2023-06-04 19:28:30',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (405,NULL,2,'Subject for Phone Call','2023-03-07 02:57:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (406,NULL,22,'Subject for Print/Merge Document','2022-11-09 16:34:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (407,NULL,1,'Subject for Meeting','2023-05-08 10:43:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (408,NULL,2,'Subject for Phone Call','2023-03-03 16:49:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (409,NULL,22,'Subject for Print/Merge Document','2022-07-21 06:03:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (410,NULL,55,'Subject for Interview','2022-12-16 15:11:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (411,NULL,1,'Subject for Meeting','2023-04-21 02:33:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (412,NULL,1,'Subject for Meeting','2023-04-22 18:42:43',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (413,NULL,22,'Subject for Print/Merge Document','2022-07-23 17:54:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (414,NULL,22,'Subject for Print/Merge Document','2023-01-30 07:12:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (415,NULL,55,'Subject for Interview','2023-03-07 10:56:30',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (416,NULL,2,'Subject for Phone Call','2022-10-17 17:59:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (417,NULL,9,'Subject for Tell a Friend','2023-02-22 05:28:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (418,NULL,55,'Subject for Interview','2022-10-03 07:16:13',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (419,NULL,1,'Subject for Meeting','2023-04-08 18:06:54',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (420,NULL,9,'Subject for Tell a Friend','2023-05-28 16:13:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (421,NULL,1,'Subject for Meeting','2023-02-01 15:29:31',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (422,NULL,22,'Subject for Print/Merge Document','2023-03-14 09:39:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (423,NULL,1,'Subject for Meeting','2023-02-02 15:41:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (424,NULL,55,'Subject for Interview','2022-08-15 08:15:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (425,NULL,2,'Subject for Phone Call','2022-12-25 15:14:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (426,NULL,55,'Subject for Interview','2023-01-21 22:33:27',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (427,NULL,22,'Subject for Print/Merge Document','2022-06-15 02:57:57',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (428,NULL,1,'Subject for Meeting','2022-09-10 22:25:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (429,NULL,22,'Subject for Print/Merge Document','2023-03-22 13:58:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (430,NULL,55,'Subject for Interview','2023-02-08 20:36:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (431,NULL,2,'Subject for Phone Call','2023-02-10 23:57:06',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (432,NULL,22,'Subject for Print/Merge Document','2023-04-16 02:01:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (433,NULL,9,'Subject for Tell a Friend','2022-12-08 13:15:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (434,NULL,1,'Subject for Meeting','2023-05-27 09:36:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (435,NULL,9,'Subject for Tell a Friend','2022-09-07 21:25:03',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (436,NULL,9,'Subject for Tell a Friend','2022-08-24 00:06:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (437,NULL,2,'Subject for Phone Call','2022-08-24 18:05:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (438,NULL,9,'Subject for Tell a Friend','2023-01-05 16:25:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (439,NULL,1,'Subject for Meeting','2022-10-23 10:23:10',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (440,NULL,22,'Subject for Print/Merge Document','2023-01-03 00:04:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (441,NULL,55,'Subject for Interview','2023-04-24 08:36:57',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (442,NULL,9,'Subject for Tell a Friend','2023-05-17 01:34:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (443,NULL,2,'Subject for Phone Call','2022-12-27 11:13:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (444,NULL,2,'Subject for Phone Call','2023-01-23 03:15:56',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (445,NULL,55,'Subject for Interview','2022-07-27 00:12:34',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (446,NULL,22,'Subject for Print/Merge Document','2022-10-20 06:24:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (447,NULL,1,'Subject for Meeting','2023-06-02 09:19:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (448,NULL,1,'Subject for Meeting','2023-02-08 08:54:22',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (449,NULL,9,'Subject for Tell a Friend','2022-10-28 08:47:09',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (450,NULL,2,'Subject for Phone Call','2023-04-29 01:56:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (451,1,6,'$ 125 April Mailer 1','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (452,2,6,'$ 50 Online: Save the Penguins','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (453,3,6,'£ 25 April Mailer 1','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (454,4,6,'$ 50 Online: Save the Penguins','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (455,5,6,'$ 50 Online: Save the Penguins','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (456,6,6,'$ 500 April Mailer 1','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (457,7,6,'$ 1750 Online: Save the Penguins','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (458,8,6,'$ 50 Online: Save the Penguins','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (459,9,6,'$ 10 Online: Help CiviCRM','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (460,10,6,'$ 250 Online: Help CiviCRM','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (461,11,6,'Â¥ 500 ','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (462,12,6,'$ 50 Online: Save the Penguins','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (463,13,6,'$ 50 ','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (464,14,6,'$ 50 ','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (465,15,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (466,16,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (467,17,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (468,18,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (469,19,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (470,20,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (471,21,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (472,22,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (473,23,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (474,24,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (475,25,6,'$ 25 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (476,26,6,'$ 10 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (477,27,6,'$ 10 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (478,28,6,'$ 10 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (479,29,6,'$ 10 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (480,30,6,'$ 10 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (481,31,6,'€ 5 Recurring contribution','2023-08-09 14:52:21',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (482,1,7,'General','2023-06-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-06-09 21:52:21','2023-06-09 21:52:21'), - (483,2,7,'Student','2023-06-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-06-09 21:52:21','2023-06-09 21:52:21'), - (484,3,7,'General','2023-06-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-06-09 21:52:21','2023-06-09 21:52:21'), - (485,4,7,'Student','2023-06-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-06-09 21:52:21','2023-06-09 21:52:21'), - (486,5,7,'General','2021-05-08 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (487,6,7,'Student','2023-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-06-09 21:52:21','2023-06-09 21:52:21'), - (488,7,7,'General','2023-06-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-06-09 21:52:21','2023-06-09 21:52:21'), - (489,8,7,'Student','2023-06-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-06-09 21:52:21','2023-06-09 21:52:21'), - (490,9,7,'General','2023-06-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-06-09 21:52:21','2023-06-09 21:52:21'), - (491,10,7,'General','2021-03-29 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (492,11,7,'Lifetime','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (493,12,7,'Student','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (494,13,7,'General','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (495,14,7,'Student','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (496,15,7,'General','2021-02-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-06-09 21:52:21','2023-06-09 21:52:21'), - (497,16,7,'Student','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (498,17,7,'General','2023-05-24 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (499,18,7,'Student','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (500,19,7,'General','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (501,20,7,'Student','2022-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (502,21,7,'General','2023-05-20 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (503,22,7,'Lifetime','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (504,23,7,'General','2023-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-06-09 21:52:21','2023-06-09 21:52:21'), - (505,24,7,'Student','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (506,25,7,'Student','2022-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (507,26,7,'Student','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (508,27,7,'General','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (509,28,7,'Student','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (510,29,7,'General','2023-05-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-06-09 21:52:21','2023-06-09 21:52:21'), - (511,30,7,'General','2020-10-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-06-09 21:52:21','2023-06-09 21:52:21'), - (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (516,36,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (536,56,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (541,61,6,'$ 100.00 - General Membership: Offline signup','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (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-06-09 21:52:21','2023-06-09 21:52:21'), - (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-06-09 14:52:21',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-06-09 21:52:21','2023-06-09 21:52:21'); + (1,NULL,55,'Subject for Interview','2022-08-25 09:35:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (2,NULL,55,'Subject for Interview','2023-07-27 14:52:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (3,NULL,22,'Subject for Print/Merge Document','2022-10-17 23:22:21',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (4,NULL,1,'Subject for Meeting','2023-01-11 16:01:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (5,NULL,2,'Subject for Phone Call','2023-01-25 09:13:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (6,NULL,55,'Subject for Interview','2022-12-23 20:31:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (7,NULL,55,'Subject for Interview','2022-09-15 09:56:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (8,NULL,1,'Subject for Meeting','2022-09-15 09:15:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (9,NULL,22,'Subject for Print/Merge Document','2023-03-16 22:08:25',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (10,NULL,1,'Subject for Meeting','2022-11-19 18:43:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (11,NULL,1,'Subject for Meeting','2023-04-12 23:22:29',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (12,NULL,2,'Subject for Phone Call','2023-02-23 01:13:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (13,NULL,55,'Subject for Interview','2022-08-09 02:30:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (14,NULL,9,'Subject for Tell a Friend','2023-04-25 13:43:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (15,NULL,55,'Subject for Interview','2023-04-19 15:24:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (16,NULL,22,'Subject for Print/Merge Document','2023-02-03 10:55:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (17,NULL,9,'Subject for Tell a Friend','2023-02-17 10:40:28',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (18,NULL,22,'Subject for Print/Merge Document','2023-04-30 22:00:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (19,NULL,22,'Subject for Print/Merge Document','2022-10-05 08:15:17',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (20,NULL,1,'Subject for Meeting','2023-05-21 12:02:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (21,NULL,1,'Subject for Meeting','2023-05-05 16:52:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (22,NULL,1,'Subject for Meeting','2023-01-03 09:12:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (23,NULL,55,'Subject for Interview','2023-08-01 07:08:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (24,NULL,9,'Subject for Tell a Friend','2022-12-10 14:18:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (25,NULL,1,'Subject for Meeting','2023-01-18 10:02:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (26,NULL,2,'Subject for Phone Call','2023-06-14 21:57:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (27,NULL,22,'Subject for Print/Merge Document','2022-11-03 17:23:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (28,NULL,55,'Subject for Interview','2022-09-26 13:27:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (29,NULL,22,'Subject for Print/Merge Document','2023-05-31 00:51:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (30,NULL,2,'Subject for Phone Call','2022-08-23 14:30:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (31,NULL,2,'Subject for Phone Call','2023-06-20 22:33:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (32,NULL,22,'Subject for Print/Merge Document','2022-09-04 05:22:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (33,NULL,55,'Subject for Interview','2022-10-13 23:38:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (34,NULL,9,'Subject for Tell a Friend','2022-12-03 01:29:02',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (35,NULL,2,'Subject for Phone Call','2022-09-17 07:14:46',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (36,NULL,9,'Subject for Tell a Friend','2022-12-17 03:33:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (37,NULL,55,'Subject for Interview','2023-01-31 17:17:32',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (38,NULL,22,'Subject for Print/Merge Document','2022-09-02 03:37:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (39,NULL,22,'Subject for Print/Merge Document','2023-08-02 14:06:31',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (40,NULL,9,'Subject for Tell a Friend','2023-01-20 19:11:57',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (41,NULL,55,'Subject for Interview','2022-09-12 06:43:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (42,NULL,2,'Subject for Phone Call','2023-03-16 02:19:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (43,NULL,2,'Subject for Phone Call','2023-05-16 15:10:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (44,NULL,9,'Subject for Tell a Friend','2023-02-26 23:27:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (45,NULL,2,'Subject for Phone Call','2023-06-17 17:53:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (46,NULL,9,'Subject for Tell a Friend','2023-04-16 13:57:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (47,NULL,9,'Subject for Tell a Friend','2023-04-01 07:12:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (48,NULL,2,'Subject for Phone Call','2023-01-17 20:46:43',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (49,NULL,1,'Subject for Meeting','2022-08-30 12:28:29',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (50,NULL,1,'Subject for Meeting','2023-05-14 18:47:45',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (51,NULL,1,'Subject for Meeting','2023-04-02 18:59:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (52,NULL,55,'Subject for Interview','2023-04-25 17:03:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (53,NULL,22,'Subject for Print/Merge Document','2023-06-14 19:53:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (54,NULL,22,'Subject for Print/Merge Document','2023-05-24 16:51:40',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (55,NULL,22,'Subject for Print/Merge Document','2022-12-20 06:03:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (56,NULL,22,'Subject for Print/Merge Document','2023-02-07 05:04:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (57,NULL,55,'Subject for Interview','2023-01-17 11:39:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (58,NULL,55,'Subject for Interview','2022-10-11 04:55:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (59,NULL,22,'Subject for Print/Merge Document','2023-05-13 15:56:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (60,NULL,9,'Subject for Tell a Friend','2022-12-31 01:41:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (61,NULL,22,'Subject for Print/Merge Document','2023-06-23 20:00:24',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (62,NULL,1,'Subject for Meeting','2023-02-14 11:45:04',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (63,NULL,2,'Subject for Phone Call','2022-12-02 15:11:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (64,NULL,9,'Subject for Tell a Friend','2022-11-07 06:44:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (65,NULL,22,'Subject for Print/Merge Document','2022-09-27 06:31:41',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (66,NULL,22,'Subject for Print/Merge Document','2023-06-07 01:22:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (67,NULL,22,'Subject for Print/Merge Document','2022-08-18 15:57:24',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (68,NULL,9,'Subject for Tell a Friend','2023-02-06 12:34:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (69,NULL,9,'Subject for Tell a Friend','2023-04-15 03:36:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (70,NULL,1,'Subject for Meeting','2023-01-15 19:58:36',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (71,NULL,1,'Subject for Meeting','2023-01-22 23:53:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (72,NULL,55,'Subject for Interview','2022-11-21 11:35:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (73,NULL,22,'Subject for Print/Merge Document','2023-01-05 07:06:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (74,NULL,1,'Subject for Meeting','2023-02-16 12:51:46',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (75,NULL,55,'Subject for Interview','2023-04-02 16:17:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (76,NULL,2,'Subject for Phone Call','2023-07-09 14:32:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (77,NULL,9,'Subject for Tell a Friend','2023-05-10 21:57:58',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (78,NULL,55,'Subject for Interview','2022-09-15 10:59:35',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (79,NULL,2,'Subject for Phone Call','2023-04-25 23:36:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (80,NULL,9,'Subject for Tell a Friend','2022-10-08 11:54:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (81,NULL,1,'Subject for Meeting','2023-06-06 20:11:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (82,NULL,2,'Subject for Phone Call','2023-05-02 17:49:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (83,NULL,9,'Subject for Tell a Friend','2023-01-30 09:51:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (84,NULL,22,'Subject for Print/Merge Document','2022-08-12 08:47:36',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (85,NULL,1,'Subject for Meeting','2023-07-04 17:15:59',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (86,NULL,55,'Subject for Interview','2023-01-22 01:58:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (87,NULL,9,'Subject for Tell a Friend','2023-01-26 06:16:53',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (88,NULL,2,'Subject for Phone Call','2022-12-26 18:13:35',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (89,NULL,2,'Subject for Phone Call','2023-01-08 00:30:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (90,NULL,22,'Subject for Print/Merge Document','2023-03-20 15:47:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (91,NULL,9,'Subject for Tell a Friend','2022-09-13 07:50:03',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (92,NULL,22,'Subject for Print/Merge Document','2023-02-19 07:18:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (93,NULL,9,'Subject for Tell a Friend','2022-08-08 14:59:04',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (94,NULL,22,'Subject for Print/Merge Document','2023-04-21 12:13:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (95,NULL,9,'Subject for Tell a Friend','2022-12-02 01:44:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (96,NULL,9,'Subject for Tell a Friend','2022-08-12 12:10:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:40','2023-08-02 20:53:40'), + (97,NULL,9,'Subject for Tell a Friend','2022-08-23 01:11:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (98,NULL,2,'Subject for Phone Call','2023-03-31 17:28:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (99,NULL,1,'Subject for Meeting','2023-04-09 11:35:16',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (100,NULL,55,'Subject for Interview','2023-01-08 00:30:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (101,NULL,22,'Subject for Print/Merge Document','2022-09-23 02:20:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (102,NULL,22,'Subject for Print/Merge Document','2023-03-28 11:40:53',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (103,NULL,55,'Subject for Interview','2022-08-25 18:28:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (104,NULL,1,'Subject for Meeting','2023-03-15 21:36:33',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (105,NULL,55,'Subject for Interview','2023-01-29 14:23:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (106,NULL,55,'Subject for Interview','2022-09-23 09:57:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (107,NULL,55,'Subject for Interview','2022-12-22 23:04:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (108,NULL,55,'Subject for Interview','2023-01-17 10:53:03',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (109,NULL,9,'Subject for Tell a Friend','2023-05-17 20:56:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (110,NULL,22,'Subject for Print/Merge Document','2022-09-29 20:00:08',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (111,NULL,55,'Subject for Interview','2023-04-18 16:52:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (112,NULL,22,'Subject for Print/Merge Document','2022-10-31 02:57:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (113,NULL,1,'Subject for Meeting','2023-06-22 19:10:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (114,NULL,55,'Subject for Interview','2022-12-09 05:06:12',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (115,NULL,1,'Subject for Meeting','2023-02-24 19:07:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (116,NULL,2,'Subject for Phone Call','2022-08-08 18:46:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (117,NULL,55,'Subject for Interview','2023-02-13 02:13:55',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (118,NULL,9,'Subject for Tell a Friend','2023-04-21 19:58:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (119,NULL,9,'Subject for Tell a Friend','2022-09-13 19:50:19',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (120,NULL,55,'Subject for Interview','2023-01-07 12:47:37',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (121,NULL,22,'Subject for Print/Merge Document','2022-12-16 09:38:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (122,NULL,55,'Subject for Interview','2023-01-21 10:41:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (123,NULL,55,'Subject for Interview','2023-05-17 00:44:02',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (124,NULL,9,'Subject for Tell a Friend','2022-10-26 17:57:00',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (125,NULL,9,'Subject for Tell a Friend','2022-11-29 11:13:34',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (126,NULL,22,'Subject for Print/Merge Document','2022-09-23 08:35:17',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (127,NULL,9,'Subject for Tell a Friend','2023-04-10 14:02:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (128,NULL,9,'Subject for Tell a Friend','2023-06-06 22:12:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (129,NULL,1,'Subject for Meeting','2022-12-31 02:40:44',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (130,NULL,2,'Subject for Phone Call','2023-06-24 17:13:17',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (131,NULL,22,'Subject for Print/Merge Document','2023-06-27 06:26:05',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (132,NULL,9,'Subject for Tell a Friend','2023-08-02 18:26:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (133,NULL,9,'Subject for Tell a Friend','2023-02-18 05:50:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (134,NULL,22,'Subject for Print/Merge Document','2023-05-18 01:01:23',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (135,NULL,22,'Subject for Print/Merge Document','2022-12-27 07:27:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (136,NULL,22,'Subject for Print/Merge Document','2023-04-21 10:47:33',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (137,NULL,9,'Subject for Tell a Friend','2023-04-30 08:37:19',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (138,NULL,1,'Subject for Meeting','2022-10-21 10:26:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (139,NULL,1,'Subject for Meeting','2023-02-03 15:18:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (140,NULL,2,'Subject for Phone Call','2023-02-14 02:30:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (141,NULL,22,'Subject for Print/Merge Document','2022-09-19 01:34:26',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (142,NULL,9,'Subject for Tell a Friend','2022-11-19 22:07:39',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (143,NULL,55,'Subject for Interview','2023-07-10 22:10:06',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (144,NULL,9,'Subject for Tell a Friend','2023-03-18 00:48:29',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (145,NULL,1,'Subject for Meeting','2022-09-21 12:24:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (146,NULL,9,'Subject for Tell a Friend','2022-12-17 01:51:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (147,NULL,22,'Subject for Print/Merge Document','2022-10-19 00:22:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (148,NULL,9,'Subject for Tell a Friend','2023-02-11 01:48:41',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (149,NULL,9,'Subject for Tell a Friend','2023-07-29 20:01:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (150,NULL,2,'Subject for Phone Call','2022-09-30 15:08:26',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (151,NULL,9,'Subject for Tell a Friend','2023-06-30 06:39:42',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (152,NULL,22,'Subject for Print/Merge Document','2022-08-04 10:42:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (153,NULL,1,'Subject for Meeting','2023-06-27 09:21:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (154,NULL,1,'Subject for Meeting','2023-02-25 13:26:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (155,NULL,55,'Subject for Interview','2023-06-24 04:38:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (156,NULL,2,'Subject for Phone Call','2023-07-08 16:44:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (157,NULL,22,'Subject for Print/Merge Document','2023-05-21 14:06:19',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (158,NULL,9,'Subject for Tell a Friend','2023-04-25 17:05:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (159,NULL,2,'Subject for Phone Call','2023-07-21 15:29:22',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (160,NULL,55,'Subject for Interview','2023-07-01 05:47:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (161,NULL,9,'Subject for Tell a Friend','2023-07-13 10:50:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (162,NULL,55,'Subject for Interview','2022-10-12 05:16:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (163,NULL,55,'Subject for Interview','2022-10-10 08:21:08',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (164,NULL,22,'Subject for Print/Merge Document','2023-06-04 00:36:27',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (165,NULL,22,'Subject for Print/Merge Document','2022-09-18 18:14:31',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (166,NULL,2,'Subject for Phone Call','2022-11-17 06:48:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (167,NULL,9,'Subject for Tell a Friend','2023-07-13 15:13:59',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (168,NULL,1,'Subject for Meeting','2022-12-18 11:18:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (169,NULL,2,'Subject for Phone Call','2022-12-07 03:37:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (170,NULL,9,'Subject for Tell a Friend','2022-12-01 02:27:25',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (171,NULL,1,'Subject for Meeting','2022-10-05 04:28:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (172,NULL,55,'Subject for Interview','2022-11-28 04:53:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (173,NULL,1,'Subject for Meeting','2022-12-30 12:08:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (174,NULL,9,'Subject for Tell a Friend','2022-09-17 04:06:03',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (175,NULL,1,'Subject for Meeting','2023-02-25 09:02:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (176,NULL,55,'Subject for Interview','2023-05-16 21:45:53',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (177,NULL,1,'Subject for Meeting','2022-10-15 15:15:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (178,NULL,1,'Subject for Meeting','2022-10-16 06:52:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (179,NULL,22,'Subject for Print/Merge Document','2023-02-24 13:49:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (180,NULL,22,'Subject for Print/Merge Document','2022-10-17 15:13:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (181,NULL,9,'Subject for Tell a Friend','2023-07-24 22:02:58',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (182,NULL,55,'Subject for Interview','2022-12-03 16:37:26',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (183,NULL,22,'Subject for Print/Merge Document','2022-09-15 23:23:44',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (184,NULL,2,'Subject for Phone Call','2023-01-16 21:35:05',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (185,NULL,1,'Subject for Meeting','2023-06-09 02:09:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (186,NULL,1,'Subject for Meeting','2023-04-28 15:26:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (187,NULL,55,'Subject for Interview','2022-10-27 22:53:36',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (188,NULL,55,'Subject for Interview','2023-03-06 16:50:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (189,NULL,1,'Subject for Meeting','2022-12-27 13:10:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (190,NULL,1,'Subject for Meeting','2023-05-19 23:17:15',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (191,NULL,55,'Subject for Interview','2022-10-09 20:25:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (192,NULL,55,'Subject for Interview','2023-04-30 16:35:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (193,NULL,1,'Subject for Meeting','2023-01-13 07:03:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (194,NULL,22,'Subject for Print/Merge Document','2023-06-04 13:28:02',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (195,NULL,9,'Subject for Tell a Friend','2022-10-09 02:10:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (196,NULL,1,'Subject for Meeting','2023-06-20 09:58:50',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (197,NULL,1,'Subject for Meeting','2023-01-03 21:45:43',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (198,NULL,9,'Subject for Tell a Friend','2022-11-20 08:41:01',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (199,NULL,2,'Subject for Phone Call','2023-07-15 11:04:58',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (200,NULL,1,'Subject for Meeting','2023-04-09 12:35:21',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (201,NULL,9,'Subject for Tell a Friend','2023-04-05 03:37:22',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (202,NULL,9,'Subject for Tell a Friend','2022-09-10 20:25:36',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (203,NULL,22,'Subject for Print/Merge Document','2023-01-13 13:24:32',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (204,NULL,55,'Subject for Interview','2022-12-11 10:22:23',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (205,NULL,2,'Subject for Phone Call','2023-02-18 06:20:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (206,NULL,55,'Subject for Interview','2022-10-28 13:57:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (207,NULL,9,'Subject for Tell a Friend','2023-01-05 06:34:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (208,NULL,1,'Subject for Meeting','2023-01-24 14:17:07',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (209,NULL,2,'Subject for Phone Call','2023-04-12 16:59:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (210,NULL,9,'Subject for Tell a Friend','2023-02-20 08:59:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (211,NULL,9,'Subject for Tell a Friend','2023-07-13 20:01:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (212,NULL,1,'Subject for Meeting','2022-09-21 07:33:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (213,NULL,1,'Subject for Meeting','2023-06-25 22:52:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (214,NULL,1,'Subject for Meeting','2023-02-16 13:00:18',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (215,NULL,1,'Subject for Meeting','2022-10-04 12:22:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (216,NULL,2,'Subject for Phone Call','2022-09-24 02:01:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (217,NULL,2,'Subject for Phone Call','2023-05-26 16:23:53',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (218,NULL,9,'Subject for Tell a Friend','2023-03-07 12:06:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (219,NULL,22,'Subject for Print/Merge Document','2023-03-16 00:21:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (220,NULL,1,'Subject for Meeting','2023-07-03 08:14:01',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (221,NULL,55,'Subject for Interview','2023-08-02 07:34:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (222,NULL,2,'Subject for Phone Call','2023-07-09 23:51:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (223,NULL,2,'Subject for Phone Call','2022-11-23 15:09:00',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (224,NULL,55,'Subject for Interview','2022-11-09 22:43:31',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (225,NULL,2,'Subject for Phone Call','2023-06-17 01:10:17',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (226,NULL,1,'Subject for Meeting','2022-08-05 15:46:42',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (227,NULL,22,'Subject for Print/Merge Document','2022-09-09 10:51:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (228,NULL,9,'Subject for Tell a Friend','2022-09-20 11:03:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (229,NULL,22,'Subject for Print/Merge Document','2022-10-12 01:10:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (230,NULL,1,'Subject for Meeting','2022-08-26 03:20:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (231,NULL,1,'Subject for Meeting','2022-08-14 21:07:53',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (232,NULL,22,'Subject for Print/Merge Document','2022-09-20 19:38:22',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (233,NULL,2,'Subject for Phone Call','2022-08-12 02:31:29',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (234,NULL,9,'Subject for Tell a Friend','2022-10-16 03:46:27',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (235,NULL,55,'Subject for Interview','2023-06-04 20:59:23',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (236,NULL,1,'Subject for Meeting','2023-02-11 18:17:11',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (237,NULL,1,'Subject for Meeting','2023-01-12 19:38:18',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (238,NULL,55,'Subject for Interview','2023-07-20 01:43:49',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (239,NULL,22,'Subject for Print/Merge Document','2023-01-25 13:43:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (240,NULL,22,'Subject for Print/Merge Document','2023-01-31 00:01:33',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (241,NULL,22,'Subject for Print/Merge Document','2023-06-30 07:39:08',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (242,NULL,22,'Subject for Print/Merge Document','2022-11-24 01:57:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (243,NULL,9,'Subject for Tell a Friend','2023-01-09 12:14:35',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (244,NULL,9,'Subject for Tell a Friend','2022-08-30 21:35:23',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (245,NULL,1,'Subject for Meeting','2022-12-08 03:24:04',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (246,NULL,2,'Subject for Phone Call','2023-02-11 16:44:23',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (247,NULL,22,'Subject for Print/Merge Document','2022-10-28 00:47:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (248,NULL,2,'Subject for Phone Call','2023-07-17 07:23:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (249,NULL,22,'Subject for Print/Merge Document','2022-10-09 11:13:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (250,NULL,22,'Subject for Print/Merge Document','2022-10-19 00:32:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (251,NULL,9,'Subject for Tell a Friend','2023-04-14 04:00:51',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (252,NULL,22,'Subject for Print/Merge Document','2023-02-27 05:04:29',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (253,NULL,55,'Subject for Interview','2023-06-13 20:35:09',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (254,NULL,22,'Subject for Print/Merge Document','2022-09-01 01:55:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (255,NULL,22,'Subject for Print/Merge Document','2023-01-27 09:31:44',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (256,NULL,2,'Subject for Phone Call','2022-11-27 05:41:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (257,NULL,2,'Subject for Phone Call','2023-07-22 21:16:16',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (258,NULL,1,'Subject for Meeting','2022-10-02 08:13:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (259,NULL,22,'Subject for Print/Merge Document','2023-05-27 09:56:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (260,NULL,22,'Subject for Print/Merge Document','2022-08-16 01:07:54',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (261,NULL,9,'Subject for Tell a Friend','2022-11-20 19:53:01',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (262,NULL,1,'Subject for Meeting','2023-04-09 11:15:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (263,NULL,1,'Subject for Meeting','2022-12-01 05:42:54',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (264,NULL,2,'Subject for Phone Call','2023-02-27 17:33:12',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (265,NULL,9,'Subject for Tell a Friend','2022-08-09 16:55:05',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (266,NULL,1,'Subject for Meeting','2023-05-13 12:13:12',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (267,NULL,1,'Subject for Meeting','2022-08-24 07:12:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (268,NULL,55,'Subject for Interview','2022-08-19 04:57:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (269,NULL,2,'Subject for Phone Call','2023-02-11 12:19:45',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (270,NULL,2,'Subject for Phone Call','2023-07-07 11:18:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (271,NULL,9,'Subject for Tell a Friend','2022-12-08 07:27:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (272,NULL,2,'Subject for Phone Call','2023-07-14 22:13:51',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (273,NULL,2,'Subject for Phone Call','2023-02-05 15:34:28',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (274,NULL,2,'Subject for Phone Call','2022-12-29 22:48:21',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (275,NULL,22,'Subject for Print/Merge Document','2022-12-29 19:35:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (276,NULL,1,'Subject for Meeting','2023-01-10 12:33:51',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (277,NULL,1,'Subject for Meeting','2022-11-05 18:59:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (278,NULL,22,'Subject for Print/Merge Document','2022-10-04 08:40:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (279,NULL,2,'Subject for Phone Call','2022-12-19 05:06:28',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (280,NULL,1,'Subject for Meeting','2023-05-06 05:55:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (281,NULL,9,'Subject for Tell a Friend','2022-11-26 23:00:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (282,NULL,2,'Subject for Phone Call','2023-06-17 03:38:55',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (283,NULL,1,'Subject for Meeting','2023-02-01 05:12:00',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (284,NULL,55,'Subject for Interview','2022-08-23 08:41:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (285,NULL,1,'Subject for Meeting','2022-10-06 12:02:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (286,NULL,9,'Subject for Tell a Friend','2022-08-29 01:08:08',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (287,NULL,1,'Subject for Meeting','2022-12-27 12:17:13',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (288,NULL,55,'Subject for Interview','2023-06-25 05:58:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:41','2023-08-02 20:53:41'), + (289,NULL,2,'Subject for Phone Call','2023-06-07 22:07:05',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (290,NULL,1,'Subject for Meeting','2023-04-01 14:16:59',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (291,NULL,55,'Subject for Interview','2022-09-23 06:54:34',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (292,NULL,2,'Subject for Phone Call','2023-02-08 10:49:00',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (293,NULL,55,'Subject for Interview','2023-03-15 15:19:54',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (294,NULL,55,'Subject for Interview','2022-12-02 16:23:00',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (295,NULL,2,'Subject for Phone Call','2022-11-15 19:06:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (296,NULL,55,'Subject for Interview','2023-05-28 15:59:30',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (297,NULL,55,'Subject for Interview','2023-02-08 08:32:07',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (298,NULL,2,'Subject for Phone Call','2022-11-05 16:27:50',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (299,NULL,22,'Subject for Print/Merge Document','2023-06-26 15:50:14',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (300,NULL,1,'Subject for Meeting','2022-10-19 13:22:52',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (301,NULL,9,'Subject for Tell a Friend','2022-08-26 22:12:19',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (302,NULL,2,'Subject for Phone Call','2022-10-09 17:58:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (303,NULL,1,'Subject for Meeting','2023-02-22 15:44:48',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (304,NULL,55,'Subject for Interview','2022-10-15 19:54:42',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (305,NULL,22,'Subject for Print/Merge Document','2023-04-24 03:19:41',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (306,NULL,55,'Subject for Interview','2022-11-06 14:21:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (307,NULL,22,'Subject for Print/Merge Document','2022-11-27 02:43:57',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (308,NULL,55,'Subject for Interview','2023-03-02 19:37:37',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (309,NULL,22,'Subject for Print/Merge Document','2023-03-20 17:48:52',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (310,NULL,2,'Subject for Phone Call','2022-11-25 04:42:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (311,NULL,22,'Subject for Print/Merge Document','2023-04-17 05:33:35',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (312,NULL,9,'Subject for Tell a Friend','2023-02-22 15:40:36',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (313,NULL,22,'Subject for Print/Merge Document','2023-02-19 14:33:16',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (314,NULL,9,'Subject for Tell a Friend','2023-04-16 16:15:49',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (315,NULL,1,'Subject for Meeting','2022-10-07 03:44:47',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (316,NULL,2,'Subject for Phone Call','2022-09-11 05:38:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (317,NULL,2,'Subject for Phone Call','2023-03-27 03:49:28',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (318,NULL,22,'Subject for Print/Merge Document','2023-07-29 19:49:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (319,NULL,55,'Subject for Interview','2023-06-02 10:17:38',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (320,NULL,22,'Subject for Print/Merge Document','2022-11-14 23:03:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (321,NULL,55,'Subject for Interview','2022-09-13 14:35:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (322,NULL,22,'Subject for Print/Merge Document','2022-11-14 05:27:30',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (323,NULL,1,'Subject for Meeting','2022-09-11 19:24:33',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (324,NULL,22,'Subject for Print/Merge Document','2023-07-16 15:42:21',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (325,NULL,22,'Subject for Print/Merge Document','2023-04-12 13:34:01',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (326,NULL,2,'Subject for Phone Call','2023-03-05 12:00:10',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (327,NULL,2,'Subject for Phone Call','2023-04-17 06:19:07',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (328,NULL,22,'Subject for Print/Merge Document','2022-10-10 04:49:24',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (329,NULL,2,'Subject for Phone Call','2022-08-24 03:05:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (330,NULL,1,'Subject for Meeting','2022-12-29 12:39:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (331,NULL,55,'Subject for Interview','2023-03-24 19:42:59',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (332,NULL,22,'Subject for Print/Merge Document','2023-05-22 07:39:56',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (333,NULL,9,'Subject for Tell a Friend','2022-12-12 02:38:04',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (334,NULL,22,'Subject for Print/Merge Document','2022-11-11 21:52:34',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (335,NULL,2,'Subject for Phone Call','2023-07-03 17:45:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (336,NULL,1,'Subject for Meeting','2023-03-13 22:57:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (337,NULL,2,'Subject for Phone Call','2023-01-19 00:51:07',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (338,NULL,55,'Subject for Interview','2022-12-15 04:28:25',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (339,NULL,1,'Subject for Meeting','2023-02-04 21:11:37',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (340,NULL,9,'Subject for Tell a Friend','2022-08-30 00:23:51',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (341,NULL,1,'Subject for Meeting','2022-11-30 20:03:41',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (342,NULL,9,'Subject for Tell a Friend','2023-02-18 20:58:09',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (343,NULL,2,'Subject for Phone Call','2023-06-20 12:27:14',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (344,NULL,1,'Subject for Meeting','2022-12-10 21:45:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (345,NULL,9,'Subject for Tell a Friend','2023-07-26 16:58:22',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (346,NULL,9,'Subject for Tell a Friend','2022-09-14 05:44:50',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (347,NULL,55,'Subject for Interview','2023-02-02 16:51:49',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (348,NULL,22,'Subject for Print/Merge Document','2023-01-29 16:03:29',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (349,NULL,55,'Subject for Interview','2023-03-01 06:00:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (350,NULL,55,'Subject for Interview','2022-08-28 03:13:25',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (351,NULL,22,'Subject for Print/Merge Document','2023-03-27 01:52:13',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (352,NULL,2,'Subject for Phone Call','2023-07-28 23:57:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (353,NULL,55,'Subject for Interview','2022-08-29 17:19:32',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (354,NULL,1,'Subject for Meeting','2022-10-09 17:22:08',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (355,NULL,2,'Subject for Phone Call','2022-11-10 07:04:08',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (356,NULL,55,'Subject for Interview','2022-11-20 02:21:05',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (357,NULL,9,'Subject for Tell a Friend','2022-09-25 13:36:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (358,NULL,22,'Subject for Print/Merge Document','2022-10-15 08:22:56',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (359,NULL,1,'Subject for Meeting','2022-08-07 12:52:02',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (360,NULL,22,'Subject for Print/Merge Document','2023-05-01 18:58:09',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (361,NULL,2,'Subject for Phone Call','2023-01-17 16:56:40',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (362,NULL,9,'Subject for Tell a Friend','2022-10-11 05:09:46',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (363,NULL,22,'Subject for Print/Merge Document','2022-12-11 23:39:37',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (364,NULL,9,'Subject for Tell a Friend','2022-12-10 21:55:52',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (365,NULL,22,'Subject for Print/Merge Document','2023-07-22 18:22:33',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (366,NULL,1,'Subject for Meeting','2022-08-14 01:39:39',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (367,NULL,1,'Subject for Meeting','2022-12-20 08:59:35',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (368,NULL,2,'Subject for Phone Call','2023-06-10 09:25:23',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (369,NULL,2,'Subject for Phone Call','2023-07-31 21:13:01',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (370,NULL,1,'Subject for Meeting','2022-08-05 22:01:25',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (371,NULL,2,'Subject for Phone Call','2023-03-01 14:20:43',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (372,NULL,55,'Subject for Interview','2023-06-24 17:34:38',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (373,NULL,55,'Subject for Interview','2022-11-01 21:16:14',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (374,NULL,22,'Subject for Print/Merge Document','2023-01-18 07:53:55',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (375,NULL,55,'Subject for Interview','2022-10-31 18:22:02',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (376,NULL,1,'Subject for Meeting','2023-04-29 00:00:44',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (377,NULL,55,'Subject for Interview','2023-05-23 22:13:28',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (378,NULL,22,'Subject for Print/Merge Document','2022-12-25 07:01:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (379,NULL,1,'Subject for Meeting','2023-01-20 20:48:54',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (380,NULL,1,'Subject for Meeting','2022-11-19 22:01:11',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (381,NULL,22,'Subject for Print/Merge Document','2023-04-15 11:56:39',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (382,NULL,1,'Subject for Meeting','2022-12-31 00:47:11',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (383,NULL,55,'Subject for Interview','2023-05-20 05:18:27',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (384,NULL,55,'Subject for Interview','2023-07-20 20:37:31',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (385,NULL,22,'Subject for Print/Merge Document','2023-06-22 14:26:13',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (386,NULL,2,'Subject for Phone Call','2023-04-19 10:36:20',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (387,NULL,22,'Subject for Print/Merge Document','2023-05-30 11:03:10',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (388,NULL,1,'Subject for Meeting','2022-08-26 22:11:44',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (389,NULL,55,'Subject for Interview','2022-12-23 15:33:15',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (390,NULL,22,'Subject for Print/Merge Document','2023-02-21 01:13:50',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (391,NULL,22,'Subject for Print/Merge Document','2022-09-17 10:23:06',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (392,NULL,1,'Subject for Meeting','2023-07-11 04:21:56',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (393,NULL,1,'Subject for Meeting','2022-08-11 01:10:46',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (394,NULL,9,'Subject for Tell a Friend','2022-08-11 06:57:33',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (395,NULL,2,'Subject for Phone Call','2023-06-10 06:48:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (396,NULL,2,'Subject for Phone Call','2023-04-29 12:52:47',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (397,NULL,22,'Subject for Print/Merge Document','2022-10-29 02:40:52',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (398,NULL,9,'Subject for Tell a Friend','2023-03-15 09:45:39',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (399,NULL,55,'Subject for Interview','2022-10-07 21:32:10',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (400,NULL,22,'Subject for Print/Merge Document','2023-06-11 12:49:37',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (401,NULL,9,'Subject for Tell a Friend','2023-07-18 02:19:26',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (402,NULL,55,'Subject for Interview','2023-05-02 06:38:59',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (403,NULL,22,'Subject for Print/Merge Document','2023-03-24 09:02:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (404,NULL,22,'Subject for Print/Merge Document','2022-12-16 06:50:40',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (405,NULL,55,'Subject for Interview','2022-10-12 12:56:53',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (406,NULL,22,'Subject for Print/Merge Document','2023-07-16 10:33:57',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (407,NULL,2,'Subject for Phone Call','2022-12-08 06:36:25',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (408,NULL,22,'Subject for Print/Merge Document','2023-06-08 06:38:15',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (409,NULL,22,'Subject for Print/Merge Document','2023-06-13 19:06:55',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (410,NULL,22,'Subject for Print/Merge Document','2023-02-18 20:48:27',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (411,NULL,55,'Subject for Interview','2023-07-22 07:08:02',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (412,NULL,22,'Subject for Print/Merge Document','2022-10-25 01:05:14',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (413,NULL,22,'Subject for Print/Merge Document','2023-03-17 07:53:13',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (414,NULL,9,'Subject for Tell a Friend','2023-03-10 12:45:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (415,NULL,2,'Subject for Phone Call','2023-08-02 00:56:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (416,NULL,55,'Subject for Interview','2022-10-23 09:33:48',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (417,NULL,9,'Subject for Tell a Friend','2022-11-22 14:19:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (418,NULL,2,'Subject for Phone Call','2023-06-14 06:49:06',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (419,NULL,55,'Subject for Interview','2023-04-15 18:07:24',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (420,NULL,9,'Subject for Tell a Friend','2023-07-10 22:59:32',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (421,NULL,1,'Subject for Meeting','2022-11-11 02:20:10',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (422,NULL,55,'Subject for Interview','2023-01-02 12:22:54',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (423,NULL,55,'Subject for Interview','2022-11-28 14:59:40',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (424,NULL,22,'Subject for Print/Merge Document','2022-12-28 00:07:47',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (425,NULL,2,'Subject for Phone Call','2023-06-26 07:17:18',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (426,NULL,55,'Subject for Interview','2023-01-03 07:02:21',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (427,NULL,2,'Subject for Phone Call','2023-07-10 11:34:21',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (428,NULL,55,'Subject for Interview','2023-02-12 08:57:15',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (429,NULL,1,'Subject for Meeting','2022-09-06 15:35:31',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (430,NULL,22,'Subject for Print/Merge Document','2023-06-13 10:32:18',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (431,NULL,22,'Subject for Print/Merge Document','2023-02-11 02:48:27',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (432,NULL,9,'Subject for Tell a Friend','2022-09-27 23:12:48',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (433,NULL,9,'Subject for Tell a Friend','2023-03-14 04:54:50',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (434,NULL,2,'Subject for Phone Call','2022-12-26 14:11:22',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (435,NULL,55,'Subject for Interview','2023-04-02 19:04:30',6,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (436,NULL,9,'Subject for Tell a Friend','2022-10-25 05:28:35',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (437,NULL,55,'Subject for Interview','2022-12-14 08:55:41',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (438,NULL,55,'Subject for Interview','2022-09-02 04:54:47',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (439,NULL,22,'Subject for Print/Merge Document','2023-07-21 11:47:40',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (440,NULL,2,'Subject for Phone Call','2022-09-27 01:52:05',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (441,NULL,2,'Subject for Phone Call','2023-06-04 08:34:34',3,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (442,NULL,9,'Subject for Tell a Friend','2022-08-31 12:47:58',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (443,NULL,1,'Subject for Meeting','2022-08-03 17:54:38',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (444,NULL,1,'Subject for Meeting','2022-12-24 07:12:16',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (445,NULL,55,'Subject for Interview','2023-01-15 08:15:52',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (446,NULL,9,'Subject for Tell a Friend','2022-10-14 12:03:51',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (447,NULL,22,'Subject for Print/Merge Document','2022-12-25 21:30:59',2,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (448,NULL,9,'Subject for Tell a Friend','2023-01-31 22:37:41',1,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (449,NULL,1,'Subject for Meeting','2023-06-26 21:51:36',5,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (450,NULL,2,'Subject for Phone Call','2023-04-18 12:23:12',4,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (451,1,6,'$ 125 April Mailer 1','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (452,2,6,'$ 50 Online: Save the Penguins','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (453,3,6,'£ 25 April Mailer 1','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (454,4,6,'$ 50 Online: Save the Penguins','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (455,5,6,'$ 50 Online: Save the Penguins','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (456,6,6,'$ 500 April Mailer 1','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (457,7,6,'$ 1750 Online: Save the Penguins','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (458,8,6,'$ 50 Online: Save the Penguins','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (459,9,6,'$ 10 Online: Help CiviCRM','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (460,10,6,'$ 250 Online: Help CiviCRM','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (461,11,6,'Â¥ 500 ','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (462,12,6,'$ 50 Online: Save the Penguins','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (463,13,6,'$ 50 ','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (464,14,6,'$ 50 ','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (465,15,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (466,16,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (467,17,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (468,18,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (469,19,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (470,20,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (471,21,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (472,22,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:42','2023-08-02 20:53:42'), + (473,23,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (474,24,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (475,25,6,'$ 25 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (476,26,6,'$ 10 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (477,27,6,'$ 10 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (478,28,6,'$ 10 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (479,29,6,'$ 10 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (480,30,6,'$ 10 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (481,31,6,'€ 5 Recurring contribution','2023-10-02 20:53:42',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (482,1,7,'General','2023-08-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-08-02 20:53:43','2023-08-02 20:53:43'), + (483,2,7,'Student','2023-08-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-08-02 20:53:43','2023-08-02 20:53:43'), + (484,3,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (485,4,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (486,5,7,'Student','2022-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (487,6,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (488,7,7,'General','2023-07-27 00:00:00',NULL,NULL,NULL,NULL,NULL,2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (489,8,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (490,9,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (491,10,7,'General','2021-05-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-08-02 20:53:43','2023-08-02 20:53:43'), + (492,11,7,'Lifetime','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (493,12,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (494,13,7,'General','2023-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-08-02 20:53:43','2023-08-02 20:53:43'), + (495,14,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (496,15,7,'General','2021-04-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-08-02 20:53:43','2023-08-02 20:53:43'), + (497,16,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (498,17,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (499,18,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (500,19,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (501,20,7,'Student','2022-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (502,21,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (503,22,7,'Lifetime','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (504,23,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (505,24,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (506,25,7,'General','2021-01-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-08-02 20:53:43','2023-08-02 20:53:43'), + (507,26,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (508,27,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (509,28,7,'Student','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (510,29,7,'General','2023-07-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-08-02 20:53:43','2023-08-02 20:53:43'), + (511,30,7,'General','2020-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-08-02 20:53:43','2023-08-02 20:53:43'), + (512,32,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (513,33,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (514,34,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (515,35,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (516,36,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (517,37,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (518,38,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (519,39,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (520,40,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (521,41,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (522,42,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (523,43,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (524,44,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (525,45,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (526,46,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (527,47,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (528,48,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (529,49,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (530,50,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (531,51,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (532,52,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (533,53,6,'$ 1200.00 - Lifetime Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (534,54,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (535,55,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (536,56,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (537,57,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (538,58,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (539,59,6,'$ 50.00 - Student Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (540,60,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (541,61,6,'$ 100.00 - General Membership: Offline signup','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Membership Payment',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (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-08-02 20:53:43','2023-08-02 20:53:43'), + (593,63,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (594,64,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (595,65,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (596,66,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (597,67,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (598,68,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (599,69,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (600,70,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (601,71,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (602,72,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (603,73,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (604,74,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (605,75,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (606,76,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (607,77,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (608,78,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (609,79,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (610,80,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (611,81,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (612,82,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (613,83,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (614,84,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (615,85,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (616,86,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (617,87,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (618,88,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (619,89,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (620,90,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (621,91,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (622,92,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (623,93,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (624,94,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (625,95,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (626,96,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (627,97,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (628,98,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (629,99,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (630,100,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (631,101,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (632,102,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (633,103,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (634,104,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (635,105,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (636,106,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (637,107,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (638,108,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (639,109,6,'$ 50.00 - Fall Fundraiser Dinner : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (640,110,6,'$ 50.00 - Summer Solstice Festival Day Concert : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (641,111,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'), + (642,112,6,'$ 800.00 - Rain-forest Cup Youth Soccer Tournament : Offline registration','2023-08-02 20:53:43',NULL,NULL,NULL,NULL,'Participant',2,NULL,NULL,0,NULL,0,NULL,1,NULL,NULL,0,NULL,NULL,NULL,0,'2023-08-02 20:53:43','2023-08-02 20:53:43'); /*!40000 ALTER TABLE `civicrm_activity` ENABLE KEYS */; UNLOCK TABLES; @@ -813,952 +733,942 @@ 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 - (22,12,1,3), - (53,28,1,3), - (86,46,1,3), - (216,119,1,3), - (244,134,1,3), - (422,235,1,3), - (622,347,1,3), - (943,588,1,2), - (637,355,2,3), - (650,362,2,3), - (806,451,2,2), - (278,153,3,3), - (585,328,3,3), - (28,15,4,3), - (103,55,4,3), - (323,178,4,3), - (593,332,4,3), - (807,452,4,2), - (810,455,4,2), - (133,72,5,3), - (543,304,5,3), - (218,120,6,3), - (429,239,6,3), - (701,391,6,3), - (808,453,6,2), - (70,37,7,3), - (222,122,7,3), - (494,275,7,3), - (756,423,7,3), - (907,552,7,2), - (389,218,8,3), - (401,224,8,3), - (555,311,8,3), - (669,373,8,3), - (809,454,8,2), - (34,18,9,3), - (190,104,9,3), - (268,148,10,3), - (492,274,10,3), - (2,1,11,3), - (38,20,11,3), - (57,30,11,3), - (131,71,11,3), - (180,98,11,3), - (206,113,11,3), - (387,217,11,3), - (481,268,11,3), - (643,358,11,3), - (716,399,11,3), - (8,4,13,3), - (117,63,13,3), - (285,157,13,3), - (325,179,13,3), - (859,504,13,2), - (867,534,13,2), - (11,6,14,3), - (17,9,14,3), - (540,302,14,3), - (760,425,14,3), - (236,129,15,3), - (445,248,15,3), - (523,293,15,3), - (549,307,15,3), - (599,335,15,3), - (629,351,15,3), - (850,495,15,2), - (868,525,15,2), - (224,123,16,3), - (447,249,16,3), - (811,456,16,2), - (73,39,18,3), - (272,150,18,3), - (841,486,18,2), - (869,516,18,2), - (234,128,19,3), - (775,434,19,3), - (812,457,19,2), - (88,47,20,3), - (407,227,20,3), - (230,126,22,3), - (296,163,22,3), - (413,230,22,3), - (204,112,23,3), - (376,211,23,3), - (591,331,23,3), - (781,437,23,3), - (853,498,23,2), - (870,528,23,2), - (13,7,24,3), - (126,68,24,3), - (290,160,24,3), - (420,234,24,3), - (538,301,24,3), - (589,330,24,3), - (620,346,24,3), - (645,359,24,3), - (728,407,24,3), - (910,555,24,2), - (335,185,25,3), - (552,309,25,3), - (937,582,25,2), - (439,245,26,3), - (459,256,26,3), - (519,291,26,3), - (708,395,26,3), - (90,48,27,3), - (263,145,27,3), - (280,154,27,3), - (521,292,27,3), - (842,487,27,2), - (871,517,27,2), - (6,3,28,3), - (156,85,28,3), - (409,228,28,3), - (930,575,28,2), - (844,489,29,2), - (872,519,29,2), - (26,14,30,3), - (82,44,30,3), - (169,92,30,3), - (355,197,30,3), - (673,375,30,3), - (765,428,30,3), - (855,500,30,2), - (873,530,30,2), - (924,569,30,2), - (714,398,31,3), - (30,16,32,3), - (63,33,32,3), - (158,86,32,3), - (251,138,32,3), - (283,156,32,3), - (785,439,32,3), - (818,463,32,2), - (819,464,32,2), - (904,549,32,2), - (194,106,33,3), - (338,187,33,3), - (530,297,33,3), - (698,389,33,3), - (266,147,34,3), - (343,190,34,3), - (627,350,34,3), - (749,419,34,3), - (815,460,34,2), - (938,583,34,2), - (80,43,35,3), - (171,93,35,3), - (661,368,35,3), - (261,144,36,3), - (310,171,36,3), - (466,260,36,3), - (147,80,37,3), - (259,143,37,3), - (455,254,37,3), - (653,364,37,3), - (695,387,37,3), - (403,225,38,3), - (405,226,38,3), - (452,252,38,3), - (517,290,38,3), - (633,353,38,3), - (51,27,39,3), - (208,114,39,3), - (357,198,39,3), - (470,262,39,3), - (559,313,39,3), - (704,393,39,3), - (751,420,39,3), - (300,165,40,3), - (374,210,40,3), - (411,229,40,3), - (579,324,40,3), - (595,333,40,3), - (788,441,40,3), - (4,2,41,3), - (149,81,41,3), - (288,159,41,3), - (391,219,41,3), - (631,352,41,3), - (138,75,42,3), - (351,195,42,3), - (501,280,42,3), - (534,299,42,3), - (84,45,43,3), - (341,189,43,3), - (366,204,43,3), - (477,266,43,3), - (587,329,43,3), - (609,340,43,3), - (685,381,43,3), - (817,462,43,2), - (220,121,44,3), - (679,378,44,3), - (719,401,44,3), - (36,19,45,3), - (483,269,45,3), - (737,412,45,3), - (160,87,46,3), - (359,199,46,3), - (681,379,46,3), - (801,448,46,3), - (908,553,46,2), - (511,286,47,3), - (753,421,47,3), - (536,300,48,3), - (49,26,49,3), - (101,54,49,3), - (303,167,49,3), - (475,265,49,3), - (498,278,49,3), - (794,444,49,3), - (940,585,50,2), - (96,51,51,3), - (226,124,51,3), - (228,125,51,3), - (688,383,51,3), - (730,408,51,3), - (768,430,51,3), - (111,60,52,3), - (152,83,52,3), - (741,415,52,3), - (920,565,52,2), - (42,22,53,3), - (528,296,53,3), - (557,312,53,3), - (796,445,53,3), - (846,491,53,2), - (874,521,53,2), - (710,396,54,3), - (20,11,55,3), - (253,139,55,3), - (364,203,55,3), - (657,366,55,3), - (933,578,55,2), - (514,288,56,3), - (611,341,56,3), - (677,377,56,3), - (865,510,56,2), - (875,540,56,2), - (605,338,57,3), - (671,374,57,3), - (927,572,57,2), - (167,91,58,3), - (276,152,58,3), - (799,447,58,3), - (317,175,59,3), - (353,196,59,3), - (431,240,59,3), - (745,417,59,3), - (820,465,59,2), - (821,466,59,2), - (822,467,59,2), - (823,468,59,2), - (824,469,59,2), - (825,470,59,2), - (826,471,59,2), - (827,472,59,2), - (828,473,59,2), - (829,474,59,2), - (830,475,59,2), - (192,105,60,3), - (601,336,60,3), - (783,438,60,3), - (917,562,60,2), - (196,107,61,3), - (692,385,61,3), - (747,418,61,3), - (790,442,61,3), - (15,8,62,3), - (242,133,62,3), - (399,223,62,3), - (449,250,62,3), - (663,369,62,3), - (843,488,62,2), - (876,518,62,2), - (547,306,63,3), - (773,433,63,3), - (861,506,63,2), - (877,536,63,2), - (597,334,64,3), - (675,376,64,3), - (115,62,65,3), - (188,103,65,3), - (503,281,65,3), - (618,345,65,3), - (624,348,65,3), - (397,222,66,3), - (463,258,66,3), - (473,264,66,3), - (639,356,66,3), - (733,410,66,3), - (292,161,67,3), - (425,237,67,3), - (468,261,67,3), - (683,380,67,3), - (725,405,67,3), - (913,558,67,2), - (607,339,68,3), - (270,149,69,3), - (417,232,69,3), - (803,449,69,3), - (856,501,69,2), - (878,531,69,2), - (32,17,70,3), - (119,64,70,3), - (851,496,70,2), - (879,526,70,2), - (94,50,71,3), - (240,132,71,3), - (690,384,71,3), - (816,461,71,2), - (931,576,71,2), - (178,97,72,3), - (332,183,72,3), - (379,213,72,3), - (479,267,72,3), - (706,394,72,3), - (935,580,72,2), - (55,29,73,3), - (306,169,73,3), - (488,272,73,3), - (911,556,73,2), - (47,25,74,3), - (174,95,74,3), - (349,194,74,3), - (866,511,74,2), - (880,541,74,2), - (40,21,75,3), - (99,53,75,3), - (393,220,75,3), - (443,247,75,3), - (945,590,75,2), - (202,111,76,3), - (427,238,76,3), - (437,244,76,3), - (712,397,76,3), - (395,221,77,3), - (603,337,77,3), - (129,70,78,3), - (135,73,78,3), - (433,241,78,3), - (441,246,78,3), - (457,255,78,3), - (735,411,78,3), - (490,273,80,3), - (532,298,80,3), - (312,172,81,3), - (321,177,81,3), - (461,257,81,3), - (545,305,81,3), - (659,367,81,3), - (143,78,82,3), - (248,136,82,3), - (569,319,82,3), - (722,403,82,3), - (813,458,82,2), - (44,23,83,3), - (78,42,83,3), - (232,127,83,3), - (845,490,83,2), - (881,520,83,2), - (903,548,83,2), - (107,58,84,3), - (121,65,84,3), - (162,88,84,3), - (566,317,84,3), - (905,550,84,2), - (61,32,85,3), - (314,173,85,3), - (635,354,85,3), - (59,31,86,3), - (211,116,86,3), - (294,162,86,3), - (370,207,86,3), - (415,231,86,3), - (792,443,86,3), - (805,450,86,3), - (921,566,86,2), - (76,41,87,3), - (176,96,87,3), - (185,101,87,3), - (583,327,87,3), - (65,34,88,3), - (256,141,88,3), - (330,182,88,3), - (486,271,88,3), - (655,365,88,3), - (758,424,88,3), - (92,49,89,3), - (113,61,89,3), - (942,587,89,2), - (182,99,90,3), - (200,110,90,3), - (571,320,90,3), - (743,416,90,3), - (863,508,90,2), - (882,538,90,2), - (925,570,90,2), - (124,67,91,3), - (564,316,91,3), - (165,90,92,3), - (298,164,92,3), - (319,176,92,3), - (385,216,92,3), - (814,459,92,2), - (68,36,93,3), - (145,79,93,3), - (328,181,93,3), - (346,192,93,3), - (641,357,93,3), - (647,360,93,3), - (923,568,93,2), - (274,151,94,3), - (525,294,94,3), - (666,371,94,3), - (770,431,94,3), - (837,482,94,2), - (883,512,94,2), - (154,84,95,3), - (24,13,96,3), - (109,59,96,3), - (213,117,96,3), - (383,215,96,3), - (573,321,96,3), - (916,561,96,2), - (308,170,97,3), - (141,77,98,3), - (562,315,98,3), - (575,322,98,3), - (506,283,99,3), - (831,476,99,2), - (832,477,99,2), - (833,478,99,2), - (834,479,99,2), - (835,480,99,2), - (899,544,99,2), - (381,214,100,3), - (508,284,100,3), - (614,343,100,3), - (616,344,100,3), - (779,436,100,3), - (246,135,101,3), - (577,323,101,3), - (762,426,101,3), - (777,435,101,3), - (836,481,103,2), - (840,485,103,2), - (884,515,103,2), - (944,589,110,2), - (847,492,113,2), - (885,522,113,2), - (901,546,114,2), - (929,574,115,2), - (919,564,127,2), - (928,573,132,2), - (839,484,133,2), - (886,514,133,2), - (932,577,136,2), - (934,579,137,2), - (918,563,142,2), - (909,554,144,2), - (838,483,145,2), - (887,513,145,2), - (936,581,148,2), - (898,543,149,2), - (1,1,153,2), - (3,2,153,2), - (5,3,153,2), - (7,4,153,2), - (9,5,153,2), - (10,6,153,2), - (12,7,153,2), - (14,8,153,2), - (16,9,153,2), - (18,10,153,2), - (19,11,153,2), - (21,12,153,2), - (23,13,153,2), - (25,14,153,2), - (27,15,153,2), - (29,16,153,2), - (31,17,153,2), - (33,18,153,2), - (35,19,153,2), - (37,20,153,2), - (39,21,153,2), - (41,22,153,2), - (43,23,153,2), - (45,24,153,2), - (46,25,153,2), - (48,26,153,2), - (50,27,153,2), - (52,28,153,2), - (54,29,153,2), - (56,30,153,2), - (58,31,153,2), - (60,32,153,2), - (62,33,153,2), - (64,34,153,2), - (66,35,153,2), - (67,36,153,2), - (69,37,153,2), - (71,38,153,2), - (72,39,153,2), - (74,40,153,2), - (75,41,153,2), - (77,42,153,2), - (79,43,153,2), - (81,44,153,2), - (83,45,153,2), - (85,46,153,2), - (87,47,153,2), - (89,48,153,2), - (91,49,153,2), - (93,50,153,2), - (95,51,153,2), - (97,52,153,2), - (98,53,153,2), - (100,54,153,2), - (102,55,153,2), - (104,56,153,2), - (105,57,153,2), - (106,58,153,2), - (108,59,153,2), - (110,60,153,2), - (112,61,153,2), - (114,62,153,2), - (116,63,153,2), - (118,64,153,2), - (120,65,153,2), - (122,66,153,2), - (123,67,153,2), - (125,68,153,2), - (127,69,153,2), - (128,70,153,2), - (130,71,153,2), - (132,72,153,2), - (134,73,153,2), - (136,74,153,2), - (137,75,153,2), - (139,76,153,2), - (140,77,153,2), - (142,78,153,2), - (144,79,153,2), - (146,80,153,2), - (148,81,153,2), - (150,82,153,2), - (151,83,153,2), - (153,84,153,2), - (155,85,153,2), - (157,86,153,2), - (159,87,153,2), - (161,88,153,2), - (163,89,153,2), - (164,90,153,2), - (166,91,153,2), - (168,92,153,2), - (170,93,153,2), - (172,94,153,2), - (173,95,153,2), - (175,96,153,2), - (177,97,153,2), - (179,98,153,2), - (181,99,153,2), - (183,100,153,2), - (184,101,153,2), - (186,102,153,2), - (187,103,153,2), - (189,104,153,2), - (191,105,153,2), - (193,106,153,2), - (195,107,153,2), - (197,108,153,2), - (198,109,153,2), - (199,110,153,2), - (201,111,153,2), - (203,112,153,2), - (205,113,153,2), - (207,114,153,2), - (209,115,153,2), - (210,116,153,2), - (212,117,153,2), - (214,118,153,2), - (215,119,153,2), - (217,120,153,2), - (219,121,153,2), - (221,122,153,2), - (223,123,153,2), - (225,124,153,2), - (227,125,153,2), - (229,126,153,2), - (231,127,153,2), - (233,128,153,2), - (235,129,153,2), - (237,130,153,2), - (238,131,153,2), - (239,132,153,2), - (241,133,153,2), - (243,134,153,2), - (245,135,153,2), - (247,136,153,2), - (249,137,153,2), - (250,138,153,2), - (252,139,153,2), - (254,140,153,2), - (255,141,153,2), - (257,142,153,2), - (258,143,153,2), - (260,144,153,2), - (262,145,153,2), - (264,146,153,2), - (265,147,153,2), - (267,148,153,2), - (269,149,153,2), - (271,150,153,2), - (862,507,154,2), - (888,537,154,2), - (852,497,155,2), - (889,527,155,2), - (860,505,157,2), - (890,535,157,2), - (922,567,157,2), - (947,592,164,2), - (902,547,165,2), - (906,551,173,2), - (915,560,175,2), - (941,586,181,2), - (854,499,182,2), - (891,529,182,2), - (939,584,182,2), - (914,559,184,2), - (849,494,186,2), - (892,524,186,2), - (926,571,187,2), - (537,301,195,2), - (539,302,195,2), - (541,303,195,2), - (542,304,195,2), - (544,305,195,2), - (546,306,195,2), - (548,307,195,2), - (550,308,195,2), - (551,309,195,2), - (553,310,195,2), - (554,311,195,2), - (556,312,195,2), - (558,313,195,2), - (560,314,195,2), - (561,315,195,2), - (563,316,195,2), - (565,317,195,2), - (567,318,195,2), - (568,319,195,2), - (570,320,195,2), - (572,321,195,2), - (574,322,195,2), - (576,323,195,2), - (578,324,195,2), - (580,325,195,2), - (581,326,195,2), - (582,327,195,2), - (584,328,195,2), - (586,329,195,2), - (588,330,195,2), - (590,331,195,2), - (592,332,195,2), - (594,333,195,2), - (596,334,195,2), - (598,335,195,2), - (600,336,195,2), - (602,337,195,2), - (604,338,195,2), - (606,339,195,2), - (608,340,195,2), - (610,341,195,2), - (612,342,195,2), - (613,343,195,2), - (615,344,195,2), - (617,345,195,2), - (619,346,195,2), - (621,347,195,2), - (623,348,195,2), - (625,349,195,2), - (626,350,195,2), - (628,351,195,2), - (630,352,195,2), - (632,353,195,2), - (634,354,195,2), - (636,355,195,2), - (638,356,195,2), - (640,357,195,2), - (642,358,195,2), - (644,359,195,2), - (646,360,195,2), - (648,361,195,2), - (649,362,195,2), - (651,363,195,2), - (652,364,195,2), - (654,365,195,2), - (656,366,195,2), - (658,367,195,2), - (660,368,195,2), - (662,369,195,2), - (664,370,195,2), - (665,371,195,2), - (667,372,195,2), - (668,373,195,2), - (670,374,195,2), - (672,375,195,2), - (674,376,195,2), - (676,377,195,2), - (678,378,195,2), - (680,379,195,2), - (682,380,195,2), - (684,381,195,2), - (686,382,195,2), - (687,383,195,2), - (689,384,195,2), - (691,385,195,2), - (693,386,195,2), - (694,387,195,2), - (696,388,195,2), - (697,389,195,2), - (699,390,195,2), - (700,391,195,2), - (702,392,195,2), - (703,393,195,2), - (705,394,195,2), - (707,395,195,2), - (709,396,195,2), - (711,397,195,2), - (713,398,195,2), - (715,399,195,2), - (717,400,195,2), - (718,401,195,2), - (720,402,195,2), - (721,403,195,2), - (723,404,195,2), - (724,405,195,2), - (726,406,195,2), - (727,407,195,2), - (729,408,195,2), - (731,409,195,2), - (732,410,195,2), - (734,411,195,2), - (736,412,195,2), - (738,413,195,2), - (739,414,195,2), - (740,415,195,2), - (742,416,195,2), - (744,417,195,2), - (746,418,195,2), - (748,419,195,2), - (750,420,195,2), - (752,421,195,2), - (754,422,195,2), - (755,423,195,2), - (757,424,195,2), - (759,425,195,2), - (761,426,195,2), - (763,427,195,2), - (764,428,195,2), - (766,429,195,2), - (767,430,195,2), - (769,431,195,2), - (771,432,195,2), - (772,433,195,2), - (774,434,195,2), - (776,435,195,2), - (778,436,195,2), - (780,437,195,2), - (782,438,195,2), - (784,439,195,2), - (786,440,195,2), - (787,441,195,2), - (789,442,195,2), - (791,443,195,2), - (793,444,195,2), - (795,445,195,2), - (797,446,195,2), - (798,447,195,2), - (800,448,195,2), - (802,449,195,2), - (804,450,195,2), - (857,502,197,2), - (893,532,197,2), - (864,509,199,2), - (894,539,199,2), - (912,557,199,2), - (273,151,200,2), - (275,152,200,2), - (277,153,200,2), - (279,154,200,2), - (281,155,200,2), - (282,156,200,2), - (284,157,200,2), - (286,158,200,2), - (287,159,200,2), - (289,160,200,2), - (291,161,200,2), - (293,162,200,2), - (295,163,200,2), - (297,164,200,2), - (299,165,200,2), - (301,166,200,2), - (302,167,200,2), - (304,168,200,2), - (305,169,200,2), - (307,170,200,2), - (309,171,200,2), - (311,172,200,2), - (313,173,200,2), - (315,174,200,2), - (316,175,200,2), - (318,176,200,2), - (320,177,200,2), - (322,178,200,2), - (324,179,200,2), - (326,180,200,2), - (327,181,200,2), - (329,182,200,2), - (331,183,200,2), - (333,184,200,2), - (334,185,200,2), - (336,186,200,2), - (337,187,200,2), - (339,188,200,2), - (340,189,200,2), - (342,190,200,2), - (344,191,200,2), - (345,192,200,2), - (347,193,200,2), - (348,194,200,2), - (350,195,200,2), - (352,196,200,2), - (354,197,200,2), - (356,198,200,2), - (358,199,200,2), - (360,200,200,2), - (361,201,200,2), - (362,202,200,2), - (363,203,200,2), - (365,204,200,2), - (367,205,200,2), - (368,206,200,2), - (369,207,200,2), - (371,208,200,2), - (372,209,200,2), - (373,210,200,2), - (375,211,200,2), - (377,212,200,2), - (378,213,200,2), - (380,214,200,2), - (382,215,200,2), - (384,216,200,2), - (386,217,200,2), - (388,218,200,2), - (390,219,200,2), - (392,220,200,2), - (394,221,200,2), - (396,222,200,2), - (398,223,200,2), - (400,224,200,2), - (402,225,200,2), - (404,226,200,2), - (406,227,200,2), - (408,228,200,2), - (410,229,200,2), - (412,230,200,2), - (414,231,200,2), - (416,232,200,2), - (418,233,200,2), - (419,234,200,2), - (421,235,200,2), - (423,236,200,2), - (424,237,200,2), - (426,238,200,2), - (428,239,200,2), - (430,240,200,2), - (432,241,200,2), - (434,242,200,2), - (435,243,200,2), - (436,244,200,2), - (438,245,200,2), - (440,246,200,2), - (442,247,200,2), - (444,248,200,2), - (446,249,200,2), - (448,250,200,2), - (450,251,200,2), - (451,252,200,2), - (453,253,200,2), - (454,254,200,2), - (456,255,200,2), - (458,256,200,2), - (460,257,200,2), - (462,258,200,2), - (464,259,200,2), - (465,260,200,2), - (467,261,200,2), - (469,262,200,2), - (471,263,200,2), - (472,264,200,2), - (474,265,200,2), - (476,266,200,2), - (478,267,200,2), - (480,268,200,2), - (482,269,200,2), - (484,270,200,2), - (485,271,200,2), - (487,272,200,2), - (489,273,200,2), - (491,274,200,2), - (493,275,200,2), - (495,276,200,2), - (496,277,200,2), - (497,278,200,2), - (499,279,200,2), - (500,280,200,2), - (502,281,200,2), - (504,282,200,2), - (505,283,200,2), - (507,284,200,2), - (509,285,200,2), - (510,286,200,2), - (512,287,200,2), - (513,288,200,2), - (515,289,200,2), - (516,290,200,2), - (518,291,200,2), - (520,292,200,2), - (522,293,200,2), - (524,294,200,2), - (526,295,200,2), - (527,296,200,2), - (529,297,200,2), - (531,298,200,2), - (533,299,200,2), - (535,300,200,2), - (848,493,200,2), - (895,523,200,2), - (900,545,200,2), - (858,503,201,2), - (896,533,201,2), - (946,591,202,2); + (76,43,1,3), + (94,52,1,3), + (264,150,1,3), + (710,401,1,3), + (888,543,1,2), + (62,35,2,3), + (358,201,2,3), + (467,264,2,3), + (700,395,2,3), + (796,451,2,2), + (200,114,3,3), + (266,151,3,3), + (463,262,3,3), + (536,300,3,3), + (540,302,3,3), + (638,359,3,3), + (778,441,3,3), + (419,234,4,3), + (442,248,4,3), + (797,452,4,2), + (800,455,4,2), + (72,41,5,3), + (174,99,5,3), + (427,238,5,3), + (519,291,5,3), + (931,586,5,2), + (11,6,6,3), + (635,357,6,3), + (798,453,6,2), + (371,208,7,3), + (521,292,7,3), + (728,414,7,3), + (13,7,8,3), + (527,295,8,3), + (799,454,8,2), + (920,575,8,2), + (168,96,9,3), + (761,432,9,3), + (763,433,9,3), + (45,25,10,3), + (180,103,10,3), + (730,415,10,3), + (846,501,10,2), + (876,531,10,2), + (212,120,11,3), + (483,272,11,3), + (688,388,11,3), + (854,509,11,2), + (884,539,11,2), + (278,158,12,3), + (375,210,12,3), + (377,211,12,3), + (15,8,13,3), + (125,72,13,3), + (425,237,13,3), + (121,70,14,3), + (655,369,14,3), + (367,206,15,3), + (563,316,15,3), + (503,283,16,3), + (593,335,16,3), + (707,399,16,3), + (801,456,16,2), + (22,12,17,3), + (105,60,17,3), + (314,177,17,3), + (515,289,17,3), + (53,30,18,3), + (108,62,18,3), + (304,172,18,3), + (473,267,18,3), + (550,308,18,3), + (574,323,18,3), + (627,353,18,3), + (927,582,18,2), + (210,119,19,3), + (273,155,19,3), + (417,233,19,3), + (477,269,19,3), + (802,457,19,2), + (280,159,20,3), + (316,178,20,3), + (348,196,20,3), + (565,317,20,3), + (653,368,20,3), + (832,487,20,2), + (862,517,20,2), + (907,562,20,2), + (837,492,21,2), + (867,522,21,2), + (275,156,22,3), + (402,224,22,3), + (611,344,22,3), + (849,504,22,2), + (879,534,22,2), + (421,235,23,3), + (385,215,24,3), + (533,298,24,3), + (615,346,24,3), + (617,347,24,3), + (286,162,25,3), + (306,173,25,3), + (363,204,25,3), + (497,280,25,3), + (501,282,25,3), + (529,296,25,3), + (308,174,26,3), + (329,186,26,3), + (599,338,26,3), + (909,564,26,2), + (24,13,27,3), + (166,95,27,3), + (698,394,27,3), + (746,423,27,3), + (840,495,27,2), + (870,525,27,2), + (233,132,28,3), + (505,284,28,3), + (7,4,29,3), + (195,111,29,3), + (461,261,29,3), + (580,327,29,3), + (651,367,29,3), + (712,402,29,3), + (155,88,30,3), + (204,116,30,3), + (302,171,30,3), + (346,195,30,3), + (360,202,30,3), + (396,221,30,3), + (675,380,30,3), + (230,130,31,3), + (446,251,31,3), + (559,314,31,3), + (912,567,31,2), + (249,142,32,3), + (310,175,32,3), + (455,257,32,3), + (740,420,32,3), + (808,463,32,2), + (809,464,32,2), + (226,128,33,3), + (724,411,33,3), + (37,21,34,3), + (499,281,34,3), + (780,442,34,3), + (805,460,34,2), + (902,557,34,2), + (64,36,35,3), + (112,64,35,3), + (387,216,35,3), + (481,271,35,3), + (495,279,35,3), + (523,293,35,3), + (915,570,35,2), + (39,22,36,3), + (228,129,36,3), + (479,270,36,3), + (793,449,36,3), + (128,74,37,3), + (190,108,37,3), + (404,225,37,3), + (202,115,38,3), + (469,265,38,3), + (749,425,38,3), + (391,218,40,3), + (475,268,40,3), + (511,287,40,3), + (834,489,40,2), + (864,519,40,2), + (138,79,41,3), + (271,154,41,3), + (791,448,41,3), + (853,508,41,2), + (883,538,41,2), + (903,558,41,2), + (244,139,42,3), + (320,181,42,3), + (373,209,42,3), + (389,217,42,3), + (542,303,42,3), + (597,337,42,3), + (188,107,43,3), + (590,333,43,3), + (784,444,43,3), + (788,446,43,3), + (807,462,43,2), + (705,398,44,3), + (525,294,45,3), + (130,75,46,3), + (262,149,46,3), + (284,161,46,3), + (453,256,46,3), + (224,127,48,3), + (255,145,48,3), + (673,379,48,3), + (206,117,49,3), + (365,205,49,3), + (531,297,49,3), + (26,14,50,3), + (50,28,50,3), + (170,97,50,3), + (217,123,50,3), + (381,213,50,3), + (487,274,50,3), + (439,246,51,3), + (631,355,51,3), + (702,396,51,3), + (786,445,51,3), + (28,15,52,3), + (507,285,52,3), + (659,371,52,3), + (182,104,53,3), + (782,443,53,3), + (198,113,54,3), + (41,23,55,3), + (269,153,55,3), + (643,362,55,3), + (696,393,55,3), + (767,435,55,3), + (35,20,56,3), + (561,315,56,3), + (568,319,56,3), + (578,326,56,3), + (663,373,56,3), + (682,384,56,3), + (773,438,56,3), + (82,46,57,3), + (102,58,57,3), + (4,2,58,3), + (117,68,58,3), + (134,77,58,3), + (517,290,58,3), + (20,11,59,3), + (356,200,59,3), + (409,228,59,3), + (583,329,59,3), + (810,465,59,2), + (811,466,59,2), + (812,467,59,2), + (813,468,59,2), + (814,469,59,2), + (815,470,59,2), + (816,471,59,2), + (817,472,59,2), + (818,473,59,2), + (819,474,59,2), + (820,475,59,2), + (9,5,60,3), + (110,63,60,3), + (235,133,60,3), + (556,312,60,3), + (744,422,60,3), + (753,427,60,3), + (84,47,61,3), + (325,184,61,3), + (492,277,61,3), + (833,488,61,2), + (863,518,61,2), + (913,568,61,2), + (90,50,62,3), + (55,31,63,3), + (144,82,64,3), + (406,226,64,3), + (423,236,64,3), + (734,417,64,3), + (890,545,64,2), + (119,69,65,3), + (176,100,65,3), + (298,169,65,3), + (537,301,65,2), + (539,302,65,2), + (541,303,65,2), + (543,304,65,2), + (545,305,65,2), + (546,306,65,2), + (548,307,65,2), + (549,308,65,2), + (551,309,65,2), + (552,310,65,2), + (554,311,65,2), + (555,312,65,2), + (557,313,65,2), + (558,314,65,2), + (560,315,65,2), + (562,316,65,2), + (564,317,65,2), + (566,318,65,2), + (567,319,65,2), + (569,320,65,2), + (570,321,65,2), + (572,322,65,2), + (573,323,65,2), + (575,324,65,2), + (576,325,65,2), + (577,326,65,2), + (579,327,65,2), + (581,328,65,2), + (582,329,65,2), + (584,330,65,2), + (586,331,65,2), + (588,332,65,2), + (589,333,65,2), + (591,334,65,2), + (592,335,65,2), + (594,336,65,2), + (596,337,65,2), + (598,338,65,2), + (600,339,65,2), + (602,340,65,2), + (604,341,65,2), + (606,342,65,2), + (608,343,65,2), + (610,344,65,2), + (612,345,65,2), + (614,346,65,2), + (616,347,65,2), + (618,348,65,2), + (619,349,65,2), + (621,350,65,2), + (623,351,65,2), + (624,352,65,2), + (626,353,65,2), + (628,354,65,2), + (630,355,65,2), + (632,356,65,2), + (634,357,65,2), + (636,358,65,2), + (637,359,65,2), + (639,360,65,2), + (640,361,65,2), + (642,362,65,2), + (644,363,65,2), + (645,364,65,2), + (647,365,65,2), + (648,366,65,2), + (650,367,65,2), + (652,368,65,2), + (654,369,65,2), + (656,370,65,2), + (658,371,65,2), + (660,372,65,2), + (662,373,65,2), + (664,374,65,2), + (665,375,65,2), + (667,376,65,2), + (669,377,65,2), + (671,378,65,2), + (672,379,65,2), + (674,380,65,2), + (676,381,65,2), + (677,382,65,2), + (679,383,65,2), + (681,384,65,2), + (683,385,65,2), + (684,386,65,2), + (686,387,65,2), + (687,388,65,2), + (689,389,65,2), + (691,390,65,2), + (692,391,65,2), + (693,392,65,2), + (695,393,65,2), + (697,394,65,2), + (699,395,65,2), + (701,396,65,2), + (703,397,65,2), + (704,398,65,2), + (706,399,65,2), + (708,400,65,2), + (709,401,65,2), + (711,402,65,2), + (713,403,65,2), + (714,404,65,2), + (715,405,65,2), + (717,406,65,2), + (718,407,65,2), + (720,408,65,2), + (721,409,65,2), + (722,410,65,2), + (723,411,65,2), + (725,412,65,2), + (726,413,65,2), + (727,414,65,2), + (729,415,65,2), + (731,416,65,2), + (733,417,65,2), + (735,418,65,2), + (737,419,65,2), + (739,420,65,2), + (741,421,65,2), + (743,422,65,2), + (745,423,65,2), + (747,424,65,2), + (748,425,65,2), + (750,426,65,2), + (752,427,65,2), + (754,428,65,2), + (756,429,65,2), + (758,430,65,2), + (759,431,65,2), + (760,432,65,2), + (762,433,65,2), + (764,434,65,2), + (766,435,65,2), + (768,436,65,2), + (770,437,65,2), + (772,438,65,2), + (774,439,65,2), + (775,440,65,2), + (777,441,65,2), + (779,442,65,2), + (781,443,65,2), + (783,444,65,2), + (785,445,65,2), + (787,446,65,2), + (789,447,65,2), + (790,448,65,2), + (792,449,65,2), + (794,450,65,2), + (603,340,66,3), + (736,418,66,3), + (845,500,66,2), + (875,530,66,2), + (186,106,67,3), + (215,122,67,3), + (246,140,67,3), + (394,220,67,3), + (260,148,68,3), + (398,222,68,3), + (641,361,68,3), + (751,426,69,3), + (771,437,69,3), + (292,166,70,3), + (449,253,70,3), + (282,160,71,3), + (341,192,71,3), + (465,263,71,3), + (544,304,71,3), + (553,310,71,3), + (755,428,71,3), + (795,450,71,3), + (806,461,71,2), + (547,306,72,3), + (742,421,72,3), + (934,589,72,2), + (123,71,73,3), + (253,144,73,3), + (333,188,73,3), + (625,352,73,3), + (694,392,73,3), + (914,569,73,2), + (31,17,74,3), + (457,258,74,3), + (666,375,74,3), + (92,51,75,3), + (288,163,75,3), + (312,176,75,3), + (412,230,75,3), + (485,273,75,3), + (918,573,75,2), + (43,24,77,3), + (136,78,77,3), + (322,182,77,3), + (657,370,77,3), + (66,37,78,3), + (192,109,78,3), + (369,207,78,3), + (132,76,79,3), + (769,436,79,3), + (18,10,80,3), + (149,85,80,3), + (163,93,80,3), + (350,197,80,3), + (904,559,80,2), + (140,80,81,3), + (435,244,81,3), + (607,342,81,3), + (80,45,82,3), + (88,49,82,3), + (613,345,82,3), + (803,458,82,2), + (2,1,83,3), + (142,81,83,3), + (146,83,83,3), + (300,170,83,3), + (327,185,83,3), + (383,214,83,3), + (60,34,84,3), + (100,57,84,3), + (294,167,84,3), + (400,223,84,3), + (649,366,84,3), + (670,377,84,3), + (678,382,84,3), + (830,485,84,2), + (860,515,84,2), + (601,339,85,3), + (738,419,85,3), + (153,87,86,3), + (847,502,86,2), + (877,532,86,2), + (622,350,87,3), + (668,376,87,3), + (906,561,87,2), + (208,118,88,3), + (587,331,88,3), + (680,383,88,3), + (852,507,88,2), + (882,537,88,2), + (172,98,89,3), + (331,187,89,3), + (433,243,89,3), + (471,266,89,3), + (513,288,89,3), + (490,276,90,3), + (620,349,90,3), + (47,26,91,3), + (296,168,91,3), + (339,191,91,3), + (509,286,91,3), + (157,89,92,3), + (160,91,92,3), + (242,138,92,3), + (335,189,92,3), + (379,212,92,3), + (685,386,92,3), + (719,407,92,3), + (804,459,92,2), + (221,125,93,3), + (337,190,93,3), + (352,198,93,3), + (538,301,93,3), + (605,341,93,3), + (757,429,93,3), + (910,565,93,2), + (929,584,94,2), + (74,42,95,3), + (151,86,95,3), + (414,231,95,3), + (437,245,95,3), + (571,321,95,3), + (585,330,96,3), + (661,372,96,3), + (856,511,96,2), + (886,541,96,2), + (897,552,96,2), + (646,364,97,3), + (935,590,97,2), + (251,143,98,3), + (609,343,98,3), + (732,416,98,3), + (184,105,99,3), + (257,146,99,3), + (595,336,99,3), + (716,405,99,3), + (776,440,99,3), + (821,476,99,2), + (822,477,99,2), + (823,478,99,2), + (824,479,99,2), + (825,480,99,2), + (831,486,99,2), + (861,516,99,2), + (58,33,100,3), + (70,40,100,3), + (86,48,100,3), + (633,356,100,3), + (765,434,100,3), + (892,547,100,2), + (78,44,101,3), + (219,124,101,3), + (240,137,101,3), + (343,193,101,3), + (354,199,101,3), + (629,354,101,3), + (690,389,101,3), + (826,481,103,2), + (928,583,103,2), + (265,151,104,2), + (267,152,104,2), + (268,153,104,2), + (270,154,104,2), + (272,155,104,2), + (274,156,104,2), + (276,157,104,2), + (277,158,104,2), + (279,159,104,2), + (281,160,104,2), + (283,161,104,2), + (285,162,104,2), + (287,163,104,2), + (289,164,104,2), + (290,165,104,2), + (291,166,104,2), + (293,167,104,2), + (295,168,104,2), + (297,169,104,2), + (299,170,104,2), + (301,171,104,2), + (303,172,104,2), + (305,173,104,2), + (307,174,104,2), + (309,175,104,2), + (311,176,104,2), + (313,177,104,2), + (315,178,104,2), + (317,179,104,2), + (318,180,104,2), + (319,181,104,2), + (321,182,104,2), + (323,183,104,2), + (324,184,104,2), + (326,185,104,2), + (328,186,104,2), + (330,187,104,2), + (332,188,104,2), + (334,189,104,2), + (336,190,104,2), + (338,191,104,2), + (340,192,104,2), + (342,193,104,2), + (344,194,104,2), + (345,195,104,2), + (347,196,104,2), + (349,197,104,2), + (351,198,104,2), + (353,199,104,2), + (355,200,104,2), + (357,201,104,2), + (359,202,104,2), + (361,203,104,2), + (362,204,104,2), + (364,205,104,2), + (366,206,104,2), + (368,207,104,2), + (370,208,104,2), + (372,209,104,2), + (374,210,104,2), + (376,211,104,2), + (378,212,104,2), + (380,213,104,2), + (382,214,104,2), + (384,215,104,2), + (386,216,104,2), + (388,217,104,2), + (390,218,104,2), + (392,219,104,2), + (393,220,104,2), + (395,221,104,2), + (397,222,104,2), + (399,223,104,2), + (401,224,104,2), + (403,225,104,2), + (405,226,104,2), + (407,227,104,2), + (408,228,104,2), + (410,229,104,2), + (411,230,104,2), + (413,231,104,2), + (415,232,104,2), + (416,233,104,2), + (418,234,104,2), + (420,235,104,2), + (422,236,104,2), + (424,237,104,2), + (426,238,104,2), + (428,239,104,2), + (429,240,104,2), + (430,241,104,2), + (431,242,104,2), + (432,243,104,2), + (434,244,104,2), + (436,245,104,2), + (438,246,104,2), + (440,247,104,2), + (441,248,104,2), + (443,249,104,2), + (444,250,104,2), + (445,251,104,2), + (447,252,104,2), + (448,253,104,2), + (450,254,104,2), + (451,255,104,2), + (452,256,104,2), + (454,257,104,2), + (456,258,104,2), + (458,259,104,2), + (459,260,104,2), + (460,261,104,2), + (462,262,104,2), + (464,263,104,2), + (466,264,104,2), + (468,265,104,2), + (470,266,104,2), + (472,267,104,2), + (474,268,104,2), + (476,269,104,2), + (478,270,104,2), + (480,271,104,2), + (482,272,104,2), + (484,273,104,2), + (486,274,104,2), + (488,275,104,2), + (489,276,104,2), + (491,277,104,2), + (493,278,104,2), + (494,279,104,2), + (496,280,104,2), + (498,281,104,2), + (500,282,104,2), + (502,283,104,2), + (504,284,104,2), + (506,285,104,2), + (508,286,104,2), + (510,287,104,2), + (512,288,104,2), + (514,289,104,2), + (516,290,104,2), + (518,291,104,2), + (520,292,104,2), + (522,293,104,2), + (524,294,104,2), + (526,295,104,2), + (528,296,104,2), + (530,297,104,2), + (532,298,104,2), + (534,299,104,2), + (535,300,104,2), + (848,503,106,2), + (878,533,106,2), + (923,578,106,2), + (839,494,107,2), + (869,524,107,2), + (925,580,111,2), + (922,577,116,2), + (916,571,117,2), + (933,588,118,2), + (896,551,119,2), + (850,505,123,2), + (880,535,123,2), + (908,563,124,2), + (843,498,126,2), + (873,528,126,2), + (905,560,131,2), + (899,554,132,2), + (851,506,135,2), + (881,536,135,2), + (926,581,135,2), + (921,576,139,2), + (895,550,141,2), + (827,482,143,2), + (857,512,143,2), + (900,555,147,2), + (893,548,152,2), + (898,553,154,2), + (930,585,158,2), + (917,572,160,2), + (936,591,161,2), + (829,484,165,2), + (859,514,165,2), + (889,544,167,2), + (842,497,168,2), + (872,527,168,2), + (828,483,170,2), + (858,513,170,2), + (911,566,171,2), + (919,574,173,2), + (855,510,177,2), + (885,540,177,2), + (937,592,179,2), + (891,546,181,2), + (841,496,182,2), + (871,526,182,2), + (932,587,183,2), + (844,499,184,2), + (874,529,184,2), + (1,1,187,2), + (3,2,187,2), + (5,3,187,2), + (6,4,187,2), + (8,5,187,2), + (10,6,187,2), + (12,7,187,2), + (14,8,187,2), + (16,9,187,2), + (17,10,187,2), + (19,11,187,2), + (21,12,187,2), + (23,13,187,2), + (25,14,187,2), + (27,15,187,2), + (29,16,187,2), + (30,17,187,2), + (32,18,187,2), + (33,19,187,2), + (34,20,187,2), + (36,21,187,2), + (38,22,187,2), + (40,23,187,2), + (42,24,187,2), + (44,25,187,2), + (46,26,187,2), + (48,27,187,2), + (49,28,187,2), + (51,29,187,2), + (52,30,187,2), + (54,31,187,2), + (56,32,187,2), + (57,33,187,2), + (59,34,187,2), + (61,35,187,2), + (63,36,187,2), + (65,37,187,2), + (67,38,187,2), + (68,39,187,2), + (69,40,187,2), + (71,41,187,2), + (73,42,187,2), + (75,43,187,2), + (77,44,187,2), + (79,45,187,2), + (81,46,187,2), + (83,47,187,2), + (85,48,187,2), + (87,49,187,2), + (89,50,187,2), + (91,51,187,2), + (93,52,187,2), + (95,53,187,2), + (96,54,187,2), + (97,55,187,2), + (98,56,187,2), + (99,57,187,2), + (101,58,187,2), + (103,59,187,2), + (104,60,187,2), + (106,61,187,2), + (107,62,187,2), + (109,63,187,2), + (111,64,187,2), + (113,65,187,2), + (114,66,187,2), + (115,67,187,2), + (116,68,187,2), + (118,69,187,2), + (120,70,187,2), + (122,71,187,2), + (124,72,187,2), + (126,73,187,2), + (127,74,187,2), + (129,75,187,2), + (131,76,187,2), + (133,77,187,2), + (135,78,187,2), + (137,79,187,2), + (139,80,187,2), + (141,81,187,2), + (143,82,187,2), + (145,83,187,2), + (147,84,187,2), + (148,85,187,2), + (150,86,187,2), + (152,87,187,2), + (154,88,187,2), + (156,89,187,2), + (158,90,187,2), + (159,91,187,2), + (161,92,187,2), + (162,93,187,2), + (164,94,187,2), + (165,95,187,2), + (167,96,187,2), + (169,97,187,2), + (171,98,187,2), + (173,99,187,2), + (175,100,187,2), + (177,101,187,2), + (178,102,187,2), + (179,103,187,2), + (181,104,187,2), + (183,105,187,2), + (185,106,187,2), + (187,107,187,2), + (189,108,187,2), + (191,109,187,2), + (193,110,187,2), + (194,111,187,2), + (196,112,187,2), + (197,113,187,2), + (199,114,187,2), + (201,115,187,2), + (203,116,187,2), + (205,117,187,2), + (207,118,187,2), + (209,119,187,2), + (211,120,187,2), + (213,121,187,2), + (214,122,187,2), + (216,123,187,2), + (218,124,187,2), + (220,125,187,2), + (222,126,187,2), + (223,127,187,2), + (225,128,187,2), + (227,129,187,2), + (229,130,187,2), + (231,131,187,2), + (232,132,187,2), + (234,133,187,2), + (236,134,187,2), + (237,135,187,2), + (238,136,187,2), + (239,137,187,2), + (241,138,187,2), + (243,139,187,2), + (245,140,187,2), + (247,141,187,2), + (248,142,187,2), + (250,143,187,2), + (252,144,187,2), + (254,145,187,2), + (256,146,187,2), + (258,147,187,2), + (259,148,187,2), + (261,149,187,2), + (263,150,187,2), + (901,556,187,2), + (838,493,193,2), + (868,523,193,2), + (835,490,197,2), + (865,520,197,2), + (894,549,198,2), + (836,491,199,2), + (866,521,199,2), + (924,579,199,2); /*!40000 ALTER TABLE `civicrm_activity_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -1769,185 +1679,192 @@ 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,146,1,1,0,'813P Green Ave N',813,'P',NULL,'Green','Ave','N',NULL,NULL,NULL,NULL,'South Pittsburg',1,1041,NULL,'37380',NULL,1228,35.045886,-85.72513,0,NULL,NULL,NULL), - (2,21,1,1,0,'784F Northpoint Dr SW',784,'F',NULL,'Northpoint','Dr','SW',NULL,NULL,NULL,NULL,'Wacissa',1,1008,NULL,'32361',NULL,1228,30.357761,-83.98882,0,NULL,NULL,NULL), - (3,115,1,1,0,'174S Cadell Pl SW',174,'S',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Savannah',1,1009,NULL,'31498',NULL,1228,31.971394,-81.07156,0,NULL,NULL,NULL), - (4,152,1,1,0,'414O Caulder Ave N',414,'O',NULL,'Caulder','Ave','N',NULL,NULL,NULL,NULL,'Fort Lauderdale',1,1008,NULL,'33309',NULL,1228,26.185461,-80.17218,0,NULL,NULL,NULL), - (5,138,1,1,0,'76B Second Pl NW',76,'B',NULL,'Second','Pl','NW',NULL,NULL,NULL,NULL,'Forest',1,1034,NULL,'45843',NULL,1228,40.782854,-83.52862,0,NULL,NULL,NULL), - (6,71,1,1,0,'1H Lincoln Blvd SW',1,'H',NULL,'Lincoln','Blvd','SW',NULL,NULL,NULL,NULL,'Oakhurst',1,1004,NULL,'93644',NULL,1228,37.405699,-119.56754,0,NULL,NULL,NULL), - (7,110,1,1,0,'687J El Camino Dr NW',687,'J',NULL,'El Camino','Dr','NW',NULL,NULL,NULL,NULL,'Pleasant Valley',1,1045,NULL,'22848',NULL,1228,38.384681,-78.891422,0,NULL,NULL,NULL), - (8,4,1,1,0,'255M Pine Dr SW',255,'M',NULL,'Pine','Dr','SW',NULL,NULL,NULL,NULL,'Washington',1,1050,NULL,'20223',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL), - (9,49,1,1,0,'243J Van Ness Blvd N',243,'J',NULL,'Van Ness','Blvd','N',NULL,NULL,NULL,NULL,'Elberon',1,1014,NULL,'52225',NULL,1228,42.011889,-92.32398,0,NULL,NULL,NULL), - (10,150,1,1,0,'747I Caulder St NE',747,'I',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Encinitas',1,1004,NULL,'92023',NULL,1228,33.016928,-116.846046,0,NULL,NULL,NULL), - (11,153,1,1,0,'57M Jackson St SE',57,'M',NULL,'Jackson','St','SE',NULL,NULL,NULL,NULL,'Paterson',1,1029,NULL,'07524',NULL,1228,40.930398,-74.15829,0,NULL,NULL,NULL), - (12,171,1,1,0,'425E Pine Way W',425,'E',NULL,'Pine','Way','W',NULL,NULL,NULL,NULL,'Lafayette',1,1022,NULL,'56054',NULL,1228,44.431776,-94.37742,0,NULL,NULL,NULL), - (13,135,1,1,0,'477G Bay St S',477,'G',NULL,'Bay','St','S',NULL,NULL,NULL,NULL,'Modest Town',1,1045,NULL,'23412',NULL,1228,37.790415,-75.60347,0,NULL,NULL,NULL), - (14,52,1,1,0,'139D College Blvd W',139,'D',NULL,'College','Blvd','W',NULL,NULL,NULL,NULL,'Brock',1,1026,NULL,'68320',NULL,1228,40.487422,-95.96011,0,NULL,NULL,NULL), - (15,172,1,1,0,'365U States Dr SE',365,'U',NULL,'States','Dr','SE',NULL,NULL,NULL,NULL,'Youngstown',1,1034,NULL,'44505',NULL,1228,41.122524,-80.62043,0,NULL,NULL,NULL), - (16,106,1,1,0,'428V States Path S',428,'V',NULL,'States','Path','S',NULL,NULL,NULL,NULL,'Oxnard',1,1004,NULL,'93033',NULL,1228,34.166933,-119.16113,0,NULL,NULL,NULL), - (17,28,1,1,0,'483I Jackson Ln NW',483,'I',NULL,'Jackson','Ln','NW',NULL,NULL,NULL,NULL,'Sycamore',1,1009,NULL,'31790',NULL,1228,31.652542,-83.57934,0,NULL,NULL,NULL), - (18,31,1,1,0,'524V Lincoln Path S',524,'V',NULL,'Lincoln','Path','S',NULL,NULL,NULL,NULL,'North Lawrence',1,1034,NULL,'44666',NULL,1228,40.840256,-81.62724,0,NULL,NULL,NULL), - (19,108,1,1,0,'130Y Dowlen Ave SW',130,'Y',NULL,'Dowlen','Ave','SW',NULL,NULL,NULL,NULL,'Waconia',1,1022,NULL,'55387',NULL,1228,44.849912,-93.78514,0,NULL,NULL,NULL), - (20,72,1,1,0,'439V Caulder Dr SW',439,'V',NULL,'Caulder','Dr','SW',NULL,NULL,NULL,NULL,'Saint Charles',1,1024,NULL,'63301',NULL,1228,38.808583,-90.50687,0,NULL,NULL,NULL), - (21,123,1,1,0,'732C Van Ness Blvd E',732,'C',NULL,'Van Ness','Blvd','E',NULL,NULL,NULL,NULL,'Mayville',1,1048,NULL,'53050',NULL,1228,43.499518,-88.53911,0,NULL,NULL,NULL), - (22,25,1,1,0,'91T Dowlen St S',91,'T',NULL,'Dowlen','St','S',NULL,NULL,NULL,NULL,'Woodleaf',1,1032,NULL,'27054',NULL,1228,35.787743,-80.59377,0,NULL,NULL,NULL), - (23,27,1,1,0,'765F Woodbridge Way NE',765,'F',NULL,'Woodbridge','Way','NE',NULL,NULL,NULL,NULL,'Benton',1,1023,NULL,'39039',NULL,1228,32.832943,-90.21951,0,NULL,NULL,NULL), - (24,200,1,1,0,'736K Maple Rd S',736,'K',NULL,'Maple','Rd','S',NULL,NULL,NULL,NULL,'Sauquoit',1,1031,NULL,'13456',NULL,1228,43.005669,-75.26202,0,NULL,NULL,NULL), - (25,114,1,1,0,'632D Martin Luther King Ln NW',632,'D',NULL,'Martin Luther King','Ln','NW',NULL,NULL,NULL,NULL,'Jacksonville',1,1008,NULL,'32207',NULL,1228,30.294389,-81.6374,0,NULL,NULL,NULL), - (26,92,1,1,0,'18X Pine Path SW',18,'X',NULL,'Pine','Path','SW',NULL,NULL,NULL,NULL,'Houston',1,1042,NULL,'77055',NULL,1228,29.798877,-95.49629,0,NULL,NULL,NULL), - (27,190,1,1,0,'91B Second Ln SW',91,'B',NULL,'Second','Ln','SW',NULL,NULL,NULL,NULL,'Belle Chasse',1,1017,NULL,'70037',NULL,1228,29.822707,-90.00616,0,NULL,NULL,NULL), - (28,184,1,1,0,'436G Martin Luther King Rd S',436,'G',NULL,'Martin Luther King','Rd','S',NULL,NULL,NULL,NULL,'Prattsville',1,1003,NULL,'72129',NULL,1228,34.330808,-92.54349,0,NULL,NULL,NULL), - (29,163,1,1,0,'36M El Camino Dr NE',36,'M',NULL,'El Camino','Dr','NE',NULL,NULL,NULL,NULL,'Readstown',1,1048,NULL,'54652',NULL,1228,43.454264,-90.76116,0,NULL,NULL,NULL), - (30,91,1,1,0,'378B Northpoint Pl SE',378,'B',NULL,'Northpoint','Pl','SE',NULL,NULL,NULL,NULL,'Omaha',1,1026,NULL,'68134',NULL,1228,41.296748,-96.05181,0,NULL,NULL,NULL), - (31,141,1,1,0,'158A Woodbridge Way W',158,'A',NULL,'Woodbridge','Way','W',NULL,NULL,NULL,NULL,'Lake Worth',1,1008,NULL,'33462',NULL,1228,26.579714,-80.07437,0,NULL,NULL,NULL), - (32,97,1,1,0,'187X Green Rd S',187,'X',NULL,'Green','Rd','S',NULL,NULL,NULL,NULL,'Leoti',1,1015,NULL,'67861',NULL,1228,38.503037,-101.39536,0,NULL,NULL,NULL), - (33,44,1,1,0,'35E States Dr NW',35,'E',NULL,'States','Dr','NW',NULL,NULL,NULL,NULL,'Convent',1,1017,NULL,'70723',NULL,1228,30.063433,-90.84644,0,NULL,NULL,NULL), - (34,66,1,1,0,'234I States St NW',234,'I',NULL,'States','St','NW',NULL,NULL,NULL,NULL,'Coldiron',1,1016,NULL,'40819',NULL,1228,36.827233,-83.4645,0,NULL,NULL,NULL), - (35,75,1,1,0,'183P Northpoint Way N',183,'P',NULL,'Northpoint','Way','N',NULL,NULL,NULL,NULL,'Delray Beach',1,1008,NULL,'33446',NULL,1228,26.452473,-80.16509,0,NULL,NULL,NULL), - (36,65,1,1,0,'399N Martin Luther King Blvd W',399,'N',NULL,'Martin Luther King','Blvd','W',NULL,NULL,NULL,NULL,'Cedar Park',1,1042,NULL,'78613',NULL,1228,30.501272,-97.83087,0,NULL,NULL,NULL), - (37,144,1,1,0,'260R Second Path W',260,'R',NULL,'Second','Path','W',NULL,NULL,NULL,NULL,'Hi Hat',1,1016,NULL,'41636',NULL,1228,37.398774,-82.73257,0,NULL,NULL,NULL), - (38,142,1,1,0,'845N Bay Ave W',845,'N',NULL,'Bay','Ave','W',NULL,NULL,NULL,NULL,'Dayton',1,1034,NULL,'45409',NULL,1228,39.725705,-84.18927,0,NULL,NULL,NULL), - (39,164,1,1,0,'658E El Camino Pl S',658,'E',NULL,'El Camino','Pl','S',NULL,NULL,NULL,NULL,'Saint Louis',1,1024,NULL,'63196',NULL,1228,38.6531,-90.243462,0,NULL,NULL,NULL), - (40,111,1,1,0,'797K Bay Path E',797,'K',NULL,'Bay','Path','E',NULL,NULL,NULL,NULL,'Staplehurst',1,1026,NULL,'68439',NULL,1228,40.996127,-97.2052,0,NULL,NULL,NULL), - (41,99,1,1,0,'156H Northpoint Way NE',156,'H',NULL,'Northpoint','Way','NE',NULL,NULL,NULL,NULL,'Laurel',1,1019,NULL,'20726',NULL,1228,38.833563,-76.877743,0,NULL,NULL,NULL), - (42,104,1,1,0,'856C States Pl N',856,'C',NULL,'States','Pl','N',NULL,NULL,NULL,NULL,'Chapel Hill',1,1032,NULL,'27599',NULL,1228,36.05251,-79.107692,0,NULL,NULL,NULL), - (43,169,1,1,0,'110A Northpoint Ave S',110,'A',NULL,'Northpoint','Ave','S',NULL,NULL,NULL,NULL,'Conway',1,1020,NULL,'01341',NULL,1228,42.508313,-72.70403,0,NULL,NULL,NULL), - (44,196,1,1,0,'14G Van Ness Ave W',14,'G',NULL,'Van Ness','Ave','W',NULL,NULL,NULL,NULL,'Ames',1,1014,NULL,'50014',NULL,1228,42.033235,-93.66741,0,NULL,NULL,NULL), - (45,59,1,1,0,'783Z Second Ave N',783,'Z',NULL,'Second','Ave','N',NULL,NULL,NULL,NULL,'Killeen',1,1042,NULL,'76547',NULL,1228,31.036287,-97.492017,0,NULL,NULL,NULL), - (46,69,1,1,0,'803Y Green Rd SW',803,'Y',NULL,'Green','Rd','SW',NULL,NULL,NULL,NULL,'Swedesburg',1,1014,NULL,'52652',NULL,1228,41.103879,-91.54664,0,NULL,NULL,NULL), - (47,105,1,1,0,'659S Jackson Pl SE',659,'S',NULL,'Jackson','Pl','SE',NULL,NULL,NULL,NULL,'Carson City',1,1027,NULL,'89702',NULL,1228,39.135503,-119.75875,0,NULL,NULL,NULL), - (48,17,1,1,0,'537C Beech Way NE',537,'C',NULL,'Beech','Way','NE',NULL,NULL,NULL,NULL,'Bulpitt',1,1012,NULL,'62517',NULL,1228,39.591537,-89.42755,0,NULL,NULL,NULL), - (49,36,1,1,0,'16T Maple Path W',16,'T',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Jacksonville Beach',1,1008,NULL,'32250',NULL,1228,30.284641,-81.39844,0,NULL,NULL,NULL), - (50,149,1,1,0,'331Q El Camino Way NE',331,'Q',NULL,'El Camino','Way','NE',NULL,NULL,NULL,NULL,'Clanton',1,1000,NULL,'35026',NULL,1228,32.859262,-86.638819,0,NULL,NULL,NULL), - (51,129,1,1,0,'133C Lincoln Rd SE',133,'C',NULL,'Lincoln','Rd','SE',NULL,NULL,NULL,NULL,'Tuscumbia',1,1024,NULL,'65082',NULL,1228,38.217129,-92.43221,0,NULL,NULL,NULL), - (52,3,1,1,0,'593H Bay Pl W',593,'H',NULL,'Bay','Pl','W',NULL,NULL,NULL,NULL,'Stoneville',1,1032,NULL,'27048',NULL,1228,36.47266,-79.90522,0,NULL,NULL,NULL), - (53,19,1,1,0,'798M Beech St NW',798,'M',NULL,'Beech','St','NW',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79184',NULL,1228,35.401475,-101.895089,0,NULL,NULL,NULL), - (54,165,1,1,0,'586Z Martin Luther King Ln W',586,'Z',NULL,'Martin Luther King','Ln','W',NULL,NULL,NULL,NULL,'Santa Maria',1,1004,NULL,'93458',NULL,1228,34.956344,-120.45243,0,NULL,NULL,NULL), - (55,43,1,1,0,'348F College Blvd E',348,'F',NULL,'College','Blvd','E',NULL,NULL,NULL,NULL,'Westmont',1,1012,NULL,'60559',NULL,1228,41.795358,-87.97778,0,NULL,NULL,NULL), - (56,122,1,1,0,'261O States Dr S',261,'O',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,NULL), - (57,126,1,1,0,'810H Pine Pl NW',810,'H',NULL,'Pine','Pl','NW',NULL,NULL,NULL,NULL,'Pflugerville',1,1042,NULL,'78660',NULL,1228,30.450122,-97.623,0,NULL,NULL,NULL), - (58,86,1,1,0,'30Z Bay Ln SW',30,'Z',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Cook Springs',1,1000,NULL,'35052',NULL,1228,33.593115,-86.4084,0,NULL,NULL,NULL), - (59,176,1,1,0,'658A El Camino Pl NW',658,'A',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Taiban',1,1030,NULL,'88134',NULL,1228,34.429099,-103.96633,0,NULL,NULL,NULL), - (60,187,1,1,0,'58U Second Blvd S',58,'U',NULL,'Second','Blvd','S',NULL,NULL,NULL,NULL,'Waverly',1,1008,NULL,'33877',NULL,1228,27.982891,-81.61743,0,NULL,NULL,NULL), - (61,174,1,1,0,'708S Bay Dr SE',708,'S',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Acampo',1,1004,NULL,'95220',NULL,1228,38.200193,-121.23505,0,NULL,NULL,NULL), - (62,84,1,1,0,'229C Caulder Pl W',229,'C',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Camp Hill',1,1037,NULL,'17089',NULL,1228,40.269738,-76.936046,0,NULL,NULL,NULL), - (63,109,1,1,0,'582I College Rd E',582,'I',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Jenkins Bridge',1,1045,NULL,'23399',NULL,1228,37.916218,-75.616754,0,NULL,NULL,NULL), - (64,78,1,1,0,'754P El Camino Path E',754,'P',NULL,'El Camino','Path','E',NULL,NULL,NULL,NULL,'Fairfield',1,1006,NULL,'06890',NULL,1228,41.142754,-73.288247,0,NULL,NULL,NULL), - (65,38,1,1,0,'902N States Pl W',902,'N',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Glace',1,1047,NULL,'24942',NULL,1228,37.552029,-80.539672,0,NULL,NULL,NULL), - (66,121,1,1,0,'551F Bay Dr W',551,'F',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Olivia',1,1032,NULL,'28368',NULL,1228,35.35149,-79.10586,0,NULL,NULL,NULL), - (67,191,3,1,0,'470H Martin Luther King Rd W',470,'H',NULL,'Martin Luther King','Rd','W',NULL,'Subscriptions Dept',NULL,NULL,'Kermit',1,1042,NULL,'79745',NULL,1228,31.847071,-103.08399,0,NULL,NULL,NULL), - (68,111,2,0,0,'470H Martin Luther King Rd W',470,'H',NULL,'Martin Luther King','Rd','W',NULL,'Subscriptions Dept',NULL,NULL,'Kermit',1,1042,NULL,'79745',NULL,1228,31.847071,-103.08399,0,NULL,NULL,67), - (69,101,3,1,0,'781G Cadell Ave NE',781,'G',NULL,'Cadell','Ave','NE',NULL,'c/o OPDC',NULL,NULL,'Washington',1,1050,NULL,'20393',NULL,1228,38.893311,-77.014647,0,NULL,NULL,NULL), - (70,11,3,1,0,'291N Main Pl N',291,'N',NULL,'Main','Pl','N',NULL,'Receiving',NULL,NULL,'Washington',1,1050,NULL,'20412',NULL,1228,38.895261,-77.022098,0,NULL,NULL,NULL), - (71,39,2,1,0,'291N Main Pl N',291,'N',NULL,'Main','Pl','N',NULL,'Receiving',NULL,NULL,'Washington',1,1050,NULL,'20412',NULL,1228,38.895261,-77.022098,0,NULL,NULL,70), - (72,173,3,1,0,'390W Van Ness Rd NE',390,'W',NULL,'Van Ness','Rd','NE',NULL,'Payables Dept.',NULL,NULL,'Sardis',1,1034,NULL,'43946',NULL,1228,39.646462,-80.96151,0,NULL,NULL,NULL), - (73,167,2,1,0,'390W Van Ness Rd NE',390,'W',NULL,'Van Ness','Rd','NE',NULL,'Payables Dept.',NULL,NULL,'Sardis',1,1034,NULL,'43946',NULL,1228,39.646462,-80.96151,0,NULL,NULL,72), - (74,147,3,1,0,'793R Beech Ave SE',793,'R',NULL,'Beech','Ave','SE',NULL,'c/o OPDC',NULL,NULL,'Butte',1,1025,NULL,'59750',NULL,1228,45.946694,-112.6987,0,NULL,NULL,NULL), - (75,88,3,1,0,'923M Maple St NE',923,'M',NULL,'Maple','St','NE',NULL,'Community Relations',NULL,NULL,'Las Vegas',1,1027,NULL,'89145',NULL,1228,36.167731,-115.26791,0,NULL,NULL,NULL), - (76,127,3,1,0,'751Y States St SE',751,'Y',NULL,'States','St','SE',NULL,'Receiving',NULL,NULL,'Hemlock',1,1031,NULL,'14466',NULL,1228,42.787276,-77.58983,0,NULL,NULL,NULL), - (77,181,3,1,0,'398U College Ave N',398,'U',NULL,'College','Ave','N',NULL,'Cuffe Parade',NULL,NULL,'Minneapolis',1,1022,NULL,'55479',NULL,1228,45.015914,-93.47188,0,NULL,NULL,NULL), - (78,128,2,1,0,'398U College Ave N',398,'U',NULL,'College','Ave','N',NULL,'Cuffe Parade',NULL,NULL,'Minneapolis',1,1022,NULL,'55479',NULL,1228,45.015914,-93.47188,0,NULL,NULL,77), - (79,125,3,1,0,'999P Cadell Pl N',999,'P',NULL,'Cadell','Pl','N',NULL,'Attn: Accounting',NULL,NULL,'Lake City',1,1022,NULL,'55041',NULL,1228,44.42278,-92.2948,0,NULL,NULL,NULL), - (80,117,3,1,0,'935M Caulder Rd NW',935,'M',NULL,'Caulder','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Punxsutawney',1,1037,NULL,'15767',NULL,1228,40.954059,-78.97017,0,NULL,NULL,NULL), - (81,16,2,1,0,'935M Caulder Rd NW',935,'M',NULL,'Caulder','Rd','NW',NULL,'Payables Dept.',NULL,NULL,'Punxsutawney',1,1037,NULL,'15767',NULL,1228,40.954059,-78.97017,0,NULL,NULL,80), - (82,37,3,1,0,'458X Dowlen Ave N',458,'X',NULL,'Dowlen','Ave','N',NULL,'Receiving',NULL,NULL,'Omaha',1,1026,NULL,'68116',NULL,1228,41.294069,-96.15352,0,NULL,NULL,NULL), - (83,136,2,1,0,'458X Dowlen Ave N',458,'X',NULL,'Dowlen','Ave','N',NULL,'Receiving',NULL,NULL,'Omaha',1,1026,NULL,'68116',NULL,1228,41.294069,-96.15352,0,NULL,NULL,82), - (84,179,3,1,0,'285I Bay Pl W',285,'I',NULL,'Bay','Pl','W',NULL,'Mailstop 101',NULL,NULL,'Wakefield',1,1038,NULL,'02880',NULL,1228,41.375317,-71.64393,0,NULL,NULL,NULL), - (85,77,2,1,0,'285I Bay Pl W',285,'I',NULL,'Bay','Pl','W',NULL,'Mailstop 101',NULL,NULL,'Wakefield',1,1038,NULL,'02880',NULL,1228,41.375317,-71.64393,0,NULL,NULL,84), - (86,95,3,1,0,'988C Pine Blvd E',988,'C',NULL,'Pine','Blvd','E',NULL,'Churchgate',NULL,NULL,'Winnemucca',1,1027,NULL,'89445',NULL,1228,41.02951,-117.94402,0,NULL,NULL,NULL), - (87,94,2,1,0,'988C Pine Blvd E',988,'C',NULL,'Pine','Blvd','E',NULL,'Churchgate',NULL,NULL,'Winnemucca',1,1027,NULL,'89445',NULL,1228,41.02951,-117.94402,0,NULL,NULL,86), - (88,166,3,1,0,'466W Beech Way NE',466,'W',NULL,'Beech','Way','NE',NULL,'Churchgate',NULL,NULL,'Sacramento',1,1004,NULL,'94246',NULL,1228,38.377411,-121.444429,0,NULL,NULL,NULL), - (89,89,3,1,0,'568T Maple Way NW',568,'T',NULL,'Maple','Way','NW',NULL,'Receiving',NULL,NULL,'Townsend',1,1048,NULL,'54175',NULL,1228,45.30942,-88.61753,0,NULL,NULL,NULL), - (90,198,2,1,0,'568T Maple Way NW',568,'T',NULL,'Maple','Way','NW',NULL,'Receiving',NULL,NULL,'Townsend',1,1048,NULL,'54175',NULL,1228,45.30942,-88.61753,0,NULL,NULL,89), - (91,60,3,1,0,'55A States Way E',55,'A',NULL,'States','Way','E',NULL,'Donor Relations',NULL,NULL,'Knoxville',1,1041,NULL,'37920',NULL,1228,35.923517,-83.89042,0,NULL,NULL,NULL), - (92,10,3,1,0,'116M Van Ness Pl S',116,'M',NULL,'Van Ness','Pl','S',NULL,'Disbursements',NULL,NULL,'Warwick',1,1038,NULL,'02888',NULL,1228,41.74805,-71.40982,0,NULL,NULL,NULL), - (93,124,3,1,0,'170B Main Rd S',170,'B',NULL,'Main','Rd','S',NULL,'Mailstop 101',NULL,NULL,'Gadsden',1,1000,NULL,'35901',NULL,1228,34.016747,-85.99282,0,NULL,NULL,NULL), - (94,8,3,1,0,'124J Jackson Dr SE',124,'J',NULL,'Jackson','Dr','SE',NULL,'c/o OPDC',NULL,NULL,'Kealakekua',1,1010,NULL,'96750',NULL,1228,19.526845,-155.9215,0,NULL,NULL,NULL), - (95,169,2,0,0,'124J Jackson Dr SE',124,'J',NULL,'Jackson','Dr','SE',NULL,'c/o OPDC',NULL,NULL,'Kealakekua',1,1010,NULL,'96750',NULL,1228,19.526845,-155.9215,0,NULL,NULL,94), - (96,175,3,1,0,'407F Maple Blvd S',407,'F',NULL,'Maple','Blvd','S',NULL,'c/o PO Plus',NULL,NULL,'Trenton',1,1029,NULL,'08695',NULL,1228,40.280531,-74.712018,0,NULL,NULL,NULL), - (97,189,1,1,0,'659S Jackson Pl SE',659,'S',NULL,'Jackson','Pl','SE',NULL,NULL,NULL,NULL,'Carson City',1,1027,NULL,'89702',NULL,1228,39.135503,-119.75875,0,NULL,NULL,47), - (98,178,1,1,0,'659S Jackson Pl SE',659,'S',NULL,'Jackson','Pl','SE',NULL,NULL,NULL,NULL,'Carson City',1,1027,NULL,'89702',NULL,1228,39.135503,-119.75875,0,NULL,NULL,47), - (99,16,1,0,0,'659S Jackson Pl SE',659,'S',NULL,'Jackson','Pl','SE',NULL,NULL,NULL,NULL,'Carson City',1,1027,NULL,'89702',NULL,1228,39.135503,-119.75875,0,NULL,NULL,47), - (100,69,1,0,0,'659S Jackson Pl SE',659,'S',NULL,'Jackson','Pl','SE',NULL,NULL,NULL,NULL,'Carson City',1,1027,NULL,'89702',NULL,1228,39.135503,-119.75875,0,NULL,NULL,47), - (101,94,1,0,0,'537C Beech Way NE',537,'C',NULL,'Beech','Way','NE',NULL,NULL,NULL,NULL,'Bulpitt',1,1012,NULL,'62517',NULL,1228,39.591537,-89.42755,0,NULL,NULL,48), - (102,85,1,1,0,'537C Beech Way NE',537,'C',NULL,'Beech','Way','NE',NULL,NULL,NULL,NULL,'Bulpitt',1,1012,NULL,'62517',NULL,1228,39.591537,-89.42755,0,NULL,NULL,48), - (103,107,1,1,0,'537C Beech Way NE',537,'C',NULL,'Beech','Way','NE',NULL,NULL,NULL,NULL,'Bulpitt',1,1012,NULL,'62517',NULL,1228,39.591537,-89.42755,0,NULL,NULL,48), - (104,57,1,1,0,'505Q Caulder Path S',505,'Q',NULL,'Caulder','Path','S',NULL,NULL,NULL,NULL,'Eugene',1,1036,NULL,'97405',NULL,1228,44.004396,-123.12203,0,NULL,NULL,NULL), - (105,41,1,1,0,'16T Maple Path W',16,'T',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Jacksonville Beach',1,1008,NULL,'32250',NULL,1228,30.284641,-81.39844,0,NULL,NULL,49), - (106,140,1,1,0,'16T Maple Path W',16,'T',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Jacksonville Beach',1,1008,NULL,'32250',NULL,1228,30.284641,-81.39844,0,NULL,NULL,49), - (107,34,1,1,0,'16T Maple Path W',16,'T',NULL,'Maple','Path','W',NULL,NULL,NULL,NULL,'Jacksonville Beach',1,1008,NULL,'32250',NULL,1228,30.284641,-81.39844,0,NULL,NULL,49), - (108,23,1,1,0,'973W El Camino Blvd W',973,'W',NULL,'El Camino','Blvd','W',NULL,NULL,NULL,NULL,'Lakehurst',1,1029,NULL,'08733',NULL,1228,40.017117,-74.30491,0,NULL,NULL,NULL), - (109,13,1,1,0,'331Q El Camino Way NE',331,'Q',NULL,'El Camino','Way','NE',NULL,NULL,NULL,NULL,'Clanton',1,1000,NULL,'35026',NULL,1228,32.859262,-86.638819,0,NULL,NULL,50), - (110,62,1,1,0,'331Q El Camino Way NE',331,'Q',NULL,'El Camino','Way','NE',NULL,NULL,NULL,NULL,'Clanton',1,1000,NULL,'35026',NULL,1228,32.859262,-86.638819,0,NULL,NULL,50), - (111,2,1,1,0,'331Q El Camino Way NE',331,'Q',NULL,'El Camino','Way','NE',NULL,NULL,NULL,NULL,'Clanton',1,1000,NULL,'35026',NULL,1228,32.859262,-86.638819,0,NULL,NULL,50), - (112,5,1,1,0,'331Q El Camino Way NE',331,'Q',NULL,'El Camino','Way','NE',NULL,NULL,NULL,NULL,'Clanton',1,1000,NULL,'35026',NULL,1228,32.859262,-86.638819,0,NULL,NULL,50), - (113,47,1,1,0,'133C Lincoln Rd SE',133,'C',NULL,'Lincoln','Rd','SE',NULL,NULL,NULL,NULL,'Tuscumbia',1,1024,NULL,'65082',NULL,1228,38.217129,-92.43221,0,NULL,NULL,51), - (114,46,1,1,0,'133C Lincoln Rd SE',133,'C',NULL,'Lincoln','Rd','SE',NULL,NULL,NULL,NULL,'Tuscumbia',1,1024,NULL,'65082',NULL,1228,38.217129,-92.43221,0,NULL,NULL,51), - (115,103,1,1,0,'133C Lincoln Rd SE',133,'C',NULL,'Lincoln','Rd','SE',NULL,NULL,NULL,NULL,'Tuscumbia',1,1024,NULL,'65082',NULL,1228,38.217129,-92.43221,0,NULL,NULL,51), - (116,162,1,1,0,'526L College Ave NE',526,'L',NULL,'College','Ave','NE',NULL,NULL,NULL,NULL,'Alpharetta',1,1009,NULL,'30009',NULL,1228,33.844371,-84.47405,0,NULL,NULL,NULL), - (117,24,1,1,0,'593H Bay Pl W',593,'H',NULL,'Bay','Pl','W',NULL,NULL,NULL,NULL,'Stoneville',1,1032,NULL,'27048',NULL,1228,36.47266,-79.90522,0,NULL,NULL,52), - (118,112,1,1,0,'593H Bay Pl W',593,'H',NULL,'Bay','Pl','W',NULL,NULL,NULL,NULL,'Stoneville',1,1032,NULL,'27048',NULL,1228,36.47266,-79.90522,0,NULL,NULL,52), - (119,151,1,1,0,'593H Bay Pl W',593,'H',NULL,'Bay','Pl','W',NULL,NULL,NULL,NULL,'Stoneville',1,1032,NULL,'27048',NULL,1228,36.47266,-79.90522,0,NULL,NULL,52), - (120,118,1,1,0,'593H Bay Pl W',593,'H',NULL,'Bay','Pl','W',NULL,NULL,NULL,NULL,'Stoneville',1,1032,NULL,'27048',NULL,1228,36.47266,-79.90522,0,NULL,NULL,52), - (121,155,1,1,0,'798M Beech St NW',798,'M',NULL,'Beech','St','NW',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79184',NULL,1228,35.401475,-101.895089,0,NULL,NULL,53), - (122,193,1,1,0,'798M Beech St NW',798,'M',NULL,'Beech','St','NW',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79184',NULL,1228,35.401475,-101.895089,0,NULL,NULL,53), - (123,9,1,1,0,'798M Beech St NW',798,'M',NULL,'Beech','St','NW',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79184',NULL,1228,35.401475,-101.895089,0,NULL,NULL,53), - (124,70,1,1,0,'798M Beech St NW',798,'M',NULL,'Beech','St','NW',NULL,NULL,NULL,NULL,'Amarillo',1,1042,NULL,'79184',NULL,1228,35.401475,-101.895089,0,NULL,NULL,53), - (125,15,1,1,0,'586Z Martin Luther King Ln W',586,'Z',NULL,'Martin Luther King','Ln','W',NULL,NULL,NULL,NULL,'Santa Maria',1,1004,NULL,'93458',NULL,1228,34.956344,-120.45243,0,NULL,NULL,54), - (126,186,1,1,0,'586Z Martin Luther King Ln W',586,'Z',NULL,'Martin Luther King','Ln','W',NULL,NULL,NULL,NULL,'Santa Maria',1,1004,NULL,'93458',NULL,1228,34.956344,-120.45243,0,NULL,NULL,54), - (127,188,1,1,0,'586Z Martin Luther King Ln W',586,'Z',NULL,'Martin Luther King','Ln','W',NULL,NULL,NULL,NULL,'Santa Maria',1,1004,NULL,'93458',NULL,1228,34.956344,-120.45243,0,NULL,NULL,54), - (128,58,1,1,0,'300S Dowlen Dr NW',300,'S',NULL,'Dowlen','Dr','NW',NULL,NULL,NULL,NULL,'York Beach',1,1018,NULL,'03910',NULL,1228,43.211674,-70.73201,0,NULL,NULL,NULL), - (129,137,1,1,0,'348F College Blvd E',348,'F',NULL,'College','Blvd','E',NULL,NULL,NULL,NULL,'Westmont',1,1012,NULL,'60559',NULL,1228,41.795358,-87.97778,0,NULL,NULL,55), - (130,45,1,1,0,'348F College Blvd E',348,'F',NULL,'College','Blvd','E',NULL,NULL,NULL,NULL,'Westmont',1,1012,NULL,'60559',NULL,1228,41.795358,-87.97778,0,NULL,NULL,55), - (131,145,1,1,0,'348F College Blvd E',348,'F',NULL,'College','Blvd','E',NULL,NULL,NULL,NULL,'Westmont',1,1012,NULL,'60559',NULL,1228,41.795358,-87.97778,0,NULL,NULL,55), - (132,22,1,1,0,'499G Jackson Path S',499,'G',NULL,'Jackson','Path','S',NULL,NULL,NULL,NULL,'Barberville',1,1008,NULL,'32105',NULL,1228,29.200508,-81.406458,0,NULL,NULL,NULL), - (133,143,1,1,0,'261O States Dr S',261,'O',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,56), - (134,116,1,1,0,'261O States Dr S',261,'O',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,56), - (135,83,1,1,0,'261O States Dr S',261,'O',NULL,'States','Dr','S',NULL,NULL,NULL,NULL,'Odessa',1,1042,NULL,'79769',NULL,1228,31.746572,-102.566993,0,NULL,NULL,56), - (136,159,1,1,0,'148B Lincoln Ave SW',148,'B',NULL,'Lincoln','Ave','SW',NULL,NULL,NULL,NULL,'Southfield',1,1021,NULL,'48086',NULL,1228,42.660091,-83.3863,0,NULL,NULL,NULL), - (137,130,1,1,0,'810H Pine Pl NW',810,'H',NULL,'Pine','Pl','NW',NULL,NULL,NULL,NULL,'Pflugerville',1,1042,NULL,'78660',NULL,1228,30.450122,-97.623,0,NULL,NULL,57), - (138,192,1,1,0,'810H Pine Pl NW',810,'H',NULL,'Pine','Pl','NW',NULL,NULL,NULL,NULL,'Pflugerville',1,1042,NULL,'78660',NULL,1228,30.450122,-97.623,0,NULL,NULL,57), - (139,68,1,1,0,'810H Pine Pl NW',810,'H',NULL,'Pine','Pl','NW',NULL,NULL,NULL,NULL,'Pflugerville',1,1042,NULL,'78660',NULL,1228,30.450122,-97.623,0,NULL,NULL,57), - (140,148,1,1,0,'609C Main Ave N',609,'C',NULL,'Main','Ave','N',NULL,NULL,NULL,NULL,'Hackensack',1,1029,NULL,'07602',NULL,1228,40.948054,-74.083231,0,NULL,NULL,NULL), - (141,18,1,1,0,'30Z Bay Ln SW',30,'Z',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Cook Springs',1,1000,NULL,'35052',NULL,1228,33.593115,-86.4084,0,NULL,NULL,58), - (142,158,1,1,0,'30Z Bay Ln SW',30,'Z',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Cook Springs',1,1000,NULL,'35052',NULL,1228,33.593115,-86.4084,0,NULL,NULL,58), - (143,136,1,0,0,'30Z Bay Ln SW',30,'Z',NULL,'Bay','Ln','SW',NULL,NULL,NULL,NULL,'Cook Springs',1,1000,NULL,'35052',NULL,1228,33.593115,-86.4084,0,NULL,NULL,58), - (144,139,1,1,0,'633L Northpoint St NW',633,'L',NULL,'Northpoint','St','NW',NULL,NULL,NULL,NULL,'Miami',1,1008,NULL,'33159',NULL,1228,25.558428,-80.458168,0,NULL,NULL,NULL), - (145,40,1,1,0,'658A El Camino Pl NW',658,'A',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Taiban',1,1030,NULL,'88134',NULL,1228,34.429099,-103.96633,0,NULL,NULL,59), - (146,63,1,1,0,'658A El Camino Pl NW',658,'A',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Taiban',1,1030,NULL,'88134',NULL,1228,34.429099,-103.96633,0,NULL,NULL,59), - (147,194,1,1,0,'658A El Camino Pl NW',658,'A',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Taiban',1,1030,NULL,'88134',NULL,1228,34.429099,-103.96633,0,NULL,NULL,59), - (148,128,1,0,0,'658A El Camino Pl NW',658,'A',NULL,'El Camino','Pl','NW',NULL,NULL,NULL,NULL,'Taiban',1,1030,NULL,'88134',NULL,1228,34.429099,-103.96633,0,NULL,NULL,59), - (149,119,1,1,0,'58U Second Blvd S',58,'U',NULL,'Second','Blvd','S',NULL,NULL,NULL,NULL,'Waverly',1,1008,NULL,'33877',NULL,1228,27.982891,-81.61743,0,NULL,NULL,60), - (150,157,1,1,0,'58U Second Blvd S',58,'U',NULL,'Second','Blvd','S',NULL,NULL,NULL,NULL,'Waverly',1,1008,NULL,'33877',NULL,1228,27.982891,-81.61743,0,NULL,NULL,60), - (151,197,1,1,0,'58U Second Blvd S',58,'U',NULL,'Second','Blvd','S',NULL,NULL,NULL,NULL,'Waverly',1,1008,NULL,'33877',NULL,1228,27.982891,-81.61743,0,NULL,NULL,60), - (152,113,1,1,0,'771E Woodbridge Pl SW',771,'E',NULL,'Woodbridge','Pl','SW',NULL,NULL,NULL,NULL,'Louann',1,1003,NULL,'71751',NULL,1228,33.397936,-92.77116,0,NULL,NULL,NULL), - (153,67,1,1,0,'708S Bay Dr SE',708,'S',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Acampo',1,1004,NULL,'95220',NULL,1228,38.200193,-121.23505,0,NULL,NULL,61), - (154,74,1,1,0,'708S Bay Dr SE',708,'S',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Acampo',1,1004,NULL,'95220',NULL,1228,38.200193,-121.23505,0,NULL,NULL,61), - (155,32,1,1,0,'708S Bay Dr SE',708,'S',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Acampo',1,1004,NULL,'95220',NULL,1228,38.200193,-121.23505,0,NULL,NULL,61), - (156,20,1,1,0,'708S Bay Dr SE',708,'S',NULL,'Bay','Dr','SE',NULL,NULL,NULL,NULL,'Acampo',1,1004,NULL,'95220',NULL,1228,38.200193,-121.23505,0,NULL,NULL,61), - (157,185,1,1,0,'229C Caulder Pl W',229,'C',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Camp Hill',1,1037,NULL,'17089',NULL,1228,40.269738,-76.936046,0,NULL,NULL,62), - (158,180,1,1,0,'229C Caulder Pl W',229,'C',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Camp Hill',1,1037,NULL,'17089',NULL,1228,40.269738,-76.936046,0,NULL,NULL,62), - (159,54,1,1,0,'229C Caulder Pl W',229,'C',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Camp Hill',1,1037,NULL,'17089',NULL,1228,40.269738,-76.936046,0,NULL,NULL,62), - (160,120,1,1,0,'229C Caulder Pl W',229,'C',NULL,'Caulder','Pl','W',NULL,NULL,NULL,NULL,'Camp Hill',1,1037,NULL,'17089',NULL,1228,40.269738,-76.936046,0,NULL,NULL,62), - (161,132,1,1,0,'582I College Rd E',582,'I',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Jenkins Bridge',1,1045,NULL,'23399',NULL,1228,37.916218,-75.616754,0,NULL,NULL,63), - (162,29,1,1,0,'582I College Rd E',582,'I',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Jenkins Bridge',1,1045,NULL,'23399',NULL,1228,37.916218,-75.616754,0,NULL,NULL,63), - (163,7,1,1,0,'582I College Rd E',582,'I',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Jenkins Bridge',1,1045,NULL,'23399',NULL,1228,37.916218,-75.616754,0,NULL,NULL,63), - (164,198,1,0,0,'582I College Rd E',582,'I',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'Jenkins Bridge',1,1045,NULL,'23399',NULL,1228,37.916218,-75.616754,0,NULL,NULL,63), - (165,39,1,0,0,'754P El Camino Path E',754,'P',NULL,'El Camino','Path','E',NULL,NULL,NULL,NULL,'Fairfield',1,1006,NULL,'06890',NULL,1228,41.142754,-73.288247,0,NULL,NULL,64), - (166,154,1,1,0,'754P El Camino Path E',754,'P',NULL,'El Camino','Path','E',NULL,NULL,NULL,NULL,'Fairfield',1,1006,NULL,'06890',NULL,1228,41.142754,-73.288247,0,NULL,NULL,64), - (167,96,1,1,0,'754P El Camino Path E',754,'P',NULL,'El Camino','Path','E',NULL,NULL,NULL,NULL,'Fairfield',1,1006,NULL,'06890',NULL,1228,41.142754,-73.288247,0,NULL,NULL,64), - (168,42,1,1,0,'754P El Camino Path E',754,'P',NULL,'El Camino','Path','E',NULL,NULL,NULL,NULL,'Fairfield',1,1006,NULL,'06890',NULL,1228,41.142754,-73.288247,0,NULL,NULL,64), - (169,199,1,1,0,'902N States Pl W',902,'N',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Glace',1,1047,NULL,'24942',NULL,1228,37.552029,-80.539672,0,NULL,NULL,65), - (170,48,1,1,0,'902N States Pl W',902,'N',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Glace',1,1047,NULL,'24942',NULL,1228,37.552029,-80.539672,0,NULL,NULL,65), - (171,14,1,1,0,'902N States Pl W',902,'N',NULL,'States','Pl','W',NULL,NULL,NULL,NULL,'Glace',1,1047,NULL,'24942',NULL,1228,37.552029,-80.539672,0,NULL,NULL,65), - (172,6,1,1,0,'842F Woodbridge Path W',842,'F',NULL,'Woodbridge','Path','W',NULL,NULL,NULL,NULL,'Mattoon',1,1012,NULL,'61938',NULL,1228,39.474889,-88.37421,0,NULL,NULL,NULL), - (173,182,1,1,0,'551F Bay Dr W',551,'F',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Olivia',1,1032,NULL,'28368',NULL,1228,35.35149,-79.10586,0,NULL,NULL,66), - (174,30,1,1,0,'551F Bay Dr W',551,'F',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Olivia',1,1032,NULL,'28368',NULL,1228,35.35149,-79.10586,0,NULL,NULL,66), - (175,131,1,1,0,'551F Bay Dr W',551,'F',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Olivia',1,1032,NULL,'28368',NULL,1228,35.35149,-79.10586,0,NULL,NULL,66), - (176,160,1,1,0,'551F Bay Dr W',551,'F',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Olivia',1,1032,NULL,'28368',NULL,1228,35.35149,-79.10586,0,NULL,NULL,66), - (177,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), - (178,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), - (179,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,154,1,1,0,'54O States Blvd NW',54,'O',NULL,'States','Blvd','NW',NULL,NULL,NULL,NULL,'San Bernardino',1,1004,NULL,'92420',NULL,1228,34.839964,-115.967051,0,NULL,NULL,NULL), + (2,4,1,1,0,'290M Maple Path SW',290,'M',NULL,'Maple','Path','SW',NULL,NULL,NULL,NULL,'Adel',1,1009,NULL,'31620',NULL,1228,31.133004,-83.42736,0,NULL,NULL,NULL), + (3,38,1,1,0,'666D El Camino St E',666,'D',NULL,'El Camino','St','E',NULL,NULL,NULL,NULL,'Lenzburg',1,1012,NULL,'62255',NULL,1228,38.303147,-89.79161,0,NULL,NULL,NULL), + (4,182,1,1,0,'237Q Northpoint St S',237,'Q',NULL,'Northpoint','St','S',NULL,NULL,NULL,NULL,'Strang',1,1026,NULL,'68444',NULL,1228,40.409283,-97.58391,0,NULL,NULL,NULL), + (5,135,1,1,0,'192M Maple Ave N',192,'M',NULL,'Maple','Ave','N',NULL,NULL,NULL,NULL,'Fond Du Lac',1,1048,NULL,'54937',NULL,1228,43.785391,-88.48704,0,NULL,NULL,NULL), + (6,99,1,1,0,'491J Beech Ave NW',491,'J',NULL,'Beech','Ave','NW',NULL,NULL,NULL,NULL,'Lexington',1,1031,NULL,'12452',NULL,1228,42.223407,-74.386635,0,NULL,NULL,NULL), + (7,98,1,1,0,'746N College Blvd SW',746,'N',NULL,'College','Blvd','SW',NULL,NULL,NULL,NULL,'Newell',1,1032,NULL,'28126',NULL,1228,35.276794,-80.716495,0,NULL,NULL,NULL), + (8,31,1,1,0,'989A Lincoln Dr NE',989,'A',NULL,'Lincoln','Dr','NE',NULL,NULL,NULL,NULL,'Kansas City',1,1024,NULL,'64137',NULL,1228,38.929356,-94.53932,0,NULL,NULL,NULL), + (9,105,1,1,0,'394P Pine St SW',394,'P',NULL,'Pine','St','SW',NULL,NULL,NULL,NULL,'Osage',1,1022,NULL,'56570',NULL,1228,46.895156,-95.36174,0,NULL,NULL,NULL), + (10,6,1,1,0,'259A Northpoint Ave N',259,'A',NULL,'Northpoint','Ave','N',NULL,NULL,NULL,NULL,'Forbes',1,1022,NULL,'55738',NULL,1228,47.296271,-92.65485,0,NULL,NULL,NULL), + (11,19,1,1,0,'563X Jackson St SW',563,'X',NULL,'Jackson','St','SW',NULL,NULL,NULL,NULL,'McNabb',1,1012,NULL,'61335',NULL,1228,41.168946,-89.2205,0,NULL,NULL,NULL), + (12,128,1,1,0,'58B Green Ln NE',58,'B',NULL,'Green','Ln','NE',NULL,NULL,NULL,NULL,'Neapolis',1,1034,NULL,'43547',NULL,1228,41.491702,-83.87108,0,NULL,NULL,NULL), + (13,47,1,1,0,'662N Caulder Pl SW',662,'N',NULL,'Caulder','Pl','SW',NULL,NULL,NULL,NULL,'Fargo',1,1033,NULL,'58124',NULL,1228,46.934596,-97.229718,0,NULL,NULL,NULL), + (14,10,1,1,0,'230S Second Rd S',230,'S',NULL,'Second','Rd','S',NULL,NULL,NULL,NULL,'Franklin',1,1009,NULL,'30217',NULL,1228,33.298014,-85.12243,0,NULL,NULL,NULL), + (15,152,1,1,0,'205I Woodbridge Pl S',205,'I',NULL,'Woodbridge','Pl','S',NULL,NULL,NULL,NULL,'True',1,1047,NULL,'25988',NULL,1228,37.648541,-80.877395,0,NULL,NULL,NULL), + (16,64,1,1,0,'563Q Lincoln Ave W',563,'Q',NULL,'Lincoln','Ave','W',NULL,NULL,NULL,NULL,'Longville',1,1022,NULL,'56655',NULL,1228,46.975876,-94.21508,0,NULL,NULL,NULL), + (17,56,1,1,0,'773R Beech Ave W',773,'R',NULL,'Beech','Ave','W',NULL,NULL,NULL,NULL,'Cale',1,1003,NULL,'71828',NULL,1228,33.70082,-93.294126,0,NULL,NULL,NULL), + (18,130,1,1,0,'949J Woodbridge Blvd SE',949,'J',NULL,'Woodbridge','Blvd','SE',NULL,NULL,NULL,NULL,'Bovill',1,1011,NULL,'83806',NULL,1228,46.868617,-116.39726,0,NULL,NULL,NULL), + (19,169,1,1,0,'675A Bay Blvd W',675,'A',NULL,'Bay','Blvd','W',NULL,NULL,NULL,NULL,'Long Valley',1,1040,NULL,'57547',NULL,1228,43.501449,-101.51685,0,NULL,NULL,NULL), + (20,101,1,1,0,'708D Van Ness Ln NW',708,'D',NULL,'Van Ness','Ln','NW',NULL,NULL,NULL,NULL,'Joplin',1,1025,NULL,'59531',NULL,1228,48.675352,-110.8269,0,NULL,NULL,NULL), + (21,201,1,1,0,'759F Green Blvd NW',759,'F',NULL,'Green','Blvd','NW',NULL,NULL,NULL,NULL,'Idanha',1,1036,NULL,'97350',NULL,1228,44.696507,-122.07246,0,NULL,NULL,NULL), + (22,88,1,1,0,'708Z Maple Ave NE',708,'Z',NULL,'Maple','Ave','NE',NULL,NULL,NULL,NULL,'Cordova',1,1001,NULL,'99574',NULL,1228,60.474512,-145.40256,0,NULL,NULL,NULL), + (23,104,1,1,0,'282L Maple Rd W',282,'L',NULL,'Maple','Rd','W',NULL,NULL,NULL,NULL,'Augusta',1,1048,NULL,'54722',NULL,1228,44.699923,-91.12509,0,NULL,NULL,NULL), + (24,117,1,1,0,'100X Beech Dr S',100,'X',NULL,'Beech','Dr','S',NULL,NULL,NULL,NULL,'Broadway',1,1045,NULL,'22815',NULL,1228,38.619654,-78.80513,0,NULL,NULL,NULL), + (25,137,1,1,0,'414C Van Ness St W',414,'C',NULL,'Van Ness','St','W',NULL,NULL,NULL,NULL,'Rowlett',1,1042,NULL,'75089',NULL,1228,32.923924,-96.54697,0,NULL,NULL,NULL), + (26,75,1,1,0,'459R College Dr NW',459,'R',NULL,'College','Dr','NW',NULL,NULL,NULL,NULL,'Spokane',1,1046,NULL,'99208',NULL,1228,47.740491,-117.43916,0,NULL,NULL,NULL), + (27,187,1,1,0,'598D College Rd E',598,'D',NULL,'College','Rd','E',NULL,NULL,NULL,NULL,'San Francisco',1,1004,NULL,'94188',NULL,1228,37.784827,-122.727802,0,NULL,NULL,NULL), + (28,114,1,1,0,'540H Cadell Path N',540,'H',NULL,'Cadell','Path','N',NULL,NULL,NULL,NULL,'Big Sandy',1,1042,NULL,'75755',NULL,1228,32.649482,-95.1259,0,NULL,NULL,NULL), + (29,41,1,1,0,'626L Maple Ln S',626,'L',NULL,'Maple','Ln','S',NULL,NULL,NULL,NULL,'Spalding',1,1026,NULL,'68665',NULL,1228,41.693462,-98.38523,0,NULL,NULL,NULL), + (30,196,1,1,0,'739F Northpoint Blvd SE',739,'F',NULL,'Northpoint','Blvd','SE',NULL,NULL,NULL,NULL,'Watertown',1,1031,NULL,'13601',NULL,1228,43.976735,-75.91199,0,NULL,NULL,NULL), + (31,23,1,1,0,'687U States Pl SE',687,'U',NULL,'States','Pl','SE',NULL,NULL,NULL,NULL,'Cincinnati',1,1034,NULL,'45238',NULL,1228,39.112169,-84.60849,0,NULL,NULL,NULL), + (32,136,1,1,0,'275W Caulder Ave SE',275,'W',NULL,'Caulder','Ave','SE',NULL,NULL,NULL,NULL,'Crawford',1,1042,NULL,'76638',NULL,1228,31.555885,-97.41024,0,NULL,NULL,NULL), + (33,84,1,1,0,'248E El Camino Rd W',248,'E',NULL,'El Camino','Rd','W',NULL,NULL,NULL,NULL,'Ringwood',1,1035,NULL,'73768',NULL,1228,36.383753,-98.27411,0,NULL,NULL,NULL), + (34,164,1,1,0,'507P Pine Ave NW',507,'P',NULL,'Pine','Ave','NW',NULL,NULL,NULL,NULL,'Post Falls',1,1011,NULL,'83854',NULL,1228,47.720306,-116.94564,0,NULL,NULL,NULL), + (35,81,1,1,0,'569X Green Path W',569,'X',NULL,'Green','Path','W',NULL,NULL,NULL,NULL,'Centreville',1,1021,NULL,'49032',NULL,1228,41.924331,-85.51068,0,NULL,NULL,NULL), + (36,20,1,1,0,'184X Maple Rd W',184,'X',NULL,'Maple','Rd','W',NULL,NULL,NULL,NULL,'Durango',1,1005,NULL,'81302',NULL,1228,37.357249,-107.935945,0,NULL,NULL,NULL), + (37,189,1,1,0,'82V Jackson Dr NE',82,'V',NULL,'Jackson','Dr','NE',NULL,NULL,NULL,NULL,'Kosciusko',1,1023,NULL,'39090',NULL,1228,33.038079,-89.56318,0,NULL,NULL,NULL), + (38,5,1,1,0,'511J College Path SW',511,'J',NULL,'College','Path','SW',NULL,NULL,NULL,NULL,'Union',1,1029,NULL,'07083',NULL,1228,40.695401,-74.26933,0,NULL,NULL,NULL), + (39,132,1,1,0,'989Q Main Blvd S',989,'Q',NULL,'Main','Blvd','S',NULL,NULL,NULL,NULL,'University',1,1023,NULL,'38677',NULL,1228,34.366302,-89.53721,0,NULL,NULL,NULL), + (40,139,1,1,0,'202U Van Ness Ave S',202,'U',NULL,'Van Ness','Ave','S',NULL,NULL,NULL,NULL,'Shelby',1,1025,NULL,'59400',NULL,1228,48.643651,-111.745326,0,NULL,NULL,NULL), + (41,119,1,1,0,'341C Bay Dr SW',341,'C',NULL,'Bay','Dr','SW',NULL,NULL,NULL,NULL,'Olympia',1,1046,NULL,'98508',NULL,1228,46.978118,-122.702393,0,NULL,NULL,NULL), + (42,79,1,1,0,'670I Green Rd W',670,'I',NULL,'Green','Rd','W',NULL,NULL,NULL,NULL,'Columbia',1,1039,NULL,'29221',NULL,1228,34.005992,-80.970766,0,NULL,NULL,NULL), + (43,148,1,1,0,'100E Main Way NW',100,'E',NULL,'Main','Way','NW',NULL,NULL,NULL,NULL,'Yatahey',1,1030,NULL,'87375',NULL,1228,35.680001,-108.79265,0,NULL,NULL,NULL), + (44,118,1,1,0,'931K Caulder Way SW',931,'K',NULL,'Caulder','Way','SW',NULL,NULL,NULL,NULL,'Leander',1,1016,NULL,'41228',NULL,1228,37.752473,-82.87484,0,NULL,NULL,NULL), + (45,134,1,1,0,'370N Beech Dr N',370,'N',NULL,'Beech','Dr','N',NULL,NULL,NULL,NULL,'Vero Beach',1,1008,NULL,'32962',NULL,1228,27.582151,-80.39141,0,NULL,NULL,NULL), + (46,90,1,1,0,'614B Second Blvd S',614,'B',NULL,'Second','Blvd','S',NULL,NULL,NULL,NULL,'Troy',1,1021,NULL,'48083',NULL,1228,42.556943,-83.11506,0,NULL,NULL,NULL), + (47,77,1,1,0,'809D Van Ness Pl SW',809,'D',NULL,'Van Ness','Pl','SW',NULL,NULL,NULL,NULL,'San Antonio',1,1042,NULL,'78223',NULL,1228,29.352352,-98.43215,0,NULL,NULL,NULL), + (48,171,1,1,0,'344X Bay Blvd SE',344,'X',NULL,'Bay','Blvd','SE',NULL,NULL,NULL,NULL,'Halfway',1,1016,NULL,'42150',NULL,1228,36.782131,-86.184088,0,NULL,NULL,NULL), + (49,73,1,1,0,'736L Lincoln Pl N',736,'L',NULL,'Lincoln','Pl','N',NULL,NULL,NULL,NULL,'Roanoke',1,1045,NULL,'24008',NULL,1228,37.274175,-79.95786,0,NULL,NULL,NULL), + (50,25,1,1,0,'344L States St W',344,'L',NULL,'States','St','W',NULL,NULL,NULL,NULL,'Stanford',1,1016,NULL,'40484',NULL,1228,37.520836,-84.6735,0,NULL,NULL,NULL), + (51,108,1,1,0,'259B Van Ness Ave S',259,'B',NULL,'Van Ness','Ave','S',NULL,NULL,NULL,NULL,'Darwin',1,1022,NULL,'55324',NULL,1228,45.057766,-94.40368,0,NULL,NULL,NULL), + (52,149,1,1,0,'765O Lincoln Blvd S',765,'O',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Stockton',1,1024,NULL,'65785',NULL,1228,37.703022,-93.80653,0,NULL,NULL,NULL), + (53,151,1,1,0,'369H Maple Way N',369,'H',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Morgan',1,1043,NULL,'84050',NULL,1228,41.059771,-111.71141,0,NULL,NULL,NULL), + (54,109,1,1,0,'352S States Pl NE',352,'S',NULL,'States','Pl','NE',NULL,NULL,NULL,NULL,'Brushton',1,1031,NULL,'12916',NULL,1228,44.830736,-74.51434,0,NULL,NULL,NULL), + (55,127,1,1,0,'485J Cadell Path N',485,'J',NULL,'Cadell','Path','N',NULL,NULL,NULL,NULL,'Alto',1,1009,NULL,'30596',NULL,1228,34.629391,-83.509934,0,NULL,NULL,NULL), + (56,12,1,1,0,'555K Main Blvd SW',555,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Jacobs',1,1016,NULL,'41150',NULL,1228,38.225087,-83.242129,0,NULL,NULL,NULL), + (57,124,1,1,0,'2X Caulder St NE',2,'X',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Baton Rouge',1,1017,NULL,'70879',NULL,1228,30.51589,-91.080373,0,NULL,NULL,NULL), + (58,30,1,1,0,'493M Bay St NW',493,'M',NULL,'Bay','St','NW',NULL,NULL,NULL,NULL,'Mexico',1,1018,NULL,'04257',NULL,1228,44.556984,-70.53351,0,NULL,NULL,NULL), + (59,51,1,1,0,'121H Second St W',121,'H',NULL,'Second','St','W',NULL,NULL,NULL,NULL,'Columbia',1,1039,NULL,'29226',NULL,1228,34.005992,-80.970766,0,NULL,NULL,NULL), + (60,50,1,1,0,'566P Second Ln S',566,'P',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Hamilton',1,1034,NULL,'45020',NULL,1228,39.440956,-84.575746,0,NULL,NULL,NULL), + (61,42,1,1,0,'768E Beech Ave S',768,'E',NULL,'Beech','Ave','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60639',NULL,1228,41.921431,-87.75415,0,NULL,NULL,NULL), + (62,112,1,1,0,'347M Dowlen Way W',347,'M',NULL,'Dowlen','Way','W',NULL,NULL,NULL,NULL,'Fountain Run',1,1016,NULL,'42133',NULL,1228,36.721319,-85.96139,0,NULL,NULL,NULL), + (63,138,1,1,0,'355S Second Way S',355,'S',NULL,'Second','Way','S',NULL,NULL,NULL,NULL,'Lake Worth',1,1008,NULL,'33466',NULL,1228,26.645895,-80.430269,0,NULL,NULL,NULL), + (64,91,1,1,0,'506C Beech St N',506,'C',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Rock Tavern',1,1031,NULL,'12575',NULL,1228,41.478722,-74.15626,0,NULL,NULL,NULL), + (65,87,1,1,0,'7A States St N',7,'A',NULL,'States','St','N',NULL,NULL,NULL,NULL,'Bryn Mawr',1,1037,NULL,'19010',NULL,1228,40.02371,-75.32764,0,NULL,NULL,NULL), + (66,63,1,1,0,'751V Pine St SE',751,'V',NULL,'Pine','St','SE',NULL,NULL,NULL,NULL,'Temple',1,1035,NULL,'73568',NULL,1228,34.273576,-98.23377,0,NULL,NULL,NULL), + (67,192,1,1,0,'483C Jackson Path NE',483,'C',NULL,'Jackson','Path','NE',NULL,NULL,NULL,NULL,'Lohrville',1,1014,NULL,'51453',NULL,1228,42.27586,-94.54041,0,NULL,NULL,NULL), + (68,85,1,1,0,'413R Bay Dr W',413,'R',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Opelousas',1,1017,NULL,'70571',NULL,1228,30.57445,-92.086077,0,NULL,NULL,NULL), + (69,167,1,1,0,'41I Northpoint St SE',41,'I',NULL,'Northpoint','St','SE',NULL,NULL,NULL,NULL,'Horton',1,1024,NULL,'64751',NULL,1228,37.946913,-94.42222,0,NULL,NULL,NULL), + (70,52,1,1,0,'439I Bay Ave SW',439,'I',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Alto',1,1021,NULL,'49302',NULL,1228,42.834137,-85.41889,0,NULL,NULL,NULL), + (71,156,1,1,0,'722Z Martin Luther King Path S',722,'Z',NULL,'Martin Luther King','Path','S',NULL,NULL,NULL,NULL,'Montreal',1,1024,NULL,'65591',NULL,1228,37.97957,-92.59117,0,NULL,NULL,NULL), + (72,82,3,1,0,'276O Jackson St SW',276,'O',NULL,'Jackson','St','SW',NULL,'Mailstop 101',NULL,NULL,'West Van Lear',1,1016,NULL,'41268',NULL,1228,37.789291,-82.78437,0,NULL,NULL,NULL), + (73,153,2,1,0,'276O Jackson St SW',276,'O',NULL,'Jackson','St','SW',NULL,'Mailstop 101',NULL,NULL,'West Van Lear',1,1016,NULL,'41268',NULL,1228,37.789291,-82.78437,0,NULL,NULL,72), + (74,48,3,1,0,'63G Second St SW',63,'G',NULL,'Second','St','SW',NULL,'Receiving',NULL,NULL,'Kansas City',1,1024,NULL,'64136',NULL,1228,39.01543,-94.39967,0,NULL,NULL,NULL), + (75,122,3,1,0,'118A Beech Blvd N',118,'A',NULL,'Beech','Blvd','N',NULL,'c/o OPDC',NULL,NULL,'Mechanicsville',1,1045,NULL,'23111',NULL,1228,37.605641,-77.31536,0,NULL,NULL,NULL), + (76,199,2,1,0,'118A Beech Blvd N',118,'A',NULL,'Beech','Blvd','N',NULL,'c/o OPDC',NULL,NULL,'Mechanicsville',1,1045,NULL,'23111',NULL,1228,37.605641,-77.31536,0,NULL,NULL,75), + (77,157,3,1,0,'296N Main Pl SE',296,'N',NULL,'Main','Pl','SE',NULL,'Cuffe Parade',NULL,NULL,'Ambler',1,1037,NULL,'19002',NULL,1228,40.169608,-75.21158,0,NULL,NULL,NULL), + (78,134,2,0,0,'296N Main Pl SE',296,'N',NULL,'Main','Pl','SE',NULL,'Cuffe Parade',NULL,NULL,'Ambler',1,1037,NULL,'19002',NULL,1228,40.169608,-75.21158,0,NULL,NULL,77), + (79,174,3,1,0,'757G Northpoint Ln NE',757,'G',NULL,'Northpoint','Ln','NE',NULL,'Payables Dept.',NULL,NULL,'Barrington',1,1038,NULL,'02806',NULL,1228,41.746834,-71.32031,0,NULL,NULL,NULL), + (80,37,2,1,0,'757G Northpoint Ln NE',757,'G',NULL,'Northpoint','Ln','NE',NULL,'Payables Dept.',NULL,NULL,'Barrington',1,1038,NULL,'02806',NULL,1228,41.746834,-71.32031,0,NULL,NULL,79), + (81,67,3,1,0,'916X Bay Ln S',916,'X',NULL,'Bay','Ln','S',NULL,'Urgent',NULL,NULL,'Ringwood',1,1035,NULL,'73768',NULL,1228,36.383753,-98.27411,0,NULL,NULL,NULL), + (82,16,3,1,0,'608I Jackson Rd S',608,'I',NULL,'Jackson','Rd','S',NULL,'Receiving',NULL,NULL,'Burlington',1,1044,NULL,'05402',NULL,1228,44.442117,-73.082525,0,NULL,NULL,NULL), + (83,186,2,1,0,'608I Jackson Rd S',608,'I',NULL,'Jackson','Rd','S',NULL,'Receiving',NULL,NULL,'Burlington',1,1044,NULL,'05402',NULL,1228,44.442117,-73.082525,0,NULL,NULL,82), + (84,28,3,1,0,'62A El Camino St NW',62,'A',NULL,'El Camino','St','NW',NULL,'Disbursements',NULL,NULL,'Hartwell',1,1009,NULL,'30643',NULL,1228,34.366948,-82.9201,0,NULL,NULL,NULL), + (85,133,2,1,0,'62A El Camino St NW',62,'A',NULL,'El Camino','St','NW',NULL,'Disbursements',NULL,NULL,'Hartwell',1,1009,NULL,'30643',NULL,1228,34.366948,-82.9201,0,NULL,NULL,84), + (86,89,3,1,0,'697E Pine Pl E',697,'E',NULL,'Pine','Pl','E',NULL,'c/o OPDC',NULL,NULL,'Richburg',1,1039,NULL,'29729',NULL,1228,34.692002,-81.00536,0,NULL,NULL,NULL), + (87,43,3,1,0,'193K Northpoint St NW',193,'K',NULL,'Northpoint','St','NW',NULL,'c/o OPDC',NULL,NULL,'Stephenville',1,1042,NULL,'76402',NULL,1228,32.215275,-98.207997,0,NULL,NULL,NULL), + (88,13,3,1,0,'104Q Woodbridge Dr W',104,'Q',NULL,'Woodbridge','Dr','W',NULL,'Community Relations',NULL,NULL,'Wayne',1,1034,NULL,'43741',NULL,1228,39.884291,-81.106797,0,NULL,NULL,NULL), + (89,39,3,1,0,'216T Martin Luther King Dr NE',216,'T',NULL,'Martin Luther King','Dr','NE',NULL,'c/o PO Plus',NULL,NULL,'East Taunton',1,1020,NULL,'02718',NULL,1228,41.876249,-71.01827,0,NULL,NULL,NULL), + (90,20,2,0,0,'216T Martin Luther King Dr NE',216,'T',NULL,'Martin Luther King','Dr','NE',NULL,'c/o PO Plus',NULL,NULL,'East Taunton',1,1020,NULL,'02718',NULL,1228,41.876249,-71.01827,0,NULL,NULL,89), + (91,195,3,1,0,'240R Northpoint Pl S',240,'R',NULL,'Northpoint','Pl','S',NULL,'Mailstop 101',NULL,NULL,'Keslers Cross Lanes',1,1047,NULL,'26675',NULL,1228,38.318389,-80.834152,0,NULL,NULL,NULL), + (92,66,2,1,0,'240R Northpoint Pl S',240,'R',NULL,'Northpoint','Pl','S',NULL,'Mailstop 101',NULL,NULL,'Keslers Cross Lanes',1,1047,NULL,'26675',NULL,1228,38.318389,-80.834152,0,NULL,NULL,91), + (93,198,3,1,0,'809P Pine Ave NE',809,'P',NULL,'Pine','Ave','NE',NULL,'Editorial Dept',NULL,NULL,'Omaha',1,1026,NULL,'68182',NULL,1228,41.291736,-96.171104,0,NULL,NULL,NULL), + (94,54,3,1,0,'187Z El Camino Ave SW',187,'Z',NULL,'El Camino','Ave','SW',NULL,'Disbursements',NULL,NULL,'Brownstown',1,1037,NULL,'17508',NULL,1228,40.125278,-76.21665,0,NULL,NULL,NULL), + (95,76,3,1,0,'675Z Lincoln Ave E',675,'Z',NULL,'Lincoln','Ave','E',NULL,'Disbursements',NULL,NULL,'Tylertown',1,1023,NULL,'39667',NULL,1228,31.131018,-90.12856,0,NULL,NULL,NULL), + (96,11,2,1,0,'675Z Lincoln Ave E',675,'Z',NULL,'Lincoln','Ave','E',NULL,'Disbursements',NULL,NULL,'Tylertown',1,1023,NULL,'39667',NULL,1228,31.131018,-90.12856,0,NULL,NULL,95), + (97,142,3,1,0,'160Z Cadell Ln E',160,'Z',NULL,'Cadell','Ln','E',NULL,'Donor Relations',NULL,NULL,'Dougherty',1,1014,NULL,'50433',NULL,1228,42.922595,-93.04392,0,NULL,NULL,NULL), + (98,78,3,1,0,'920A Martin Luther King Pl SW',920,'A',NULL,'Martin Luther King','Pl','SW',NULL,'Receiving',NULL,NULL,'Granger',1,1046,NULL,'98932',NULL,1228,46.345166,-120.1843,0,NULL,NULL,NULL), + (99,115,2,1,0,'920A Martin Luther King Pl SW',920,'A',NULL,'Martin Luther King','Pl','SW',NULL,'Receiving',NULL,NULL,'Granger',1,1046,NULL,'98932',NULL,1228,46.345166,-120.1843,0,NULL,NULL,98), + (100,68,3,1,0,'59C Martin Luther King Path W',59,'C',NULL,'Martin Luther King','Path','W',NULL,'Attn: Development',NULL,NULL,'Salt Lake City',1,1043,NULL,'84150',NULL,1228,40.668068,-111.908297,0,NULL,NULL,NULL), + (101,27,2,1,0,'59C Martin Luther King Path W',59,'C',NULL,'Martin Luther King','Path','W',NULL,'Attn: Development',NULL,NULL,'Salt Lake City',1,1043,NULL,'84150',NULL,1228,40.668068,-111.908297,0,NULL,NULL,100), + (102,49,3,1,0,'263M Beech Way N',263,'M',NULL,'Beech','Way','N',NULL,'Attn: Development',NULL,NULL,'Brooklyn',1,1031,NULL,'11211',NULL,1228,40.71209,-73.95427,0,NULL,NULL,NULL), + (103,201,2,0,0,'263M Beech Way N',263,'M',NULL,'Beech','Way','N',NULL,'Attn: Development',NULL,NULL,'Brooklyn',1,1031,NULL,'11211',NULL,1228,40.71209,-73.95427,0,NULL,NULL,102), + (104,185,1,1,0,'765O Lincoln Blvd S',765,'O',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Stockton',1,1024,NULL,'65785',NULL,1228,37.703022,-93.80653,0,NULL,NULL,52), + (105,95,1,1,0,'765O Lincoln Blvd S',765,'O',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Stockton',1,1024,NULL,'65785',NULL,1228,37.703022,-93.80653,0,NULL,NULL,52), + (106,158,1,1,0,'765O Lincoln Blvd S',765,'O',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Stockton',1,1024,NULL,'65785',NULL,1228,37.703022,-93.80653,0,NULL,NULL,52), + (107,108,1,0,0,'765O Lincoln Blvd S',765,'O',NULL,'Lincoln','Blvd','S',NULL,NULL,NULL,NULL,'Stockton',1,1024,NULL,'65785',NULL,1228,37.703022,-93.80653,0,NULL,NULL,52), + (108,197,1,1,0,'369H Maple Way N',369,'H',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Morgan',1,1043,NULL,'84050',NULL,1228,41.059771,-111.71141,0,NULL,NULL,53), + (109,163,1,1,0,'369H Maple Way N',369,'H',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Morgan',1,1043,NULL,'84050',NULL,1228,41.059771,-111.71141,0,NULL,NULL,53), + (110,65,1,1,0,'369H Maple Way N',369,'H',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Morgan',1,1043,NULL,'84050',NULL,1228,41.059771,-111.71141,0,NULL,NULL,53), + (111,131,1,1,0,'369H Maple Way N',369,'H',NULL,'Maple','Way','N',NULL,NULL,NULL,NULL,'Morgan',1,1043,NULL,'84050',NULL,1228,41.059771,-111.71141,0,NULL,NULL,53), + (112,46,1,1,0,'352S States Pl NE',352,'S',NULL,'States','Pl','NE',NULL,NULL,NULL,NULL,'Brushton',1,1031,NULL,'12916',NULL,1228,44.830736,-74.51434,0,NULL,NULL,54), + (113,102,1,1,0,'352S States Pl NE',352,'S',NULL,'States','Pl','NE',NULL,NULL,NULL,NULL,'Brushton',1,1031,NULL,'12916',NULL,1228,44.830736,-74.51434,0,NULL,NULL,54), + (114,179,1,1,0,'352S States Pl NE',352,'S',NULL,'States','Pl','NE',NULL,NULL,NULL,NULL,'Brushton',1,1031,NULL,'12916',NULL,1228,44.830736,-74.51434,0,NULL,NULL,54), + (115,165,1,1,0,'352S States Pl NE',352,'S',NULL,'States','Pl','NE',NULL,NULL,NULL,NULL,'Brushton',1,1031,NULL,'12916',NULL,1228,44.830736,-74.51434,0,NULL,NULL,54), + (116,72,1,1,0,'485J Cadell Path N',485,'J',NULL,'Cadell','Path','N',NULL,NULL,NULL,NULL,'Alto',1,1009,NULL,'30596',NULL,1228,34.629391,-83.509934,0,NULL,NULL,55), + (117,34,1,1,0,'485J Cadell Path N',485,'J',NULL,'Cadell','Path','N',NULL,NULL,NULL,NULL,'Alto',1,1009,NULL,'30596',NULL,1228,34.629391,-83.509934,0,NULL,NULL,55), + (118,2,1,1,0,'485J Cadell Path N',485,'J',NULL,'Cadell','Path','N',NULL,NULL,NULL,NULL,'Alto',1,1009,NULL,'30596',NULL,1228,34.629391,-83.509934,0,NULL,NULL,55), + (119,166,1,1,0,'485J Cadell Path N',485,'J',NULL,'Cadell','Path','N',NULL,NULL,NULL,NULL,'Alto',1,1009,NULL,'30596',NULL,1228,34.629391,-83.509934,0,NULL,NULL,55), + (120,140,1,1,0,'555K Main Blvd SW',555,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Jacobs',1,1016,NULL,'41150',NULL,1228,38.225087,-83.242129,0,NULL,NULL,56), + (121,22,1,1,0,'555K Main Blvd SW',555,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Jacobs',1,1016,NULL,'41150',NULL,1228,38.225087,-83.242129,0,NULL,NULL,56), + (122,153,1,0,0,'555K Main Blvd SW',555,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Jacobs',1,1016,NULL,'41150',NULL,1228,38.225087,-83.242129,0,NULL,NULL,56), + (123,66,1,0,0,'555K Main Blvd SW',555,'K',NULL,'Main','Blvd','SW',NULL,NULL,NULL,NULL,'Jacobs',1,1016,NULL,'41150',NULL,1228,38.225087,-83.242129,0,NULL,NULL,56), + (124,60,1,1,0,'2X Caulder St NE',2,'X',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Baton Rouge',1,1017,NULL,'70879',NULL,1228,30.51589,-91.080373,0,NULL,NULL,57), + (125,107,1,1,0,'2X Caulder St NE',2,'X',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Baton Rouge',1,1017,NULL,'70879',NULL,1228,30.51589,-91.080373,0,NULL,NULL,57), + (126,190,1,1,0,'2X Caulder St NE',2,'X',NULL,'Caulder','St','NE',NULL,NULL,NULL,NULL,'Baton Rouge',1,1017,NULL,'70879',NULL,1228,30.51589,-91.080373,0,NULL,NULL,57), + (127,147,1,1,0,'397K Cadell Pl SW',397,'K',NULL,'Cadell','Pl','SW',NULL,NULL,NULL,NULL,'Brightwaters',1,1031,NULL,'11718',NULL,1228,40.720746,-73.26614,0,NULL,NULL,NULL), + (128,199,1,0,0,'493M Bay St NW',493,'M',NULL,'Bay','St','NW',NULL,NULL,NULL,NULL,'Mexico',1,1018,NULL,'04257',NULL,1228,44.556984,-70.53351,0,NULL,NULL,58), + (129,160,1,1,0,'493M Bay St NW',493,'M',NULL,'Bay','St','NW',NULL,NULL,NULL,NULL,'Mexico',1,1018,NULL,'04257',NULL,1228,44.556984,-70.53351,0,NULL,NULL,58), + (130,133,1,0,0,'493M Bay St NW',493,'M',NULL,'Bay','St','NW',NULL,NULL,NULL,NULL,'Mexico',1,1018,NULL,'04257',NULL,1228,44.556984,-70.53351,0,NULL,NULL,58), + (131,40,1,1,0,'493M Bay St NW',493,'M',NULL,'Bay','St','NW',NULL,NULL,NULL,NULL,'Mexico',1,1018,NULL,'04257',NULL,1228,44.556984,-70.53351,0,NULL,NULL,58), + (132,145,1,1,0,'121H Second St W',121,'H',NULL,'Second','St','W',NULL,NULL,NULL,NULL,'Columbia',1,1039,NULL,'29226',NULL,1228,34.005992,-80.970766,0,NULL,NULL,59), + (133,69,1,1,0,'121H Second St W',121,'H',NULL,'Second','St','W',NULL,NULL,NULL,NULL,'Columbia',1,1039,NULL,'29226',NULL,1228,34.005992,-80.970766,0,NULL,NULL,59), + (134,8,1,1,0,'121H Second St W',121,'H',NULL,'Second','St','W',NULL,NULL,NULL,NULL,'Columbia',1,1039,NULL,'29226',NULL,1228,34.005992,-80.970766,0,NULL,NULL,59), + (135,17,1,1,0,'195N Main Dr N',195,'N',NULL,'Main','Dr','N',NULL,NULL,NULL,NULL,'Woodward',1,1035,NULL,'73801',NULL,1228,36.433665,-99.40838,0,NULL,NULL,NULL), + (136,32,1,1,0,'566P Second Ln S',566,'P',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Hamilton',1,1034,NULL,'45020',NULL,1228,39.440956,-84.575746,0,NULL,NULL,60), + (137,126,1,1,0,'566P Second Ln S',566,'P',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Hamilton',1,1034,NULL,'45020',NULL,1228,39.440956,-84.575746,0,NULL,NULL,60), + (138,9,1,1,0,'566P Second Ln S',566,'P',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Hamilton',1,1034,NULL,'45020',NULL,1228,39.440956,-84.575746,0,NULL,NULL,60), + (139,191,1,1,0,'566P Second Ln S',566,'P',NULL,'Second','Ln','S',NULL,NULL,NULL,NULL,'Hamilton',1,1034,NULL,'45020',NULL,1228,39.440956,-84.575746,0,NULL,NULL,60), + (140,161,1,1,0,'768E Beech Ave S',768,'E',NULL,'Beech','Ave','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60639',NULL,1228,41.921431,-87.75415,0,NULL,NULL,61), + (141,59,1,1,0,'768E Beech Ave S',768,'E',NULL,'Beech','Ave','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60639',NULL,1228,41.921431,-87.75415,0,NULL,NULL,61), + (142,144,1,1,0,'768E Beech Ave S',768,'E',NULL,'Beech','Ave','S',NULL,NULL,NULL,NULL,'Chicago',1,1012,NULL,'60639',NULL,1228,41.921431,-87.75415,0,NULL,NULL,61), + (143,33,1,1,0,'437Q Woodbridge Dr SW',437,'Q',NULL,'Woodbridge','Dr','SW',NULL,NULL,NULL,NULL,'Fredericksburg',1,1045,NULL,'22401',NULL,1228,38.301829,-77.47077,0,NULL,NULL,NULL), + (144,11,1,0,0,'347M Dowlen Way W',347,'M',NULL,'Dowlen','Way','W',NULL,NULL,NULL,NULL,'Fountain Run',1,1016,NULL,'42133',NULL,1228,36.721319,-85.96139,0,NULL,NULL,62), + (145,106,1,1,0,'347M Dowlen Way W',347,'M',NULL,'Dowlen','Way','W',NULL,NULL,NULL,NULL,'Fountain Run',1,1016,NULL,'42133',NULL,1228,36.721319,-85.96139,0,NULL,NULL,62), + (146,86,1,1,0,'347M Dowlen Way W',347,'M',NULL,'Dowlen','Way','W',NULL,NULL,NULL,NULL,'Fountain Run',1,1016,NULL,'42133',NULL,1228,36.721319,-85.96139,0,NULL,NULL,62), + (147,188,1,1,0,'984S Northpoint Path SW',984,'S',NULL,'Northpoint','Path','SW',NULL,NULL,NULL,NULL,'Selby',1,1040,NULL,'57472',NULL,1228,45.486222,-100.04843,0,NULL,NULL,NULL), + (148,111,1,1,0,'355S Second Way S',355,'S',NULL,'Second','Way','S',NULL,NULL,NULL,NULL,'Lake Worth',1,1008,NULL,'33466',NULL,1228,26.645895,-80.430269,0,NULL,NULL,63), + (149,193,1,1,0,'355S Second Way S',355,'S',NULL,'Second','Way','S',NULL,NULL,NULL,NULL,'Lake Worth',1,1008,NULL,'33466',NULL,1228,26.645895,-80.430269,0,NULL,NULL,63), + (150,55,1,1,0,'355S Second Way S',355,'S',NULL,'Second','Way','S',NULL,NULL,NULL,NULL,'Lake Worth',1,1008,NULL,'33466',NULL,1228,26.645895,-80.430269,0,NULL,NULL,63), + (151,176,1,1,0,'355S Second Way S',355,'S',NULL,'Second','Way','S',NULL,NULL,NULL,NULL,'Lake Worth',1,1008,NULL,'33466',NULL,1228,26.645895,-80.430269,0,NULL,NULL,63), + (152,7,1,1,0,'506C Beech St N',506,'C',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Rock Tavern',1,1031,NULL,'12575',NULL,1228,41.478722,-74.15626,0,NULL,NULL,64), + (153,125,1,1,0,'506C Beech St N',506,'C',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Rock Tavern',1,1031,NULL,'12575',NULL,1228,41.478722,-74.15626,0,NULL,NULL,64), + (154,96,1,1,0,'506C Beech St N',506,'C',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Rock Tavern',1,1031,NULL,'12575',NULL,1228,41.478722,-74.15626,0,NULL,NULL,64), + (155,80,1,1,0,'506C Beech St N',506,'C',NULL,'Beech','St','N',NULL,NULL,NULL,NULL,'Rock Tavern',1,1031,NULL,'12575',NULL,1228,41.478722,-74.15626,0,NULL,NULL,64), + (156,120,1,1,0,'7A States St N',7,'A',NULL,'States','St','N',NULL,NULL,NULL,NULL,'Bryn Mawr',1,1037,NULL,'19010',NULL,1228,40.02371,-75.32764,0,NULL,NULL,65), + (157,180,1,1,0,'7A States St N',7,'A',NULL,'States','St','N',NULL,NULL,NULL,NULL,'Bryn Mawr',1,1037,NULL,'19010',NULL,1228,40.02371,-75.32764,0,NULL,NULL,65), + (158,116,1,1,0,'7A States St N',7,'A',NULL,'States','St','N',NULL,NULL,NULL,NULL,'Bryn Mawr',1,1037,NULL,'19010',NULL,1228,40.02371,-75.32764,0,NULL,NULL,65), + (159,184,1,1,0,'7A States St N',7,'A',NULL,'States','St','N',NULL,NULL,NULL,NULL,'Bryn Mawr',1,1037,NULL,'19010',NULL,1228,40.02371,-75.32764,0,NULL,NULL,65), + (160,143,1,1,0,'751V Pine St SE',751,'V',NULL,'Pine','St','SE',NULL,NULL,NULL,NULL,'Temple',1,1035,NULL,'73568',NULL,1228,34.273576,-98.23377,0,NULL,NULL,66), + (161,175,1,1,0,'751V Pine St SE',751,'V',NULL,'Pine','St','SE',NULL,NULL,NULL,NULL,'Temple',1,1035,NULL,'73568',NULL,1228,34.273576,-98.23377,0,NULL,NULL,66), + (162,58,1,1,0,'751V Pine St SE',751,'V',NULL,'Pine','St','SE',NULL,NULL,NULL,NULL,'Temple',1,1035,NULL,'73568',NULL,1228,34.273576,-98.23377,0,NULL,NULL,66), + (163,97,1,1,0,'468Z Jackson Dr NW',468,'Z',NULL,'Jackson','Dr','NW',NULL,NULL,NULL,NULL,'Anadarko',1,1035,NULL,'73005',NULL,1228,35.050671,-98.23984,0,NULL,NULL,NULL), + (164,70,1,1,0,'483C Jackson Path NE',483,'C',NULL,'Jackson','Path','NE',NULL,NULL,NULL,NULL,'Lohrville',1,1014,NULL,'51453',NULL,1228,42.27586,-94.54041,0,NULL,NULL,67), + (165,121,1,1,0,'483C Jackson Path NE',483,'C',NULL,'Jackson','Path','NE',NULL,NULL,NULL,NULL,'Lohrville',1,1014,NULL,'51453',NULL,1228,42.27586,-94.54041,0,NULL,NULL,67), + (166,53,1,1,0,'483C Jackson Path NE',483,'C',NULL,'Jackson','Path','NE',NULL,NULL,NULL,NULL,'Lohrville',1,1014,NULL,'51453',NULL,1228,42.27586,-94.54041,0,NULL,NULL,67), + (167,173,1,1,0,'247L Main St S',247,'L',NULL,'Main','St','S',NULL,NULL,NULL,NULL,'Hyde Park',1,1031,NULL,'12538',NULL,1228,41.779541,-73.90155,0,NULL,NULL,NULL), + (168,123,1,1,0,'413R Bay Dr W',413,'R',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Opelousas',1,1017,NULL,'70571',NULL,1228,30.57445,-92.086077,0,NULL,NULL,68), + (169,103,1,1,0,'413R Bay Dr W',413,'R',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Opelousas',1,1017,NULL,'70571',NULL,1228,30.57445,-92.086077,0,NULL,NULL,68), + (170,181,1,1,0,'413R Bay Dr W',413,'R',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Opelousas',1,1017,NULL,'70571',NULL,1228,30.57445,-92.086077,0,NULL,NULL,68), + (171,36,1,1,0,'413R Bay Dr W',413,'R',NULL,'Bay','Dr','W',NULL,NULL,NULL,NULL,'Opelousas',1,1017,NULL,'70571',NULL,1228,30.57445,-92.086077,0,NULL,NULL,68), + (172,168,1,1,0,'41I Northpoint St SE',41,'I',NULL,'Northpoint','St','SE',NULL,NULL,NULL,NULL,'Horton',1,1024,NULL,'64751',NULL,1228,37.946913,-94.42222,0,NULL,NULL,69), + (173,146,1,1,0,'41I Northpoint St SE',41,'I',NULL,'Northpoint','St','SE',NULL,NULL,NULL,NULL,'Horton',1,1024,NULL,'64751',NULL,1228,37.946913,-94.42222,0,NULL,NULL,69), + (174,24,1,1,0,'41I Northpoint St SE',41,'I',NULL,'Northpoint','St','SE',NULL,NULL,NULL,NULL,'Horton',1,1024,NULL,'64751',NULL,1228,37.946913,-94.42222,0,NULL,NULL,69), + (175,57,1,1,0,'909B Caulder Rd W',909,'B',NULL,'Caulder','Rd','W',NULL,NULL,NULL,NULL,'Ypsilanti',1,1021,NULL,'48198',NULL,1228,42.247039,-83.58215,0,NULL,NULL,NULL), + (176,178,1,1,0,'439I Bay Ave SW',439,'I',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Alto',1,1021,NULL,'49302',NULL,1228,42.834137,-85.41889,0,NULL,NULL,70), + (177,45,1,1,0,'439I Bay Ave SW',439,'I',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Alto',1,1021,NULL,'49302',NULL,1228,42.834137,-85.41889,0,NULL,NULL,70), + (178,141,1,1,0,'439I Bay Ave SW',439,'I',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Alto',1,1021,NULL,'49302',NULL,1228,42.834137,-85.41889,0,NULL,NULL,70), + (179,183,1,1,0,'439I Bay Ave SW',439,'I',NULL,'Bay','Ave','SW',NULL,NULL,NULL,NULL,'Alto',1,1021,NULL,'49302',NULL,1228,42.834137,-85.41889,0,NULL,NULL,70), + (180,27,1,0,0,'722Z Martin Luther King Path S',722,'Z',NULL,'Martin Luther King','Path','S',NULL,NULL,NULL,NULL,'Montreal',1,1024,NULL,'65591',NULL,1228,37.97957,-92.59117,0,NULL,NULL,71), + (181,194,1,1,0,'722Z Martin Luther King Path S',722,'Z',NULL,'Martin Luther King','Path','S',NULL,NULL,NULL,NULL,'Montreal',1,1024,NULL,'65591',NULL,1228,37.97957,-92.59117,0,NULL,NULL,71), + (182,155,1,1,0,'722Z Martin Luther King Path S',722,'Z',NULL,'Martin Luther King','Path','S',NULL,NULL,NULL,NULL,'Montreal',1,1024,NULL,'65591',NULL,1228,37.97957,-92.59117,0,NULL,NULL,71), + (183,162,1,1,0,'722Z Martin Luther King Path S',722,'Z',NULL,'Martin Luther King','Path','S',NULL,NULL,NULL,NULL,'Montreal',1,1024,NULL,'65591',NULL,1228,37.97957,-92.59117,0,NULL,NULL,71), + (184,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), + (185,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), + (186,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; @@ -2057,208 +1974,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-06-09 21:52:19','Both'), - (2,'Individual',NULL,'Mr. Craig Olsen',NULL,NULL,'Craig','','Olsen',1,0,0,0,0,0,NULL,'Olsen, Craig',NULL,NULL,NULL,'3',NULL,'1378827194',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Mr. Craig Olsen',NULL,2,'1983-01-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (3,'Household',NULL,'DÃaz-Smith family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'DÃaz-Smith family',NULL,NULL,NULL,NULL,NULL,'2678487543',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz-Smith family',5,NULL,'Dear DÃaz-Smith family',2,NULL,'DÃaz-Smith family',NULL,NULL,NULL,0,NULL,'DÃaz-Smith family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (4,'Individual',NULL,'Kathleen Jameson',NULL,NULL,'Kathleen','','Jameson',0,0,0,0,1,0,NULL,'Jameson, Kathleen',NULL,NULL,NULL,'3',NULL,'3800286753',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Kathleen Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (5,'Individual',NULL,'Sanford Olsen III',NULL,NULL,'Sanford','C','Olsen',0,0,0,0,0,0,NULL,'Olsen, Sanford',NULL,NULL,NULL,NULL,NULL,'2408737591',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Olsen III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (6,'Individual',NULL,'Clint DÃaz',NULL,NULL,'Clint','R','DÃaz',0,1,0,0,0,0,NULL,'DÃaz, Clint',NULL,NULL,NULL,'5',NULL,'3503793680',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint DÃaz',NULL,NULL,'1996-02-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (7,'Individual',NULL,'granth93@infomail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'granth93@infomail.net',NULL,NULL,NULL,'1',NULL,'828737565',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear granth93@infomail.net',1,NULL,'Dear granth93@infomail.net',1,NULL,'granth93@infomail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (8,'Organization',NULL,'Jackson Sports Academy','Jackson Sports Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jackson Sports Academy',NULL,NULL,NULL,NULL,NULL,'1454282896',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Jackson Sports Academy',NULL,NULL,NULL,0,NULL,NULL,169,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (9,'Individual',NULL,'Arlyne Reynolds',NULL,NULL,'Arlyne','Y','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Arlyne',NULL,NULL,NULL,NULL,NULL,'3120138036',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Reynolds',NULL,1,'1983-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (10,'Organization',NULL,'Progressive Empowerment Association','Progressive Empowerment Association',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Progressive Empowerment Association',NULL,NULL,NULL,'1',NULL,'3625138365',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Progressive Empowerment Association',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (11,'Organization',NULL,'Main Action Center','Main Action Center',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Main Action Center',NULL,NULL,NULL,NULL,NULL,'2133538896',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Main Action Center',NULL,NULL,NULL,0,NULL,NULL,39,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (12,'Individual',NULL,'Dr. Brittney Wagner',NULL,NULL,'Brittney','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Brittney',NULL,NULL,NULL,'5',NULL,'1515527179',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Dr. Brittney Wagner',NULL,1,'1969-04-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (13,'Individual',NULL,'Esta Olsen',NULL,NULL,'Esta','','Olsen',0,0,0,0,1,0,NULL,'Olsen, Esta',NULL,NULL,NULL,'4',NULL,'1433708351',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Olsen',NULL,NULL,'1984-10-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (14,'Individual',NULL,'Jay DÃaz II',NULL,NULL,'Jay','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Jay',NULL,NULL,NULL,NULL,NULL,'3482361305',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay DÃaz II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (15,'Individual',NULL,'Mrs. Ashlie Cooper',NULL,NULL,'Ashlie','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Ashlie',NULL,NULL,NULL,'5',NULL,'2771748009',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Mrs. Ashlie Cooper',NULL,1,'1965-03-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (16,'Individual',NULL,'Errol ÅÄ…chowski Jr.','Pennsylvania Literacy Academy',NULL,'Errol','','ÅÄ…chowski',1,0,0,0,0,0,NULL,'ÅÄ…chowski, Errol',NULL,NULL,NULL,'5',NULL,'4217414454',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol ÅÄ…chowski Jr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,117,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (17,'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-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (18,'Individual',NULL,'Kiara Grant',NULL,NULL,'Kiara','K','Grant',0,0,0,0,0,0,NULL,'Grant, Kiara',NULL,NULL,NULL,NULL,NULL,'334214546',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Grant',NULL,1,'1967-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (19,'Household',NULL,'Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,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-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (20,'Individual',NULL,'Dr. Sanford ÅÄ…chowski III',NULL,NULL,'Sanford','','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Sanford',NULL,NULL,NULL,'1',NULL,'2346608156',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Dr. Sanford ÅÄ…chowski III',NULL,NULL,'1964-12-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (21,'Individual',NULL,'Roland Wagner III',NULL,NULL,'Roland','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Roland',NULL,NULL,NULL,'2',NULL,'1173293758',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland Wagner III',NULL,2,'1997-05-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (22,'Individual',NULL,'Scott Wilson Sr.',NULL,NULL,'Scott','O','Wilson',1,0,0,0,0,0,NULL,'Wilson, Scott',NULL,NULL,NULL,NULL,NULL,'3378305352',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Wilson Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (23,'Individual',NULL,'Bryon Wattson',NULL,NULL,'Bryon','W','Wattson',0,1,0,0,0,0,NULL,'Wattson, Bryon',NULL,NULL,NULL,'3',NULL,'2375098324',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Wattson',NULL,2,'1962-11-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (24,'Individual',NULL,'Mr. Maxwell Smith Sr.',NULL,NULL,'Maxwell','','Smith',0,0,0,0,0,0,NULL,'Smith, Maxwell',NULL,NULL,NULL,'1',NULL,'2112091730',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Mr. Maxwell Smith Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (25,'Individual',NULL,'adams.erik91@spamalot.org',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'adams.erik91@spamalot.org',NULL,NULL,NULL,'4',NULL,'97025108',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear adams.erik91@spamalot.org',1,NULL,'Dear adams.erik91@spamalot.org',1,NULL,'adams.erik91@spamalot.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (26,'Individual',NULL,'carlosw@sample.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'carlosw@sample.info',NULL,NULL,NULL,'3',NULL,'2608209397',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear carlosw@sample.info',1,NULL,'Dear carlosw@sample.info',1,NULL,'carlosw@sample.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (27,'Individual',NULL,'Jacob Terry III',NULL,NULL,'Jacob','','Terry',0,1,0,0,1,0,NULL,'Terry, Jacob',NULL,NULL,NULL,NULL,NULL,'1878863134',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Jacob',1,NULL,'Dear Jacob',1,NULL,'Jacob Terry III',NULL,NULL,'1954-08-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (28,'Individual',NULL,'zope.errol@airmail.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'zope.errol@airmail.co.nz',NULL,NULL,NULL,NULL,NULL,'1964361197',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear zope.errol@airmail.co.nz',1,NULL,'Dear zope.errol@airmail.co.nz',1,NULL,'zope.errol@airmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (29,'Individual',NULL,'Dr. Scarlet Grant',NULL,NULL,'Scarlet','','Grant',0,0,0,0,1,0,NULL,'Grant, Scarlet',NULL,NULL,NULL,'4',NULL,'188081876',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Grant',NULL,1,'1994-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (30,'Individual',NULL,'Lincoln Terrell-Wattson Jr.',NULL,NULL,'Lincoln','Z','Terrell-Wattson',0,0,0,0,0,0,NULL,'Terrell-Wattson, Lincoln',NULL,NULL,NULL,NULL,NULL,'1215163063',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Terrell-Wattson Jr.',NULL,NULL,'1980-09-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (31,'Individual',NULL,'darencruz9@testmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'darencruz9@testmail.biz',NULL,NULL,NULL,'5',NULL,'2051125022',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear darencruz9@testmail.biz',1,NULL,'Dear darencruz9@testmail.biz',1,NULL,'darencruz9@testmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (32,'Individual',NULL,'valenechowski@sample.com',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'valenechowski@sample.com',NULL,NULL,NULL,'4',NULL,'2832591726',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear valenechowski@sample.com',1,NULL,'Dear valenechowski@sample.com',1,NULL,'valenechowski@sample.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (33,'Individual',NULL,'Mr. Teddy Wattson',NULL,NULL,'Teddy','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Teddy',NULL,NULL,NULL,NULL,NULL,'3676733183',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Teddy',1,NULL,'Dear Teddy',1,NULL,'Mr. Teddy Wattson',NULL,NULL,'1935-07-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (34,'Individual',NULL,'wattson-reynolds.beula@example.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'wattson-reynolds.beula@example.co.pl',NULL,NULL,NULL,NULL,NULL,'887733752',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear wattson-reynolds.beula@example.co.pl',1,NULL,'Dear wattson-reynolds.beula@example.co.pl',1,NULL,'wattson-reynolds.beula@example.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (35,'Individual',NULL,'Arlyne Barkley',NULL,NULL,'Arlyne','A','Barkley',0,0,0,0,0,0,NULL,'Barkley, Arlyne',NULL,NULL,NULL,NULL,NULL,'3692098721',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Arlyne',1,NULL,'Dear Arlyne',1,NULL,'Arlyne Barkley',NULL,1,'1960-01-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (36,'Household',NULL,'Wattson-Reynolds family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Wattson-Reynolds family',NULL,NULL,NULL,NULL,NULL,'713482612',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wattson-Reynolds family',5,NULL,'Dear Wattson-Reynolds family',2,NULL,'Wattson-Reynolds family',NULL,NULL,NULL,0,NULL,'Wattson-Reynolds family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (37,'Organization',NULL,'Nebraska Action Fund','Nebraska Action Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Nebraska Action Fund',NULL,NULL,NULL,'3',NULL,'807745852',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Nebraska Action Fund',NULL,NULL,NULL,0,NULL,NULL,136,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (38,'Household',NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,'2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (39,'Individual',NULL,'Ms. Felisha Jameson','Main Action Center',NULL,'Felisha','J','Jameson',0,0,0,0,0,0,NULL,'Jameson, Felisha',NULL,NULL,NULL,NULL,NULL,'2198176616',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Ms. Felisha Jameson',NULL,NULL,'1967-10-06',0,NULL,NULL,NULL,NULL,NULL,11,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (40,'Individual',NULL,'du.daz56@fakemail.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'du.daz56@fakemail.info',NULL,NULL,NULL,NULL,NULL,'4116714313',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear du.daz56@fakemail.info',1,NULL,'Dear du.daz56@fakemail.info',1,NULL,'du.daz56@fakemail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (41,'Individual',NULL,'Dr. Kiara Reynolds',NULL,NULL,'Kiara','','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Kiara',NULL,NULL,NULL,'2',NULL,'637719043',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Dr. Kiara Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (42,'Individual',NULL,'Mr. Jerome González',NULL,NULL,'Jerome','F','González',0,0,0,0,0,0,NULL,'González, Jerome',NULL,NULL,NULL,'5',NULL,'775254007',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Jerome',1,NULL,'Dear Jerome',1,NULL,'Mr. Jerome González',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (43,'Household',NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,NULL,'350510798',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Wilson family',5,NULL,'Dear Wilson family',2,NULL,'Wilson family',NULL,NULL,NULL,0,NULL,'Wilson family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (44,'Individual',NULL,'Mrs. Valene Terrell',NULL,NULL,'Valene','B','Terrell',1,1,0,0,0,0,NULL,'Terrell, Valene',NULL,NULL,NULL,'2',NULL,'2134208638',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Valene',1,NULL,'Dear Valene',1,NULL,'Mrs. Valene Terrell',NULL,1,'1934-01-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (45,'Individual',NULL,'Mrs. Teresa Wilson',NULL,NULL,'Teresa','','Wilson',0,0,0,0,0,0,NULL,'Wilson, Teresa',NULL,NULL,NULL,'5',NULL,'4075437794',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Mrs. Teresa Wilson',NULL,NULL,'1993-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (46,'Individual',NULL,'Winford Nielsen Sr.',NULL,NULL,'Winford','N','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Winford',NULL,NULL,NULL,NULL,NULL,'2406289221',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Nielsen Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (47,'Individual',NULL,'Damaris Nielsen',NULL,NULL,'Damaris','X','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Damaris',NULL,NULL,NULL,'3',NULL,'3513005932',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Nielsen',NULL,1,'1960-02-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (48,'Individual',NULL,'Dr. Sharyn DÃaz',NULL,NULL,'Sharyn','B','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Sharyn',NULL,NULL,NULL,NULL,NULL,'4129279229',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Dr. Sharyn DÃaz',NULL,NULL,'1996-06-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (49,'Individual',NULL,'Dr. Andrew Jones Sr.',NULL,NULL,'Andrew','S','Jones',0,0,0,0,0,0,NULL,'Jones, Andrew',NULL,NULL,NULL,'1',NULL,'2560243227',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Andrew',1,NULL,'Dear Andrew',1,NULL,'Dr. Andrew Jones Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (50,'Individual',NULL,'Ms. Heidi Zope',NULL,NULL,'Heidi','','Zope',0,0,0,0,0,0,NULL,'Zope, Heidi',NULL,NULL,NULL,NULL,NULL,'2699150124',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Ms. Heidi Zope',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (51,'Individual',NULL,'Mr. Daren Dimitrov III',NULL,NULL,'Daren','R','Dimitrov',0,0,0,0,1,0,NULL,'Dimitrov, Daren',NULL,NULL,NULL,NULL,NULL,'3639899181',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Mr. Daren Dimitrov III',NULL,2,'1933-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (52,'Individual',NULL,'Mrs. Betty González',NULL,NULL,'Betty','V','González',0,0,0,0,0,0,NULL,'González, Betty',NULL,NULL,NULL,'3',NULL,'152645290',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Mrs. Betty González',NULL,NULL,'1988-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (53,'Individual',NULL,'Ashley Samson',NULL,NULL,'Ashley','','Samson',0,0,0,0,0,0,NULL,'Samson, Ashley',NULL,NULL,NULL,'4',NULL,'2849668612',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Samson',NULL,NULL,'1971-03-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (54,'Individual',NULL,'nx.nielsen-terry15@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'nx.nielsen-terry15@spamalot.co.pl',NULL,NULL,NULL,NULL,NULL,'2301132529',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear nx.nielsen-terry15@spamalot.co.pl',1,NULL,'Dear nx.nielsen-terry15@spamalot.co.pl',1,NULL,'nx.nielsen-terry15@spamalot.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (55,'Individual',NULL,'Tanya DÃaz',NULL,NULL,'Tanya','H','DÃaz',0,1,0,0,0,0,NULL,'DÃaz, Tanya',NULL,NULL,NULL,NULL,NULL,'2641118119',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya DÃaz',NULL,1,'1954-11-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (56,'Individual',NULL,'Scott Parker Jr.',NULL,NULL,'Scott','','Parker',0,0,0,0,1,0,NULL,'Parker, Scott',NULL,NULL,NULL,NULL,NULL,'3303025093',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Parker Jr.',NULL,NULL,'1941-10-29',1,'2022-07-16',NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (57,'Individual',NULL,'Ms. Sharyn Dimitrov',NULL,NULL,'Sharyn','','Dimitrov',1,1,0,0,0,0,NULL,'Dimitrov, Sharyn',NULL,NULL,NULL,'2',NULL,'1888129683',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Ms. Sharyn Dimitrov',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (58,'Individual',NULL,'Dr. Claudio Samson II',NULL,NULL,'Claudio','L','Samson',0,1,0,0,0,0,NULL,'Samson, Claudio',NULL,NULL,NULL,NULL,NULL,'114634310',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Dr. Claudio Samson II',NULL,NULL,'1965-11-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (59,'Individual',NULL,'nielsen.russell71@airmail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'nielsen.russell71@airmail.com',NULL,NULL,NULL,'1',NULL,'1598297348',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear nielsen.russell71@airmail.com',1,NULL,'Dear nielsen.russell71@airmail.com',1,NULL,'nielsen.russell71@airmail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (60,'Organization',NULL,'Tennessee Poetry Systems','Tennessee Poetry Systems',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Tennessee Poetry Systems',NULL,NULL,NULL,NULL,NULL,'313474957',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Tennessee Poetry Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (61,'Individual',NULL,'Allan Prentice Jr.',NULL,NULL,'Allan','N','Prentice',0,1,0,0,0,0,NULL,'Prentice, Allan',NULL,NULL,NULL,'3',NULL,'2464878706',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Prentice Jr.',NULL,2,'1955-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (62,'Individual',NULL,'Dr. Shad Olsen',NULL,NULL,'Shad','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Shad',NULL,NULL,NULL,NULL,NULL,'2007691638',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Dr. Shad Olsen',NULL,NULL,'1983-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (63,'Individual',NULL,'Omar DÃaz II',NULL,NULL,'Omar','','DÃaz',1,0,0,0,0,0,NULL,'DÃaz, Omar',NULL,NULL,NULL,'2',NULL,'790008959',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Omar DÃaz II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (64,'Individual',NULL,'Troy Grant',NULL,NULL,'Troy','H','Grant',1,0,0,0,0,0,NULL,'Grant, Troy',NULL,NULL,NULL,NULL,NULL,'2568964865',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Grant',NULL,2,'1937-06-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (65,'Individual',NULL,'Daren Yadav',NULL,NULL,'Daren','D','Yadav',0,0,0,0,0,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,2,'1975-07-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (66,'Individual',NULL,'Ms. Kathlyn Cruz',NULL,NULL,'Kathlyn','','Cruz',0,1,0,0,0,0,NULL,'Cruz, Kathlyn',NULL,NULL,NULL,NULL,NULL,'1454474422',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Ms. Kathlyn Cruz',NULL,NULL,'1964-11-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (67,'Individual',NULL,'tanyachowski73@sample.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'tanyachowski73@sample.co.nz',NULL,NULL,NULL,'5',NULL,'1646088760',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear tanyachowski73@sample.co.nz',1,NULL,'Dear tanyachowski73@sample.co.nz',1,NULL,'tanyachowski73@sample.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (68,'Individual',NULL,'kk.gonzlez-chowski@testing.net',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'kk.gonzlez-chowski@testing.net',NULL,NULL,NULL,NULL,NULL,'2703568117',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear kk.gonzlez-chowski@testing.net',1,NULL,'Dear kk.gonzlez-chowski@testing.net',1,NULL,'kk.gonzlez-chowski@testing.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (69,'Individual',NULL,'Heidi Grant',NULL,NULL,'Heidi','','Grant',0,0,0,0,0,0,NULL,'Grant, Heidi',NULL,NULL,NULL,NULL,NULL,'46996647',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Grant',NULL,NULL,'1999-03-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (70,'Individual',NULL,'Russell Reynolds III',NULL,NULL,'Russell','N','Reynolds',1,1,0,0,0,0,NULL,'Reynolds, Russell',NULL,NULL,NULL,'2',NULL,'2896350648',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Reynolds III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (71,'Individual',NULL,'Dr. Brittney McReynolds',NULL,NULL,'Brittney','Q','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Brittney',NULL,NULL,NULL,'2',NULL,'2397240349',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Dr. Brittney McReynolds',NULL,1,'1989-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (72,'Individual',NULL,'Rolando ÅÄ…chowski Sr.',NULL,NULL,'Rolando','Y','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Rolando',NULL,NULL,NULL,NULL,NULL,'2050777449',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando ÅÄ…chowski Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (73,'Individual',NULL,'Erik Deforest',NULL,NULL,'Erik','K','Deforest',0,0,0,0,0,0,NULL,'Deforest, Erik',NULL,NULL,NULL,'2',NULL,'1691264565',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Erik Deforest',NULL,2,'1989-10-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (74,'Individual',NULL,'Justina ÅÄ…chowski',NULL,NULL,'Justina','X','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Justina',NULL,NULL,NULL,NULL,NULL,'288351947',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina ÅÄ…chowski',NULL,1,'2012-04-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (75,'Individual',NULL,'Dr. Rodrigo ÅÄ…chowski',NULL,NULL,'Rodrigo','G','ÅÄ…chowski',1,0,0,0,1,0,NULL,'ÅÄ…chowski, Rodrigo',NULL,NULL,NULL,NULL,NULL,'646092703',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rodrigo',1,NULL,'Dear Rodrigo',1,NULL,'Dr. Rodrigo ÅÄ…chowski',NULL,2,'1999-07-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (76,'Individual',NULL,'Mrs. Kiara Samson',NULL,NULL,'Kiara','M','Samson',1,1,0,0,0,0,NULL,'Samson, Kiara',NULL,NULL,NULL,'5',NULL,'3226683552',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Samson',NULL,1,'1978-08-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (77,'Individual',NULL,'Angelika Prentice','Bay Sports Collective',NULL,'Angelika','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Angelika',NULL,NULL,NULL,'2',NULL,'2353385651',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Angelika',1,NULL,'Dear Angelika',1,NULL,'Angelika Prentice',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,179,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (78,'Household',NULL,'González-Jameson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'González-Jameson family',NULL,NULL,NULL,'4',NULL,'1271642165',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear González-Jameson family',5,NULL,'Dear González-Jameson family',2,NULL,'González-Jameson family',NULL,NULL,NULL,0,NULL,'González-Jameson family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (79,'Individual',NULL,'Elizabeth Jensen',NULL,NULL,'Elizabeth','Q','Jensen',0,0,0,0,0,0,NULL,'Jensen, Elizabeth',NULL,NULL,NULL,'4',NULL,'423096601',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Jensen',NULL,1,'1957-12-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (80,'Individual',NULL,'Dr. Ray Terrell',NULL,NULL,'Ray','X','Terrell',0,0,0,0,0,0,NULL,'Terrell, Ray',NULL,NULL,NULL,'4',NULL,'2095931492',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Dr. Ray Terrell',NULL,NULL,'1985-05-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (81,'Individual',NULL,'Winford González',NULL,NULL,'Winford','E','González',0,0,0,0,0,0,NULL,'González, Winford',NULL,NULL,NULL,NULL,NULL,'352207000',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford González',NULL,NULL,'1948-05-25',1,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (82,'Individual',NULL,'Mrs. Kiara Cooper',NULL,NULL,'Kiara','U','Cooper',1,0,0,0,0,0,NULL,'Cooper, Kiara',NULL,NULL,NULL,NULL,NULL,'2416218460',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Cooper',NULL,1,'1970-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (83,'Individual',NULL,'Daren Blackwell Jr.',NULL,NULL,'Daren','F','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Daren',NULL,NULL,NULL,NULL,NULL,'2699852976',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Daren Blackwell Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (84,'Household',NULL,'Nielsen-Terry family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Nielsen-Terry family',NULL,NULL,NULL,'1',NULL,'491010676',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen-Terry family',5,NULL,'Dear Nielsen-Terry family',2,NULL,'Nielsen-Terry family',NULL,NULL,NULL,0,NULL,'Nielsen-Terry family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (85,'Individual',NULL,'Kandace Dimitrov',NULL,NULL,'Kandace','P','Dimitrov',0,0,0,0,0,0,NULL,'Dimitrov, Kandace',NULL,NULL,NULL,'3',NULL,'2771100224',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Dimitrov',NULL,1,'2001-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (86,'Household',NULL,'Terrell-Grant family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Terrell-Grant family',NULL,NULL,NULL,NULL,NULL,'271573564',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell-Grant family',5,NULL,'Dear Terrell-Grant family',2,NULL,'Terrell-Grant family',NULL,NULL,NULL,0,NULL,'Terrell-Grant family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (87,'Individual',NULL,'Dr. Ashlie Ivanov',NULL,NULL,'Ashlie','X','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Ashlie',NULL,NULL,NULL,'1',NULL,'468651798',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Dr. Ashlie Ivanov',NULL,NULL,'1975-06-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (88,'Organization',NULL,'Maple Wellness Alliance','Maple Wellness Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Maple Wellness Alliance',NULL,NULL,NULL,'1',NULL,'2709617208',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Maple Wellness Alliance',NULL,NULL,NULL,0,NULL,NULL,100,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (89,'Organization',NULL,'United Empowerment Association','United Empowerment Association',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'United Empowerment Association',NULL,NULL,NULL,'5',NULL,'1687867266',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Empowerment Association',NULL,NULL,NULL,0,NULL,NULL,198,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (90,'Individual',NULL,'Rosario Wattson II',NULL,NULL,'Rosario','E','Wattson',0,1,0,0,0,0,NULL,'Wattson, Rosario',NULL,NULL,NULL,'2',NULL,'661817002',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Wattson II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (91,'Individual',NULL,'Dr. Maxwell Cruz Sr.',NULL,NULL,'Maxwell','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Maxwell',NULL,NULL,NULL,'3',NULL,'780249075',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Maxwell',1,NULL,'Dear Maxwell',1,NULL,'Dr. Maxwell Cruz Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (92,'Individual',NULL,'Mr. BrzÄ™czysÅ‚aw Terry',NULL,NULL,'BrzÄ™czysÅ‚aw','V','Terry',1,1,0,0,0,0,NULL,'Terry, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,NULL,NULL,'884241841',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 Terry',NULL,2,'1950-03-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (93,'Individual',NULL,'Ms. Brigette Jameson',NULL,NULL,'Brigette','S','Jameson',0,0,0,0,0,0,NULL,'Jameson, Brigette',NULL,NULL,NULL,'2',NULL,'839229848',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Jameson',NULL,NULL,'1995-05-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (94,'Individual',NULL,'Kacey Deforest-Dimitrov','Winnemucca Sports Systems',NULL,'Kacey','','Deforest-Dimitrov',0,0,0,0,0,0,NULL,'Deforest-Dimitrov, Kacey',NULL,NULL,NULL,'1',NULL,'107672509',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Deforest-Dimitrov',NULL,1,'1963-12-16',0,NULL,NULL,NULL,NULL,NULL,95,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (95,'Organization',NULL,'Winnemucca Sports Systems','Winnemucca Sports Systems',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Winnemucca Sports Systems',NULL,NULL,NULL,'2',NULL,'3471702251',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Winnemucca Sports Systems',NULL,NULL,NULL,0,NULL,NULL,94,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (96,'Individual',NULL,'Mrs. Kiara González-Jameson',NULL,NULL,'Kiara','','González-Jameson',1,0,0,0,0,0,NULL,'González-Jameson, Kiara',NULL,NULL,NULL,'3',NULL,'2554818035',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara González-Jameson',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (97,'Individual',NULL,'Merrie Olsen',NULL,NULL,'Merrie','','Olsen',1,0,0,0,0,0,NULL,'Olsen, Merrie',NULL,NULL,NULL,NULL,NULL,'3769285759',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Merrie',1,NULL,'Dear Merrie',1,NULL,'Merrie Olsen',NULL,NULL,'1952-07-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (98,'Individual',NULL,'Mr. Daren ÅÄ…chowski',NULL,NULL,'Daren','A','ÅÄ…chowski',1,0,0,0,0,0,NULL,'ÅÄ…chowski, Daren',NULL,NULL,NULL,'5',NULL,'2421029713',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Mr. Daren ÅÄ…chowski',NULL,2,'1934-04-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (99,'Individual',NULL,'Dr. Allen Cooper',NULL,NULL,'Allen','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Allen',NULL,NULL,NULL,NULL,NULL,'1888383899',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Cooper',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (100,'Individual',NULL,'Dr. Juliann Nielsen','Maple Wellness Alliance',NULL,'Juliann','M','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Juliann',NULL,NULL,NULL,'2',NULL,'3555715796',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Dr. Juliann Nielsen',NULL,NULL,'1965-02-27',0,NULL,NULL,NULL,NULL,NULL,88,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (101,'Organization',NULL,'District of Columbia Family Fellowship','District of Columbia Family Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'District of Columbia Family Fellowship',NULL,NULL,NULL,'2',NULL,'185925980',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'District of Columbia Family Fellowship',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (102,'Individual',NULL,'Dr. Elina Jensen',NULL,NULL,'Elina','T','Jensen',0,0,0,0,0,0,NULL,'Jensen, Elina',NULL,NULL,NULL,NULL,NULL,'2625728964',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Dr. Elina Jensen',NULL,NULL,NULL,1,'2022-08-05',NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (103,'Individual',NULL,'Dr. Princess Nielsen',NULL,NULL,'Princess','R','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Princess',NULL,NULL,NULL,'3',NULL,'157426580',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Dr. Princess Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (104,'Individual',NULL,'Brigette Grant',NULL,NULL,'Brigette','J','Grant',0,0,0,0,0,0,NULL,'Grant, Brigette',NULL,NULL,NULL,'4',NULL,'996729836',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Grant',NULL,1,'1948-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (105,'Household',NULL,'ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,'2407077255',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear ÅÄ…chowski family',5,NULL,'Dear ÅÄ…chowski family',2,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (106,'Individual',NULL,'Roland ÅÄ…chowski Jr.',NULL,NULL,'Roland','R','ÅÄ…chowski',1,0,0,0,0,0,NULL,'ÅÄ…chowski, Roland',NULL,NULL,NULL,'1',NULL,'1498526146',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Roland',1,NULL,'Dear Roland',1,NULL,'Roland ÅÄ…chowski Jr.',NULL,2,'1952-12-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (107,'Individual',NULL,'Mrs. Delana Dimitrov',NULL,NULL,'Delana','U','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Delana',NULL,NULL,NULL,'3',NULL,'4026480882',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Mrs. Delana Dimitrov',NULL,NULL,'1982-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (108,'Individual',NULL,'Mr. Scott Wilson II',NULL,NULL,'Scott','','Wilson',1,0,0,0,0,0,NULL,'Wilson, Scott',NULL,NULL,NULL,'4',NULL,'3378305352',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Mr. Scott Wilson II',NULL,2,'1968-10-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (109,'Household',NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Grant family',NULL,NULL,NULL,NULL,NULL,'3228000340',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Grant family',5,NULL,'Dear Grant family',2,NULL,'Grant family',NULL,NULL,NULL,0,NULL,'Grant family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (110,'Individual',NULL,'Dr. Justina Jensen',NULL,NULL,'Justina','','Jensen',0,0,0,0,0,0,NULL,'Jensen, Justina',NULL,NULL,NULL,NULL,NULL,'3253764259',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Dr. Justina Jensen',NULL,NULL,'1959-08-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (111,'Individual',NULL,'Lawerence Samson','Kermit Sustainability Collective',NULL,'Lawerence','X','Samson',0,1,0,0,0,0,NULL,'Samson, Lawerence',NULL,NULL,NULL,'3',NULL,'2952043031',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence Samson',NULL,2,'1946-04-04',0,NULL,NULL,NULL,NULL,NULL,191,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (112,'Individual',NULL,'Rebekah DÃaz-Smith',NULL,NULL,'Rebekah','','DÃaz-Smith',0,0,0,0,0,0,NULL,'DÃaz-Smith, Rebekah',NULL,NULL,NULL,'5',NULL,'1695976558',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah DÃaz-Smith',NULL,NULL,'1998-07-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (113,'Individual',NULL,'Mr. Ray Jensen Jr.',NULL,NULL,'Ray','N','Jensen',0,0,0,0,0,0,NULL,'Jensen, Ray',NULL,NULL,NULL,NULL,NULL,'2879715845',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray Jensen Jr.',NULL,2,'1964-07-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (114,'Individual',NULL,'Brigette DÃaz',NULL,NULL,'Brigette','N','DÃaz',0,1,0,0,0,0,NULL,'DÃaz, Brigette',NULL,NULL,NULL,NULL,NULL,'939555461',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette DÃaz',NULL,1,'1996-03-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (115,'Individual',NULL,'Elbert Terry',NULL,NULL,'Elbert','','Terry',0,1,0,0,0,0,NULL,'Terry, Elbert',NULL,NULL,NULL,NULL,NULL,'2300910688',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Terry',NULL,2,'1985-06-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (116,'Individual',NULL,'Barry Blackwell II',NULL,NULL,'Barry','T','Blackwell',0,1,0,0,0,0,NULL,'Blackwell, Barry',NULL,NULL,NULL,NULL,NULL,'2851899457',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Blackwell II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (117,'Organization',NULL,'Pennsylvania Literacy Academy','Pennsylvania Literacy Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Pennsylvania Literacy Academy',NULL,NULL,NULL,'4',NULL,'3819951456',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Pennsylvania Literacy Academy',NULL,NULL,NULL,0,NULL,NULL,16,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (118,'Individual',NULL,'Mr. Daren DÃaz III',NULL,NULL,'Daren','U','DÃaz',1,0,0,0,0,0,NULL,'DÃaz, Daren',NULL,NULL,NULL,'1',NULL,'2658717437',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Daren',1,NULL,'Dear Daren',1,NULL,'Mr. Daren DÃaz III',NULL,2,'1960-07-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (119,'Individual',NULL,'Alida Jensen',NULL,NULL,'Alida','F','Jensen',0,0,0,0,0,0,NULL,'Jensen, Alida',NULL,NULL,NULL,NULL,NULL,'2481864590',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Jensen',NULL,1,'1995-10-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (120,'Individual',NULL,'Mr. Billy Nielsen',NULL,NULL,'Billy','J','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Billy',NULL,NULL,NULL,'4',NULL,'1021011479',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Billy',1,NULL,'Dear Billy',1,NULL,'Mr. Billy Nielsen',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (121,'Household',NULL,'Terrell-Wattson family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Terrell-Wattson family',NULL,NULL,NULL,'4',NULL,'123807827',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell-Wattson family',5,NULL,'Dear Terrell-Wattson family',2,NULL,'Terrell-Wattson family',NULL,NULL,NULL,0,NULL,'Terrell-Wattson family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (122,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,'4',NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (123,'Individual',NULL,'Mrs. Alida Cooper',NULL,NULL,'Alida','T','Cooper',0,0,0,0,0,0,NULL,'Cooper, Alida',NULL,NULL,NULL,'2',NULL,'4292976032',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Mrs. Alida Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (124,'Organization',NULL,'Friends Music Systems','Friends Music Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Friends Music Systems',NULL,NULL,NULL,'2',NULL,'1447056853',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Friends Music Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (125,'Organization',NULL,'Lake City Peace Collective','Lake City Peace Collective',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Lake City Peace Collective',NULL,NULL,NULL,'1',NULL,'1535294293',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Lake City Peace Collective',NULL,NULL,NULL,0,NULL,NULL,143,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (126,'Household',NULL,'González-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'González-ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,'2696974403',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear González-ÅÄ…chowski family',5,NULL,'Dear González-ÅÄ…chowski family',2,NULL,'González-ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'González-ÅÄ…chowski family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (127,'Organization',NULL,'New York Development Alliance','New York Development Alliance',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'New York Development Alliance',NULL,NULL,NULL,NULL,NULL,'2521806482',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Development Alliance',NULL,NULL,NULL,0,NULL,NULL,157,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (128,'Individual',NULL,'Mr. Maria DÃaz','Minnesota Education Network',NULL,'Maria','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Maria',NULL,NULL,NULL,NULL,NULL,'2942500369',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria DÃaz',NULL,2,'1979-04-28',0,NULL,NULL,NULL,NULL,NULL,181,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (129,'Household',NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,'766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (130,'Individual',NULL,'Dr. Bryon ÅÄ…chowski Jr.',NULL,NULL,'Bryon','B','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Bryon',NULL,NULL,NULL,NULL,NULL,'2870735339',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Dr. Bryon ÅÄ…chowski Jr.',NULL,2,'1986-02-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (131,'Individual',NULL,'Brigette Terrell-Wattson',NULL,NULL,'Brigette','','Terrell-Wattson',0,0,0,0,0,0,NULL,'Terrell-Wattson, Brigette',NULL,NULL,NULL,NULL,NULL,'4024735126',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Brigette Terrell-Wattson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (132,'Individual',NULL,'Mrs. Rebekah Grant',NULL,NULL,'Rebekah','X','Grant',0,0,0,0,0,0,NULL,'Grant, Rebekah',NULL,NULL,NULL,'4',NULL,'2220332101',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Mrs. Rebekah Grant',NULL,1,'1959-03-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (133,'Individual',NULL,'Barry Wattson Sr.',NULL,NULL,'Barry','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Barry',NULL,NULL,NULL,NULL,NULL,'3218596255',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Wattson Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (134,'Individual',NULL,'Margaret ÅÄ…chowski',NULL,NULL,'Margaret','C','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Margaret',NULL,NULL,NULL,NULL,NULL,'1214338746',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret ÅÄ…chowski',NULL,1,'1963-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (135,'Individual',NULL,'Elizabeth Samson',NULL,NULL,'Elizabeth','Q','Samson',0,0,0,0,0,0,NULL,'Samson, Elizabeth',NULL,NULL,NULL,'5',NULL,'2428742753',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Samson',NULL,1,'1965-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (136,'Individual',NULL,'Ray Terrell-Grant','Nebraska Action Fund',NULL,'Ray','','Terrell-Grant',0,0,0,0,1,0,NULL,'Terrell-Grant, Ray',NULL,NULL,NULL,NULL,NULL,'518076437',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Ray Terrell-Grant',NULL,NULL,'1989-06-28',0,NULL,NULL,NULL,NULL,NULL,37,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (137,'Individual',NULL,'swilson@fishmail.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'swilson@fishmail.net',NULL,NULL,NULL,NULL,NULL,'4039891968',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear swilson@fishmail.net',1,NULL,'Dear swilson@fishmail.net',1,NULL,'swilson@fishmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (138,'Individual',NULL,'Mrs. Santina Samuels',NULL,NULL,'Santina','K','Samuels',1,1,0,0,0,0,NULL,'Samuels, Santina',NULL,NULL,NULL,NULL,NULL,'2514918858',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Samuels',NULL,NULL,'1982-04-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (139,'Individual',NULL,'Russell Terrell',NULL,NULL,'Russell','U','Terrell',0,0,0,0,0,0,NULL,'Terrell, Russell',NULL,NULL,NULL,'1',NULL,'127505299',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Terrell',NULL,NULL,'1980-11-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (140,'Individual',NULL,'Dr. Rebekah Wattson-Reynolds',NULL,NULL,'Rebekah','','Wattson-Reynolds',0,1,0,0,0,0,NULL,'Wattson-Reynolds, Rebekah',NULL,NULL,NULL,NULL,NULL,'2339170736',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Dr. Rebekah Wattson-Reynolds',NULL,NULL,'1991-06-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (141,'Individual',NULL,'Bryon Lee III',NULL,NULL,'Bryon','','Lee',0,1,0,0,0,0,NULL,'Lee, Bryon',NULL,NULL,NULL,'5',NULL,'369670244',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Bryon Lee III',NULL,NULL,'1970-03-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (142,'Individual',NULL,'Dr. Clint Jones',NULL,NULL,'Clint','P','Jones',0,0,0,0,0,0,NULL,'Jones, Clint',NULL,NULL,NULL,'5',NULL,'329949700',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Dr. Clint Jones',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (143,'Individual',NULL,'Dr. Norris Blackwell','Lake City Peace Collective',NULL,'Norris','','Blackwell',0,0,0,0,1,0,NULL,'Blackwell, Norris',NULL,NULL,NULL,NULL,NULL,'2555129550',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Dr. Norris Blackwell',NULL,NULL,'1980-03-11',0,NULL,NULL,NULL,NULL,NULL,125,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (144,'Individual',NULL,'Ms. Mei Parker',NULL,NULL,'Mei','','Parker',0,0,0,0,0,0,NULL,'Parker, Mei',NULL,NULL,NULL,NULL,NULL,'285847046',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Ms. Mei Parker',NULL,1,'1943-05-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (145,'Individual',NULL,'Kiara Wilson',NULL,NULL,'Kiara','','Wilson',1,0,0,0,0,0,NULL,'Wilson, Kiara',NULL,NULL,NULL,'4',NULL,'3345517320',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Wilson',NULL,1,'2016-10-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (146,'Individual',NULL,'Mr. Allan Reynolds',NULL,NULL,'Allan','','Reynolds',0,1,0,0,0,0,NULL,'Reynolds, Allan',NULL,NULL,NULL,'2',NULL,'2732914112',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Mr. Allan Reynolds',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (147,'Organization',NULL,'Urban Development Alliance','Urban Development Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Urban Development Alliance',NULL,NULL,NULL,'1',NULL,'916341603',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Development Alliance',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (148,'Individual',NULL,'Lawerence González',NULL,NULL,'Lawerence','','González',1,0,0,0,0,0,NULL,'González, Lawerence',NULL,NULL,NULL,NULL,NULL,'740179801',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Lawerence González',NULL,2,'1984-08-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (149,'Household',NULL,'Olsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Olsen family',NULL,NULL,NULL,'3',NULL,'1990073228',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen family',5,NULL,'Dear Olsen family',2,NULL,'Olsen family',NULL,NULL,NULL,0,NULL,'Olsen family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (150,'Individual',NULL,'Dr. Toby Olsen',NULL,NULL,'Toby','L','Olsen',0,0,0,0,0,0,NULL,'Olsen, Toby',NULL,NULL,NULL,'5',NULL,'2803490896',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Dr. Toby Olsen',NULL,2,'1998-06-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (151,'Individual',NULL,'Mrs. Rebekah DÃaz-Smith',NULL,NULL,'Rebekah','I','DÃaz-Smith',0,0,0,0,0,0,NULL,'DÃaz-Smith, Rebekah',NULL,NULL,NULL,'5',NULL,'1695976558',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Mrs. Rebekah DÃaz-Smith',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (152,'Individual',NULL,'Scarlet Robertson',NULL,NULL,'Scarlet','K','Robertson',0,0,0,0,0,0,NULL,'Robertson, Scarlet',NULL,NULL,NULL,'1',NULL,'3370215540',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Robertson',NULL,NULL,'2001-01-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (153,'Individual',NULL,'ab.reynolds@mymail.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'ab.reynolds@mymail.co.in',NULL,NULL,NULL,'3',NULL,'2028329984',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear ab.reynolds@mymail.co.in',1,NULL,'Dear ab.reynolds@mymail.co.in',1,NULL,'ab.reynolds@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (154,'Individual',NULL,'Mrs. Brittney González-Jameson',NULL,NULL,'Brittney','L','González-Jameson',0,0,0,0,0,0,NULL,'González-Jameson, Brittney',NULL,NULL,NULL,NULL,NULL,'2104518389',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Brittney',1,NULL,'Dear Brittney',1,NULL,'Mrs. Brittney González-Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (155,'Individual',NULL,'elinar93@spamalot.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'elinar93@spamalot.co.in',NULL,NULL,NULL,NULL,NULL,'2711049419',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear elinar93@spamalot.co.in',1,NULL,'Dear elinar93@spamalot.co.in',1,NULL,'elinar93@spamalot.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (156,'Individual',NULL,'Mr. Elbert DÃaz Sr.',NULL,NULL,'Elbert','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Elbert',NULL,NULL,NULL,NULL,NULL,'3277500689',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert DÃaz Sr.',NULL,NULL,'1987-12-16',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (157,'Individual',NULL,'Ashlie Jensen','New York Development Alliance',NULL,'Ashlie','','Jensen',1,0,0,0,0,0,NULL,'Jensen, Ashlie',NULL,NULL,NULL,'3',NULL,'2039449284',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Jensen',NULL,NULL,'1995-11-07',0,NULL,NULL,NULL,NULL,NULL,127,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (158,'Individual',NULL,'Shad Terrell-Grant',NULL,NULL,'Shad','','Terrell-Grant',0,0,0,0,0,0,NULL,'Terrell-Grant, Shad',NULL,NULL,NULL,'2',NULL,'3228076972',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Shad Terrell-Grant',NULL,2,'1996-04-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (159,'Individual',NULL,'Elbert Blackwell',NULL,NULL,'Elbert','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Elbert',NULL,NULL,NULL,'1',NULL,'3406370958',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Elbert Blackwell',NULL,2,'1961-12-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (160,'Individual',NULL,'Dr. Landon Terrell II',NULL,NULL,'Landon','T','Terrell',1,0,0,0,0,0,NULL,'Terrell, Landon',NULL,NULL,NULL,'1',NULL,'4168752118',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon Terrell II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (161,'Individual',NULL,'Mrs. Santina Roberts',NULL,NULL,'Santina','','Roberts',0,1,0,0,0,0,NULL,'Roberts, Santina',NULL,NULL,NULL,'3',NULL,'1490757631',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Mrs. Santina Roberts',NULL,NULL,'1953-07-20',1,'2023-06-06',NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (162,'Individual',NULL,'Mr. Maria Nielsen II',NULL,NULL,'Maria','','Nielsen',1,0,0,0,0,0,NULL,'Nielsen, Maria',NULL,NULL,NULL,'5',NULL,'60570432',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Maria',1,NULL,'Dear Maria',1,NULL,'Mr. Maria Nielsen II',NULL,2,'1965-06-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (163,'Individual',NULL,'Russell Wagner',NULL,NULL,'Russell','V','Wagner',0,0,0,0,0,0,NULL,'Wagner, Russell',NULL,NULL,NULL,NULL,NULL,'3304810540',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Wagner',NULL,2,'1981-03-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (164,'Individual',NULL,'Dr. Carlos Bachman',NULL,NULL,'Carlos','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Carlos',NULL,NULL,NULL,NULL,NULL,'4021780594',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Dr. Carlos Bachman',NULL,2,'1983-04-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (165,'Household',NULL,'Samson-Cooper family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Samson-Cooper family',NULL,NULL,NULL,'3',NULL,'3303467244',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Samson-Cooper family',5,NULL,'Dear Samson-Cooper family',2,NULL,'Samson-Cooper family',NULL,NULL,NULL,0,NULL,'Samson-Cooper family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (166,'Organization',NULL,'California Legal Solutions','California Legal Solutions',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'California Legal Solutions',NULL,NULL,NULL,'1',NULL,'3986970694',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'California Legal Solutions',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (167,'Individual',NULL,'migueld@airmail.net','Van Ness Environmental Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'migueld@airmail.net',NULL,NULL,NULL,NULL,NULL,'2084183003',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear migueld@airmail.net',1,NULL,'Dear migueld@airmail.net',1,NULL,'migueld@airmail.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,173,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (168,'Individual',NULL,'mllerc35@fakemail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'mllerc35@fakemail.com',NULL,NULL,NULL,NULL,NULL,'3058929808',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear mllerc35@fakemail.com',1,NULL,'Dear mllerc35@fakemail.com',1,NULL,'mllerc35@fakemail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (169,'Individual',NULL,'wattson.t.roland@notmail.co.uk','Jackson Sports Academy',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'wattson.t.roland@notmail.co.uk',NULL,NULL,NULL,'3',NULL,'1082858682',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear wattson.t.roland@notmail.co.uk',1,NULL,'Dear wattson.t.roland@notmail.co.uk',1,NULL,'wattson.t.roland@notmail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,8,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (170,'Individual',NULL,'Ms. Jina Samuels',NULL,NULL,'Jina','S','Samuels',0,1,0,0,0,0,NULL,'Samuels, Jina',NULL,NULL,NULL,'5',NULL,'202942024',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Ms. Jina Samuels',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (171,'Individual',NULL,'Mei Samuels',NULL,NULL,'Mei','F','Samuels',0,1,0,0,0,0,NULL,'Samuels, Mei',NULL,NULL,NULL,NULL,NULL,'2521418918',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Samuels',NULL,1,'1943-05-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (172,'Individual',NULL,'robertsn@lol.info',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'robertsn@lol.info',NULL,NULL,NULL,NULL,NULL,'3055687943',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear robertsn@lol.info',1,NULL,'Dear robertsn@lol.info',1,NULL,'robertsn@lol.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (173,'Organization',NULL,'Van Ness Environmental Partners','Van Ness Environmental Partners',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Van Ness Environmental Partners',NULL,NULL,NULL,'5',NULL,'1648830337',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Van Ness Environmental Partners',NULL,NULL,NULL,0,NULL,NULL,167,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (174,'Household',NULL,'ÅÄ…chowski family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,'4',NULL,'2407077255',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear ÅÄ…chowski family',5,NULL,'Dear ÅÄ…chowski family',2,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,0,NULL,'ÅÄ…chowski family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (175,'Organization',NULL,'Community Literacy School','Community Literacy School',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Community Literacy School',NULL,NULL,NULL,'1',NULL,'796670246',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Community Literacy School',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (176,'Household',NULL,'DÃaz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'DÃaz family',NULL,NULL,NULL,'5',NULL,'2169249835',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear DÃaz family',5,NULL,'Dear DÃaz family',2,NULL,'DÃaz family',NULL,NULL,NULL,0,NULL,'DÃaz family',NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (177,'Individual',NULL,'Mr. Omar Parker',NULL,NULL,'Omar','','Parker',0,0,0,0,0,0,NULL,'Parker, Omar',NULL,NULL,NULL,'1',NULL,'3921166397',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Mr. Omar Parker',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (178,'Individual',NULL,'Dr. Clint ÅÄ…chowski III',NULL,NULL,'Clint','O','ÅÄ…chowski',0,0,0,0,0,0,NULL,'ÅÄ…chowski, Clint',NULL,NULL,NULL,'3',NULL,'3739390908',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Dr. Clint ÅÄ…chowski III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (179,'Organization',NULL,'Bay Sports Collective','Bay Sports Collective',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Bay Sports Collective',NULL,NULL,NULL,'4',NULL,'3365443520',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Bay Sports Collective',NULL,NULL,NULL,0,NULL,NULL,77,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (180,'Individual',NULL,'Scarlet Nielsen-Terry',NULL,NULL,'Scarlet','','Nielsen-Terry',0,0,0,0,0,0,NULL,'Nielsen-Terry, Scarlet',NULL,NULL,NULL,NULL,NULL,'353347519',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Scarlet Nielsen-Terry',NULL,1,'1978-07-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (181,'Organization',NULL,'Minnesota Education Network','Minnesota Education Network',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Minnesota Education Network',NULL,NULL,NULL,NULL,NULL,'1509961695',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Minnesota Education Network',NULL,NULL,NULL,0,NULL,NULL,128,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (182,'Individual',NULL,'Mrs. Iris Wattson',NULL,NULL,'Iris','','Wattson',0,0,0,0,0,0,NULL,'Wattson, Iris',NULL,NULL,NULL,'5',NULL,'532322376',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Mrs. Iris Wattson',NULL,1,'1980-02-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (183,'Individual',NULL,'Carlos Deforest',NULL,NULL,'Carlos','H','Deforest',0,0,0,0,0,0,NULL,'Deforest, Carlos',NULL,NULL,NULL,NULL,NULL,'2222599648',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Deforest',NULL,2,'1985-06-10',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (184,'Individual',NULL,'Josefa Cooper',NULL,NULL,'Josefa','R','Cooper',0,1,0,0,0,0,NULL,'Cooper, Josefa',NULL,NULL,NULL,NULL,NULL,'1658731822',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Josefa',1,NULL,'Dear Josefa',1,NULL,'Josefa Cooper',NULL,1,'1951-01-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (185,'Individual',NULL,'Mrs. Bernadette Terry',NULL,NULL,'Bernadette','F','Terry',0,0,0,0,1,0,NULL,'Terry, Bernadette',NULL,NULL,NULL,'4',NULL,'2401458356',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Mrs. Bernadette Terry',NULL,1,'1951-03-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (186,'Individual',NULL,'Ashlie Samson-Cooper',NULL,NULL,'Ashlie','','Samson-Cooper',0,1,0,0,1,0,NULL,'Samson-Cooper, Ashlie',NULL,NULL,NULL,NULL,NULL,'483671564',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Samson-Cooper',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (187,'Household',NULL,'Jensen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Jensen family',NULL,NULL,NULL,'5',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-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (188,'Individual',NULL,'Ashley Samson-Cooper III',NULL,NULL,'Ashley','','Samson-Cooper',0,0,0,0,0,0,NULL,'Samson-Cooper, Ashley',NULL,NULL,NULL,'4',NULL,'2757766479',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Samson-Cooper III',NULL,NULL,'1985-01-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (189,'Individual',NULL,'Heidi ÅÄ…chowski',NULL,NULL,'Heidi','K','ÅÄ…chowski',1,0,0,0,0,0,NULL,'ÅÄ…chowski, Heidi',NULL,NULL,NULL,'2',NULL,'1305700724',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi ÅÄ…chowski',NULL,NULL,'1986-08-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (190,'Individual',NULL,'Elina Deforest',NULL,NULL,'Elina','I','Deforest',0,1,0,0,1,0,NULL,'Deforest, Elina',NULL,NULL,NULL,'4',NULL,'1943101487',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Elina Deforest',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (191,'Organization',NULL,'Kermit Sustainability Collective','Kermit Sustainability Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Kermit Sustainability Collective',NULL,NULL,NULL,NULL,NULL,'3027771782',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Kermit Sustainability Collective',NULL,NULL,NULL,0,NULL,NULL,111,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (192,'Individual',NULL,'Errol González-ÅÄ…chowski III',NULL,NULL,'Errol','','González-ÅÄ…chowski',0,1,0,0,1,0,NULL,'González-ÅÄ…chowski, Errol',NULL,NULL,NULL,NULL,NULL,'3571001074',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol González-ÅÄ…chowski III',NULL,2,'1999-05-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (193,'Individual',NULL,'Santina Reynolds',NULL,NULL,'Santina','','Reynolds',0,0,0,0,0,0,NULL,'Reynolds, Santina',NULL,NULL,NULL,'4',NULL,'3534228048',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Santina',1,NULL,'Dear Santina',1,NULL,'Santina Reynolds',NULL,1,'2008-07-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (194,'Individual',NULL,'Sharyn DÃaz',NULL,NULL,'Sharyn','','DÃaz',0,1,0,0,0,0,NULL,'DÃaz, Sharyn',NULL,NULL,NULL,'1',NULL,'4129279229',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn DÃaz',NULL,1,'1986-07-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (195,'Individual',NULL,'Mr. Erik Adams III',NULL,NULL,'Erik','H','Adams',0,1,0,0,0,0,NULL,'Adams, Erik',NULL,NULL,NULL,'3',NULL,'1567928244',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Erik',1,NULL,'Dear Erik',1,NULL,'Mr. Erik Adams III',NULL,2,'1972-04-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (196,'Individual',NULL,'Ivey Prentice',NULL,NULL,'Ivey','K','Prentice',0,0,0,0,0,0,NULL,'Prentice, Ivey',NULL,NULL,NULL,NULL,NULL,'543143122',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Prentice',NULL,NULL,'1976-07-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (197,'Individual',NULL,'margaretjensen39@sample.co.nz',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'margaretjensen39@sample.co.nz',NULL,NULL,NULL,'3',NULL,'2925107065',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear margaretjensen39@sample.co.nz',1,NULL,'Dear margaretjensen39@sample.co.nz',1,NULL,'margaretjensen39@sample.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (198,'Individual',NULL,'Errol Grant','United Empowerment Association',NULL,'Errol','','Grant',0,0,0,0,0,0,NULL,'Grant, Errol',NULL,NULL,NULL,NULL,NULL,'3028211429',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol Grant',NULL,NULL,'1952-03-16',0,NULL,NULL,NULL,NULL,NULL,89,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (199,'Individual',NULL,'daz.arlyne@airmail.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'daz.arlyne@airmail.biz',NULL,NULL,NULL,NULL,NULL,'714825777',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear daz.arlyne@airmail.biz',1,NULL,'Dear daz.arlyne@airmail.biz',1,NULL,'daz.arlyne@airmail.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:21','Both'), - (200,'Individual',NULL,'Claudio Adams Sr.',NULL,NULL,'Claudio','I','Adams',0,0,0,0,0,0,NULL,'Adams, Claudio',NULL,NULL,NULL,'1',NULL,'3216468199',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Claudio',1,NULL,'Dear Claudio',1,NULL,'Claudio Adams Sr.',NULL,2,'1936-06-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','Both'), - (201,'Individual',NULL,'Margaret Nielsen',NULL,NULL,'Margaret','C','Nielsen',1,0,0,0,1,0,NULL,'Nielsen, Margaret',NULL,NULL,NULL,'3',NULL,'3984018462',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-06-09 21:52:20','2023-06-09 21:52:20','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','c79cf7cf3b1e23ab85eeccf31d53e534',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-06-09 21:52:21','2023-06-09 21:52:21','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-08-02 20:53:30','Both'), + (2,'Individual',NULL,'Mr. Lincoln Terry',NULL,NULL,'Lincoln','Q','Terry',0,0,0,0,0,0,NULL,'Terry, Lincoln',NULL,NULL,NULL,NULL,NULL,'2249730385',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln Terry',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (3,'Individual',NULL,'Eleonor Robertson',NULL,NULL,'Eleonor','U','Robertson',0,1,0,0,0,0,NULL,'Robertson, Eleonor',NULL,NULL,NULL,'5',NULL,'2051195654',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Robertson',NULL,1,'1986-12-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (4,'Individual',NULL,'Mrs. Herminia Roberts',NULL,NULL,'Herminia','B','Roberts',0,0,0,0,1,0,NULL,'Roberts, Herminia',NULL,NULL,NULL,'5',NULL,'3243130524',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Mrs. Herminia Roberts',NULL,1,'1958-05-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:36','Both'), + (5,'Individual',NULL,'le.jameson31@lol.co.in',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'le.jameson31@lol.co.in',NULL,NULL,NULL,NULL,NULL,'2698948479',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear le.jameson31@lol.co.in',1,NULL,'Dear le.jameson31@lol.co.in',1,NULL,'le.jameson31@lol.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (6,'Individual',NULL,'Allan Wilson',NULL,NULL,'Allan','','Wilson',0,0,0,0,1,0,NULL,'Wilson, Allan',NULL,NULL,NULL,'5',NULL,'1133423819',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Wilson',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (7,'Individual',NULL,'Mrs. Elina Barkley',NULL,NULL,'Elina','I','Barkley',0,0,0,0,1,0,NULL,'Barkley, Elina',NULL,NULL,NULL,'2',NULL,'522372077',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Mrs. Elina Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (8,'Individual',NULL,'robertsons@notmail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'robertsons@notmail.org',NULL,NULL,NULL,NULL,NULL,'3993166500',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear robertsons@notmail.org',1,NULL,'Dear robertsons@notmail.org',1,NULL,'robertsons@notmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (9,'Individual',NULL,'Lashawnda Deforest',NULL,NULL,'Lashawnda','N','Deforest',0,0,0,0,1,0,NULL,'Deforest, Lashawnda',NULL,NULL,NULL,NULL,NULL,'1832484345',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lashawnda',1,NULL,'Dear Lashawnda',1,NULL,'Lashawnda Deforest',NULL,1,'2005-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (10,'Individual',NULL,'Magan Yadav',NULL,NULL,'Magan','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Magan',NULL,NULL,NULL,NULL,NULL,'88790956',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Yadav',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (11,'Individual',NULL,'Mr. Sanford Zope II','Tylertown Action Partnership',NULL,'Sanford','','Zope',0,0,0,0,0,0,NULL,'Zope, Sanford',NULL,NULL,NULL,NULL,NULL,'3485406852',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Mr. Sanford Zope II',NULL,2,'1966-01-09',0,NULL,NULL,NULL,NULL,NULL,76,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (12,'Household',NULL,'Terry-Grant family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terry-Grant family',NULL,NULL,NULL,NULL,NULL,'2182329155',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry-Grant family',5,NULL,'Dear Terry-Grant family',2,NULL,'Terry-Grant family',NULL,NULL,NULL,0,NULL,'Terry-Grant family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (13,'Organization',NULL,'United Empowerment Services','United Empowerment Services',NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'United Empowerment Services',NULL,NULL,NULL,NULL,NULL,'2659239182',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Empowerment Services',NULL,NULL,NULL,0,NULL,NULL,131,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (14,'Individual',NULL,'Mr. Landon González',NULL,NULL,'Landon','','González',0,0,0,0,1,0,NULL,'González, Landon',NULL,NULL,NULL,'1',NULL,'3197277926',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Mr. Landon González',NULL,2,'1959-05-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (15,'Individual',NULL,'Dr. Ashley Blackwell Sr.',NULL,NULL,'Ashley','B','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Ashley',NULL,NULL,NULL,NULL,NULL,'2843113739',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Blackwell Sr.',NULL,NULL,'1979-06-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (16,'Organization',NULL,'Local Family Solutions','Local Family Solutions',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Local Family Solutions',NULL,NULL,NULL,NULL,NULL,'4236436926',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Family Solutions',NULL,NULL,NULL,0,NULL,NULL,186,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (17,'Individual',NULL,'Dr. Ashley Robertson',NULL,NULL,'Ashley','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Ashley',NULL,NULL,NULL,NULL,NULL,'3118372484',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Dr. Ashley Robertson',NULL,2,'1996-03-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (18,'Individual',NULL,'landongrant@mymail.com',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'landongrant@mymail.com',NULL,NULL,NULL,NULL,NULL,'2888875807',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear landongrant@mymail.com',1,NULL,'Dear landongrant@mymail.com',1,NULL,'landongrant@mymail.com',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (19,'Individual',NULL,'Kandace Nielsen',NULL,NULL,'Kandace','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Kandace',NULL,NULL,NULL,'1',NULL,'1191808405',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kandace',1,NULL,'Dear Kandace',1,NULL,'Kandace Nielsen',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (20,'Individual',NULL,'Mr. Bryon Nielsen Sr.','Massachusetts Arts Fellowship',NULL,'Bryon','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Bryon',NULL,NULL,NULL,NULL,NULL,'164626710',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Mr. Bryon Nielsen Sr.',NULL,NULL,'1968-12-02',0,NULL,NULL,NULL,NULL,NULL,39,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (21,'Individual',NULL,'Kacey Jameson',NULL,NULL,'Kacey','','Jameson',0,0,0,0,0,0,NULL,'Jameson, Kacey',NULL,NULL,NULL,NULL,NULL,'2233552494',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Jameson',NULL,1,'1990-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (22,'Individual',NULL,'Barry Terry-Grant Jr.',NULL,NULL,'Barry','','Terry-Grant',1,1,0,0,0,0,NULL,'Terry-Grant, Barry',NULL,NULL,NULL,'4',NULL,'2486675812',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Barry',1,NULL,'Dear Barry',1,NULL,'Barry Terry-Grant Jr.',NULL,2,'2003-07-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (23,'Individual',NULL,'Toby Terrell',NULL,NULL,'Toby','U','Terrell',0,0,0,0,0,0,NULL,'Terrell, Toby',NULL,NULL,NULL,'3',NULL,'935057272',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Toby Terrell',NULL,NULL,'1963-07-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (24,'Individual',NULL,'Dr. Russell Cruz II',NULL,NULL,'Russell','','Cruz',0,1,0,0,0,0,NULL,'Cruz, Russell',NULL,NULL,NULL,'2',NULL,'3756174623',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Dr. Russell Cruz II',NULL,2,'1990-02-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (25,'Individual',NULL,'Mr. Bob Prentice',NULL,NULL,'Bob','','Prentice',0,0,0,0,1,0,NULL,'Prentice, Bob',NULL,NULL,NULL,NULL,NULL,'912966256',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Mr. Bob Prentice',NULL,2,'1999-08-03',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (26,'Individual',NULL,'Truman Samuels Jr.',NULL,NULL,'Truman','','Samuels',1,0,0,0,0,0,NULL,'Samuels, Truman',NULL,NULL,NULL,NULL,NULL,'818816780',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Samuels Jr.',NULL,2,'1991-03-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (27,'Individual',NULL,'Damaris Nielsen-Barkley','Martin Luther King Development Systems',NULL,'Damaris','','Nielsen-Barkley',0,1,0,0,0,0,NULL,'Nielsen-Barkley, Damaris',NULL,NULL,NULL,NULL,NULL,'1101172954',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Nielsen-Barkley',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,68,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (28,'Organization',NULL,'Georgia Family Collective','Georgia Family Collective',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Georgia Family Collective',NULL,NULL,NULL,'2',NULL,'570596159',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Georgia Family Collective',NULL,NULL,NULL,0,NULL,NULL,133,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (29,'Individual',NULL,'Allan Barkley Sr.',NULL,NULL,'Allan','K','Barkley',0,1,0,0,0,0,NULL,'Barkley, Allan',NULL,NULL,NULL,NULL,NULL,'4216235672',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Barkley Sr.',NULL,NULL,'2012-06-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:36','Both'), + (30,'Household',NULL,'Lee family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Lee family',NULL,NULL,NULL,'1',NULL,'845831176',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Lee family',5,NULL,'Dear Lee family',2,NULL,'Lee family',NULL,NULL,NULL,0,NULL,'Lee family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (31,'Individual',NULL,'landonbachman23@fakemail.co.pl',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'landonbachman23@fakemail.co.pl',NULL,NULL,NULL,'1',NULL,'996419736',NULL,'Sample Data',4,1,NULL,NULL,1,NULL,'Dear landonbachman23@fakemail.co.pl',1,NULL,'Dear landonbachman23@fakemail.co.pl',1,NULL,'landonbachman23@fakemail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (32,'Individual',NULL,'Ms. Megan Deforest',NULL,NULL,'Megan','','Deforest',1,0,0,0,0,0,NULL,'Deforest, Megan',NULL,NULL,NULL,'1',NULL,'588269616',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Megan',1,NULL,'Dear Megan',1,NULL,'Ms. Megan Deforest',NULL,1,'1977-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (33,'Individual',NULL,'Norris Deforest',NULL,NULL,'Norris','W','Deforest',0,0,0,0,1,0,NULL,'Deforest, Norris',NULL,NULL,NULL,NULL,NULL,'3342248355',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Norris Deforest',NULL,2,'1969-01-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (34,'Individual',NULL,'Alida Terry',NULL,NULL,'Alida','H','Terry',0,0,0,0,0,0,NULL,'Terry, Alida',NULL,NULL,NULL,NULL,NULL,'2637023605',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alida',1,NULL,'Dear Alida',1,NULL,'Alida Terry',NULL,1,'2012-05-11',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (35,'Individual',NULL,'Dr. Brent Prentice',NULL,NULL,'Brent','L','Prentice',0,0,0,0,0,0,NULL,'Prentice, Brent',NULL,NULL,NULL,NULL,NULL,'279352372',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Prentice',NULL,2,'1992-03-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (36,'Individual',NULL,'Brent González Sr.',NULL,NULL,'Brent','Z','González',0,0,0,0,0,0,NULL,'González, Brent',NULL,NULL,NULL,'1',NULL,'397348525',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent González Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (37,'Individual',NULL,'Iris Jacobs','Northpoint Education Academy',NULL,'Iris','','Jacobs',0,0,0,0,0,0,NULL,'Jacobs, Iris',NULL,NULL,NULL,'2',NULL,'3144351192',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Iris Jacobs',NULL,1,'1976-04-15',0,NULL,NULL,NULL,NULL,NULL,174,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (38,'Individual',NULL,'reynolds.n.russell1@mymail.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'reynolds.n.russell1@mymail.co.uk',NULL,NULL,NULL,'4',NULL,'563303060',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear reynolds.n.russell1@mymail.co.uk',1,NULL,'Dear reynolds.n.russell1@mymail.co.uk',1,NULL,'reynolds.n.russell1@mymail.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:36','Both'), + (39,'Organization',NULL,'Massachusetts Arts Fellowship','Massachusetts Arts Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Massachusetts Arts Fellowship',NULL,NULL,NULL,'3',NULL,'2647342',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Massachusetts Arts Fellowship',NULL,NULL,NULL,0,NULL,NULL,20,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (40,'Individual',NULL,'Mr. Irvin Lee Jr.',NULL,NULL,'Irvin','D','Lee',0,0,0,0,1,0,NULL,'Lee, Irvin',NULL,NULL,NULL,'5',NULL,'1021209038',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Mr. Irvin Lee Jr.',NULL,2,'1975-05-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (41,'Individual',NULL,'Rolando Roberts','Rural Education Alliance',NULL,'Rolando','U','Roberts',0,0,0,0,1,0,NULL,'Roberts, Rolando',NULL,NULL,NULL,NULL,NULL,'3250154238',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Roberts',NULL,2,'1987-10-16',0,NULL,NULL,NULL,NULL,NULL,54,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (42,'Household',NULL,'Deforest-Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Deforest-Blackwell family',NULL,NULL,NULL,NULL,NULL,'1400477980',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest-Blackwell family',5,NULL,'Dear Deforest-Blackwell family',2,NULL,'Deforest-Blackwell family',NULL,NULL,NULL,0,NULL,'Deforest-Blackwell family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (43,'Organization',NULL,'Local Sports School','Local Sports School',NULL,NULL,NULL,NULL,0,1,0,0,1,0,NULL,'Local Sports School',NULL,NULL,NULL,NULL,NULL,'3049485139',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Sports School',NULL,NULL,NULL,0,NULL,NULL,159,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (44,'Individual',NULL,'Ms. Juliann Jameson',NULL,NULL,'Juliann','C','Jameson',0,0,0,0,1,0,NULL,'Jameson, Juliann',NULL,NULL,NULL,NULL,NULL,'2654217870',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Ms. Juliann Jameson',NULL,1,'1967-09-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (45,'Individual',NULL,'princesso88@mymail.co.in',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'princesso88@mymail.co.in',NULL,NULL,NULL,NULL,NULL,'2423104431',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear princesso88@mymail.co.in',1,NULL,'Dear princesso88@mymail.co.in',1,NULL,'princesso88@mymail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (46,'Individual',NULL,'Carlos Blackwell II',NULL,NULL,'Carlos','J','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Carlos',NULL,NULL,NULL,NULL,NULL,'3674253965',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Blackwell II',NULL,2,'1976-02-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (47,'Individual',NULL,'Russell Smith',NULL,NULL,'Russell','W','Smith',0,0,0,0,0,0,NULL,'Smith, Russell',NULL,NULL,NULL,'2',NULL,'2357263550',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Russell',1,NULL,'Dear Russell',1,NULL,'Russell Smith',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (48,'Organization',NULL,'Urban Software Initiative','Urban Software Initiative',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Urban Software Initiative',NULL,NULL,NULL,'1',NULL,'560302493',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Urban Software Initiative',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (49,'Organization',NULL,'New York Food Initiative','New York Food Initiative',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'New York Food Initiative',NULL,NULL,NULL,'4',NULL,'2175154973',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'New York Food Initiative',NULL,NULL,NULL,0,NULL,NULL,201,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (50,'Household',NULL,'Deforest family',NULL,NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Deforest family',NULL,NULL,NULL,'4',NULL,'3235379039',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Deforest family',5,NULL,'Dear Deforest family',2,NULL,'Deforest family',NULL,NULL,NULL,0,NULL,'Deforest family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (51,'Household',NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,NULL,'3444393980',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Robertson family',5,NULL,'Dear Robertson family',2,NULL,'Robertson family',NULL,NULL,NULL,0,NULL,'Robertson family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (52,'Household',NULL,'Olsen-Müller family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Olsen-Müller family',NULL,NULL,NULL,'2',NULL,'2447197225',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Olsen-Müller family',5,NULL,'Dear Olsen-Müller family',2,NULL,'Olsen-Müller family',NULL,NULL,NULL,0,NULL,'Olsen-Müller family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (53,'Individual',NULL,'Esta Patel',NULL,NULL,'Esta','','Patel',1,0,0,0,0,0,NULL,'Patel, Esta',NULL,NULL,NULL,NULL,NULL,'1853513826',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Esta',1,NULL,'Dear Esta',1,NULL,'Esta Patel',NULL,1,'2010-06-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (54,'Organization',NULL,'Rural Education Alliance','Rural Education Alliance',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Rural Education Alliance',NULL,NULL,NULL,NULL,NULL,'1435698701',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Rural Education Alliance',NULL,NULL,NULL,0,NULL,NULL,41,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (55,'Individual',NULL,'Ashley Jones',NULL,NULL,'Ashley','','Jones',0,0,0,0,0,0,NULL,'Jones, Ashley',NULL,NULL,NULL,NULL,NULL,'3141302765',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Jones',NULL,2,'2014-07-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (56,'Individual',NULL,'Dr. Allen Cooper',NULL,NULL,'Allen','','Cooper',0,0,0,0,0,0,NULL,'Cooper, Allen',NULL,NULL,NULL,NULL,NULL,'1888383899',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Dr. Allen Cooper',NULL,2,'1965-04-01',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (57,'Individual',NULL,'Landon Cruz Jr.',NULL,NULL,'Landon','V','Cruz',0,0,0,0,0,0,NULL,'Cruz, Landon',NULL,NULL,NULL,NULL,NULL,'2389658974',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Landon Cruz Jr.',NULL,2,'1971-12-19',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (58,'Individual',NULL,'Mrs. Kathleen Bachman',NULL,NULL,'Kathleen','','Bachman',0,0,0,0,0,0,NULL,'Bachman, Kathleen',NULL,NULL,NULL,NULL,NULL,'4190804197',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Mrs. Kathleen Bachman',NULL,1,'1997-01-30',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (59,'Individual',NULL,'jdeforest-blackwell4@sample.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jdeforest-blackwell4@sample.biz',NULL,NULL,NULL,'3',NULL,'2571186084',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jdeforest-blackwell4@sample.biz',1,NULL,'Dear jdeforest-blackwell4@sample.biz',1,NULL,'jdeforest-blackwell4@sample.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (60,'Individual',NULL,'Jackson Roberts',NULL,NULL,'Jackson','','Roberts',1,0,0,0,0,0,NULL,'Roberts, Jackson',NULL,NULL,NULL,NULL,NULL,'3261233132',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Roberts',NULL,2,'1986-02-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (61,'Individual',NULL,'Felisha Prentice',NULL,NULL,'Felisha','','Prentice',1,0,0,0,0,0,NULL,'Prentice, Felisha',NULL,NULL,NULL,NULL,NULL,'3843312879',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Prentice',NULL,1,'1957-07-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (62,'Individual',NULL,'Sharyn González',NULL,NULL,'Sharyn','','González',0,1,0,0,0,0,NULL,'González, Sharyn',NULL,NULL,NULL,'1',NULL,'491929242',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Sharyn',1,NULL,'Dear Sharyn',1,NULL,'Sharyn González',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (63,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,'4',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-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (64,'Individual',NULL,'Mr. Elbert Cooper',NULL,NULL,'Elbert','H','Cooper',0,0,0,0,0,0,NULL,'Cooper, Elbert',NULL,NULL,NULL,'2',NULL,'2147415663',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Elbert',1,NULL,'Dear Elbert',1,NULL,'Mr. Elbert Cooper',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (65,'Individual',NULL,'Allan Bachman Sr.',NULL,NULL,'Allan','L','Bachman',0,0,0,0,0,0,NULL,'Bachman, Allan',NULL,NULL,NULL,NULL,NULL,'826368778',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Allan',1,NULL,'Dear Allan',1,NULL,'Allan Bachman Sr.',NULL,2,'2004-08-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (66,'Individual',NULL,'Mr. Toby Terry','Keslers Cross Lanes Health School',NULL,'Toby','J','Terry',0,0,0,0,0,0,NULL,'Terry, Toby',NULL,NULL,NULL,'2',NULL,'363267620',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Toby',1,NULL,'Dear Toby',1,NULL,'Mr. Toby Terry',NULL,2,'1953-04-06',0,NULL,NULL,NULL,NULL,NULL,195,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (67,'Organization',NULL,'United Arts Fund','United Arts Fund',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'United Arts Fund',NULL,NULL,NULL,NULL,NULL,'2562323312',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'United Arts Fund',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (68,'Organization',NULL,'Martin Luther King Development Systems','Martin Luther King Development Systems',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Martin Luther King Development Systems',NULL,NULL,NULL,NULL,NULL,'795134529',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Development Systems',NULL,NULL,NULL,0,NULL,NULL,27,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (69,'Individual',NULL,'Kiara Robertson',NULL,NULL,'Kiara','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Kiara',NULL,NULL,NULL,NULL,NULL,'516002362',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Kiara Robertson',NULL,1,'2009-05-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (70,'Individual',NULL,'Dr. Kathlyn Jones-Patel',NULL,NULL,'Kathlyn','','Jones-Patel',1,0,0,0,1,0,NULL,'Jones-Patel, Kathlyn',NULL,NULL,NULL,'4',NULL,'2020924134',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathlyn',1,NULL,'Dear Kathlyn',1,NULL,'Dr. Kathlyn Jones-Patel',NULL,1,'1960-09-20',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (71,'Individual',NULL,'Ms. Elina Ivanov',NULL,NULL,'Elina','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Elina',NULL,NULL,NULL,NULL,NULL,'555056280',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Elina',1,NULL,'Dear Elina',1,NULL,'Ms. Elina Ivanov',NULL,NULL,NULL,1,'2023-06-18',NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (72,'Individual',NULL,'Herminia Terry',NULL,NULL,'Herminia','','Terry',0,0,0,0,0,0,NULL,'Terry, Herminia',NULL,NULL,NULL,NULL,NULL,'356369010',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Herminia',1,NULL,'Dear Herminia',1,NULL,'Herminia Terry',NULL,1,'1966-09-27',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (73,'Individual',NULL,'Ms. Brigette McReynolds',NULL,NULL,'Brigette','A','McReynolds',0,0,0,0,0,0,NULL,'McReynolds, Brigette',NULL,NULL,NULL,'2',NULL,'393115724',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette McReynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (74,'Individual',NULL,'Clint Wilson II',NULL,NULL,'Clint','T','Wilson',0,0,0,0,0,0,NULL,'Wilson, Clint',NULL,NULL,NULL,'1',NULL,'1166006517',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Wilson II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (75,'Individual',NULL,'Mrs. Iris Jensen',NULL,NULL,'Iris','K','Jensen',0,0,0,0,0,0,NULL,'Jensen, Iris',NULL,NULL,NULL,'2',NULL,'3094691992',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Iris',1,NULL,'Dear Iris',1,NULL,'Mrs. Iris Jensen',NULL,1,NULL,1,'2022-09-12',NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (76,'Organization',NULL,'Tylertown Action Partnership','Tylertown Action Partnership',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Tylertown Action Partnership',NULL,NULL,NULL,'3',NULL,'3718662516',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Tylertown Action Partnership',NULL,NULL,NULL,0,NULL,NULL,11,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (77,'Individual',NULL,'Nicole Nielsen',NULL,NULL,'Nicole','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Nicole',NULL,NULL,NULL,'1',NULL,'1986505883',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Nicole',1,NULL,'Dear Nicole',1,NULL,'Nicole Nielsen',NULL,1,'1950-05-29',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (78,'Organization',NULL,'Martin Luther King Poetry Partnership','Martin Luther King Poetry Partnership',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Martin Luther King Poetry Partnership',NULL,NULL,NULL,NULL,NULL,'1872024386',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Martin Luther King Poetry Partnership',NULL,NULL,NULL,0,NULL,NULL,115,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (79,'Individual',NULL,'Mr. BrzÄ™czysÅ‚aw Robertson II',NULL,NULL,'BrzÄ™czysÅ‚aw','','Robertson',0,0,0,0,1,0,NULL,'Robertson, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,NULL,NULL,'1083443418',NULL,'Sample Data',3,3,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Mr. BrzÄ™czysÅ‚aw Robertson II',NULL,2,'1934-10-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (80,'Individual',NULL,'Mr. Lincoln Barkley',NULL,NULL,'Lincoln','C','Barkley',0,0,0,0,0,0,NULL,'Barkley, Lincoln',NULL,NULL,NULL,NULL,NULL,'1151829541',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Mr. Lincoln Barkley',NULL,NULL,'1973-06-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (81,'Individual',NULL,'Dr. Landon DÃaz',NULL,NULL,'Landon','T','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Landon',NULL,NULL,NULL,NULL,NULL,'1440703617',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Landon',1,NULL,'Dear Landon',1,NULL,'Dr. Landon DÃaz',NULL,2,'1948-12-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (82,'Organization',NULL,'Kentucky Technology Fund','Kentucky Technology Fund',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Kentucky Technology Fund',NULL,NULL,NULL,'2',NULL,'4208849930',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Kentucky Technology Fund',NULL,NULL,NULL,0,NULL,NULL,153,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (83,'Individual',NULL,'blackwell.u.laree@infomail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'blackwell.u.laree@infomail.org',NULL,NULL,NULL,NULL,NULL,'2146402725',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear blackwell.u.laree@infomail.org',1,NULL,'Dear blackwell.u.laree@infomail.org',1,NULL,'blackwell.u.laree@infomail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (84,'Individual',NULL,'Dr. Truman Jacobs',NULL,NULL,'Truman','H','Jacobs',0,0,0,0,1,0,NULL,'Jacobs, Truman',NULL,NULL,NULL,NULL,NULL,'2934376834',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Dr. Truman Jacobs',NULL,2,'1969-06-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (85,'Household',NULL,'González family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'González family',NULL,NULL,NULL,'4',NULL,'3263723758',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear González family',5,NULL,'Dear González family',2,NULL,'González family',NULL,NULL,NULL,0,NULL,'González family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (86,'Individual',NULL,'jacobzope@testing.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'jacobzope@testing.info',NULL,NULL,NULL,NULL,NULL,'3124471718',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear jacobzope@testing.info',1,NULL,'Dear jacobzope@testing.info',1,NULL,'jacobzope@testing.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (87,'Household',NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,NULL,'766698874',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Nielsen family',5,NULL,'Dear Nielsen family',2,NULL,'Nielsen family',NULL,NULL,NULL,0,NULL,'Nielsen family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (88,'Individual',NULL,'Dr. Carylon Reynolds',NULL,NULL,'Carylon','','Reynolds',0,0,0,0,1,0,NULL,'Reynolds, Carylon',NULL,NULL,NULL,NULL,NULL,'1835260667',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Dr. Carylon Reynolds',NULL,1,'1992-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (89,'Organization',NULL,'Local Arts Systems','Local Arts Systems',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Local Arts Systems',NULL,NULL,NULL,'5',NULL,'2065483306',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Local Arts Systems',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (90,'Individual',NULL,'Kenny Jameson',NULL,NULL,'Kenny','','Jameson',1,0,0,0,1,0,NULL,'Jameson, Kenny',NULL,NULL,NULL,NULL,NULL,'3782185889',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Kenny Jameson',NULL,NULL,'1994-05-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (91,'Household',NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Barkley family',NULL,NULL,NULL,'4',NULL,'2888062109',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley family',5,NULL,'Dear Barkley family',2,NULL,'Barkley family',NULL,NULL,NULL,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (92,'Individual',NULL,'Rosario Yadav',NULL,NULL,'Rosario','','Yadav',0,0,0,0,0,0,NULL,'Yadav, Rosario',NULL,NULL,NULL,'2',NULL,'422504705',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rosario',1,NULL,'Dear Rosario',1,NULL,'Rosario Yadav',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (93,'Individual',NULL,'Kacey Wattson',NULL,NULL,'Kacey','','Wattson',0,1,0,0,0,0,NULL,'Wattson, Kacey',NULL,NULL,NULL,'2',NULL,'2862665279',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Kacey',1,NULL,'Dear Kacey',1,NULL,'Kacey Wattson',NULL,1,'1989-09-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (94,'Individual',NULL,'Ms. Bernadette Dimitrov',NULL,NULL,'Bernadette','','Dimitrov',0,1,0,0,0,0,NULL,'Dimitrov, Bernadette',NULL,NULL,NULL,'3',NULL,'110642953',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Bernadette',1,NULL,'Dear Bernadette',1,NULL,'Ms. Bernadette Dimitrov',NULL,1,'1984-02-17',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (95,'Individual',NULL,'Eleonor Blackwell',NULL,NULL,'Eleonor','E','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Eleonor',NULL,NULL,NULL,'4',NULL,'123073880',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Eleonor',1,NULL,'Dear Eleonor',1,NULL,'Eleonor Blackwell',NULL,1,'2004-02-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (96,'Individual',NULL,'Jed Barkley Sr.',NULL,NULL,'Jed','','Barkley',0,0,0,0,0,0,NULL,'Barkley, Jed',NULL,NULL,NULL,NULL,NULL,'3823188245',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Barkley Sr.',NULL,NULL,'2002-02-12',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (97,'Individual',NULL,'Jay Bachman II',NULL,NULL,'Jay','','Bachman',1,0,0,0,0,0,NULL,'Bachman, Jay',NULL,NULL,NULL,NULL,NULL,'861687925',NULL,'Sample Data',NULL,3,NULL,NULL,1,NULL,'Dear Jay',1,NULL,'Dear Jay',1,NULL,'Jay Bachman II',NULL,2,'1985-12-25',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (98,'Individual',NULL,'Magan Reynolds',NULL,NULL,'Magan','V','Reynolds',1,0,0,0,0,0,NULL,'Reynolds, Magan',NULL,NULL,NULL,NULL,NULL,'2569744381',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Magan',1,NULL,'Dear Magan',1,NULL,'Magan Reynolds',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (99,'Individual',NULL,'Rebekah Robertson',NULL,NULL,'Rebekah','T','Robertson',0,0,0,0,0,0,NULL,'Robertson, Rebekah',NULL,NULL,NULL,'1',NULL,'1199774437',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Robertson',NULL,1,'1995-03-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (100,'Individual',NULL,'Lou Blackwell',NULL,NULL,'Lou','','Blackwell',1,0,0,0,0,0,NULL,'Blackwell, Lou',NULL,NULL,NULL,'2',NULL,'2525168848',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Lou',1,NULL,'Dear Lou',1,NULL,'Lou Blackwell',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:36','Both'), + (101,'Individual',NULL,'Dr. Kenny Wilson Sr.',NULL,NULL,'Kenny','','Wilson',1,0,0,0,0,0,NULL,'Wilson, Kenny',NULL,NULL,NULL,'3',NULL,'1945745030',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Kenny',1,NULL,'Dear Kenny',1,NULL,'Dr. Kenny Wilson Sr.',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (102,'Individual',NULL,'Dr. BrzÄ™czysÅ‚aw Blackwell III',NULL,NULL,'BrzÄ™czysÅ‚aw','V','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, BrzÄ™czysÅ‚aw',NULL,NULL,NULL,'3',NULL,'3382098014',NULL,'Sample Data',4,4,NULL,NULL,1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dear BrzÄ™czysÅ‚aw',1,NULL,'Dr. BrzÄ™czysÅ‚aw Blackwell III',NULL,2,'1993-03-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (103,'Individual',NULL,'Delana González','Iowa Education Services',NULL,'Delana','A','González',0,0,0,0,0,0,NULL,'González, Delana',NULL,NULL,NULL,NULL,NULL,'2183632123',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Delana González',NULL,1,'1995-09-07',0,NULL,NULL,NULL,NULL,NULL,142,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (104,'Individual',NULL,'arlyneivanov@sample.co.uk',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'arlyneivanov@sample.co.uk',NULL,NULL,NULL,'4',NULL,'2605416809',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear arlyneivanov@sample.co.uk',1,NULL,'Dear arlyneivanov@sample.co.uk',1,NULL,'arlyneivanov@sample.co.uk',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (105,'Individual',NULL,'santinab@spamalot.info',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'santinab@spamalot.info',NULL,NULL,NULL,'2',NULL,'333774892',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear santinab@spamalot.info',1,NULL,'Dear santinab@spamalot.info',1,NULL,'santinab@spamalot.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (106,'Individual',NULL,'Mr. Lawerence Zope',NULL,NULL,'Lawerence','T','Zope',0,0,0,0,0,0,NULL,'Zope, Lawerence',NULL,NULL,NULL,NULL,NULL,'3328706365',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Lawerence',1,NULL,'Dear Lawerence',1,NULL,'Mr. Lawerence Zope',NULL,2,'1981-07-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (107,'Individual',NULL,'Mr. Winford Terrell-Roberts',NULL,NULL,'Winford','','Terrell-Roberts',1,0,0,0,0,0,NULL,'Terrell-Roberts, Winford',NULL,NULL,NULL,'5',NULL,'2316815406',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Mr. Winford Terrell-Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (108,'Individual',NULL,'gonzlez.sonny@spamalot.co.nz',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'gonzlez.sonny@spamalot.co.nz',NULL,NULL,NULL,'1',NULL,'4235227324',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear gonzlez.sonny@spamalot.co.nz',1,NULL,'Dear gonzlez.sonny@spamalot.co.nz',1,NULL,'gonzlez.sonny@spamalot.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (109,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (110,'Individual',NULL,'kf.mcreynolds88@airmail.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'kf.mcreynolds88@airmail.co.nz',NULL,NULL,NULL,'5',NULL,'3494846934',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear kf.mcreynolds88@airmail.co.nz',1,NULL,'Dear kf.mcreynolds88@airmail.co.nz',1,NULL,'kf.mcreynolds88@airmail.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (111,'Individual',NULL,'Mrs. Juliann Jones',NULL,NULL,'Juliann','B','Jones',0,0,0,0,1,0,NULL,'Jones, Juliann',NULL,NULL,NULL,'3',NULL,'2994916401',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Mrs. Juliann Jones',NULL,1,'1980-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (112,'Household',NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Zope family',NULL,NULL,NULL,NULL,NULL,'1649131487',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Zope family',5,NULL,'Dear Zope family',2,NULL,'Zope family',NULL,NULL,NULL,0,NULL,'Zope family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (113,'Individual',NULL,'Craig Prentice',NULL,NULL,'Craig','V','Prentice',0,0,0,0,0,0,NULL,'Prentice, Craig',NULL,NULL,NULL,NULL,NULL,'3778069057',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Craig',1,NULL,'Dear Craig',1,NULL,'Craig Prentice',NULL,2,'1943-10-07',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (114,'Individual',NULL,'mz.nielsen@testmail.co.pl',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'mz.nielsen@testmail.co.pl',NULL,NULL,NULL,NULL,NULL,'3005104683',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear mz.nielsen@testmail.co.pl',1,NULL,'Dear mz.nielsen@testmail.co.pl',1,NULL,'mz.nielsen@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (115,'Individual',NULL,'Dr. Teresa Deforest','Martin Luther King Poetry Partnership',NULL,'Teresa','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Teresa',NULL,NULL,NULL,'3',NULL,'1966517913',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Dr. Teresa Deforest',NULL,1,'1953-06-21',0,NULL,NULL,NULL,NULL,NULL,78,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (116,'Individual',NULL,'Justina Nielsen',NULL,NULL,'Justina','','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Justina',NULL,NULL,NULL,NULL,NULL,'226503148',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Justina',1,NULL,'Dear Justina',1,NULL,'Justina Nielsen',NULL,1,'1992-07-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (117,'Individual',NULL,'Winford Robertson Jr.',NULL,NULL,'Winford','','Robertson',0,0,0,0,0,0,NULL,'Robertson, Winford',NULL,NULL,NULL,NULL,NULL,'3664515763',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Winford Robertson Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (118,'Individual',NULL,'Dr. Errol Cruz II',NULL,NULL,'Errol','','Cruz',1,0,0,0,0,0,NULL,'Cruz, Errol',NULL,NULL,NULL,NULL,NULL,'4273315760',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Dr. Errol Cruz II',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (119,'Individual',NULL,'Carylon Nielsen',NULL,NULL,'Carylon','Q','Nielsen',1,1,0,0,0,0,NULL,'Nielsen, Carylon',NULL,NULL,NULL,NULL,NULL,'1077556196',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carylon',1,NULL,'Dear Carylon',1,NULL,'Carylon Nielsen',NULL,NULL,'1948-11-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (120,'Individual',NULL,'Damaris Nielsen',NULL,NULL,'Damaris','V','Nielsen',0,0,0,0,0,0,NULL,'Nielsen, Damaris',NULL,NULL,NULL,NULL,NULL,'3513005932',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Nielsen',NULL,1,'1991-04-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (121,'Individual',NULL,'Truman Patel Jr.',NULL,NULL,'Truman','','Patel',0,0,0,0,1,0,NULL,'Patel, Truman',NULL,NULL,NULL,'4',NULL,'3372246222',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Truman',1,NULL,'Dear Truman',1,NULL,'Truman Patel Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (122,'Organization',NULL,'Virginia Family Academy','Virginia Family Academy',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Virginia Family Academy',NULL,NULL,NULL,'4',NULL,'1643928091',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Virginia Family Academy',NULL,NULL,NULL,0,NULL,NULL,199,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (123,'Individual',NULL,'Dr. Betty González',NULL,NULL,'Betty','','González',0,1,0,0,0,0,NULL,'González, Betty',NULL,NULL,NULL,NULL,NULL,'152645290',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Betty',1,NULL,'Dear Betty',1,NULL,'Dr. Betty González',NULL,1,'1953-03-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (124,'Household',NULL,'Terrell-Roberts family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,1,0,NULL,'Terrell-Roberts family',NULL,NULL,NULL,NULL,NULL,'3549465329',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terrell-Roberts family',5,NULL,'Dear Terrell-Roberts family',2,NULL,'Terrell-Roberts family',NULL,NULL,NULL,0,NULL,'Terrell-Roberts family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (125,'Individual',NULL,'Mrs. Margaret Barkley',NULL,NULL,'Margaret','M','Barkley',0,0,0,0,0,0,NULL,'Barkley, Margaret',NULL,NULL,NULL,'5',NULL,'2775065394',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Mrs. Margaret Barkley',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (126,'Individual',NULL,'Jina Deforest',NULL,NULL,'Jina','A','Deforest',0,0,0,0,1,0,NULL,'Deforest, Jina',NULL,NULL,NULL,NULL,NULL,'2202699051',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jina',1,NULL,'Dear Jina',1,NULL,'Jina Deforest',NULL,1,'2013-10-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (127,'Household',NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Terry family',NULL,NULL,NULL,NULL,NULL,'558108751',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Terry family',5,NULL,'Dear Terry family',2,NULL,'Terry family',NULL,NULL,NULL,0,NULL,'Terry family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (128,'Individual',NULL,'Mr. Sanford Prentice Jr.',NULL,NULL,'Sanford','','Prentice',0,0,0,0,0,0,NULL,'Prentice, Sanford',NULL,NULL,NULL,'2',NULL,'3166415590',NULL,'Sample Data',3,1,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Mr. Sanford Prentice Jr.',NULL,2,'1973-08-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (129,'Individual',NULL,'Mei Ivanov',NULL,NULL,'Mei','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Mei',NULL,NULL,NULL,NULL,NULL,'3817644881',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Mei',1,NULL,'Dear Mei',1,NULL,'Mei Ivanov',NULL,1,NULL,1,'2023-07-01',NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (130,'Individual',NULL,'Mrs. Delana Wilson',NULL,NULL,'Delana','O','Wilson',0,0,0,0,0,0,NULL,'Wilson, Delana',NULL,NULL,NULL,NULL,NULL,'3114260501',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Delana',1,NULL,'Dear Delana',1,NULL,'Mrs. Delana Wilson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (131,'Individual',NULL,'rosariob@infomail.info','United Empowerment Services',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'rosariob@infomail.info',NULL,NULL,NULL,NULL,NULL,'3370303067',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear rosariob@infomail.info',1,NULL,'Dear rosariob@infomail.info',1,NULL,'rosariob@infomail.info',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,13,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (132,'Individual',NULL,'Dr. Scarlet Jameson',NULL,NULL,'Scarlet','T','Jameson',0,0,0,0,0,0,NULL,'Jameson, Scarlet',NULL,NULL,NULL,NULL,NULL,'3493575128',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Scarlet',1,NULL,'Dear Scarlet',1,NULL,'Dr. Scarlet Jameson',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (133,'Individual',NULL,'be.lee13@mymail.co.pl','Georgia Family Collective',NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'be.lee13@mymail.co.pl',NULL,NULL,NULL,'2',NULL,'1445006268',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear be.lee13@mymail.co.pl',1,NULL,'Dear be.lee13@mymail.co.pl',1,NULL,'be.lee13@mymail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,28,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (134,'Individual',NULL,'Mr. Shad Olsen','Ambler Empowerment Fellowship',NULL,'Shad','','Olsen',0,0,0,0,0,0,NULL,'Olsen, Shad',NULL,NULL,NULL,'2',NULL,'2007691638',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Shad',1,NULL,'Dear Shad',1,NULL,'Mr. Shad Olsen',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,157,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (135,'Individual',NULL,'Tanya Robertson',NULL,NULL,'Tanya','I','Robertson',0,0,0,0,1,0,NULL,'Robertson, Tanya',NULL,NULL,NULL,NULL,NULL,'3513590896',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Tanya Robertson',NULL,1,'1988-01-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (136,'Individual',NULL,'Mrs. Kiara Samuels',NULL,NULL,'Kiara','W','Samuels',0,0,0,0,0,0,NULL,'Samuels, Kiara',NULL,NULL,NULL,NULL,NULL,'3345956952',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Kiara',1,NULL,'Dear Kiara',1,NULL,'Mrs. Kiara Samuels',NULL,NULL,'1969-12-05',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (137,'Individual',NULL,'Errol ÅÄ…chowski Jr.',NULL,NULL,'Errol','X','ÅÄ…chowski',1,1,0,0,0,0,NULL,'ÅÄ…chowski, Errol',NULL,NULL,NULL,'4',NULL,'4217414454',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Errol',1,NULL,'Dear Errol',1,NULL,'Errol ÅÄ…chowski Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (138,'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-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (139,'Individual',NULL,'Ashlie Cruz',NULL,NULL,'Ashlie','','Cruz',0,0,0,0,0,0,NULL,'Cruz, Ashlie',NULL,NULL,NULL,NULL,NULL,'3257002504',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie Cruz',NULL,1,'1963-07-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (140,'Individual',NULL,'grant.y.megan77@testing.biz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'grant.y.megan77@testing.biz',NULL,NULL,NULL,NULL,NULL,'3270017027',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear grant.y.megan77@testing.biz',1,NULL,'Dear grant.y.megan77@testing.biz',1,NULL,'grant.y.megan77@testing.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (141,'Individual',NULL,'Mr. Bryon Olsen-Müller Sr.',NULL,NULL,'Bryon','','Olsen-Müller',0,1,0,0,0,0,NULL,'Olsen-Müller, Bryon',NULL,NULL,NULL,'2',NULL,'3049234501',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Mr. Bryon Olsen-Müller Sr.',NULL,2,'1987-12-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (142,'Organization',NULL,'Iowa Education Services','Iowa Education Services',NULL,NULL,NULL,NULL,1,1,0,0,0,0,NULL,'Iowa Education Services',NULL,NULL,NULL,'4',NULL,'1211235039',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Iowa Education Services',NULL,NULL,NULL,0,NULL,NULL,103,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (143,'Individual',NULL,'Dr. Brent Bachman II',NULL,NULL,'Brent','','Bachman',1,0,0,0,1,0,NULL,'Bachman, Brent',NULL,NULL,NULL,'4',NULL,'3003967308',NULL,'Sample Data',4,3,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Dr. Brent Bachman II',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (144,'Individual',NULL,'Troy Deforest-Blackwell Jr.',NULL,NULL,'Troy','W','Deforest-Blackwell',0,1,0,0,0,0,NULL,'Deforest-Blackwell, Troy',NULL,NULL,NULL,'4',NULL,'2384043660',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Troy',1,NULL,'Dear Troy',1,NULL,'Troy Deforest-Blackwell Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (145,'Individual',NULL,'Mrs. Ashlie Jacobs-Robertson',NULL,NULL,'Ashlie','','Jacobs-Robertson',0,1,0,0,0,0,NULL,'Jacobs-Robertson, Ashlie',NULL,NULL,NULL,NULL,NULL,'517498548',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Mrs. Ashlie Jacobs-Robertson',NULL,NULL,'1972-04-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (146,'Individual',NULL,'Dr. Bryon Cruz Sr.',NULL,NULL,'Bryon','','Cruz',1,0,0,0,1,0,NULL,'Cruz, Bryon',NULL,NULL,NULL,'4',NULL,'2932788589',NULL,'Sample Data',4,2,NULL,NULL,1,NULL,'Dear Bryon',1,NULL,'Dear Bryon',1,NULL,'Dr. Bryon Cruz Sr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (147,'Individual',NULL,'Rolando Terrell',NULL,NULL,'Rolando','','Terrell',0,0,0,0,0,0,NULL,'Terrell, Rolando',NULL,NULL,NULL,NULL,NULL,'3773897082',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Rolando Terrell',NULL,2,'1990-06-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (148,'Individual',NULL,'jensen.juliann@example.biz',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'jensen.juliann@example.biz',NULL,NULL,NULL,'3',NULL,'3380781844',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear jensen.juliann@example.biz',1,NULL,'Dear jensen.juliann@example.biz',1,NULL,'jensen.juliann@example.biz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (149,'Household',NULL,'Blackwell family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Blackwell family',NULL,NULL,NULL,'5',NULL,'3218641510',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Blackwell family',5,NULL,'Dear Blackwell family',2,NULL,'Blackwell family',NULL,NULL,NULL,0,NULL,'Blackwell family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (150,'Individual',NULL,'jx.nielsen4@example.co.in',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'jx.nielsen4@example.co.in',NULL,NULL,NULL,NULL,NULL,'668016602',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear jx.nielsen4@example.co.in',1,NULL,'Dear jx.nielsen4@example.co.in',1,NULL,'jx.nielsen4@example.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (151,'Household',NULL,'Bachman family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Bachman family',NULL,NULL,NULL,'5',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-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (152,'Individual',NULL,'Alexia Wagner',NULL,NULL,'Alexia','','Wagner',0,0,0,0,0,0,NULL,'Wagner, Alexia',NULL,NULL,NULL,NULL,NULL,'3604591974',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Alexia',1,NULL,'Dear Alexia',1,NULL,'Alexia Wagner',NULL,1,'1965-05-31',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (153,'Individual',NULL,'Ms. Tanya Terry-Grant','Kentucky Technology Fund',NULL,'Tanya','','Terry-Grant',0,0,0,0,1,0,NULL,'Terry-Grant, Tanya',NULL,NULL,NULL,NULL,NULL,'2654195919',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Tanya',1,NULL,'Dear Tanya',1,NULL,'Ms. Tanya Terry-Grant',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,82,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (154,'Individual',NULL,'Ashlie DÃaz',NULL,NULL,'Ashlie','','DÃaz',0,0,0,0,0,0,NULL,'DÃaz, Ashlie',NULL,NULL,NULL,NULL,NULL,'428983255',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashlie',1,NULL,'Dear Ashlie',1,NULL,'Ashlie DÃaz',NULL,1,'1997-08-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:36','Both'), + (155,'Individual',NULL,'barkley.kathleen49@airmail.co.in',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'barkley.kathleen49@airmail.co.in',NULL,NULL,NULL,NULL,NULL,'773749426',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear barkley.kathleen49@airmail.co.in',1,NULL,'Dear barkley.kathleen49@airmail.co.in',1,NULL,'barkley.kathleen49@airmail.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (156,'Household',NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,NULL,'2888062109',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Barkley family',5,NULL,'Dear Barkley family',2,NULL,'Barkley family',NULL,NULL,NULL,0,NULL,'Barkley family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (157,'Organization',NULL,'Ambler Empowerment Fellowship','Ambler Empowerment Fellowship',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Ambler Empowerment Fellowship',NULL,NULL,NULL,NULL,NULL,'252527287',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Ambler Empowerment Fellowship',NULL,NULL,NULL,0,NULL,NULL,134,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (158,'Individual',NULL,'Brent Blackwell',NULL,NULL,'Brent','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Brent',NULL,NULL,NULL,'2',NULL,'1795154981',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Brent',1,NULL,'Dear Brent',1,NULL,'Brent Blackwell',NULL,2,'2004-01-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (159,'Individual',NULL,'Rebekah Terry','Local Sports School',NULL,'Rebekah','D','Terry',0,1,0,0,0,0,NULL,'Terry, Rebekah',NULL,NULL,NULL,'1',NULL,'2103758784',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Rebekah',1,NULL,'Dear Rebekah',1,NULL,'Rebekah Terry',NULL,NULL,'1989-08-29',0,NULL,NULL,NULL,NULL,NULL,43,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (160,'Individual',NULL,'Clint Lee Sr.',NULL,NULL,'Clint','E','Lee',0,0,0,0,0,0,NULL,'Lee, Clint',NULL,NULL,NULL,NULL,NULL,'1676794419',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Clint',1,NULL,'Dear Clint',1,NULL,'Clint Lee Sr.',NULL,2,'2005-04-04',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (161,'Individual',NULL,'Teresa Blackwell',NULL,NULL,'Teresa','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Teresa',NULL,NULL,NULL,NULL,NULL,'709634548',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Teresa',1,NULL,'Dear Teresa',1,NULL,'Teresa Blackwell',NULL,NULL,'1957-06-13',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (162,'Individual',NULL,'Dr. Winford Zope-Barkley',NULL,NULL,'Winford','','Zope-Barkley',0,1,0,0,0,0,NULL,'Zope-Barkley, Winford',NULL,NULL,NULL,NULL,NULL,'3854674047',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Winford',1,NULL,'Dear Winford',1,NULL,'Dr. Winford Zope-Barkley',NULL,2,'1968-09-21',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (163,'Individual',NULL,'Damaris Bachman',NULL,NULL,'Damaris','U','Bachman',0,0,0,0,0,0,NULL,'Bachman, Damaris',NULL,NULL,NULL,'3',NULL,'3561243747',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Damaris',1,NULL,'Dear Damaris',1,NULL,'Damaris Bachman',NULL,NULL,'2016-07-14',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (164,'Individual',NULL,'Sanford Barkley Jr.',NULL,NULL,'Sanford','F','Barkley',1,1,0,0,0,0,NULL,'Barkley, Sanford',NULL,NULL,NULL,NULL,NULL,'975752860',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Sanford',1,NULL,'Dear Sanford',1,NULL,'Sanford Barkley Jr.',NULL,NULL,'1941-04-15',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (165,'Individual',NULL,'Dr. Omar Blackwell',NULL,NULL,'Omar','D','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Omar',NULL,NULL,NULL,'3',NULL,'3587375768',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Dr. Omar Blackwell',NULL,2,'1979-08-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (166,'Individual',NULL,'Carlos Terry',NULL,NULL,'Carlos','W','Terry',0,0,0,0,1,0,NULL,'Terry, Carlos',NULL,NULL,NULL,NULL,NULL,'2569842275',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Carlos',1,NULL,'Dear Carlos',1,NULL,'Carlos Terry',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (167,'Household',NULL,'Cruz family',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Cruz family',NULL,NULL,NULL,'5',NULL,'2326538497',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Cruz family',5,NULL,'Dear Cruz family',2,NULL,'Cruz family',NULL,NULL,NULL,0,NULL,'Cruz family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (168,'Individual',NULL,'Elizabeth Samson-Cruz',NULL,NULL,'Elizabeth','','Samson-Cruz',0,0,0,0,0,0,NULL,'Samson-Cruz, Elizabeth',NULL,NULL,NULL,NULL,NULL,'3751903775',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Elizabeth',1,NULL,'Dear Elizabeth',1,NULL,'Elizabeth Samson-Cruz',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (169,'Individual',NULL,'Felisha Robertson',NULL,NULL,'Felisha','P','Robertson',0,0,0,0,0,0,NULL,'Robertson, Felisha',NULL,NULL,NULL,NULL,NULL,'2615104196',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Felisha',1,NULL,'Dear Felisha',1,NULL,'Felisha Robertson',NULL,NULL,'1984-12-24',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (170,'Individual',NULL,'Mr. Omar Reynolds',NULL,NULL,'Omar','','Reynolds',1,0,0,0,1,0,NULL,'Reynolds, Omar',NULL,NULL,NULL,'2',NULL,'1558438140',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Omar',1,NULL,'Dear Omar',1,NULL,'Mr. Omar Reynolds',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (171,'Individual',NULL,'Ms. Brigette Terrell',NULL,NULL,'Brigette','T','Terrell',0,0,0,0,0,0,NULL,'Terrell, Brigette',NULL,NULL,NULL,NULL,NULL,'2563003580',NULL,'Sample Data',2,NULL,NULL,NULL,1,NULL,'Dear Brigette',1,NULL,'Dear Brigette',1,NULL,'Ms. Brigette Terrell',NULL,NULL,'1985-09-22',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (172,'Individual',NULL,'Junko Samuels',NULL,NULL,'Junko','V','Samuels',0,0,0,0,0,0,NULL,'Samuels, Junko',NULL,NULL,NULL,'4',NULL,'2535736045',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Junko',1,NULL,'Dear Junko',1,NULL,'Junko Samuels',NULL,1,'1994-01-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (173,'Individual',NULL,'Irvin Patel Jr.',NULL,NULL,'Irvin','','Patel',1,0,0,0,1,0,NULL,'Patel, Irvin',NULL,NULL,NULL,'2',NULL,'1842023876',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Irvin',1,NULL,'Dear Irvin',1,NULL,'Irvin Patel Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (174,'Organization',NULL,'Northpoint Education Academy','Northpoint Education Academy',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'Northpoint Education Academy',NULL,NULL,NULL,NULL,NULL,'3730543603',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Northpoint Education Academy',NULL,NULL,NULL,0,NULL,NULL,37,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (175,'Individual',NULL,'rt.bachman@fishmail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'rt.bachman@fishmail.org',NULL,NULL,NULL,NULL,NULL,'1416519660',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear rt.bachman@fishmail.org',1,NULL,'Dear rt.bachman@fishmail.org',1,NULL,'rt.bachman@fishmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (176,'Individual',NULL,'Bob Jones',NULL,NULL,'Bob','','Jones',0,0,0,0,0,0,NULL,'Jones, Bob',NULL,NULL,NULL,NULL,NULL,'3998571591',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Jones',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (177,'Individual',NULL,'scottl@lol.co.nz',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'scottl@lol.co.nz',NULL,NULL,NULL,NULL,NULL,'216803940',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear scottl@lol.co.nz',1,NULL,'Dear scottl@lol.co.nz',1,NULL,'scottl@lol.co.nz',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (178,'Individual',NULL,'mllerb@airmail.org',NULL,NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'mllerb@airmail.org',NULL,NULL,NULL,'2',NULL,'2512649704',NULL,'Sample Data',1,NULL,NULL,NULL,1,NULL,'Dear mllerb@airmail.org',1,NULL,'Dear mllerb@airmail.org',1,NULL,'mllerb@airmail.org',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (179,'Individual',NULL,'Dr. Kathleen Blackwell',NULL,NULL,'Kathleen','','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Kathleen',NULL,NULL,NULL,NULL,NULL,'2975176950',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Kathleen',1,NULL,'Dear Kathleen',1,NULL,'Dr. Kathleen Blackwell',NULL,NULL,'1998-09-06',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (180,'Individual',NULL,'Ashley Nielsen',NULL,NULL,'Ashley','N','Nielsen',0,0,0,0,1,0,NULL,'Nielsen, Ashley',NULL,NULL,NULL,NULL,NULL,'3185921843',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ashley',1,NULL,'Dear Ashley',1,NULL,'Ashley Nielsen',NULL,2,'1992-11-18',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (181,'Individual',NULL,'damarisgonzlez@example.net',NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'damarisgonzlez@example.net',NULL,NULL,NULL,'3',NULL,'3218413417',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear damarisgonzlez@example.net',1,NULL,'Dear damarisgonzlez@example.net',1,NULL,'damarisgonzlez@example.net',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (182,'Individual',NULL,'Mr. Ray Deforest III',NULL,NULL,'Ray','','Deforest',0,1,0,0,0,0,NULL,'Deforest, Ray',NULL,NULL,NULL,NULL,NULL,'3478479191',NULL,'Sample Data',3,4,NULL,NULL,1,NULL,'Dear Ray',1,NULL,'Dear Ray',1,NULL,'Mr. Ray Deforest III',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (183,'Individual',NULL,'Scott Olsen III',NULL,NULL,'Scott','','Olsen',0,1,0,0,1,0,NULL,'Olsen, Scott',NULL,NULL,NULL,'4',NULL,'2871434250',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Scott',1,NULL,'Dear Scott',1,NULL,'Scott Olsen III',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (184,'Individual',NULL,'jacobnielsen@testmail.co.pl',NULL,NULL,NULL,NULL,NULL,0,1,0,0,0,0,NULL,'jacobnielsen@testmail.co.pl',NULL,NULL,NULL,'2',NULL,'954135156',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear jacobnielsen@testmail.co.pl',1,NULL,'Dear jacobnielsen@testmail.co.pl',1,NULL,'jacobnielsen@testmail.co.pl',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (185,'Individual',NULL,'Ivey Blackwell',NULL,NULL,'Ivey','X','Blackwell',0,0,0,0,0,0,NULL,'Blackwell, Ivey',NULL,NULL,NULL,NULL,NULL,'326438233',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Ivey',1,NULL,'Dear Ivey',1,NULL,'Ivey Blackwell',NULL,1,'1968-03-28',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (186,'Individual',NULL,'Mr. Sherman Lee','Local Family Solutions',NULL,'Sherman','','Lee',0,0,0,0,0,0,NULL,'Lee, Sherman',NULL,NULL,NULL,NULL,NULL,'903838284',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Sherman',1,NULL,'Dear Sherman',1,NULL,'Mr. Sherman Lee',NULL,2,'1990-05-08',0,NULL,NULL,NULL,NULL,NULL,16,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (187,'Individual',NULL,'Mr. Allen Adams',NULL,NULL,'Allen','','Adams',0,0,0,0,0,0,NULL,'Adams, Allen',NULL,NULL,NULL,NULL,NULL,'1767360993',NULL,'Sample Data',3,NULL,NULL,NULL,1,NULL,'Dear Allen',1,NULL,'Dear Allen',1,NULL,'Mr. Allen Adams',NULL,2,'1973-11-09',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (188,'Individual',NULL,'Bob Zope III',NULL,NULL,'Bob','','Zope',0,0,0,0,1,0,NULL,'Zope, Bob',NULL,NULL,NULL,'4',NULL,'707485722',NULL,'Sample Data',NULL,4,NULL,NULL,1,NULL,'Dear Bob',1,NULL,'Dear Bob',1,NULL,'Bob Zope III',NULL,NULL,'1983-11-02',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (189,'Individual',NULL,'Margaret Samson',NULL,NULL,'Margaret','','Samson',0,0,0,0,0,0,NULL,'Samson, Margaret',NULL,NULL,NULL,'3',NULL,'749664303',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Margaret',1,NULL,'Dear Margaret',1,NULL,'Margaret Samson',NULL,1,'1963-05-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (190,'Individual',NULL,'Jackson Terrell-Roberts',NULL,NULL,'Jackson','','Terrell-Roberts',0,0,0,0,0,0,NULL,'Terrell-Roberts, Jackson',NULL,NULL,NULL,'1',NULL,'1613918263',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Jackson',1,NULL,'Dear Jackson',1,NULL,'Jackson Terrell-Roberts',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (191,'Individual',NULL,'Jed Deforest Jr.',NULL,NULL,'Jed','','Deforest',0,0,0,0,0,0,NULL,'Deforest, Jed',NULL,NULL,NULL,'1',NULL,'3658103362',NULL,'Sample Data',NULL,1,NULL,NULL,1,NULL,'Dear Jed',1,NULL,'Dear Jed',1,NULL,'Jed Deforest Jr.',NULL,2,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (192,'Household',NULL,'Patel family',NULL,NULL,NULL,NULL,NULL,1,0,0,0,0,0,NULL,'Patel family',NULL,NULL,NULL,'1',NULL,'1669281794',NULL,'Sample Data',NULL,NULL,NULL,NULL,5,NULL,'Dear Patel family',5,NULL,'Dear Patel family',2,NULL,'Patel family',NULL,NULL,NULL,0,NULL,'Patel family',NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (193,'Individual',NULL,'Lincoln Jones Sr.',NULL,NULL,'Lincoln','','Jones',1,1,0,0,1,0,NULL,'Jones, Lincoln',NULL,NULL,NULL,NULL,NULL,'2291386215',NULL,'Sample Data',NULL,2,NULL,NULL,1,NULL,'Dear Lincoln',1,NULL,'Dear Lincoln',1,NULL,'Lincoln Jones Sr.',NULL,2,'1996-10-23',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (194,'Individual',NULL,'Princess Barkley',NULL,NULL,'Princess','J','Barkley',0,1,0,0,0,0,NULL,'Barkley, Princess',NULL,NULL,NULL,NULL,NULL,'1098730680',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Princess',1,NULL,'Dear Princess',1,NULL,'Princess Barkley',NULL,1,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:39','Both'), + (195,'Organization',NULL,'Keslers Cross Lanes Health School','Keslers Cross Lanes Health School',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Keslers Cross Lanes Health School',NULL,NULL,NULL,'1',NULL,'178841010',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Keslers Cross Lanes Health School',NULL,NULL,NULL,0,NULL,NULL,66,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (196,'Individual',NULL,'Mr. Norris Ivanov Sr.',NULL,NULL,'Norris','','Ivanov',0,0,0,0,0,0,NULL,'Ivanov, Norris',NULL,NULL,NULL,NULL,NULL,'2455849872',NULL,'Sample Data',3,2,NULL,NULL,1,NULL,'Dear Norris',1,NULL,'Dear Norris',1,NULL,'Mr. Norris Ivanov Sr.',NULL,NULL,NULL,1,'2023-05-31',NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (197,'Individual',NULL,'Heidi Bachman',NULL,NULL,'Heidi','O','Bachman',0,1,0,0,0,0,NULL,'Bachman, Heidi',NULL,NULL,NULL,NULL,NULL,'2759978492',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Heidi',1,NULL,'Dear Heidi',1,NULL,'Heidi Bachman',NULL,1,'1966-06-26',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (198,'Organization',NULL,'Nebraska Music Network','Nebraska Music Network',NULL,NULL,NULL,NULL,0,0,0,0,0,0,NULL,'Nebraska Music Network',NULL,NULL,NULL,'3',NULL,'1716791618',NULL,'Sample Data',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,3,NULL,'Nebraska Music Network',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (199,'Individual',NULL,'Juliann Deforest-Lee','Virginia Family Academy',NULL,'Juliann','A','Deforest-Lee',1,0,0,0,0,0,NULL,'Deforest-Lee, Juliann',NULL,NULL,NULL,'5',NULL,'2698566606',NULL,'Sample Data',NULL,NULL,NULL,NULL,1,NULL,'Dear Juliann',1,NULL,'Dear Juliann',1,NULL,'Juliann Deforest-Lee',NULL,NULL,'1993-12-01',0,NULL,NULL,NULL,NULL,NULL,122,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','Both'), + (200,'Individual',NULL,'Dr. Rolando Terrell',NULL,NULL,'Rolando','O','Terrell',0,0,0,0,0,0,NULL,'Terrell, Rolando',NULL,NULL,NULL,NULL,NULL,'3773897082',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear Rolando',1,NULL,'Dear Rolando',1,NULL,'Dr. Rolando Terrell',NULL,2,'1985-10-08',0,NULL,NULL,NULL,NULL,NULL,NULL,0,'2023-08-02 20:53:36','2023-08-02 20:53:37','Both'), + (201,'Individual',NULL,'daz.y.betty74@example.co.in','New York Food Initiative',NULL,NULL,NULL,NULL,0,0,0,0,1,0,NULL,'daz.y.betty74@example.co.in',NULL,NULL,NULL,NULL,NULL,'1021698130',NULL,'Sample Data',4,NULL,NULL,NULL,1,NULL,'Dear daz.y.betty74@example.co.in',1,NULL,'Dear daz.y.betty74@example.co.in',1,NULL,'daz.y.betty74@example.co.in',NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,49,0,'2023-08-02 20:53:36','2023-08-02 20:53:38','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','90d8c223d3d499eeacac3f9a24ea0830',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-08-02 20:53:40','2023-08-02 20:53:40','Both'); /*!40000 ALTER TABLE `civicrm_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -2287,117 +2204,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-06-09 14:52:21',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-03-09 14:52:21',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-05-15 01:52:21',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-03-09 14:52:21',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-03-09 14:52:21',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-03-16 14:10:21',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-06-07 14:52:21',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,'2022-10-15 23:03:21',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-07-09 14:52:21',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-01-17 16:52:21',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-06-08 10:52:21',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-03-09 04:19:01',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-03-09 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-04-09 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-03-09 14:52:21',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-04-09 14:52:21',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-05-09 14:52:21',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-06-09 14:52:21',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-07-09 14:52:21',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-08-09 14:52:21',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-09-09 14:52:21',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,'2022-10-09 14:52:21',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,'2022-11-09 14:52:21',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,'2022-12-09 14:52:21',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-01-09 14:52:21',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,'2022-10-09 14:52:21',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,'2022-11-09 14:52:21',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,'2022-12-09 14:52:21',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-01-09 14:52:21',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-02-09 14:52:21',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-05-09 14:52:21',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,94,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'a63c621969b4fafa',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (33,145,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'c6bf8fdfc605a228',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (34,133,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'435ee48ee98adc2a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (35,103,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'daf78f49a4be7403',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (36,18,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'9d88c0f0f7d55acd',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (37,27,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'918d4ce8eca2877c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (38,62,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'de569000b949cd15',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (39,29,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'10a8ed7878b8bc00',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (40,83,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'3441863cdb99bbc4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (41,53,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'ed9ca6fd7e9d6e71',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (42,113,2,NULL,1,'2023-06-09 14:52:21',0.00,1200.00,NULL,NULL,'c7c2b7e03598de8a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (43,200,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'797b4d01568b3896',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (44,186,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'aaf14f7ab4229d84',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (45,15,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'8cc0495a4ebdc3d2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (46,70,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'2a7551395c8b12fc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (47,155,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'ac0ae12a8d06ca5c',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (48,23,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'dffcede15b75b2ad',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (49,182,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'c45b2dae09cf9a01',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (50,30,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'7123b34ae7f29549',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (51,69,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'12c863eb3cf7e379',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (52,197,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'6ed8b46a15381cfc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (53,201,2,NULL,1,'2023-06-09 14:52:21',0.00,1200.00,NULL,NULL,'862fabdb5981aac4',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (54,13,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'b30292064c7c0a53',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (55,157,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'6ccbe6ac35f5ddf5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (56,63,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'819b5539b289fcc9',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (57,154,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'0f933686bb598025',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (58,90,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'4242d6f63f02c87b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (59,199,2,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'956ac4a05e3cc963',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (60,56,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'05b53742a3df8bba',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (61,74,2,NULL,1,'2023-06-09 14:52:21',0.00,100.00,NULL,NULL,'e6540777435c16cd',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (63,149,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'dff53ed32192eb21',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (64,99,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'a631cdb2091331ca',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (65,200,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'da6c6a7015ce05f9',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (66,114,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'02e47c753921eaf4',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (67,165,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'e08d0289e2c5748b',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (68,83,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'2e52c1ab5254ecfd',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (69,32,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'9a7addf2c5ff8dcb',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (70,84,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'1674358f8771bdaa',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (71,173,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'0b0ec7d083f1493f',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (72,7,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'2df4bd47939d5f88',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (73,46,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'bc13023a2f6b7295',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (74,144,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'f96d4e19ff817c8b',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (75,24,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'df5a4fd8964751ba',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (76,73,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'da6bff40ac2539ad',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (77,199,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'b7cd2f63f4791ec0',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (78,67,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'a7c188e2cb58586a',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (79,184,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'c9044612f0975a64',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (80,175,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'77e77c195b02e1c9',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (81,96,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'9fc36c7ca0cf9b34',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (82,60,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'fcad37c6c58d231e',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (83,142,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'a99477624a6c5021',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (84,127,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'0ae75c77c7dbc85a',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (85,52,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'4dbfe9e665c0039b',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (86,86,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'eb7718c6a80aa900',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (87,157,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'031a47aec19b6f25',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (88,93,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'9f92e8a740543e6b',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (89,30,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'7d674b438ad49931',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (90,90,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'d6651f5dd1133cd7',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (91,187,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'cee893e0136267b3',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (92,57,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'bddedb31f50cf953',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (93,132,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'3d69b5f4313aeda4',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (94,115,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'dc80b0cc16be29e1',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (95,28,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'12fd140bdfee9af5',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (96,71,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'9abfb295db2eecee',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (97,136,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'65189f4f7fef78a3',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (98,55,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'787dce4ed166e02a',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (99,137,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'6a8d46c5a75225f5',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (100,72,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'2036cfcbbbdbaeaf',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (101,148,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'5ad0a3825baa9da8',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (102,25,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'3200a38630dbc61c',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (103,34,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'60c05eda56ff0b4a',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (104,182,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'c6305e6dca61eab4',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (105,50,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'f99e792870386305',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (106,181,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'f20c786c4dee338b',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (107,89,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'9b12c3163bda863c',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (108,1,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'d9cba9eb81a6953a',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (109,110,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'a4894a8409c7ead2',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (110,75,4,NULL,1,'2023-06-09 14:52:21',0.00,50.00,NULL,NULL,'e37a5ace5434ca62',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (111,202,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'8377a6151d4ab0db',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), - (112,164,4,NULL,1,'2023-06-09 14:52:21',0.00,800.00,NULL,NULL,'0ed26d63bc545290',NULL,NULL,'USD',NULL,NULL,'2023-06-09 14:52:21',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-08-02 20:53:42',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-05-02 20:53:42',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-07-08 07:53:42',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-05-02 20:53:42',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-05-02 20:53:42',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-05-09 20:11:42',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-07-31 20:53:42',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,'2022-12-09 05:04:42',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-09-02 20:53:42',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-03-10 22:53:42',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-08-01 16:53:42',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-05-02 10:20:22',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-05-02 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-06-02 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-05-02 20:53:42',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-06-02 20:53:42',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-07-02 20:53:42',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-08-02 20:53:42',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-09-02 20:53:42',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-10-02 20:53:42',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-11-02 20:53:42',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,'2022-12-02 20:53:42',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-01-02 20:53:42',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-02-02 20:53:42',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-03-02 20:53:42',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,'2022-12-02 20:53:42',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-01-02 20:53:42',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-02-02 20:53:42',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-03-02 20:53:42',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-04-02 20:53:42',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-07-02 20:53:42',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,143,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'fb6f6c206ef18a56',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (33,170,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'d3c6d8a957ea090e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (34,165,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'38a83adb19ebf505',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (35,84,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'44a792a05b6e1374',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (36,99,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'63fe2280b8c99202',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (37,20,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'d8d9345562d2f3b8',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (38,61,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'1b119936be8afc8a',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (39,40,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'32de7c2f3a75a7ad',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (40,197,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'41f35fd9f4f2ddfe',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (41,199,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'a4ac31379dac18e0',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (42,21,2,NULL,1,'2023-08-02 20:53:43',0.00,1200.00,NULL,NULL,'5877d981f7422e82',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (43,193,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'55e8320236d03c80',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (44,107,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'dc71d3a3f0bdc3dc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (45,27,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'cd34b5ca180651c2',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (46,182,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'8ee1e790dc31c74b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (47,168,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'d26a5d9421422a78',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (48,126,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'bc115b87bbfb318b',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (49,184,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'1891224953f9ee9f',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (50,66,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'3ce8922c694c26dc',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (51,10,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'ba18b7ad9ded2055',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (52,86,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'2f72deb5375df649',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (53,106,2,NULL,1,'2023-08-02 20:53:43',0.00,1200.00,NULL,NULL,'c8bfacfe20e3babe',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Lifetime Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (54,22,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'0ab885eaeb423e40',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (55,123,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'96b0e968ad58aa38',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (56,135,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'29acaf4fb35bd318',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (57,88,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'eef221d52b649e24',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (58,41,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'b949348c39e00e36',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (59,11,2,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'8d5246e915da2069',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'Student Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (60,177,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'a408e0111810a4d5',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (61,96,2,NULL,1,'2023-08-02 20:53:43',0.00,100.00,NULL,NULL,'14846b88c5b2f69e',NULL,NULL,'USD',NULL,NULL,NULL,NULL,'General Membership: Offline signup',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (63,1,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'ea7719b51fcae39e',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (64,167,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'e04b1418f8d13c44',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (65,64,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'20a5abe4b6b23fa2',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (66,181,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'07b6bb34bf9984d1',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (67,100,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'78ba126607dce225',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (68,152,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'32ffd3eb466dcacf',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (69,198,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'bad11cad8067a9b9',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (70,141,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'fdcc64893b35ea3c',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (71,119,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'f1f24b36ced0b24c',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (72,96,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'00f50125d19c6f2b',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (73,154,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'55f4bd5742809328',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (74,132,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'32de8142db557e80',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (75,147,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'a181d39784e37dc2',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (76,187,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'f5e71047d07ea2d2',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (77,34,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'2b6383f1be3c7125',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (78,41,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'b96ee5d67f18ec6f',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (79,80,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'9299c2725636d3aa',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (80,131,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'744d89454cf98bc0',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (81,87,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'86071652adcb1c85',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (82,20,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'4b93fb66379f3821',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (83,124,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'37a3928b0850fc08',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (84,26,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'b4a30a99b6915011',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (85,93,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'dcb26ce78505b402',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (86,171,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'2064304ebda9cb18',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (87,31,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'662caa6c8f56b809',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (88,61,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'cb2f6457876a0ef1',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (89,73,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'650f26ad456f41df',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (90,35,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'c741f0b044158266',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (91,117,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'34c1c75f5050e4b0',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (92,160,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'99a2145e1c1b9a66',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (93,75,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'2045acb5509bec3f',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (94,173,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'e14e1893706fed5f',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (95,8,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'b3146818a9d47f62',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (96,139,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'4233b97fbd048c9c',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (97,116,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'b481967cb0fc4d18',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (98,106,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'d4abf47ab6707874',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (99,199,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'b3bfde782820110f',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (100,111,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'823284e9f8a1a9c8',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (101,135,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'705aa6126d6bd819',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (102,18,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'451c1910aa4bf67d',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (103,103,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'58ba3ba22a843ca6',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (104,94,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'631f20c430c49159',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (105,158,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'60ca648b61e3dfe5',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (106,5,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'ac88843732ac7f3a',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (107,183,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'71a637a459eb5690',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (108,118,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'400ac72ac1d1e5f7',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (109,72,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'2d5f0d48b1c97893',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Fall Fundraiser Dinner : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (110,97,4,NULL,1,'2023-08-02 20:53:43',0.00,50.00,NULL,NULL,'e0395157e02c36e1',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Summer Solstice Festival Day Concert : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (111,161,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'90ecf09278a10ecd',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0), + (112,179,4,NULL,1,'2023-08-02 20:53:43',0.00,800.00,NULL,NULL,'daf636bb098648e4',NULL,NULL,'USD',NULL,NULL,'2023-08-02 20:53:43',NULL,'Rain-forest Cup Youth Soccer Tournament : Offline registration',NULL,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL,NULL,0); /*!40000 ALTER TABLE `civicrm_contribution` ENABLE KEYS */; UNLOCK TABLES; @@ -2430,9 +2347,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-03-09 14:52:21','2023-06-09 14:52:21','2023-06-09 21:52:21',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,'2022-10-09 14:52:21','2023-06-09 14:52:21','2023-06-09 21:52:21','2023-05-09 14:52:21','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-05-09 14:52:21','2023-06-09 14:52:21','2023-06-09 21:52:21',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-08-09 14:52:21',0,NULL,0,1,NULL,NULL,NULL,1); + (1,59,25.00,'USD','month',1,12,'2022-05-02 20:53:42','2023-08-02 20:53:42','2023-08-02 20:53:42',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,'2022-12-02 20:53:42','2023-08-02 20:53:42','2023-08-02 20:53:42','2023-07-02 20:53:42','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-07-02 20:53:42','2023-08-02 20:53:42','2023-08-02 20:53:42',NULL,'',NULL,'EGR12',NULL,'44889',NULL,5,0,1,'2023-10-02 20:53:42',0,NULL,0,1,NULL,NULL,NULL,1); /*!40000 ALTER TABLE `civicrm_contribution_recur` ENABLE KEYS */; UNLOCK TABLES; @@ -2443,8 +2360,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,56,10.00,'USD',1,1,'Jones Family','Helping Hands',10), - (2,10,56,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); + (1,9,38,10.00,'USD',1,1,'Jones Family','Helping Hands',10), + (2,10,38,250.00,'USD',1,1,'Annie and the kids','Annie Helps',10); /*!40000 ALTER TABLE `civicrm_contribution_soft` ENABLE KEYS */; UNLOCK TABLES; @@ -3017,11 +2934,11 @@ LOCK TABLES `civicrm_dedupe_rule_group` WRITE; /*!40000 ALTER TABLE `civicrm_dedupe_rule_group` DISABLE KEYS */; INSERT INTO `civicrm_dedupe_rule_group` (`id`, `contact_type`, `threshold`, `used`, `name`, `title`, `is_reserved`) VALUES (1,'Individual',20,'Supervised','IndividualSupervised','Name and Email (reserved)',1), - (2,'Organization',10,'Supervised','OrganizationSupervised','Name and Email',0), - (3,'Household',10,'Supervised','HouseholdSupervised','Name and Email',0), + (2,'Organization',10,'Supervised','OrganizationSupervised','Name or Email',0), + (3,'Household',10,'Supervised','HouseholdSupervised','Name or Email',0), (4,'Individual',10,'Unsupervised','IndividualUnsupervised','Email (reserved)',1), - (5,'Organization',10,'Unsupervised','OrganizationUnsupervised','Name and Email',0), - (6,'Household',10,'Unsupervised','HouseholdUnsupervised','Name and Email',0), + (5,'Organization',10,'Unsupervised','OrganizationUnsupervised','Name or Email',0), + (6,'Household',10,'Unsupervised','HouseholdUnsupervised','Name or Email',0), (7,'Individual',15,'General','IndividualGeneral','Name and Address (reserved)',1); /*!40000 ALTER TABLE `civicrm_dedupe_rule_group` ENABLE KEYS */; UNLOCK TABLES; @@ -3042,7 +2959,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.63.2',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); + (1,'Default Domain Name',NULL,'5.64.0',1,NULL,'a:1:{s:5:\"en_US\";a:0:{}}'); /*!40000 ALTER TABLE `civicrm_domain` ENABLE KEYS */; UNLOCK TABLES; @@ -3054,187 +2971,204 @@ 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,146,1,'reynolds.allan60@airmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (3,146,1,'areynolds66@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (4,56,1,'scottp3@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (5,195,1,'erikadams@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (6,195,1,'adams.h.erik29@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (7,115,1,'elbertt@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (8,115,1,'eterry48@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (9,152,1,'robertson.scarlet@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (10,152,1,'robertson.k.scarlet@sample.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (11,51,1,'dimitrov.r.daren@example.net',1,0,0,0,NULL,NULL,NULL,NULL), - (12,51,1,'darendimitrov@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (13,4,1,'kathleenj@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (14,4,1,'kathleenjameson@testing.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (15,49,1,'andrewjones@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (16,49,1,'andrewj@lol.info',0,0,0,0,NULL,NULL,NULL,NULL), - (17,153,1,'ashleyreynolds@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (18,153,1,'ab.reynolds@mymail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (19,171,1,'samuels.f.mei@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (20,135,1,'samsone@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (21,52,1,'gonzlezb@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (22,52,1,'bettygonzlez@example.info',0,0,0,0,NULL,NULL,NULL,NULL), - (23,172,1,'robertsn@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (24,81,1,'we.gonzlez27@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (25,81,1,'we.gonzlez90@notmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (26,102,1,'elinajensen39@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (27,102,1,'elinajensen@lol.com',0,0,0,0,NULL,NULL,NULL,NULL), - (28,106,1,'roland@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (29,106,1,'chowski.r.roland60@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (30,167,1,'deforestm@example.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (31,167,1,'migueld@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (32,28,1,'ezope@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (33,28,1,'zope.errol@airmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (34,133,1,'bwattson54@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (35,133,1,'wattsonb40@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (36,79,1,'eq.jensen76@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (37,79,1,'elizabethj@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (38,134,1,'margaret22@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (39,31,1,'darenc@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (40,31,1,'darencruz9@testmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (41,53,1,'ashleys@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (42,53,1,'samson.ashley@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL), - (43,77,1,'angelikaprentice@fishmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (44,77,1,'aprentice@spamalot.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (45,72,1,'chowskir74@testing.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (46,72,1,'rolandochowski33@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (47,123,1,'cooper.t.alida@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (48,100,1,'jm.nielsen@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (49,100,1,'juliannn@fishmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (50,33,1,'wattson.teddy@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (51,25,1,'adams.erik91@spamalot.org',1,0,0,0,NULL,NULL,NULL,NULL), - (52,27,1,'terry.jacob@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (53,201,1,'margaretn@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (54,200,1,'ci.adams@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (55,200,1,'adams.claudio@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (56,114,1,'bn.daz@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (57,114,1,'bn.daz@testing.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (58,92,1,'terry.v.brzczysaw@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (59,184,1,'cooper.r.josefa@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (60,91,1,'cruz.maxwell@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (61,26,1,'carlosw@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), - (62,141,1,'bryonl75@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (63,141,1,'lee.bryon@sample.info',0,0,0,0,NULL,NULL,NULL,NULL), - (64,97,1,'olsenm@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (65,55,1,'tanyadaz81@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (66,55,1,'tanyad@fakemail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (67,12,1,'wagner.brittney5@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), - (68,44,1,'valenet@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (69,44,1,'terrellv@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (70,168,1,'mllerc41@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (71,168,1,'mllerc35@fakemail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (72,98,1,'daren78@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (73,87,1,'ax.ivanov@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (74,87,1,'ashlieivanov33@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (75,65,1,'darenyadav@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (76,65,1,'darenyadav63@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (77,142,1,'clintjones66@infomail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (78,142,1,'jones.p.clint@lol.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (79,164,1,'bachman.carlos1@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (80,99,1,'cooper.allen60@fishmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (81,99,1,'allenc@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (82,104,1,'brigettegrant@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (83,169,1,'wattson.t.roland@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (84,196,1,'prentice.k.ivey98@fishmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (85,59,1,'nielsen.russell@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (86,59,1,'nielsen.russell71@airmail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (87,189,1,'heidi@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (88,16,1,'chowski.errol23@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (89,16,1,'errolchowski64@infomail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), - (90,57,1,'sharynd@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (91,57,1,'dimitrovs27@testmail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (92,107,1,'du.dimitrov58@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (93,23,1,'wattson.bryon34@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (94,41,1,'kiarar61@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (95,34,1,'bwattson-reynolds@spamalot.com',1,0,0,0,NULL,NULL,NULL,NULL), - (96,34,1,'wattson-reynolds.beula@example.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (97,2,1,'olsen.craig@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (98,162,1,'nielsen.maria87@sample.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (99,162,1,'nielsen.maria@notmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (100,47,1,'damarisn@notmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (101,47,1,'dx.nielsen35@notmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (102,118,1,'darend@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (103,112,1,'daz-smithr@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (104,155,1,'elinar93@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (105,193,1,'reynolds.santina14@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (106,193,1,'santinar@fakemail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (107,9,1,'reynoldsa@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (108,9,1,'arlynereynolds@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (109,58,1,'claudiosamson51@mymail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (110,58,1,'claudios@infomail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (111,188,1,'samson-cooper.ashley@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (112,137,1,'swilson@fishmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (113,145,1,'kwilson@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (114,143,1,'nblackwell4@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (115,143,1,'blackwell.norris62@mymail.com',0,0,0,0,NULL,NULL,NULL,NULL), - (116,192,1,'gonzlez-chowskie33@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (117,68,1,'kk.gonzlez-chowski@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), - (118,139,1,'terrell.u.russell61@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (119,136,1,'rterrell-grant45@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), - (120,128,1,'mariad14@airmail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (121,40,1,'du.daz47@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (122,40,1,'du.daz56@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL), - (123,63,1,'omard@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (124,63,1,'omard@example.com',0,0,0,0,NULL,NULL,NULL,NULL), - (125,194,1,'sdaz73@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (126,194,1,'sdaz@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (127,113,1,'rn.jensen2@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (128,197,1,'jensenm@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (129,197,1,'margaretjensen39@sample.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), - (130,20,1,'sanford14@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), - (131,20,1,'schowski@infomail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (132,67,1,'tanyachowski73@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), - (133,32,1,'valenechowski@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), - (134,120,1,'nielsen.j.billy@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), - (135,120,1,'billynielsen@spamalot.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (136,180,1,'nielsen-terrys@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), - (137,54,1,'nx.nielsen-terry15@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (138,198,1,'grant.errol72@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (139,198,1,'grant.errol83@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), - (140,132,1,'grant.x.rebekah95@fakemail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), - (141,29,1,'scarletg@lol.org',1,0,0,0,NULL,NULL,NULL,NULL), - (142,29,1,'grants30@notmail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (143,7,1,'granth98@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), - (144,7,1,'granth93@infomail.net',0,0,0,0,NULL,NULL,NULL,NULL), - (145,39,1,'felishajameson@infomail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (146,39,1,'fj.jameson@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), - (147,199,1,'daz.t.arlyne30@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (148,199,1,'daz.arlyne@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (149,48,1,'dazs69@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), - (150,182,1,'irisw91@airmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), - (151,30,1,'terrell-wattson.lincoln71@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), - (152,30,1,'lincolnt@fishmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), - (153,131,1,'terrell-wattsonb83@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL), - (154,191,3,'contact@kermitsustainability.org',1,0,0,0,NULL,NULL,NULL,NULL), - (155,111,2,'samson.lawerence@kermitsustainability.org',1,0,0,0,NULL,NULL,NULL,NULL), - (156,101,3,'info@docolumbiafamily.org',1,0,0,0,NULL,NULL,NULL,NULL), - (157,11,3,'contact@maincenter.org',1,0,0,0,NULL,NULL,NULL,NULL), - (158,39,2,'jamesonf34@maincenter.org',0,0,0,0,NULL,NULL,NULL,NULL), - (159,173,3,'feedback@vnenvironmentalpartners.org',1,0,0,0,NULL,NULL,NULL,NULL), - (160,167,2,'93@vnenvironmentalpartners.org',0,0,0,0,NULL,NULL,NULL,NULL), - (161,147,3,'sales@urbanalliance.org',1,0,0,0,NULL,NULL,NULL,NULL), - (162,88,3,'sales@maplewellness.org',1,0,0,0,NULL,NULL,NULL,NULL), - (163,100,2,'juliannnielsen@maplewellness.org',0,0,0,0,NULL,NULL,NULL,NULL), - (164,181,3,'contact@minnesotaeducation.org',1,0,0,0,NULL,NULL,NULL,NULL), - (165,128,2,'daz.maria@minnesotaeducation.org',0,0,0,0,NULL,NULL,NULL,NULL), - (166,125,3,'sales@lcpeacecollective.org',1,0,0,0,NULL,NULL,NULL,NULL), - (167,143,2,'norrisblackwell@lcpeacecollective.org',0,0,0,0,NULL,NULL,NULL,NULL), - (168,117,3,'info@pennsylvanialiteracyacademy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (169,16,2,'errolchowski@pennsylvanialiteracyacademy.org',0,0,0,0,NULL,NULL,NULL,NULL), - (170,37,3,'service@nebraskaactionfund.org',1,0,0,0,NULL,NULL,NULL,NULL), - (171,136,2,'rayt@nebraskaactionfund.org',0,0,0,0,NULL,NULL,NULL,NULL), - (172,179,3,'info@baysports.org',1,0,0,0,NULL,NULL,NULL,NULL), - (173,77,2,'angelikap35@baysports.org',0,0,0,0,NULL,NULL,NULL,NULL), - (174,166,3,'info@californialegal.org',1,0,0,0,NULL,NULL,NULL,NULL), - (175,60,3,'service@tennesseepoetry.org',1,0,0,0,NULL,NULL,NULL,NULL), - (176,10,3,'info@progressiveempowerment.org',1,0,0,0,NULL,NULL,NULL,NULL), - (177,124,3,'info@friendssystems.org',1,0,0,0,NULL,NULL,NULL,NULL), - (178,175,3,'contact@communityliteracy.org',1,0,0,0,NULL,NULL,NULL,NULL), - (179,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), - (180,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (181,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), - (182,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); + (2,154,1,'daz.ashlie@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (3,4,1,'hb.roberts79@airmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (4,4,1,'roberts.b.herminia@fishmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (5,38,1,'reynolds.n.russell1@mymail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (6,100,1,'loublackwell@testmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (7,182,1,'deforest.ray98@infomail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (8,182,1,'deforestr@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (9,135,1,'tanyarobertson@testing.net',1,0,0,0,NULL,NULL,NULL,NULL), + (10,92,1,'ryadav88@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (11,92,1,'ryadav42@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (12,99,1,'robertson.t.rebekah@airmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (13,99,1,'robertson.t.rebekah21@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (14,98,1,'maganr57@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (15,150,1,'jx.nielsen@infomail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (16,150,1,'jx.nielsen4@example.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (17,14,1,'lgonzlez79@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (18,200,1,'terrellr74@infomail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (19,200,1,'ro.terrell86@example.info',0,0,0,0,NULL,NULL,NULL,NULL), + (20,31,1,'landonbachman31@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (21,31,1,'landonbachman23@fakemail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (22,105,1,'santinab@spamalot.info',1,0,0,0,NULL,NULL,NULL,NULL), + (23,19,1,'kandacenielsen@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (24,19,1,'nielsen.kandace@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (25,115,1,'tdeforest@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (26,115,1,'teresad@spamalot.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (27,35,1,'prenticeb@infomail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (28,128,1,'prentice.sanford@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (29,128,1,'sanfordp1@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (30,15,1,'blackwell.b.ashley@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (31,15,1,'blackwell.b.ashley@airmail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (32,10,1,'yadav.magan@spamalot.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (33,44,1,'juliannj@example.org',1,0,0,0,NULL,NULL,NULL,NULL), + (34,44,1,'jameson.juliann@spamalot.com',0,0,0,0,NULL,NULL,NULL,NULL), + (35,61,1,'felishaprentice60@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (36,152,1,'wagner.alexia@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (37,64,1,'eh.cooper@mymail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (38,56,1,'acooper63@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (39,56,1,'acooper@lol.info',0,0,0,0,NULL,NULL,NULL,NULL), + (40,62,1,'gonzlezs@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (41,101,1,'wilsonk@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), + (42,101,1,'wilson.kenny74@notmail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (43,201,1,'daz.y.betty74@example.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (44,93,1,'wattsonk94@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (45,93,1,'wattsonk13@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (46,88,1,'reynolds.carylon8@sample.net',1,0,0,0,NULL,NULL,NULL,NULL), + (47,21,1,'kaceyj36@fishmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (48,21,1,'jamesonk54@testing.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (49,104,1,'arlyneivanov@sample.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (50,117,1,'winfordrobertson@spamalot.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (51,71,1,'ivanov.elina@mymail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (52,71,1,'elinai@fishmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (53,187,1,'adams.allen20@notmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (54,114,1,'mz.nielsen@testmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (55,41,1,'robertsr@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (56,196,1,'nivanov9@testmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (57,196,1,'ivanovn@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (58,23,1,'tobyterrell@infomail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (59,23,1,'terrell.u.toby@fishmail.com',0,0,0,0,NULL,NULL,NULL,NULL), + (60,136,1,'samuels.kiara@sample.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (61,18,1,'landongrant@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (62,84,1,'jacobs.h.truman21@fakemail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (63,84,1,'th.jacobs@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (64,81,1,'landondaz@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (65,81,1,'landondaz@mymail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (66,189,1,'samson.margaret86@fakemail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (67,5,1,'le.jameson31@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (68,119,1,'nielsen.carylon@airmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (69,119,1,'carylonnielsen@mymail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (70,110,1,'kf.mcreynolds88@airmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (71,148,1,'jensenj@example.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (72,148,1,'jensen.juliann@example.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (73,159,1,'terry.rebekah@notmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (74,113,1,'cv.prentice@example.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (75,113,1,'craigp68@sample.org',0,0,0,0,NULL,NULL,NULL,NULL), + (76,118,1,'cruze40@testmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (77,118,1,'cruz.errol16@infomail.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (78,26,1,'samuels.truman@sample.com',1,0,0,0,NULL,NULL,NULL,NULL), + (79,26,1,'tsamuels@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (80,90,1,'jameson.kenny5@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (81,177,1,'scottl@lol.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (82,83,1,'lareeb@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (83,83,1,'blackwell.u.laree@infomail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (84,73,1,'ba.mcreynolds@testmail.net',1,0,0,0,NULL,NULL,NULL,NULL), + (85,170,1,'omarr33@lol.com',1,0,0,0,NULL,NULL,NULL,NULL), + (86,170,1,'oreynolds@testing.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (87,25,1,'bobp76@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (88,25,1,'prentice.bob@notmail.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (89,37,1,'jacobs.iris@lol.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (90,37,1,'jacobs.iris@sample.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (91,108,1,'gonzlez.sonny87@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (92,108,1,'gonzlez.sonny@spamalot.co.nz',0,0,0,0,NULL,NULL,NULL,NULL), + (93,185,1,'iveyb@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), + (94,95,1,'ee.blackwell@fakemail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (95,158,1,'blackwell.brent@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (96,131,1,'rosariob@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (97,65,1,'allanbachman11@mymail.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (98,165,1,'blackwell.d.omar@spamalot.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (99,102,1,'blackwell.brzczysaw54@fishmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (100,72,1,'herminiat@mymail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (101,72,1,'terry.herminia@testing.com',0,0,0,0,NULL,NULL,NULL,NULL), + (102,2,1,'lincolnterry@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (103,2,1,'lincolnterry@lol.com',0,0,0,0,NULL,NULL,NULL,NULL), + (104,140,1,'grant.y.megan77@testing.biz',1,0,0,0,NULL,NULL,NULL,NULL), + (105,22,1,'barryt@testmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (106,147,1,'rterrell@fakemail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (107,147,1,'rolandoterrell@airmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (108,60,1,'jroberts53@testmail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (109,60,1,'robertsj20@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (110,107,1,'winfordterrell-roberts9@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (111,190,1,'jacksont@notmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (112,190,1,'terrell-roberts.jackson47@sample.com',0,0,0,0,NULL,NULL,NULL,NULL), + (113,199,1,'deforest-lee.a.juliann64@sample.org',1,0,0,0,NULL,NULL,NULL,NULL), + (114,199,1,'ja.deforest-lee39@testmail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (115,160,1,'ce.lee@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), + (116,133,1,'leeb@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (117,133,1,'be.lee13@mymail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (118,69,1,'robertsonk@lol.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (119,8,1,'shadrobertson@mymail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (120,8,1,'robertsons@notmail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (121,191,1,'jeddeforest@testing.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (122,191,1,'jdeforest46@spamalot.org',0,0,0,0,NULL,NULL,NULL,NULL), + (123,32,1,'mdeforest@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (124,32,1,'mdeforest@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (125,9,1,'lashawndadeforest@infomail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (126,9,1,'ln.deforest35@airmail.net',0,0,0,0,NULL,NULL,NULL,NULL), + (127,161,1,'tblackwell83@notmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (128,161,1,'blackwellt83@mymail.org',0,0,0,0,NULL,NULL,NULL,NULL), + (129,59,1,'deforest-blackwell.jay@sample.info',1,0,0,0,NULL,NULL,NULL,NULL), + (130,59,1,'jdeforest-blackwell4@sample.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (131,144,1,'deforest-blackwell.w.troy@lol.net',1,0,0,0,NULL,NULL,NULL,NULL), + (132,144,1,'troyd39@sample.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (133,188,1,'bobzope@fakemail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (134,11,1,'sanfordz24@testmail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (135,11,1,'zopes@fakemail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (136,86,1,'jacobzope@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), + (137,176,1,'jones.bob@fakemail.com',1,0,0,0,NULL,NULL,NULL,NULL), + (138,111,1,'jonesj@spamalot.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (139,193,1,'lincolnj82@fishmail.co.uk',1,0,0,0,NULL,NULL,NULL,NULL), + (140,80,1,'barkleyl48@testing.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (141,125,1,'margaretb@spamalot.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (142,125,1,'barkley.m.margaret68@fakemail.co.in',0,0,0,0,NULL,NULL,NULL,NULL), + (143,96,1,'jedbarkley19@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (144,96,1,'barkley.jed@lol.co.uk',0,0,0,0,NULL,NULL,NULL,NULL), + (145,184,1,'nielsen.jacob4@sample.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (146,184,1,'jacobnielsen@testmail.co.pl',0,0,0,0,NULL,NULL,NULL,NULL), + (147,120,1,'damarisn@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (148,97,1,'jaybachman4@lol.info',1,0,0,0,NULL,NULL,NULL,NULL), + (149,97,1,'jaybachman22@infomail.biz',0,0,0,0,NULL,NULL,NULL,NULL), + (150,175,1,'rt.bachman@fishmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (151,58,1,'kathleenb@notmail.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (152,70,1,'kjones-patel@infomail.info',1,0,0,0,NULL,NULL,NULL,NULL), + (153,121,1,'tpatel@lol.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (154,121,1,'trumanpatel34@infomail.info',0,0,0,0,NULL,NULL,NULL,NULL), + (155,53,1,'patel.esta@example.info',1,0,0,0,NULL,NULL,NULL,NULL), + (156,123,1,'gonzlezb6@testing.info',1,0,0,0,NULL,NULL,NULL,NULL), + (157,181,1,'damarisgonzlez@example.net',1,0,0,0,NULL,NULL,NULL,NULL), + (158,168,1,'samson-cruz.elizabeth36@fishmail.co.nz',1,0,0,0,NULL,NULL,NULL,NULL), + (159,178,1,'mllerb@airmail.org',1,0,0,0,NULL,NULL,NULL,NULL), + (160,45,1,'princesso88@mymail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (161,27,1,'damarisn@lol.co.pl',1,0,0,0,NULL,NULL,NULL,NULL), + (162,155,1,'barkley.kathleen49@airmail.co.in',1,0,0,0,NULL,NULL,NULL,NULL), + (163,82,3,'sales@kentuckyfund.org',1,0,0,0,NULL,NULL,NULL,NULL), + (164,153,2,'terry-grant.tanya33@kentuckyfund.org',1,0,0,0,NULL,NULL,NULL,NULL), + (165,122,3,'feedback@virginiafamilyacademy.org',1,0,0,0,NULL,NULL,NULL,NULL), + (166,199,2,'ja.deforest-lee@virginiafamilyacademy.org',0,0,0,0,NULL,NULL,NULL,NULL), + (167,157,3,'info@amblerfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL), + (168,134,2,'shadolsen@amblerfellowship.org',1,0,0,0,NULL,NULL,NULL,NULL), + (169,174,3,'info@northpointeducation.org',1,0,0,0,NULL,NULL,NULL,NULL), + (170,37,2,'ijacobs@northpointeducation.org',0,0,0,0,NULL,NULL,NULL,NULL), + (171,67,3,'sales@unitedartsfund.org',1,0,0,0,NULL,NULL,NULL,NULL), + (172,16,3,'contact@localsolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), + (173,186,2,'lees@localsolutions.org',1,0,0,0,NULL,NULL,NULL,NULL), + (174,28,3,'sales@georgiafamily.org',1,0,0,0,NULL,NULL,NULL,NULL), + (175,133,2,'tobychowski@georgiafamily.org',0,0,0,0,NULL,NULL,NULL,NULL), + (176,89,3,'info@localartssystems.org',1,0,0,0,NULL,NULL,NULL,NULL), + (177,43,3,'sales@localsports.org',1,0,0,0,NULL,NULL,NULL,NULL), + (178,159,2,'rd.terry@localsports.org',0,0,0,0,NULL,NULL,NULL,NULL), + (179,13,3,'service@unitedempowermentservices.org',1,0,0,0,NULL,NULL,NULL,NULL), + (180,131,2,'patel.miguel@unitedempowermentservices.org',0,0,0,0,NULL,NULL,NULL,NULL), + (181,39,3,'info@massachusettsarts.org',1,0,0,0,NULL,NULL,NULL,NULL), + (182,20,2,'nielsen.bryon@massachusettsarts.org',1,0,0,0,NULL,NULL,NULL,NULL), + (183,195,3,'sales@kclaneshealth.org',1,0,0,0,NULL,NULL,NULL,NULL), + (184,66,2,'terry.toby86@kclaneshealth.org',1,0,0,0,NULL,NULL,NULL,NULL), + (185,198,3,'info@nebraskamusicnetwork.org',1,0,0,0,NULL,NULL,NULL,NULL), + (186,54,3,'feedback@ruraleducationalliance.org',1,0,0,0,NULL,NULL,NULL,NULL), + (187,41,2,'ru.roberts30@ruraleducationalliance.org',0,0,0,0,NULL,NULL,NULL,NULL), + (188,76,3,'feedback@tylertownpartnership.org',1,0,0,0,NULL,NULL,NULL,NULL), + (189,11,2,'zope.sanford94@tylertownpartnership.org',0,0,0,0,NULL,NULL,NULL,NULL), + (190,142,3,'info@iowaservices.org',1,0,0,0,NULL,NULL,NULL,NULL), + (191,103,2,'delanagonzlez@iowaservices.org',1,0,0,0,NULL,NULL,NULL,NULL), + (192,78,3,'feedback@mlkingpoetry.org',1,0,0,0,NULL,NULL,NULL,NULL), + (193,115,2,'deforest.teresa@mlkingpoetry.org',0,0,0,0,NULL,NULL,NULL,NULL), + (194,49,3,'feedback@nyfoodinitiative.org',1,0,0,0,NULL,NULL,NULL,NULL), + (195,201,2,'reynolds.irvin@nyfoodinitiative.org',0,0,0,0,NULL,NULL,NULL,NULL), + (196,202,1,'jenny@example.com',1,0,0,0,NULL,NULL,NULL,NULL), + (197,NULL,1,'development@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (198,NULL,1,'tournaments@example.org',0,0,0,0,NULL,NULL,NULL,NULL), + (199,NULL,1,'celebration@example.org',0,0,0,0,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_email` ENABLE KEYS */; UNLOCK TABLES; @@ -3281,11 +3215,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',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); + (19,'civicrm_option_value',93,6,6), + (20,'civicrm_option_value',94,6,6), + (21,'civicrm_option_value',95,6,6), + (22,'civicrm_option_value',91,6,12), + (23,'civicrm_option_value',92,6,12); /*!40000 ALTER TABLE `civicrm_entity_financial_account` ENABLE KEYS */; UNLOCK TABLES; @@ -3358,165 +3292,165 @@ INSERT INTO `civicrm_entity_financial_trxn` (`id`, `entity_table`, `entity_id`, (60,'civicrm_financial_item',30,30,10.00), (61,'civicrm_contribution',31,31,5.00), (62,'civicrm_financial_item',31,31,5.00), - (63,'civicrm_contribution',54,32,100.00), + (63,'civicrm_contribution',32,32,100.00), (64,'civicrm_financial_item',32,32,100.00), - (65,'civicrm_contribution',45,33,50.00), - (66,'civicrm_financial_item',33,33,50.00), - (67,'civicrm_contribution',36,34,100.00), + (65,'civicrm_contribution',34,33,100.00), + (66,'civicrm_financial_item',33,33,100.00), + (67,'civicrm_contribution',38,34,100.00), (68,'civicrm_financial_item',34,34,100.00), - (69,'civicrm_contribution',48,35,100.00), + (69,'civicrm_contribution',40,35,100.00), (70,'civicrm_financial_item',35,35,100.00), - (71,'civicrm_contribution',37,36,50.00), - (72,'civicrm_financial_item',36,36,50.00), - (73,'civicrm_contribution',39,37,50.00), - (74,'civicrm_financial_item',37,37,50.00), - (75,'civicrm_contribution',50,38,100.00), + (71,'civicrm_contribution',41,36,100.00), + (72,'civicrm_financial_item',36,36,100.00), + (73,'civicrm_contribution',44,37,100.00), + (74,'civicrm_financial_item',37,37,100.00), + (75,'civicrm_contribution',46,38,100.00), (76,'civicrm_financial_item',38,38,100.00), - (77,'civicrm_contribution',41,39,100.00), + (77,'civicrm_contribution',48,39,100.00), (78,'civicrm_financial_item',39,39,100.00), - (79,'civicrm_contribution',60,40,100.00), + (79,'civicrm_contribution',50,40,100.00), (80,'civicrm_financial_item',40,40,100.00), - (81,'civicrm_contribution',38,41,100.00), + (81,'civicrm_contribution',52,41,100.00), (82,'civicrm_financial_item',41,41,100.00), - (83,'civicrm_contribution',56,42,50.00), - (84,'civicrm_financial_item',42,42,50.00), - (85,'civicrm_contribution',51,43,50.00), - (86,'civicrm_financial_item',43,43,50.00), - (87,'civicrm_contribution',46,44,100.00), + (83,'civicrm_contribution',54,42,100.00), + (84,'civicrm_financial_item',42,42,100.00), + (85,'civicrm_contribution',56,43,100.00), + (86,'civicrm_financial_item',43,43,100.00), + (87,'civicrm_contribution',58,44,100.00), (88,'civicrm_financial_item',44,44,100.00), - (89,'civicrm_contribution',61,45,100.00), + (89,'civicrm_contribution',60,45,100.00), (90,'civicrm_financial_item',45,45,100.00), - (91,'civicrm_contribution',40,46,100.00), + (91,'civicrm_contribution',61,46,100.00), (92,'civicrm_financial_item',46,46,100.00), - (93,'civicrm_contribution',58,47,100.00), - (94,'civicrm_financial_item',47,47,100.00), - (95,'civicrm_contribution',32,48,100.00), - (96,'civicrm_financial_item',48,48,100.00), - (97,'civicrm_contribution',35,49,50.00), + (93,'civicrm_contribution',33,47,50.00), + (94,'civicrm_financial_item',47,47,50.00), + (95,'civicrm_contribution',35,48,50.00), + (96,'civicrm_financial_item',48,48,50.00), + (97,'civicrm_contribution',36,49,50.00), (98,'civicrm_financial_item',49,49,50.00), - (99,'civicrm_contribution',42,50,1200.00), - (100,'civicrm_financial_item',50,50,1200.00), - (101,'civicrm_contribution',34,51,100.00), - (102,'civicrm_financial_item',51,51,100.00), - (103,'civicrm_contribution',33,52,50.00), + (99,'civicrm_contribution',37,50,50.00), + (100,'civicrm_financial_item',50,50,50.00), + (101,'civicrm_contribution',39,51,50.00), + (102,'civicrm_financial_item',51,51,50.00), + (103,'civicrm_contribution',43,52,50.00), (104,'civicrm_financial_item',52,52,50.00), - (105,'civicrm_contribution',57,53,50.00), + (105,'civicrm_contribution',45,53,50.00), (106,'civicrm_financial_item',53,53,50.00), (107,'civicrm_contribution',47,54,50.00), (108,'civicrm_financial_item',54,54,50.00), - (109,'civicrm_contribution',55,55,50.00), + (109,'civicrm_contribution',49,55,50.00), (110,'civicrm_financial_item',55,55,50.00), - (111,'civicrm_contribution',49,56,50.00), + (111,'civicrm_contribution',51,56,50.00), (112,'civicrm_financial_item',56,56,50.00), - (113,'civicrm_contribution',44,57,100.00), - (114,'civicrm_financial_item',57,57,100.00), - (115,'civicrm_contribution',52,58,100.00), - (116,'civicrm_financial_item',58,58,100.00), + (113,'civicrm_contribution',55,57,50.00), + (114,'civicrm_financial_item',57,57,50.00), + (115,'civicrm_contribution',57,58,50.00), + (116,'civicrm_financial_item',58,58,50.00), (117,'civicrm_contribution',59,59,50.00), (118,'civicrm_financial_item',59,59,50.00), - (119,'civicrm_contribution',43,60,50.00), - (120,'civicrm_financial_item',60,60,50.00), + (119,'civicrm_contribution',42,60,1200.00), + (120,'civicrm_financial_item',60,60,1200.00), (121,'civicrm_contribution',53,61,1200.00), (122,'civicrm_financial_item',61,61,1200.00), - (123,'civicrm_contribution',63,62,50.00), + (123,'civicrm_contribution',64,62,50.00), (124,'civicrm_financial_item',62,62,50.00), (125,'civicrm_contribution',67,63,50.00), (126,'civicrm_financial_item',63,63,50.00), - (127,'civicrm_contribution',71,64,800.00), - (128,'civicrm_financial_item',64,64,800.00), - (129,'civicrm_contribution',75,65,50.00), + (127,'civicrm_contribution',70,64,50.00), + (128,'civicrm_financial_item',64,64,50.00), + (129,'civicrm_contribution',73,65,50.00), (130,'civicrm_financial_item',65,65,50.00), - (131,'civicrm_contribution',83,66,800.00), - (132,'civicrm_financial_item',66,66,800.00), - (133,'civicrm_contribution',88,67,50.00), + (131,'civicrm_contribution',76,66,50.00), + (132,'civicrm_financial_item',66,66,50.00), + (133,'civicrm_contribution',79,67,50.00), (134,'civicrm_financial_item',67,67,50.00), - (135,'civicrm_contribution',92,68,50.00), + (135,'civicrm_contribution',82,68,50.00), (136,'civicrm_financial_item',68,68,50.00), - (137,'civicrm_contribution',96,69,800.00), - (138,'civicrm_financial_item',69,69,800.00), - (139,'civicrm_contribution',100,70,50.00), + (137,'civicrm_contribution',85,69,50.00), + (138,'civicrm_financial_item',69,69,50.00), + (139,'civicrm_contribution',89,70,50.00), (140,'civicrm_financial_item',70,70,50.00), - (141,'civicrm_contribution',108,71,800.00), - (142,'civicrm_financial_item',71,71,800.00), - (143,'civicrm_contribution',64,72,50.00), + (141,'civicrm_contribution',92,71,50.00), + (142,'civicrm_financial_item',71,71,50.00), + (143,'civicrm_contribution',95,72,50.00), (144,'civicrm_financial_item',72,72,50.00), - (145,'civicrm_contribution',68,73,800.00), - (146,'civicrm_financial_item',73,73,800.00), - (147,'civicrm_contribution',72,74,50.00), + (145,'civicrm_contribution',98,73,50.00), + (146,'civicrm_financial_item',73,73,50.00), + (147,'civicrm_contribution',101,74,50.00), (148,'civicrm_financial_item',74,74,50.00), - (149,'civicrm_contribution',76,75,50.00), + (149,'civicrm_contribution',104,75,50.00), (150,'civicrm_financial_item',75,75,50.00), - (151,'civicrm_contribution',79,76,50.00), + (151,'civicrm_contribution',107,76,50.00), (152,'civicrm_financial_item',76,76,50.00), - (153,'civicrm_contribution',81,77,50.00), + (153,'civicrm_contribution',110,77,50.00), (154,'civicrm_financial_item',77,77,50.00), - (155,'civicrm_contribution',84,78,50.00), - (156,'civicrm_financial_item',78,78,50.00), - (157,'civicrm_contribution',87,79,800.00), + (155,'civicrm_contribution',65,78,800.00), + (156,'civicrm_financial_item',78,78,800.00), + (157,'civicrm_contribution',68,79,800.00), (158,'civicrm_financial_item',79,79,800.00), - (159,'civicrm_contribution',89,80,50.00), - (160,'civicrm_financial_item',80,80,50.00), - (161,'civicrm_contribution',93,81,800.00), + (159,'civicrm_contribution',71,80,800.00), + (160,'civicrm_financial_item',80,80,800.00), + (161,'civicrm_contribution',74,81,800.00), (162,'civicrm_financial_item',81,81,800.00), - (163,'civicrm_contribution',97,82,50.00), - (164,'civicrm_financial_item',82,82,50.00), - (165,'civicrm_contribution',101,83,50.00), - (166,'civicrm_financial_item',83,83,50.00), - (167,'civicrm_contribution',104,84,50.00), - (168,'civicrm_financial_item',84,84,50.00), - (169,'civicrm_contribution',106,85,50.00), - (170,'civicrm_financial_item',85,85,50.00), - (171,'civicrm_contribution',109,86,50.00), - (172,'civicrm_financial_item',86,86,50.00), - (173,'civicrm_contribution',112,87,800.00), + (163,'civicrm_contribution',77,82,800.00), + (164,'civicrm_financial_item',82,82,800.00), + (165,'civicrm_contribution',80,83,800.00), + (166,'civicrm_financial_item',83,83,800.00), + (167,'civicrm_contribution',83,84,800.00), + (168,'civicrm_financial_item',84,84,800.00), + (169,'civicrm_contribution',86,85,800.00), + (170,'civicrm_financial_item',85,85,800.00), + (171,'civicrm_contribution',87,86,800.00), + (172,'civicrm_financial_item',86,86,800.00), + (173,'civicrm_contribution',90,87,800.00), (174,'civicrm_financial_item',87,87,800.00), - (175,'civicrm_contribution',65,88,800.00), + (175,'civicrm_contribution',93,88,800.00), (176,'civicrm_financial_item',88,88,800.00), - (177,'civicrm_contribution',69,89,50.00), - (178,'civicrm_financial_item',89,89,50.00), - (179,'civicrm_contribution',73,90,50.00), - (180,'civicrm_financial_item',90,90,50.00), - (181,'civicrm_contribution',80,91,800.00), + (177,'civicrm_contribution',96,89,800.00), + (178,'civicrm_financial_item',89,89,800.00), + (179,'civicrm_contribution',99,90,800.00), + (180,'civicrm_financial_item',90,90,800.00), + (181,'civicrm_contribution',102,91,800.00), (182,'civicrm_financial_item',91,91,800.00), - (183,'civicrm_contribution',86,92,800.00), + (183,'civicrm_contribution',105,92,800.00), (184,'civicrm_financial_item',92,92,800.00), - (185,'civicrm_contribution',90,93,800.00), + (185,'civicrm_contribution',108,93,800.00), (186,'civicrm_financial_item',93,93,800.00), - (187,'civicrm_contribution',94,94,50.00), - (188,'civicrm_financial_item',94,94,50.00), - (189,'civicrm_contribution',98,95,50.00), - (190,'civicrm_financial_item',95,95,50.00), - (191,'civicrm_contribution',105,96,800.00), - (192,'civicrm_financial_item',96,96,800.00), - (193,'civicrm_contribution',111,97,800.00), - (194,'civicrm_financial_item',97,97,800.00), - (195,'civicrm_contribution',66,98,50.00), + (187,'civicrm_contribution',111,94,800.00), + (188,'civicrm_financial_item',94,94,800.00), + (189,'civicrm_contribution',112,95,800.00), + (190,'civicrm_financial_item',95,95,800.00), + (191,'civicrm_contribution',63,96,50.00), + (192,'civicrm_financial_item',96,96,50.00), + (193,'civicrm_contribution',66,97,50.00), + (194,'civicrm_financial_item',97,97,50.00), + (195,'civicrm_contribution',69,98,50.00), (196,'civicrm_financial_item',98,98,50.00), - (197,'civicrm_contribution',70,99,50.00), + (197,'civicrm_contribution',72,99,50.00), (198,'civicrm_financial_item',99,99,50.00), - (199,'civicrm_contribution',74,100,800.00), - (200,'civicrm_financial_item',100,100,800.00), - (201,'civicrm_contribution',77,101,800.00), - (202,'civicrm_financial_item',101,101,800.00), - (203,'civicrm_contribution',78,102,50.00), + (199,'civicrm_contribution',75,100,50.00), + (200,'civicrm_financial_item',100,100,50.00), + (201,'civicrm_contribution',78,101,50.00), + (202,'civicrm_financial_item',101,101,50.00), + (203,'civicrm_contribution',81,102,50.00), (204,'civicrm_financial_item',102,102,50.00), - (205,'civicrm_contribution',82,103,50.00), + (205,'civicrm_contribution',84,103,50.00), (206,'civicrm_financial_item',103,103,50.00), - (207,'civicrm_contribution',85,104,50.00), + (207,'civicrm_contribution',88,104,50.00), (208,'civicrm_financial_item',104,104,50.00), (209,'civicrm_contribution',91,105,50.00), (210,'civicrm_financial_item',105,105,50.00), - (211,'civicrm_contribution',95,106,50.00), + (211,'civicrm_contribution',94,106,50.00), (212,'civicrm_financial_item',106,106,50.00), - (213,'civicrm_contribution',99,107,800.00), - (214,'civicrm_financial_item',107,107,800.00), - (215,'civicrm_contribution',102,108,800.00), - (216,'civicrm_financial_item',108,108,800.00), + (213,'civicrm_contribution',97,107,50.00), + (214,'civicrm_financial_item',107,107,50.00), + (215,'civicrm_contribution',100,108,50.00), + (216,'civicrm_financial_item',108,108,50.00), (217,'civicrm_contribution',103,109,50.00), (218,'civicrm_financial_item',109,109,50.00), - (219,'civicrm_contribution',107,110,50.00), + (219,'civicrm_contribution',106,110,50.00), (220,'civicrm_financial_item',110,110,50.00), - (221,'civicrm_contribution',110,111,50.00), + (221,'civicrm_contribution',109,111,50.00), (222,'civicrm_financial_item',111,111,50.00); /*!40000 ALTER TABLE `civicrm_entity_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -3528,125 +3462,120 @@ 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 - (19,'civicrm_contact',4,4), - (73,'civicrm_contact',5,4), - (113,'civicrm_contact',6,4), - (114,'civicrm_contact',6,5), - (10,'civicrm_contact',8,3), - (9,'civicrm_contact',10,3), - (2,'civicrm_contact',11,3), - (101,'civicrm_contact',20,4), - (13,'civicrm_contact',21,4), - (14,'civicrm_contact',21,5), - (85,'civicrm_contact',22,5), - (71,'civicrm_contact',23,4), - (40,'civicrm_contact',25,5), - (31,'civicrm_contact',28,4), - (109,'civicrm_contact',29,4), - (118,'civicrm_contact',30,4), - (119,'civicrm_contact',30,5), - (35,'civicrm_contact',31,5), - (62,'civicrm_contact',35,4), - (6,'civicrm_contact',37,3), - (110,'civicrm_contact',42,4), - (111,'civicrm_contact',42,5), - (49,'civicrm_contact',44,5), - (86,'civicrm_contact',45,4), - (87,'civicrm_contact',45,5), - (77,'civicrm_contact',46,4), - (115,'civicrm_contact',48,4), - (116,'civicrm_contact',48,5), - (16,'civicrm_contact',51,4), - (17,'civicrm_contact',51,5), - (48,'civicrm_contact',55,5), - (68,'civicrm_contact',57,4), - (69,'civicrm_contact',57,5), - (82,'civicrm_contact',58,5), - (60,'civicrm_contact',61,4), - (74,'civicrm_contact',62,4), - (97,'civicrm_contact',63,4), - (98,'civicrm_contact',63,5), - (64,'civicrm_contact',64,5), - (56,'civicrm_contact',65,5), - (50,'civicrm_contact',66,4), - (51,'civicrm_contact',66,5), - (65,'civicrm_contact',69,4), - (66,'civicrm_contact',69,5), - (80,'civicrm_contact',70,4), - (18,'civicrm_contact',71,5), - (37,'civicrm_contact',72,4), - (38,'civicrm_contact',72,5), - (102,'civicrm_contact',74,4), - (41,'civicrm_contact',76,4), - (36,'civicrm_contact',77,4), - (32,'civicrm_contact',79,5), - (11,'civicrm_contact',80,4), - (28,'civicrm_contact',81,4), - (29,'civicrm_contact',81,5), - (70,'civicrm_contact',85,4), - (54,'civicrm_contact',87,4), - (55,'civicrm_contact',87,5), - (8,'civicrm_contact',89,3), - (57,'civicrm_contact',90,4), - (58,'civicrm_contact',90,5), - (45,'civicrm_contact',91,4), - (43,'civicrm_contact',92,5), - (7,'civicrm_contact',95,3), - (39,'civicrm_contact',100,4), - (61,'civicrm_contact',104,4), - (30,'civicrm_contact',106,5), - (79,'civicrm_contact',112,5), - (99,'civicrm_contact',113,4), - (15,'civicrm_contact',115,4), - (90,'civicrm_contact',116,4), - (78,'civicrm_contact',118,4), - (103,'civicrm_contact',120,4), - (104,'civicrm_contact',120,5), - (5,'civicrm_contact',125,3), - (4,'civicrm_contact',127,1), - (96,'civicrm_contact',128,5), - (24,'civicrm_contact',135,4), - (25,'civicrm_contact',135,5), - (94,'civicrm_contact',139,5), - (72,'civicrm_contact',140,4), - (46,'civicrm_contact',141,4), - (47,'civicrm_contact',141,5), - (12,'civicrm_contact',146,4), - (3,'civicrm_contact',147,3), - (91,'civicrm_contact',148,4), - (20,'civicrm_contact',150,4), - (21,'civicrm_contact',150,5), - (22,'civicrm_contact',153,4), - (23,'civicrm_contact',153,5), - (112,'civicrm_contact',154,4), - (100,'civicrm_contact',157,4), - (95,'civicrm_contact',158,4), - (88,'civicrm_contact',159,4), - (89,'civicrm_contact',159,5), - (117,'civicrm_contact',160,5), - (75,'civicrm_contact',162,4), - (76,'civicrm_contact',162,5), - (59,'civicrm_contact',164,5), - (52,'civicrm_contact',168,4), - (53,'civicrm_contact',168,5), - (26,'civicrm_contact',177,4), - (27,'civicrm_contact',177,5), - (67,'civicrm_contact',178,5), - (105,'civicrm_contact',180,4), - (106,'civicrm_contact',180,5), - (33,'civicrm_contact',183,4), - (34,'civicrm_contact',183,5), - (44,'civicrm_contact',184,4), - (83,'civicrm_contact',186,4), - (84,'civicrm_contact',186,5), - (1,'civicrm_contact',191,1), - (92,'civicrm_contact',192,4), - (93,'civicrm_contact',192,5), - (81,'civicrm_contact',193,5), - (63,'civicrm_contact',196,5), - (107,'civicrm_contact',198,4), - (108,'civicrm_contact',198,5), - (42,'civicrm_contact',200,5); + (55,'civicrm_contact',3,4), + (56,'civicrm_contact',3,5), + (12,'civicrm_contact',4,4), + (49,'civicrm_contact',5,5), + (20,'civicrm_contact',6,4), + (21,'civicrm_contact',6,5), + (6,'civicrm_contact',13,3), + (18,'civicrm_contact',14,5), + (24,'civicrm_contact',15,4), + (25,'civicrm_contact',15,5), + (4,'civicrm_contact',16,1), + (80,'civicrm_contact',17,4), + (48,'civicrm_contact',20,5), + (33,'civicrm_contact',21,4), + (34,'civicrm_contact',21,5), + (74,'civicrm_contact',22,4), + (43,'civicrm_contact',23,5), + (60,'civicrm_contact',25,4), + (54,'civicrm_contact',26,5), + (11,'civicrm_contact',29,4), + (19,'civicrm_contact',31,5), + (86,'civicrm_contact',33,4), + (87,'civicrm_contact',33,5), + (71,'civicrm_contact',34,5), + (102,'civicrm_contact',36,4), + (103,'civicrm_contact',36,5), + (78,'civicrm_contact',40,5), + (42,'civicrm_contact',41,4), + (26,'civicrm_contact',44,5), + (110,'civicrm_contact',45,4), + (111,'civicrm_contact',45,5), + (8,'civicrm_contact',54,3), + (28,'civicrm_contact',56,5), + (105,'civicrm_contact',57,4), + (106,'civicrm_contact',57,5), + (88,'civicrm_contact',59,4), + (72,'civicrm_contact',66,4), + (73,'civicrm_contact',66,5), + (10,'civicrm_contact',68,1), + (81,'civicrm_contact',69,4), + (82,'civicrm_contact',69,5), + (59,'civicrm_contact',73,4), + (44,'civicrm_contact',74,5), + (37,'civicrm_contact',75,4), + (38,'civicrm_contact',75,5), + (57,'civicrm_contact',77,4), + (93,'civicrm_contact',80,4), + (1,'civicrm_contact',82,3), + (58,'civicrm_contact',83,5), + (5,'civicrm_contact',89,1), + (31,'civicrm_contact',93,4), + (32,'civicrm_contact',93,5), + (63,'civicrm_contact',95,4), + (98,'civicrm_contact',97,4), + (17,'civicrm_contact',98,5), + (13,'civicrm_contact',100,4), + (30,'civicrm_contact',101,4), + (68,'civicrm_contact',102,4), + (69,'civicrm_contact',102,5), + (104,'civicrm_contact',103,4), + (90,'civicrm_contact',106,5), + (77,'civicrm_contact',107,4), + (61,'civicrm_contact',108,4), + (62,'civicrm_contact',108,5), + (51,'civicrm_contact',110,4), + (53,'civicrm_contact',113,4), + (40,'civicrm_contact',114,4), + (41,'civicrm_contact',114,5), + (22,'civicrm_contact',115,4), + (35,'civicrm_contact',117,4), + (36,'civicrm_contact',117,5), + (101,'civicrm_contact',121,4), + (2,'civicrm_contact',122,3), + (94,'civicrm_contact',125,5), + (84,'civicrm_contact',126,4), + (85,'civicrm_contact',126,5), + (23,'civicrm_contact',128,5), + (64,'civicrm_contact',131,4), + (14,'civicrm_contact',135,4), + (15,'civicrm_contact',135,5), + (50,'civicrm_contact',139,4), + (9,'civicrm_contact',142,3), + (107,'civicrm_contact',146,4), + (75,'civicrm_contact',147,4), + (76,'civicrm_contact',147,5), + (52,'civicrm_contact',148,4), + (27,'civicrm_contact',152,5), + (79,'civicrm_contact',160,5), + (112,'civicrm_contact',162,4), + (113,'civicrm_contact',162,5), + (65,'civicrm_contact',163,4), + (47,'civicrm_contact',164,5), + (66,'civicrm_contact',165,4), + (67,'civicrm_contact',165,5), + (70,'civicrm_contact',166,5), + (29,'civicrm_contact',169,4), + (16,'civicrm_contact',172,5), + (100,'civicrm_contact',173,4), + (3,'civicrm_contact',174,2), + (99,'civicrm_contact',175,4), + (91,'civicrm_contact',176,4), + (96,'civicrm_contact',180,4), + (97,'civicrm_contact',180,5), + (108,'civicrm_contact',183,4), + (109,'civicrm_contact',183,5), + (95,'civicrm_contact',184,5), + (45,'civicrm_contact',186,4), + (46,'civicrm_contact',186,5), + (39,'civicrm_contact',187,5), + (89,'civicrm_contact',188,5), + (83,'civicrm_contact',191,4), + (92,'civicrm_contact',193,4), + (114,'civicrm_contact',194,4), + (7,'civicrm_contact',195,3); /*!40000 ALTER TABLE `civicrm_entity_tag` ENABLE KEYS */; UNLOCK TABLES; @@ -3657,9 +3586,9 @@ UNLOCK TABLES; LOCK TABLES `civicrm_event` WRITE; /*!40000 ALTER TABLE `civicrm_event` DISABLE KEYS */; INSERT INTO `civicrm_event` (`id`, `title`, `summary`, `description`, `event_type_id`, `participant_listing_id`, `is_public`, `start_date`, `end_date`, `is_online_registration`, `registration_link_text`, `registration_start_date`, `registration_end_date`, `max_participants`, `event_full_text`, `is_monetary`, `financial_type_id`, `payment_processor`, `is_map`, `is_active`, `fee_label`, `is_show_location`, `loc_block_id`, `default_role_id`, `intro_text`, `footer_text`, `confirm_title`, `confirm_text`, `confirm_footer_text`, `is_email_confirm`, `confirm_email_text`, `confirm_from_name`, `confirm_from_email`, `cc_confirm`, `bcc_confirm`, `default_fee_id`, `default_discount_fee_id`, `thankyou_title`, `thankyou_text`, `thankyou_footer_text`, `is_pay_later`, `pay_later_text`, `pay_later_receipt`, `is_partial_payment`, `initial_amount_label`, `initial_amount_help_text`, `min_initial_amount`, `is_multiple_registrations`, `max_additional_participants`, `allow_same_participant_emails`, `has_waitlist`, `requires_approval`, `expiration_time`, `allow_selfcancelxfer`, `selfcancelxfer_time`, `waitlist_text`, `approval_req_text`, `is_template`, `template_title`, `created_id`, `created_date`, `currency`, `campaign_id`, `is_share`, `is_confirm_enabled`, `parent_event_id`, `slot_label_id`, `dedupe_rule_group_id`, `is_billing_required`) VALUES - (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2023-12-09 17:00:00','2023-12-11 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-06-08 12:00:00','2023-06-08 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), - (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-01-09 07:00:00','2024-01-12 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (1,'Fall Fundraiser Dinner','Kick up your heels at our Fall Fundraiser Dinner/Dance at Glen Echo Park! Come by yourself or bring a partner, friend or the entire family!','This event benefits our teen programs. Admission includes a full 3 course meal and wine or soft drinks. Grab your dancing shoes, bring the kids and come join the party!',3,1,1,'2024-02-02 17:00:00','2024-02-04 17:00:00',1,'Register Now',NULL,NULL,100,'Sorry! The Fall Fundraiser Dinner is full. Please call Jane at 204 222-1000 ext 33 if you want to be added to the waiting list.',1,4,NULL,1,1,'Dinner Contribution',1,1,1,'Fill in the information below to join as at this wonderful dinner event.',NULL,'Confirm Your Registration Information','Review the information below carefully.',NULL,1,'Contact the Development Department if you need to make any changes to your registration.','Fundraising Dept.','development@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!','<p>Thank you for your support. Your contribution will help us build even better tools.</p><p>Please tell your friends and colleagues about this wonderful event.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',1,'I will send payment by check','Send a check payable to Our Organization within 3 business days to hold your reservation. Checks should be sent to: 100 Main St., Suite 3, San Francisco CA 94110',0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (2,'Summer Solstice Festival Day Concert','Festival Day is coming! Join us and help support your parks.','We will gather at noon, learn a song all together, and then join in a joyous procession to the pavilion. We will be one of many groups performing at this wonderful concert which benefits our city parks.',5,1,1,'2023-08-01 12:00:00','2023-08-01 17:00:00',1,'Register Now',NULL,NULL,50,'We have all the singers we can handle. Come to the pavilion anyway and join in from the audience.',1,2,NULL,0,1,'Festival Fee',1,2,1,'Complete the form below and click Continue to register online for the festival. Or you can register by calling us at 204 222-1000 ext 22.','','Confirm Your Registration Information','','',1,'This email confirms your registration. If you have questions or need to change your registration - please do not hesitate to call us.','Event Dept.','events@example.org','',NULL,NULL,NULL,'Thanks for Your Joining In!','<p>Thank you for your support. Your participation will help build new parks.</p><p>Please tell your friends and colleagues about the concert.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), + (3,'Rain-forest Cup Youth Soccer Tournament','Sign up your team to participate in this fun tournament which benefits several Rain-forest protection groups in the Amazon basin.','This is a FYSA Sanctioned Tournament, which is open to all USSF/FIFA affiliated organizations for boys and girls in age groups: U9-U10 (6v6), U11-U12 (8v8), and U13-U17 (Full Sided).',3,1,1,'2024-03-02 07:00:00','2024-03-05 17:00:00',1,'Register Now',NULL,NULL,500,'Sorry! All available team slots for this tournament have been filled. Contact Jill Futbol for information about the waiting list and next years event.',1,4,NULL,0,1,'Tournament Fees',1,3,1,'Complete the form below to register your team for this year\'s tournament.','<em>A Soccer Youth Event</em>','Review and Confirm Your Registration Information','','<em>A Soccer Youth Event</em>',1,'Contact our Tournament Director for eligibility details.','Tournament Director','tournament@example.org','',NULL,NULL,NULL,'Thanks for Your Support!','<p>Thank you for your support. Your participation will help save thousands of acres of rainforest.</p>','<p><a href=https://civicrm.org>Back to CiviCRM Home Page</a></p>',0,NULL,NULL,0,NULL,NULL,NULL,0,0,0,0,0,NULL,0,0,NULL,NULL,0,NULL,NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (4,NULL,NULL,NULL,4,1,1,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,0,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting without Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (5,NULL,NULL,NULL,4,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,0,1,NULL,1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Free Meeting with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0), (6,NULL,NULL,NULL,1,1,1,NULL,NULL,1,NULL,NULL,NULL,NULL,NULL,1,4,NULL,0,1,'Conference Fee',1,NULL,1,NULL,NULL,'Confirm Your Registration Information',NULL,NULL,1,NULL,'Event Template Dept.','event_templates@example.org',NULL,NULL,NULL,NULL,'Thanks for Registering!',NULL,NULL,0,NULL,NULL,0,NULL,NULL,NULL,1,0,1,0,0,NULL,0,0,NULL,NULL,1,'Paid Conference with Online Registration',NULL,NULL,'USD',NULL,1,1,NULL,NULL,NULL,0); @@ -3748,117 +3677,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-06-09 21:52:21','2013-06-09 14:52:21',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), - (2,'2023-06-09 21:52:21','2021-03-09 14:52:21',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), - (3,'2023-06-09 21:52:21','2017-05-15 01:52:21',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), - (4,'2023-06-09 21:52:21','2021-03-09 14:52:21',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), - (5,'2023-06-09 21:52:21','2021-03-09 14:52:21',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), - (6,'2023-06-09 21:52:21','2023-03-16 14:10:21',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), - (7,'2023-06-09 21:52:21','2023-06-07 14:52:21',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), - (8,'2023-06-09 21:52:21','2022-10-15 23:03:21',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), - (9,'2023-06-09 21:52:21','2022-07-09 14:52:21',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), - (10,'2023-06-09 21:52:21','2019-01-17 16:52:21',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), - (11,'2023-06-09 21:52:21','2023-06-08 10:52:21',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), - (12,'2023-06-09 21:52:21','2022-03-09 04:19:01',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), - (13,'2023-06-09 21:52:21','2023-03-09 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), - (14,'2023-06-09 21:52:21','2023-04-09 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), - (15,'2023-06-09 21:52:21','2022-03-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), - (16,'2023-06-09 21:52:21','2022-04-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), - (17,'2023-06-09 21:52:21','2022-05-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), - (18,'2023-06-09 21:52:21','2022-06-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), - (19,'2023-06-09 21:52:21','2022-07-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), - (20,'2023-06-09 21:52:21','2022-08-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), - (21,'2023-06-09 21:52:21','2022-09-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), - (22,'2023-06-09 21:52:21','2022-10-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), - (23,'2023-06-09 21:52:21','2022-11-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), - (24,'2023-06-09 21:52:21','2022-12-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), - (25,'2023-06-09 21:52:21','2023-01-09 14:52:21',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), - (26,'2023-06-09 21:52:21','2022-10-09 14:52:21',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), - (27,'2023-06-09 21:52:21','2022-11-09 14:52:21',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), - (28,'2023-06-09 21:52:21','2022-12-09 14:52:21',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), - (29,'2023-06-09 21:52:21','2023-01-09 14:52:21',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), - (30,'2023-06-09 21:52:21','2023-02-09 14:52:21',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), - (31,'2023-06-09 21:52:21','2023-05-09 14:52:21',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), - (32,'2023-06-09 21:52:21','2023-06-09 14:52:21',13,'General',100.00,'USD',2,1,'civicrm_line_item',43), - (33,'2023-06-09 21:52:21','2023-06-09 14:52:21',15,'Student',50.00,'USD',2,1,'civicrm_line_item',52), - (34,'2023-06-09 21:52:21','2023-06-09 14:52:21',18,'General',100.00,'USD',2,1,'civicrm_line_item',34), - (35,'2023-06-09 21:52:21','2023-06-09 14:52:21',23,'General',100.00,'USD',2,1,'civicrm_line_item',40), - (36,'2023-06-09 21:52:21','2023-06-09 14:52:21',27,'Student',50.00,'USD',2,1,'civicrm_line_item',49), - (37,'2023-06-09 21:52:21','2023-06-09 14:52:21',29,'Student',50.00,'USD',2,1,'civicrm_line_item',50), - (38,'2023-06-09 21:52:21','2023-06-09 14:52:21',30,'General',100.00,'USD',2,1,'civicrm_line_item',41), - (39,'2023-06-09 21:52:21','2023-06-09 14:52:21',53,'General',100.00,'USD',2,1,'civicrm_line_item',37), - (40,'2023-06-09 21:52:21','2023-06-09 14:52:21',56,'General',100.00,'USD',2,1,'civicrm_line_item',45), - (41,'2023-06-09 21:52:21','2023-06-09 14:52:21',62,'General',100.00,'USD',2,1,'civicrm_line_item',35), - (42,'2023-06-09 21:52:21','2023-06-09 14:52:21',63,'Student',50.00,'USD',2,1,'civicrm_line_item',57), - (43,'2023-06-09 21:52:21','2023-06-09 14:52:21',69,'Student',50.00,'USD',2,1,'civicrm_line_item',55), - (44,'2023-06-09 21:52:21','2023-06-09 14:52:21',70,'General',100.00,'USD',2,1,'civicrm_line_item',39), - (45,'2023-06-09 21:52:21','2023-06-09 14:52:21',74,'General',100.00,'USD',2,1,'civicrm_line_item',46), - (46,'2023-06-09 21:52:21','2023-06-09 14:52:21',83,'General',100.00,'USD',2,1,'civicrm_line_item',36), - (47,'2023-06-09 21:52:21','2023-06-09 14:52:21',90,'General',100.00,'USD',2,1,'civicrm_line_item',44), - (48,'2023-06-09 21:52:21','2023-06-09 14:52:21',94,'General',100.00,'USD',2,1,'civicrm_line_item',32), - (49,'2023-06-09 21:52:21','2023-06-09 14:52:21',103,'Student',50.00,'USD',2,1,'civicrm_line_item',48), - (50,'2023-06-09 21:52:21','2023-06-09 14:52:21',113,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), - (51,'2023-06-09 21:52:21','2023-06-09 14:52:21',133,'General',100.00,'USD',2,1,'civicrm_line_item',33), - (52,'2023-06-09 21:52:21','2023-06-09 14:52:21',145,'Student',50.00,'USD',2,1,'civicrm_line_item',47), - (53,'2023-06-09 21:52:21','2023-06-09 14:52:21',154,'Student',50.00,'USD',2,1,'civicrm_line_item',58), - (54,'2023-06-09 21:52:21','2023-06-09 14:52:21',155,'Student',50.00,'USD',2,1,'civicrm_line_item',53), - (55,'2023-06-09 21:52:21','2023-06-09 14:52:21',157,'Student',50.00,'USD',2,1,'civicrm_line_item',56), - (56,'2023-06-09 21:52:21','2023-06-09 14:52:21',182,'Student',50.00,'USD',2,1,'civicrm_line_item',54), - (57,'2023-06-09 21:52:21','2023-06-09 14:52:21',186,'General',100.00,'USD',2,1,'civicrm_line_item',38), - (58,'2023-06-09 21:52:21','2023-06-09 14:52:21',197,'General',100.00,'USD',2,1,'civicrm_line_item',42), - (59,'2023-06-09 21:52:21','2023-06-09 14:52:21',199,'Student',50.00,'USD',2,1,'civicrm_line_item',59), - (60,'2023-06-09 21:52:21','2023-06-09 14:52:21',200,'Student',50.00,'USD',2,1,'civicrm_line_item',51), - (61,'2023-06-09 21:52:21','2023-06-09 14:52:21',201,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), - (62,'2023-06-09 21:52:21','2023-06-09 14:52:21',149,'Single',50.00,'USD',4,1,'civicrm_line_item',96), - (63,'2023-06-09 21:52:21','2023-06-09 14:52:21',165,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), - (64,'2023-06-09 21:52:21','2023-06-09 14:52:21',173,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), - (65,'2023-06-09 21:52:21','2023-06-09 14:52:21',24,'Single',50.00,'USD',4,1,'civicrm_line_item',92), - (66,'2023-06-09 21:52:21','2023-06-09 14:52:21',142,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), - (67,'2023-06-09 21:52:21','2023-06-09 14:52:21',93,'Single',50.00,'USD',4,1,'civicrm_line_item',88), - (68,'2023-06-09 21:52:21','2023-06-09 14:52:21',57,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), - (69,'2023-06-09 21:52:21','2023-06-09 14:52:21',71,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), - (70,'2023-06-09 21:52:21','2023-06-09 14:52:21',72,'Single',50.00,'USD',4,1,'civicrm_line_item',84), - (71,'2023-06-09 21:52:21','2023-06-09 14:52:21',1,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), - (72,'2023-06-09 21:52:21','2023-06-09 14:52:21',99,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), - (73,'2023-06-09 21:52:21','2023-06-09 14:52:21',83,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), - (74,'2023-06-09 21:52:21','2023-06-09 14:52:21',7,'Single',50.00,'USD',4,1,'civicrm_line_item',93), - (75,'2023-06-09 21:52:21','2023-06-09 14:52:21',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), - (76,'2023-06-09 21:52:21','2023-06-09 14:52:21',184,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), - (77,'2023-06-09 21:52:21','2023-06-09 14:52:21',96,'Single',50.00,'USD',4,1,'civicrm_line_item',90), - (78,'2023-06-09 21:52:21','2023-06-09 14:52:21',127,'Single',50.00,'USD',4,1,'civicrm_line_item',89), - (79,'2023-06-09 21:52:21','2023-06-09 14:52:21',157,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), - (80,'2023-06-09 21:52:21','2023-06-09 14:52:21',30,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), - (81,'2023-06-09 21:52:21','2023-06-09 14:52:21',132,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), - (82,'2023-06-09 21:52:21','2023-06-09 14:52:21',136,'Single',50.00,'USD',4,1,'civicrm_line_item',85), - (83,'2023-06-09 21:52:21','2023-06-09 14:52:21',148,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), - (84,'2023-06-09 21:52:21','2023-06-09 14:52:21',182,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), - (85,'2023-06-09 21:52:21','2023-06-09 14:52:21',181,'Single',50.00,'USD',4,1,'civicrm_line_item',82), - (86,'2023-06-09 21:52:21','2023-06-09 14:52:21',110,'Single',50.00,'USD',4,1,'civicrm_line_item',81), - (87,'2023-06-09 21:52:21','2023-06-09 14:52:21',164,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), - (88,'2023-06-09 21:52:21','2023-06-09 14:52:21',200,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), - (89,'2023-06-09 21:52:21','2023-06-09 14:52:21',32,'Single',50.00,'USD',4,1,'civicrm_line_item',94), - (90,'2023-06-09 21:52:21','2023-06-09 14:52:21',46,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), - (91,'2023-06-09 21:52:21','2023-06-09 14:52:21',175,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), - (92,'2023-06-09 21:52:21','2023-06-09 14:52:21',86,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), - (93,'2023-06-09 21:52:21','2023-06-09 14:52:21',90,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), - (94,'2023-06-09 21:52:21','2023-06-09 14:52:21',115,'Single',50.00,'USD',4,1,'civicrm_line_item',86), - (95,'2023-06-09 21:52:21','2023-06-09 14:52:21',55,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), - (96,'2023-06-09 21:52:21','2023-06-09 14:52:21',50,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), - (97,'2023-06-09 21:52:21','2023-06-09 14:52:21',202,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), - (98,'2023-06-09 21:52:21','2023-06-09 14:52:21',114,'Single',50.00,'USD',4,1,'civicrm_line_item',95), - (99,'2023-06-09 21:52:21','2023-06-09 14:52:21',84,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), - (100,'2023-06-09 21:52:21','2023-06-09 14:52:21',144,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), - (101,'2023-06-09 21:52:21','2023-06-09 14:52:21',199,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), - (102,'2023-06-09 21:52:21','2023-06-09 14:52:21',67,'Single',50.00,'USD',4,1,'civicrm_line_item',91), - (103,'2023-06-09 21:52:21','2023-06-09 14:52:21',60,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), - (104,'2023-06-09 21:52:21','2023-06-09 14:52:21',52,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), - (105,'2023-06-09 21:52:21','2023-06-09 14:52:21',187,'Single',50.00,'USD',4,1,'civicrm_line_item',87), - (106,'2023-06-09 21:52:21','2023-06-09 14:52:21',28,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), - (107,'2023-06-09 21:52:21','2023-06-09 14:52:21',137,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), - (108,'2023-06-09 21:52:21','2023-06-09 14:52:21',25,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), - (109,'2023-06-09 21:52:21','2023-06-09 14:52:21',34,'Single',50.00,'USD',4,1,'civicrm_line_item',83), - (110,'2023-06-09 21:52:21','2023-06-09 14:52:21',89,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), - (111,'2023-06-09 21:52:21','2023-06-09 14:52:21',75,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97); + (1,'2023-08-02 20:53:43','2013-08-02 20:53:42',2,'Contribution Amount',125.00,'USD',1,1,'civicrm_line_item',1), + (2,'2023-08-02 20:53:43','2021-05-02 20:53:42',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',2), + (3,'2023-08-02 20:53:43','2017-07-08 07:53:42',6,'Contribution Amount',25.00,'GBP',1,1,'civicrm_line_item',3), + (4,'2023-08-02 20:53:43','2021-05-02 20:53:42',8,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',4), + (5,'2023-08-02 20:53:43','2021-05-02 20:53:42',4,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',5), + (6,'2023-08-02 20:53:43','2023-05-09 20:11:42',16,'Contribution Amount',500.00,'USD',1,1,'civicrm_line_item',6), + (7,'2023-08-02 20:53:43','2023-07-31 20:53:42',19,'Contribution Amount',1750.00,'USD',1,1,'civicrm_line_item',7), + (8,'2023-08-02 20:53:43','2022-12-09 05:04:42',82,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',8), + (9,'2023-08-02 20:53:43','2022-09-02 20:53:42',92,'Contribution Amount',10.00,'USD',1,1,'civicrm_line_item',9), + (10,'2023-08-02 20:53:43','2019-03-10 22:53:42',34,'Contribution Amount',250.00,'USD',1,1,'civicrm_line_item',10), + (11,'2023-08-02 20:53:43','2023-08-01 16:53:42',71,'Contribution Amount',500.00,'JPY',1,1,'civicrm_line_item',11), + (12,'2023-08-02 20:53:43','2022-05-02 10:20:22',43,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',12), + (13,'2023-08-02 20:53:43','2023-05-02 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',13), + (14,'2023-08-02 20:53:43','2023-06-02 00:00:00',32,'Contribution Amount',50.00,'USD',1,1,'civicrm_line_item',14), + (15,'2023-08-02 20:53:43','2022-05-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',15), + (16,'2023-08-02 20:53:43','2022-06-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',16), + (17,'2023-08-02 20:53:43','2022-07-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',17), + (18,'2023-08-02 20:53:43','2022-08-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',18), + (19,'2023-08-02 20:53:43','2022-09-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',19), + (20,'2023-08-02 20:53:43','2022-10-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',20), + (21,'2023-08-02 20:53:43','2022-11-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',21), + (22,'2023-08-02 20:53:43','2022-12-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',22), + (23,'2023-08-02 20:53:43','2023-01-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',23), + (24,'2023-08-02 20:53:43','2023-02-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',24), + (25,'2023-08-02 20:53:43','2023-03-02 20:53:42',59,'Contribution Amount',25.00,'USD',1,1,'civicrm_line_item',25), + (26,'2023-08-02 20:53:43','2022-12-02 20:53:42',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',26), + (27,'2023-08-02 20:53:43','2023-01-02 20:53:42',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',27), + (28,'2023-08-02 20:53:43','2023-02-02 20:53:42',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',28), + (29,'2023-08-02 20:53:43','2023-03-02 20:53:42',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',29), + (30,'2023-08-02 20:53:43','2023-04-02 20:53:42',99,'Contribution Amount',10.00,'CAD',1,1,'civicrm_line_item',30), + (31,'2023-08-02 20:53:43','2023-07-02 20:53:42',103,'Contribution Amount',5.00,'EUR',1,1,'civicrm_line_item',31), + (32,'2023-08-02 20:53:43','2023-08-02 20:53:43',143,'General',100.00,'USD',2,1,'civicrm_line_item',32), + (33,'2023-08-02 20:53:43','2023-08-02 20:53:43',165,'General',100.00,'USD',2,1,'civicrm_line_item',33), + (34,'2023-08-02 20:53:43','2023-08-02 20:53:43',61,'General',100.00,'USD',2,1,'civicrm_line_item',34), + (35,'2023-08-02 20:53:43','2023-08-02 20:53:43',197,'General',100.00,'USD',2,1,'civicrm_line_item',35), + (36,'2023-08-02 20:53:43','2023-08-02 20:53:43',199,'General',100.00,'USD',2,1,'civicrm_line_item',36), + (37,'2023-08-02 20:53:43','2023-08-02 20:53:43',107,'General',100.00,'USD',2,1,'civicrm_line_item',37), + (38,'2023-08-02 20:53:43','2023-08-02 20:53:43',182,'General',100.00,'USD',2,1,'civicrm_line_item',38), + (39,'2023-08-02 20:53:43','2023-08-02 20:53:43',126,'General',100.00,'USD',2,1,'civicrm_line_item',39), + (40,'2023-08-02 20:53:43','2023-08-02 20:53:43',66,'General',100.00,'USD',2,1,'civicrm_line_item',40), + (41,'2023-08-02 20:53:43','2023-08-02 20:53:43',86,'General',100.00,'USD',2,1,'civicrm_line_item',41), + (42,'2023-08-02 20:53:43','2023-08-02 20:53:43',22,'General',100.00,'USD',2,1,'civicrm_line_item',42), + (43,'2023-08-02 20:53:43','2023-08-02 20:53:43',135,'General',100.00,'USD',2,1,'civicrm_line_item',43), + (44,'2023-08-02 20:53:43','2023-08-02 20:53:43',41,'General',100.00,'USD',2,1,'civicrm_line_item',44), + (45,'2023-08-02 20:53:43','2023-08-02 20:53:43',177,'General',100.00,'USD',2,1,'civicrm_line_item',45), + (46,'2023-08-02 20:53:43','2023-08-02 20:53:43',96,'General',100.00,'USD',2,1,'civicrm_line_item',46), + (47,'2023-08-02 20:53:43','2023-08-02 20:53:43',170,'Student',50.00,'USD',2,1,'civicrm_line_item',47), + (48,'2023-08-02 20:53:43','2023-08-02 20:53:43',84,'Student',50.00,'USD',2,1,'civicrm_line_item',48), + (49,'2023-08-02 20:53:43','2023-08-02 20:53:43',99,'Student',50.00,'USD',2,1,'civicrm_line_item',49), + (50,'2023-08-02 20:53:43','2023-08-02 20:53:43',20,'Student',50.00,'USD',2,1,'civicrm_line_item',50), + (51,'2023-08-02 20:53:43','2023-08-02 20:53:43',40,'Student',50.00,'USD',2,1,'civicrm_line_item',51), + (52,'2023-08-02 20:53:43','2023-08-02 20:53:43',193,'Student',50.00,'USD',2,1,'civicrm_line_item',52), + (53,'2023-08-02 20:53:43','2023-08-02 20:53:43',27,'Student',50.00,'USD',2,1,'civicrm_line_item',53), + (54,'2023-08-02 20:53:43','2023-08-02 20:53:43',168,'Student',50.00,'USD',2,1,'civicrm_line_item',54), + (55,'2023-08-02 20:53:43','2023-08-02 20:53:43',184,'Student',50.00,'USD',2,1,'civicrm_line_item',55), + (56,'2023-08-02 20:53:43','2023-08-02 20:53:43',10,'Student',50.00,'USD',2,1,'civicrm_line_item',56), + (57,'2023-08-02 20:53:43','2023-08-02 20:53:43',123,'Student',50.00,'USD',2,1,'civicrm_line_item',57), + (58,'2023-08-02 20:53:43','2023-08-02 20:53:43',88,'Student',50.00,'USD',2,1,'civicrm_line_item',58), + (59,'2023-08-02 20:53:43','2023-08-02 20:53:43',11,'Student',50.00,'USD',2,1,'civicrm_line_item',59), + (60,'2023-08-02 20:53:43','2023-08-02 20:53:43',21,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',60), + (61,'2023-08-02 20:53:43','2023-08-02 20:53:43',106,'Lifetime',1200.00,'USD',2,1,'civicrm_line_item',61), + (62,'2023-08-02 20:53:43','2023-08-02 20:53:43',167,'Soprano',50.00,'USD',2,1,'civicrm_line_item',97), + (63,'2023-08-02 20:53:43','2023-08-02 20:53:43',100,'Soprano',50.00,'USD',2,1,'civicrm_line_item',98), + (64,'2023-08-02 20:53:43','2023-08-02 20:53:43',141,'Soprano',50.00,'USD',2,1,'civicrm_line_item',99), + (65,'2023-08-02 20:53:43','2023-08-02 20:53:43',154,'Soprano',50.00,'USD',2,1,'civicrm_line_item',100), + (66,'2023-08-02 20:53:43','2023-08-02 20:53:43',187,'Soprano',50.00,'USD',2,1,'civicrm_line_item',101), + (67,'2023-08-02 20:53:43','2023-08-02 20:53:43',80,'Soprano',50.00,'USD',2,1,'civicrm_line_item',102), + (68,'2023-08-02 20:53:43','2023-08-02 20:53:43',20,'Soprano',50.00,'USD',2,1,'civicrm_line_item',103), + (69,'2023-08-02 20:53:43','2023-08-02 20:53:43',93,'Soprano',50.00,'USD',2,1,'civicrm_line_item',104), + (70,'2023-08-02 20:53:43','2023-08-02 20:53:43',73,'Soprano',50.00,'USD',2,1,'civicrm_line_item',105), + (71,'2023-08-02 20:53:43','2023-08-02 20:53:43',160,'Soprano',50.00,'USD',2,1,'civicrm_line_item',106), + (72,'2023-08-02 20:53:43','2023-08-02 20:53:43',8,'Soprano',50.00,'USD',2,1,'civicrm_line_item',107), + (73,'2023-08-02 20:53:43','2023-08-02 20:53:43',106,'Soprano',50.00,'USD',2,1,'civicrm_line_item',108), + (74,'2023-08-02 20:53:43','2023-08-02 20:53:43',135,'Soprano',50.00,'USD',2,1,'civicrm_line_item',109), + (75,'2023-08-02 20:53:43','2023-08-02 20:53:43',94,'Soprano',50.00,'USD',2,1,'civicrm_line_item',110), + (76,'2023-08-02 20:53:43','2023-08-02 20:53:43',183,'Soprano',50.00,'USD',2,1,'civicrm_line_item',111), + (77,'2023-08-02 20:53:43','2023-08-02 20:53:43',97,'Soprano',50.00,'USD',2,1,'civicrm_line_item',112), + (78,'2023-08-02 20:53:43','2023-08-02 20:53:43',64,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',63), + (79,'2023-08-02 20:53:43','2023-08-02 20:53:43',152,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',64), + (80,'2023-08-02 20:53:43','2023-08-02 20:53:43',119,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',65), + (81,'2023-08-02 20:53:43','2023-08-02 20:53:43',132,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',66), + (82,'2023-08-02 20:53:43','2023-08-02 20:53:43',34,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',67), + (83,'2023-08-02 20:53:43','2023-08-02 20:53:43',131,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',68), + (84,'2023-08-02 20:53:43','2023-08-02 20:53:43',124,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',69), + (85,'2023-08-02 20:53:43','2023-08-02 20:53:43',171,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',70), + (86,'2023-08-02 20:53:43','2023-08-02 20:53:43',31,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',71), + (87,'2023-08-02 20:53:43','2023-08-02 20:53:43',35,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',72), + (88,'2023-08-02 20:53:43','2023-08-02 20:53:43',75,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',73), + (89,'2023-08-02 20:53:43','2023-08-02 20:53:43',139,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',74), + (90,'2023-08-02 20:53:43','2023-08-02 20:53:43',199,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',75), + (91,'2023-08-02 20:53:43','2023-08-02 20:53:43',18,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',76), + (92,'2023-08-02 20:53:43','2023-08-02 20:53:43',158,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',77), + (93,'2023-08-02 20:53:43','2023-08-02 20:53:43',118,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',78), + (94,'2023-08-02 20:53:43','2023-08-02 20:53:43',161,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',79), + (95,'2023-08-02 20:53:43','2023-08-02 20:53:43',179,'Tiny-tots (ages 5-8)',800.00,'USD',4,1,'civicrm_line_item',80), + (96,'2023-08-02 20:53:43','2023-08-02 20:53:43',1,'Single',50.00,'USD',4,1,'civicrm_line_item',81), + (97,'2023-08-02 20:53:44','2023-08-02 20:53:43',181,'Single',50.00,'USD',4,1,'civicrm_line_item',82), + (98,'2023-08-02 20:53:44','2023-08-02 20:53:43',198,'Single',50.00,'USD',4,1,'civicrm_line_item',83), + (99,'2023-08-02 20:53:44','2023-08-02 20:53:43',96,'Single',50.00,'USD',4,1,'civicrm_line_item',84), + (100,'2023-08-02 20:53:44','2023-08-02 20:53:43',147,'Single',50.00,'USD',4,1,'civicrm_line_item',85), + (101,'2023-08-02 20:53:44','2023-08-02 20:53:43',41,'Single',50.00,'USD',4,1,'civicrm_line_item',86), + (102,'2023-08-02 20:53:44','2023-08-02 20:53:43',87,'Single',50.00,'USD',4,1,'civicrm_line_item',87), + (103,'2023-08-02 20:53:44','2023-08-02 20:53:43',26,'Single',50.00,'USD',4,1,'civicrm_line_item',88), + (104,'2023-08-02 20:53:44','2023-08-02 20:53:43',61,'Single',50.00,'USD',4,1,'civicrm_line_item',89), + (105,'2023-08-02 20:53:44','2023-08-02 20:53:43',117,'Single',50.00,'USD',4,1,'civicrm_line_item',90), + (106,'2023-08-02 20:53:44','2023-08-02 20:53:43',173,'Single',50.00,'USD',4,1,'civicrm_line_item',91), + (107,'2023-08-02 20:53:44','2023-08-02 20:53:43',116,'Single',50.00,'USD',4,1,'civicrm_line_item',92), + (108,'2023-08-02 20:53:44','2023-08-02 20:53:43',111,'Single',50.00,'USD',4,1,'civicrm_line_item',93), + (109,'2023-08-02 20:53:44','2023-08-02 20:53:43',103,'Single',50.00,'USD',4,1,'civicrm_line_item',94), + (110,'2023-08-02 20:53:44','2023-08-02 20:53:43',5,'Single',50.00,'USD',4,1,'civicrm_line_item',95), + (111,'2023-08-02 20:53:44','2023-08-02 20:53:43',72,'Single',50.00,'USD',4,1,'civicrm_line_item',96); /*!40000 ALTER TABLE `civicrm_financial_item` ENABLE KEYS */; UNLOCK TABLES; @@ -3869,117 +3798,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-06-09 14:52:21',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), - (2,NULL,6,'2021-03-09 14:52:21',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (3,NULL,6,'2017-05-15 01:52:21',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), - (4,NULL,6,'2021-03-09 14:52:21',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), - (5,NULL,6,'2021-03-09 14:52:21',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (6,NULL,6,'2023-03-16 14:10:21',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), - (7,NULL,6,'2023-06-07 14:52:21',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), - (8,NULL,6,'2022-10-15 23:03:21',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (9,NULL,6,'2022-07-09 14:52:21',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (10,NULL,6,'2019-01-17 16:52:21',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (11,NULL,6,'2023-06-08 10:52:21',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (12,NULL,6,'2022-03-09 04:19:01',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (13,NULL,6,'2023-03-09 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (14,NULL,6,'2023-04-09 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (15,NULL,6,'2022-03-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (16,NULL,6,'2022-04-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (17,NULL,6,'2022-05-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (18,NULL,6,'2022-06-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (19,NULL,6,'2022-07-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (20,NULL,6,'2022-08-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (21,NULL,6,'2022-09-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (22,NULL,6,'2022-10-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (23,NULL,6,'2022-11-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (24,NULL,6,'2022-12-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (25,NULL,6,'2023-01-09 14:52:21',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (26,NULL,6,'2022-10-09 14:52:21',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (27,NULL,6,'2022-11-09 14:52:21',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (28,NULL,6,'2022-12-09 14:52:21',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (29,NULL,6,'2023-01-09 14:52:21',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (30,NULL,6,'2023-02-09 14:52:21',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (31,NULL,6,'2023-05-09 14:52:21',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (32,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'b30292064c7c0a53',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (33,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'8cc0495a4ebdc3d2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (34,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'9d88c0f0f7d55acd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (35,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'dffcede15b75b2ad',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (36,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'918d4ce8eca2877c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (37,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'10a8ed7878b8bc00',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (38,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'7123b34ae7f29549',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (39,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'ed9ca6fd7e9d6e71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (40,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'05b53742a3df8bba',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (41,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'de569000b949cd15',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (42,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'819b5539b289fcc9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (43,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'12c863eb3cf7e379',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (44,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'2a7551395c8b12fc',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (45,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'e6540777435c16cd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (46,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'3441863cdb99bbc4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (47,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'4242d6f63f02c87b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (48,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'a63c621969b4fafa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (49,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'daf78f49a4be7403',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (50,NULL,6,'2023-06-09 14:52:21',1200.00,NULL,NULL,'USD',1,'c7c2b7e03598de8a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (51,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'435ee48ee98adc2a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (52,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'c6bf8fdfc605a228',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (53,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'0f933686bb598025',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (54,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'ac0ae12a8d06ca5c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (55,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'6ccbe6ac35f5ddf5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (56,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'c45b2dae09cf9a01',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (57,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'aaf14f7ab4229d84',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (58,NULL,6,'2023-06-09 14:52:21',100.00,NULL,NULL,'USD',1,'6ed8b46a15381cfc',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (59,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'956ac4a05e3cc963',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (60,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'797b4d01568b3896',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (61,NULL,6,'2023-06-09 14:52:21',1200.00,NULL,NULL,'USD',1,'862fabdb5981aac4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (62,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'dff53ed32192eb21',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (63,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'e08d0289e2c5748b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (64,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'0b0ec7d083f1493f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (65,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'df5a4fd8964751ba',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (66,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'a99477624a6c5021',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (67,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'9f92e8a740543e6b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (68,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'bddedb31f50cf953',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (69,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'9abfb295db2eecee',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (70,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'2036cfcbbbdbaeaf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (71,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'d9cba9eb81a6953a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (72,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'a631cdb2091331ca',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (73,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'2e52c1ab5254ecfd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (74,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'2df4bd47939d5f88',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (75,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'da6bff40ac2539ad',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (76,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'c9044612f0975a64',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (77,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'9fc36c7ca0cf9b34',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (78,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'0ae75c77c7dbc85a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (79,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'031a47aec19b6f25',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (80,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'7d674b438ad49931',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (81,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'3d69b5f4313aeda4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (82,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'65189f4f7fef78a3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (83,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'5ad0a3825baa9da8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (84,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'c6305e6dca61eab4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (85,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'f20c786c4dee338b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (86,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'a4894a8409c7ead2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (87,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'0ed26d63bc545290',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (88,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'da6c6a7015ce05f9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (89,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'9a7addf2c5ff8dcb',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (90,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'bc13023a2f6b7295',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (91,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'77e77c195b02e1c9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (92,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'eb7718c6a80aa900',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (93,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'d6651f5dd1133cd7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (94,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'dc80b0cc16be29e1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (95,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'787dce4ed166e02a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (96,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'f99e792870386305',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (97,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'8377a6151d4ab0db',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (98,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'02e47c753921eaf4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (99,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'1674358f8771bdaa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (100,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'f96d4e19ff817c8b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (101,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'b7cd2f63f4791ec0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (102,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'a7c188e2cb58586a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (103,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'fcad37c6c58d231e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (104,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'4dbfe9e665c0039b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (105,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'cee893e0136267b3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (106,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'12fd140bdfee9af5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (107,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'6a8d46c5a75225f5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (108,NULL,6,'2023-06-09 14:52:21',800.00,NULL,NULL,'USD',1,'3200a38630dbc61c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (109,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'60c05eda56ff0b4a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (110,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'9b12c3163bda863c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), - (111,NULL,6,'2023-06-09 14:52:21',50.00,NULL,NULL,'USD',1,'e37a5ace5434ca62',NULL,1,NULL,1,NULL,NULL,NULL,NULL); + (1,NULL,6,'2013-08-02 20:53:42',125.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'1041',NULL,NULL), + (2,NULL,6,'2021-05-02 20:53:42',50.00,NULL,NULL,'USD',1,'P20901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (3,NULL,6,'2017-07-08 07:53:42',25.00,NULL,NULL,'GBP',1,'GBP12',NULL,1,NULL,4,NULL,'2095',NULL,NULL), + (4,NULL,6,'2021-05-02 20:53:42',50.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'10552',NULL,NULL), + (5,NULL,6,'2021-05-02 20:53:42',50.00,NULL,NULL,'USD',1,'Q90901X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (6,NULL,6,'2023-05-09 20:11:42',500.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,4,NULL,'509',NULL,NULL), + (7,NULL,6,'2023-07-31 20:53:42',1750.00,NULL,NULL,'USD',1,NULL,NULL,1,NULL,1,NULL,'102',NULL,NULL), + (8,NULL,6,'2022-12-09 05:04:42',50.00,NULL,NULL,'USD',1,'P20193L2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (9,NULL,6,'2022-09-02 20:53:42',10.00,NULL,NULL,'USD',1,'P40232Y3',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (10,NULL,6,'2019-03-10 22:53:42',250.00,NULL,NULL,'USD',1,'P20193L6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (11,NULL,6,'2023-08-01 16:53:42',500.00,NULL,NULL,'JPY',1,'PL71',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (12,NULL,6,'2022-05-02 10:20:22',50.00,NULL,NULL,'USD',1,'P291X1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (13,NULL,6,'2023-05-02 00:00:00',50.00,NULL,NULL,'USD',1,'PL32I',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (14,NULL,6,'2023-06-02 00:00:00',50.00,NULL,NULL,'USD',1,'PL32II',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (15,NULL,6,'2022-05-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I591',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (16,NULL,6,'2022-06-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I592',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (17,NULL,6,'2022-07-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I593',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (18,NULL,6,'2022-08-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I594',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (19,NULL,6,'2022-09-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I595',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (20,NULL,6,'2022-10-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I596',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (21,NULL,6,'2022-11-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I597',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (22,NULL,6,'2022-12-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I598',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (23,NULL,6,'2023-01-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I599',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (24,NULL,6,'2023-02-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I5910',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (25,NULL,6,'2023-03-02 20:53:42',25.00,NULL,NULL,'USD',1,'PL32I5911',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (26,NULL,6,'2022-12-02 20:53:42',10.00,NULL,NULL,'CAD',1,'PL32I991',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (27,NULL,6,'2023-01-02 20:53:42',10.00,NULL,NULL,'CAD',1,'PL32I992',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (28,NULL,6,'2023-02-02 20:53:42',10.00,NULL,NULL,'CAD',1,'PL32I993',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (29,NULL,6,'2023-03-02 20:53:42',10.00,NULL,NULL,'CAD',1,'PL32I994',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (30,NULL,6,'2023-04-02 20:53:42',10.00,NULL,NULL,'CAD',1,'PL32I995',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (31,NULL,6,'2023-07-02 20:53:42',5.00,NULL,NULL,'EUR',1,'PL32I1031',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (32,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'fb6f6c206ef18a56',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (33,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'38a83adb19ebf505',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (34,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'1b119936be8afc8a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (35,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'41f35fd9f4f2ddfe',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (36,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'a4ac31379dac18e0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (37,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'dc71d3a3f0bdc3dc',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (38,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'8ee1e790dc31c74b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (39,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'bc115b87bbfb318b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (40,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'3ce8922c694c26dc',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (41,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'2f72deb5375df649',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (42,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'0ab885eaeb423e40',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (43,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'29acaf4fb35bd318',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (44,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'b949348c39e00e36',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (45,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'a408e0111810a4d5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (46,NULL,6,'2023-08-02 20:53:43',100.00,NULL,NULL,'USD',1,'14846b88c5b2f69e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (47,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'d3c6d8a957ea090e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (48,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'44a792a05b6e1374',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (49,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'63fe2280b8c99202',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (50,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'d8d9345562d2f3b8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (51,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'32de7c2f3a75a7ad',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (52,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'55e8320236d03c80',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (53,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'cd34b5ca180651c2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (54,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'d26a5d9421422a78',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (55,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'1891224953f9ee9f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (56,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'ba18b7ad9ded2055',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (57,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'96b0e968ad58aa38',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (58,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'eef221d52b649e24',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (59,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'8d5246e915da2069',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (60,NULL,6,'2023-08-02 20:53:43',1200.00,NULL,NULL,'USD',1,'5877d981f7422e82',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (61,NULL,6,'2023-08-02 20:53:43',1200.00,NULL,NULL,'USD',1,'c8bfacfe20e3babe',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (62,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'e04b1418f8d13c44',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (63,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'78ba126607dce225',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (64,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'fdcc64893b35ea3c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (65,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'55f4bd5742809328',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (66,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'f5e71047d07ea2d2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (67,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'9299c2725636d3aa',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (68,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'4b93fb66379f3821',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (69,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'dcb26ce78505b402',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (70,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'650f26ad456f41df',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (71,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'99a2145e1c1b9a66',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (72,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'b3146818a9d47f62',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (73,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'d4abf47ab6707874',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (74,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'705aa6126d6bd819',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (75,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'631f20c430c49159',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (76,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'71a637a459eb5690',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (77,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'e0395157e02c36e1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (78,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'20a5abe4b6b23fa2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (79,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'32ffd3eb466dcacf',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (80,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'f1f24b36ced0b24c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (81,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'32de8142db557e80',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (82,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'2b6383f1be3c7125',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (83,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'744d89454cf98bc0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (84,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'37a3928b0850fc08',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (85,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'2064304ebda9cb18',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (86,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'662caa6c8f56b809',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (87,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'c741f0b044158266',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (88,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'2045acb5509bec3f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (89,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'4233b97fbd048c9c',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (90,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'b3bfde782820110f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (91,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'451c1910aa4bf67d',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (92,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'60ca648b61e3dfe5',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (93,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'400ac72ac1d1e5f7',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (94,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'90ecf09278a10ecd',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (95,NULL,6,'2023-08-02 20:53:43',800.00,NULL,NULL,'USD',1,'daf636bb098648e4',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (96,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'ea7719b51fcae39e',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (97,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'07b6bb34bf9984d1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (98,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'bad11cad8067a9b9',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (99,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'00f50125d19c6f2b',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (100,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'a181d39784e37dc2',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (101,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'b96ee5d67f18ec6f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (102,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'86071652adcb1c85',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (103,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'b4a30a99b6915011',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (104,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'cb2f6457876a0ef1',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (105,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'34c1c75f5050e4b0',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (106,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'e14e1893706fed5f',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (107,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'b481967cb0fc4d18',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (108,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'823284e9f8a1a9c8',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (109,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'58ba3ba22a843ca6',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (110,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'ac88843732ac7f3a',NULL,1,NULL,1,NULL,NULL,NULL,NULL), + (111,NULL,6,'2023-08-02 20:53:43',50.00,NULL,NULL,'USD',1,'2d5f0d48b1c97893',NULL,1,NULL,1,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_financial_trxn` ENABLE KEYS */; UNLOCK TABLES; @@ -4004,10 +3933,10 @@ UNLOCK TABLES; LOCK TABLES `civicrm_group` WRITE; /*!40000 ALTER TABLE `civicrm_group` DISABLE KEYS */; INSERT INTO `civicrm_group` (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `refresh_date`, `parents`, `children`, `is_hidden`, `is_reserved`, `created_id`, `modified_id`, `frontend_title`, `frontend_description`) VALUES - (1,'Administrators','Administrators','Contacts in this group are assigned Administrator role permissions.',NULL,NULL,1,'User and User Admin Only',NULL,NULL,NULL,'1',NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL), - (2,'Newsletter Subscribers','Newsletter Subscribers',NULL,NULL,NULL,1,'Public Pages',NULL,NULL,NULL,'12',NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL), - (3,'Summer Program Volunteers','Summer Program Volunteers',NULL,NULL,NULL,1,'Public Pages',NULL,NULL,NULL,'12',NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL), - (4,'Advisory Board','Advisory Board',NULL,NULL,NULL,1,'Public Pages',NULL,NULL,NULL,'12',NULL,NULL,NULL,NULL,0,0,NULL,NULL,NULL,NULL); + (1,'Administrators','Administrators','Contacts in this group are assigned Administrator role permissions.',NULL,NULL,1,'User and User Admin Only',NULL,NULL,NULL,'1',NULL,NULL,NULL,NULL,0,0,NULL,NULL,'Administrators',NULL), + (2,'Newsletter Subscribers','Newsletter Subscribers',NULL,NULL,NULL,1,'Public Pages',NULL,NULL,NULL,'12',NULL,NULL,NULL,NULL,0,0,NULL,NULL,'Newsletter Subscribers',NULL), + (3,'Summer Program Volunteers','Summer Program Volunteers',NULL,NULL,NULL,1,'Public Pages',NULL,NULL,NULL,'12',NULL,NULL,NULL,NULL,0,0,NULL,NULL,'Summer Program Volunteers',NULL), + (4,'Advisory Board','Advisory Board',NULL,NULL,NULL,1,'Public Pages',NULL,NULL,NULL,'12',NULL,NULL,NULL,NULL,0,0,NULL,NULL,'Advisory Board',NULL); /*!40000 ALTER TABLE `civicrm_group` ENABLE KEYS */; UNLOCK TABLES; @@ -4018,89 +3947,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,80,'Added',NULL,NULL), - (2,2,156,'Added',NULL,NULL), - (3,2,146,'Added',NULL,NULL), - (4,2,56,'Added',NULL,NULL), - (5,2,21,'Added',NULL,NULL), - (6,2,195,'Added',NULL,NULL), - (7,2,115,'Added',NULL,NULL), - (8,2,152,'Added',NULL,NULL), - (9,2,51,'Added',NULL,NULL), - (10,2,138,'Added',NULL,NULL), - (11,2,71,'Added',NULL,NULL), - (12,2,110,'Added',NULL,NULL), - (13,2,4,'Added',NULL,NULL), - (14,2,49,'Added',NULL,NULL), - (15,2,150,'Added',NULL,NULL), - (16,2,161,'Added',NULL,NULL), - (17,2,153,'Added',NULL,NULL), - (18,2,171,'Added',NULL,NULL), - (19,2,135,'Added',NULL,NULL), - (20,2,52,'Added',NULL,NULL), - (21,2,177,'Added',NULL,NULL), - (22,2,172,'Added',NULL,NULL), - (23,2,81,'Added',NULL,NULL), - (24,2,102,'Added',NULL,NULL), - (25,2,106,'Added',NULL,NULL), - (26,2,167,'Added',NULL,NULL), - (27,2,28,'Added',NULL,NULL), - (28,2,133,'Added',NULL,NULL), - (29,2,79,'Added',NULL,NULL), - (30,2,134,'Added',NULL,NULL), - (31,2,183,'Added',NULL,NULL), - (32,2,170,'Added',NULL,NULL), - (33,2,31,'Added',NULL,NULL), - (34,2,53,'Added',NULL,NULL), - (35,2,77,'Added',NULL,NULL), - (36,2,108,'Added',NULL,NULL), - (37,2,72,'Added',NULL,NULL), - (38,2,123,'Added',NULL,NULL), - (39,2,100,'Added',NULL,NULL), - (40,2,33,'Added',NULL,NULL), - (41,2,25,'Added',NULL,NULL), - (42,2,27,'Added',NULL,NULL), - (43,2,76,'Added',NULL,NULL), - (44,2,201,'Added',NULL,NULL), - (45,2,200,'Added',NULL,NULL), - (46,2,114,'Added',NULL,NULL), - (47,2,92,'Added',NULL,NULL), - (48,2,190,'Added',NULL,NULL), - (49,2,184,'Added',NULL,NULL), - (50,2,163,'Added',NULL,NULL), - (51,2,91,'Added',NULL,NULL), - (52,2,26,'Added',NULL,NULL), - (53,2,141,'Added',NULL,NULL), - (54,2,97,'Added',NULL,NULL), - (55,2,55,'Added',NULL,NULL), - (56,2,12,'Added',NULL,NULL), - (57,2,44,'Added',NULL,NULL), - (58,2,73,'Added',NULL,NULL), - (59,2,66,'Added',NULL,NULL), - (60,2,75,'Added',NULL,NULL), - (61,3,168,'Added',NULL,NULL), - (62,3,98,'Added',NULL,NULL), - (63,3,87,'Added',NULL,NULL), - (64,3,50,'Added',NULL,NULL), - (65,3,65,'Added',NULL,NULL), - (66,3,144,'Added',NULL,NULL), - (67,3,90,'Added',NULL,NULL), - (68,3,142,'Added',NULL,NULL), - (69,3,164,'Added',NULL,NULL), - (70,3,111,'Added',NULL,NULL), - (71,3,61,'Added',NULL,NULL), - (72,3,99,'Added',NULL,NULL), - (73,3,104,'Added',NULL,NULL), - (74,3,169,'Added',NULL,NULL), - (75,3,35,'Added',NULL,NULL), - (76,4,80,'Added',NULL,NULL), - (77,4,152,'Added',NULL,NULL), - (78,4,150,'Added',NULL,NULL), - (79,4,172,'Added',NULL,NULL), - (80,4,79,'Added',NULL,NULL), - (81,4,108,'Added',NULL,NULL), - (82,4,76,'Added',NULL,NULL), - (83,4,163,'Added',NULL,NULL), + (1,2,29,'Added',NULL,NULL), + (2,2,154,'Added',NULL,NULL), + (3,2,4,'Added',NULL,NULL), + (4,2,38,'Added',NULL,NULL), + (5,2,100,'Added',NULL,NULL), + (6,2,182,'Added',NULL,NULL), + (7,2,135,'Added',NULL,NULL), + (8,2,92,'Added',NULL,NULL), + (9,2,172,'Added',NULL,NULL), + (10,2,99,'Added',NULL,NULL), + (11,2,98,'Added',NULL,NULL), + (12,2,150,'Added',NULL,NULL), + (13,2,14,'Added',NULL,NULL), + (14,2,200,'Added',NULL,NULL), + (15,2,31,'Added',NULL,NULL), + (16,2,105,'Added',NULL,NULL), + (17,2,6,'Added',NULL,NULL), + (18,2,19,'Added',NULL,NULL), + (19,2,115,'Added',NULL,NULL), + (20,2,35,'Added',NULL,NULL), + (21,2,128,'Added',NULL,NULL), + (22,2,47,'Added',NULL,NULL), + (23,2,15,'Added',NULL,NULL), + (24,2,10,'Added',NULL,NULL), + (25,2,44,'Added',NULL,NULL), + (26,2,61,'Added',NULL,NULL), + (27,2,152,'Added',NULL,NULL), + (28,2,64,'Added',NULL,NULL), + (29,2,56,'Added',NULL,NULL), + (30,2,130,'Added',NULL,NULL), + (31,2,169,'Added',NULL,NULL), + (32,2,62,'Added',NULL,NULL), + (33,2,101,'Added',NULL,NULL), + (34,2,201,'Added',NULL,NULL), + (35,2,93,'Added',NULL,NULL), + (36,2,88,'Added',NULL,NULL), + (37,2,21,'Added',NULL,NULL), + (38,2,104,'Added',NULL,NULL), + (39,2,117,'Added',NULL,NULL), + (40,2,137,'Added',NULL,NULL), + (41,2,75,'Added',NULL,NULL), + (42,2,71,'Added',NULL,NULL), + (43,2,187,'Added',NULL,NULL), + (44,2,94,'Added',NULL,NULL), + (45,2,114,'Added',NULL,NULL), + (46,2,129,'Added',NULL,NULL), + (47,2,41,'Added',NULL,NULL), + (48,2,196,'Added',NULL,NULL), + (49,2,23,'Added',NULL,NULL), + (50,2,136,'Added',NULL,NULL), + (51,2,74,'Added',NULL,NULL), + (52,2,18,'Added',NULL,NULL), + (53,2,186,'Added',NULL,NULL), + (54,2,84,'Added',NULL,NULL), + (55,2,164,'Added',NULL,NULL), + (56,2,81,'Added',NULL,NULL), + (57,2,20,'Added',NULL,NULL), + (58,2,189,'Added',NULL,NULL), + (59,2,5,'Added',NULL,NULL), + (60,2,132,'Added',NULL,NULL), + (61,3,139,'Added',NULL,NULL), + (62,3,119,'Added',NULL,NULL), + (63,3,110,'Added',NULL,NULL), + (64,3,79,'Added',NULL,NULL), + (65,3,148,'Added',NULL,NULL), + (66,3,159,'Added',NULL,NULL), + (67,3,113,'Added',NULL,NULL), + (68,3,118,'Added',NULL,NULL), + (69,3,26,'Added',NULL,NULL), + (70,3,134,'Added',NULL,NULL), + (71,3,3,'Added',NULL,NULL), + (72,3,90,'Added',NULL,NULL), + (73,3,77,'Added',NULL,NULL), + (74,3,177,'Added',NULL,NULL), + (75,3,83,'Added',NULL,NULL), + (76,4,29,'Added',NULL,NULL), + (77,4,92,'Added',NULL,NULL), + (78,4,31,'Added',NULL,NULL), + (79,4,47,'Added',NULL,NULL), + (80,4,56,'Added',NULL,NULL), + (81,4,88,'Added',NULL,NULL), + (82,4,187,'Added',NULL,NULL), + (83,4,136,'Added',NULL,NULL), (84,4,202,'Added',NULL,NULL); /*!40000 ALTER TABLE `civicrm_group_contact` ENABLE KEYS */; UNLOCK TABLES; @@ -4217,84 +4146,84 @@ INSERT INTO `civicrm_line_item` (`id`, `entity_table`, `entity_id`, `contributio (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',5,36,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (35,'civicrm_membership',7,38,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (36,'civicrm_membership',9,40,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (37,'civicrm_membership',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (38,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (39,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (40,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (41,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (42,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), - (43,'civicrm_membership',23,54,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',10,41,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), + (37,'civicrm_membership',13,44,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), + (38,'civicrm_membership',15,46,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), + (39,'civicrm_membership',17,48,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), + (40,'civicrm_membership',19,50,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), + (41,'civicrm_membership',21,52,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), + (42,'civicrm_membership',23,54,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), + (43,'civicrm_membership',25,56,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), (44,'civicrm_membership',27,58,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), (45,'civicrm_membership',29,60,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), (46,'civicrm_membership',30,61,4,'General',1.00,100.00,100.00,NULL,7,2,0.00,NULL,NULL), (47,'civicrm_membership',2,33,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), (48,'civicrm_membership',4,35,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (49,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (50,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (51,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (52,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (53,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (54,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (55,'civicrm_membership',20,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (56,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), - (57,'civicrm_membership',25,56,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (49,'civicrm_membership',5,36,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (50,'civicrm_membership',6,37,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (51,'civicrm_membership',8,39,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (52,'civicrm_membership',12,43,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (53,'civicrm_membership',14,45,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (54,'civicrm_membership',16,47,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (55,'civicrm_membership',18,49,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (56,'civicrm_membership',20,51,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), + (57,'civicrm_membership',24,55,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), (58,'civicrm_membership',26,57,4,'Student',1.00,50.00,50.00,NULL,8,2,0.00,NULL,NULL), (59,'civicrm_membership',28,59,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',50,112,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (64,'civicrm_participant',49,111,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (65,'civicrm_participant',46,108,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (66,'civicrm_participant',43,105,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (67,'civicrm_participant',40,102,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (68,'civicrm_participant',37,99,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (69,'civicrm_participant',34,96,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (70,'civicrm_participant',31,93,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (71,'civicrm_participant',28,90,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (72,'civicrm_participant',25,87,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (73,'civicrm_participant',24,86,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (74,'civicrm_participant',21,83,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (75,'civicrm_participant',18,80,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (76,'civicrm_participant',15,77,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (77,'civicrm_participant',12,74,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (78,'civicrm_participant',9,71,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (79,'civicrm_participant',6,68,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (80,'civicrm_participant',3,65,7,'Tiny-tots (ages 5-8)',1.00,800.00,800.00,0,13,4,0.00,NULL,NULL), - (81,'civicrm_participant',47,109,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (82,'civicrm_participant',44,106,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (83,'civicrm_participant',41,103,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (84,'civicrm_participant',38,100,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (85,'civicrm_participant',35,97,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (86,'civicrm_participant',32,94,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (87,'civicrm_participant',29,91,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (88,'civicrm_participant',26,88,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (89,'civicrm_participant',22,84,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (90,'civicrm_participant',19,81,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (91,'civicrm_participant',16,78,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (92,'civicrm_participant',13,75,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (93,'civicrm_participant',10,72,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (94,'civicrm_participant',7,69,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (95,'civicrm_participant',4,66,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (96,'civicrm_participant',1,63,8,'Single',1.00,50.00,50.00,0,16,4,0.00,NULL,NULL), - (97,'civicrm_participant',48,110,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (98,'civicrm_participant',45,107,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (99,'civicrm_participant',42,104,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (100,'civicrm_participant',39,101,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (101,'civicrm_participant',36,98,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (102,'civicrm_participant',33,95,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (103,'civicrm_participant',30,92,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (104,'civicrm_participant',27,89,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (105,'civicrm_participant',23,85,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (106,'civicrm_participant',20,82,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (107,'civicrm_participant',17,79,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (108,'civicrm_participant',14,76,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (109,'civicrm_participant',11,73,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (110,'civicrm_participant',8,70,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (111,'civicrm_participant',5,67,9,'Soprano',1.00,50.00,50.00,0,21,2,0.00,NULL,NULL), - (112,'civicrm_participant',2,64,9,'Soprano',1.00,50.00,50.00,0,21,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); /*!40000 ALTER TABLE `civicrm_line_item` ENABLE KEYS */; UNLOCK TABLES; @@ -4305,9 +4234,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,177,180,170,NULL,NULL,NULL,NULL,NULL), - (2,178,181,171,NULL,NULL,NULL,NULL,NULL), - (3,179,182,172,NULL,NULL,NULL,NULL,NULL); + (1,184,197,159,NULL,NULL,NULL,NULL,NULL), + (2,185,198,160,NULL,NULL,NULL,NULL,NULL), + (3,186,199,161,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_loc_block` ENABLE KEYS */; UNLOCK TABLES; @@ -4333,7 +4262,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-06-09 14:52:21'); + (1,'civicrm_contact',202,'civicrm_contact,202',202,'2023-08-02 20:53:40'); /*!40000 ALTER TABLE `civicrm_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4752,36 +4681,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,94,1,'2023-06-09','2023-06-09','2025-06-08','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (2,145,2,'2023-06-08','2023-06-08','2024-06-07','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (3,133,1,'2023-06-07','2023-06-07','2025-06-06','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (4,103,2,'2023-06-06','2023-06-06','2024-06-05','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (5,18,1,'2021-05-08','2021-05-08','2023-05-07','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (6,27,2,'2023-06-04','2023-06-04','2024-06-03','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (7,62,1,'2023-06-03','2023-06-03','2025-06-02','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (8,29,2,'2023-06-02','2023-06-02','2024-06-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (9,83,1,'2023-06-01','2023-06-01','2025-05-31','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (10,53,1,'2021-03-29','2021-03-29','2023-03-28','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (11,113,3,'2023-05-30','2023-05-30',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (12,200,2,'2023-05-29','2023-05-29','2024-05-28','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (13,186,1,'2023-05-28','2023-05-28','2025-05-27','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (14,15,2,'2023-05-27','2023-05-27','2024-05-26','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (15,70,1,'2021-02-17','2021-02-17','2023-02-16','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), - (16,155,2,'2023-05-25','2023-05-25','2024-05-24','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (17,23,1,'2023-05-24','2023-05-24','2025-05-23','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (18,182,2,'2023-05-23','2023-05-23','2024-05-22','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (19,30,1,'2023-05-22','2023-05-22','2025-05-21','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (20,69,2,'2022-05-21','2022-05-21','2023-05-20','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (21,197,1,'2023-05-20','2023-05-20','2025-05-19','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (22,201,3,'2023-05-19','2023-05-19',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (23,13,1,'2023-05-18','2023-05-18','2025-05-17','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (24,157,2,'2023-05-17','2023-05-17','2024-05-16','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (25,63,2,'2022-05-16','2022-05-16','2023-05-15','Check',4,0,NULL,NULL,NULL,0,0,NULL,NULL), - (26,154,2,'2023-05-15','2023-05-15','2024-05-14','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (27,90,1,'2023-05-14','2023-05-14','2025-05-13','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (28,199,2,'2023-05-13','2023-05-13','2024-05-12','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (29,56,1,'2023-05-12','2023-05-12','2025-05-11','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), - (30,74,1,'2020-10-20','2020-10-20','2022-10-19','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL); + (1,143,1,'2023-08-02','2023-08-02','2025-08-01','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (2,170,2,'2023-08-01','2023-08-01','2024-07-31','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (3,165,1,'2023-07-31','2023-07-31','2025-07-30','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (4,84,2,'2023-07-30','2023-07-30','2024-07-29','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (5,99,2,'2022-07-29','2022-07-29','2023-07-28','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (6,20,2,'2023-07-28','2023-07-28','2024-07-27','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (7,61,1,'2023-07-27','2023-07-27','2025-07-26','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (8,40,2,'2023-07-26','2023-07-26','2024-07-25','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (9,197,1,'2023-07-25','2023-07-25','2025-07-24','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (10,199,1,'2021-05-22','2021-05-22','2023-05-21','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (11,21,3,'2023-07-23','2023-07-23',NULL,'Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (12,193,2,'2023-07-22','2023-07-22','2024-07-21','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (13,107,1,'2023-07-21','2023-07-21','2025-07-20','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (14,27,2,'2023-07-20','2023-07-20','2024-07-19','Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (15,182,1,'2021-04-12','2021-04-12','2023-04-11','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (16,168,2,'2023-07-18','2023-07-18','2024-07-17','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (17,126,1,'2023-07-17','2023-07-17','2025-07-16','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (18,184,2,'2023-07-16','2023-07-16','2024-07-15','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (19,66,1,'2023-07-15','2023-07-15','2025-07-14','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (20,10,2,'2022-07-14','2022-07-14','2023-07-13','Payment',4,0,NULL,NULL,NULL,0,0,NULL,NULL), + (21,86,1,'2023-07-13','2023-07-13','2025-07-12','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (22,106,3,'2023-07-12','2023-07-12',NULL,'Check',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (23,22,1,'2023-07-11','2023-07-11','2025-07-10','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (24,123,2,'2023-07-10','2023-07-10','2024-07-09','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (25,135,1,'2021-01-22','2021-01-22','2023-01-21','Payment',3,0,NULL,NULL,NULL,0,0,NULL,NULL), + (26,88,2,'2023-07-08','2023-07-08','2024-07-07','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (27,41,1,'2023-07-07','2023-07-07','2025-07-06','Donation',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (28,11,2,'2023-07-06','2023-07-06','2024-07-05','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (29,177,1,'2023-07-05','2023-07-05','2025-07-04','Payment',1,0,NULL,NULL,NULL,0,0,NULL,NULL), + (30,96,1,'2020-12-13','2020-12-13','2022-12-12','Donation',3,0,NULL,NULL,NULL,0,0,NULL,NULL); /*!40000 ALTER TABLE `civicrm_membership` ENABLE KEYS */; UNLOCK TABLES; @@ -4803,36 +4732,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,23,1,'2023-05-18','2025-05-17',13,'2023-06-09',1,NULL), - (2,14,1,'2023-05-27','2024-05-26',15,'2023-06-09',2,NULL), - (3,5,3,'2021-05-08','2023-05-07',18,'2023-06-09',1,NULL), - (4,17,1,'2023-05-24','2025-05-23',23,'2023-06-09',1,NULL), - (5,6,1,'2023-06-04','2024-06-03',27,'2023-06-09',2,NULL), - (6,8,1,'2023-06-02','2024-06-01',29,'2023-06-09',2,NULL), - (7,19,1,'2023-05-22','2025-05-21',30,'2023-06-09',1,NULL), - (8,10,3,'2021-03-29','2023-03-28',53,'2023-06-09',1,NULL), - (9,29,1,'2023-05-12','2025-05-11',56,'2023-06-09',1,NULL), - (10,7,1,'2023-06-03','2025-06-02',62,'2023-06-09',1,NULL), - (11,25,4,'2022-05-16','2023-05-15',63,'2023-06-09',2,NULL), - (12,20,4,'2022-05-21','2023-05-20',69,'2023-06-09',2,NULL), - (13,15,3,'2021-02-17','2023-02-16',70,'2023-06-09',1,NULL), - (14,30,3,'2020-10-20','2022-10-19',74,'2023-06-09',1,NULL), - (15,9,1,'2023-06-01','2025-05-31',83,'2023-06-09',1,NULL), - (16,27,1,'2023-05-14','2025-05-13',90,'2023-06-09',1,NULL), - (17,1,1,'2023-06-09','2025-06-08',94,'2023-06-09',1,NULL), - (18,4,1,'2023-06-06','2024-06-05',103,'2023-06-09',2,NULL), - (19,11,1,'2023-05-30',NULL,113,'2023-06-09',3,NULL), - (20,3,1,'2023-06-07','2025-06-06',133,'2023-06-09',1,NULL), - (21,2,1,'2023-06-08','2024-06-07',145,'2023-06-09',2,NULL), - (22,26,1,'2023-05-15','2024-05-14',154,'2023-06-09',2,NULL), - (23,16,1,'2023-05-25','2024-05-24',155,'2023-06-09',2,NULL), - (24,24,1,'2023-05-17','2024-05-16',157,'2023-06-09',2,NULL), - (25,18,1,'2023-05-23','2024-05-22',182,'2023-06-09',2,NULL), - (26,13,1,'2023-05-28','2025-05-27',186,'2023-06-09',1,NULL), - (27,21,1,'2023-05-20','2025-05-19',197,'2023-06-09',1,NULL), - (28,28,1,'2023-05-13','2024-05-12',199,'2023-06-09',2,NULL), - (29,12,1,'2023-05-29','2024-05-28',200,'2023-06-09',2,NULL), - (30,22,1,'2023-05-19',NULL,201,'2023-06-09',3,NULL); + (1,20,4,'2022-07-14','2023-07-13',10,'2023-08-02',2,NULL), + (2,28,1,'2023-07-06','2024-07-05',11,'2023-08-02',2,NULL), + (3,6,1,'2023-07-28','2024-07-27',20,'2023-08-02',2,NULL), + (4,11,1,'2023-07-23',NULL,21,'2023-08-02',3,NULL), + (5,23,1,'2023-07-11','2025-07-10',22,'2023-08-02',1,NULL), + (6,14,1,'2023-07-20','2024-07-19',27,'2023-08-02',2,NULL), + (7,8,1,'2023-07-26','2024-07-25',40,'2023-08-02',2,NULL), + (8,27,1,'2023-07-07','2025-07-06',41,'2023-08-02',1,NULL), + (9,7,1,'2023-07-27','2025-07-26',61,'2023-08-02',1,NULL), + (10,19,1,'2023-07-15','2025-07-14',66,'2023-08-02',1,NULL), + (11,4,1,'2023-07-30','2024-07-29',84,'2023-08-02',2,NULL), + (12,21,1,'2023-07-13','2025-07-12',86,'2023-08-02',1,NULL), + (13,26,1,'2023-07-08','2024-07-07',88,'2023-08-02',2,NULL), + (14,30,3,'2020-12-13','2022-12-12',96,'2023-08-02',1,NULL), + (15,5,4,'2022-07-29','2023-07-28',99,'2023-08-02',2,NULL), + (16,22,1,'2023-07-12',NULL,106,'2023-08-02',3,NULL), + (17,13,1,'2023-07-21','2025-07-20',107,'2023-08-02',1,NULL), + (18,24,1,'2023-07-10','2024-07-09',123,'2023-08-02',2,NULL), + (19,17,1,'2023-07-17','2025-07-16',126,'2023-08-02',1,NULL), + (20,25,3,'2021-01-22','2023-01-21',135,'2023-08-02',1,NULL), + (21,1,1,'2023-08-02','2025-08-01',143,'2023-08-02',1,NULL), + (22,3,1,'2023-07-31','2025-07-30',165,'2023-08-02',1,NULL), + (23,16,1,'2023-07-18','2024-07-17',168,'2023-08-02',2,NULL), + (24,2,1,'2023-08-01','2024-07-31',170,'2023-08-02',2,NULL), + (25,29,1,'2023-07-05','2025-07-04',177,'2023-08-02',1,NULL), + (26,15,3,'2021-04-12','2023-04-11',182,'2023-08-02',1,NULL), + (27,18,1,'2023-07-16','2024-07-15',184,'2023-08-02',2,NULL), + (28,12,1,'2023-07-22','2024-07-21',193,'2023-08-02',2,NULL), + (29,9,1,'2023-07-25','2025-07-24',197,'2023-08-02',1,NULL), + (30,10,3,'2021-05-22','2023-05-21',199,'2023-08-02',1,NULL); /*!40000 ALTER TABLE `civicrm_membership_log` ENABLE KEYS */; UNLOCK TABLES; @@ -4843,36 +4772,36 @@ UNLOCK TABLES; LOCK TABLES `civicrm_membership_payment` WRITE; /*!40000 ALTER TABLE `civicrm_membership_payment` DISABLE KEYS */; INSERT INTO `civicrm_membership_payment` (`id`, `membership_id`, `contribution_id`) VALUES - (17,1,32), - (21,2,33), - (20,3,34), - (18,4,35), - (3,5,36), - (5,6,37), - (10,7,38), - (6,8,39), - (15,9,40), - (8,10,41), - (19,11,42), - (29,12,43), - (26,13,44), - (2,14,45), - (13,15,46), - (23,16,47), - (4,17,48), - (25,18,49), - (7,19,50), - (12,20,51), - (27,21,52), - (30,22,53), - (1,23,54), + (1,1,32), + (2,2,33), + (3,3,34), + (4,4,35), + (5,5,36), + (6,6,37), + (7,7,38), + (8,8,39), + (9,9,40), + (10,10,41), + (11,11,42), + (12,12,43), + (13,13,44), + (14,14,45), + (15,15,46), + (16,16,47), + (17,17,48), + (18,18,49), + (19,19,50), + (20,20,51), + (21,21,52), + (22,22,53), + (23,23,54), (24,24,55), - (11,25,56), - (22,26,57), - (16,27,58), + (25,25,56), + (26,26,57), + (27,27,58), (28,28,59), - (9,29,60), - (14,30,61); + (29,29,60), + (30,30,61); /*!40000 ALTER TABLE `civicrm_membership_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -4913,466 +4842,467 @@ UNLOCK TABLES; LOCK TABLES `civicrm_menu` WRITE; /*!40000 ALTER TABLE `civicrm_menu` DISABLE KEYS */; INSERT INTO `civicrm_menu` (`id`, `domain_id`, `path`, `path_arguments`, `title`, `access_callback`, `access_arguments`, `page_callback`, `page_arguments`, `breadcrumb`, `return_url`, `return_url_args`, `component_id`, `is_active`, `is_public`, `is_exposed`, `is_ssl`, `weight`, `type`, `page_type`, `skipBreadcrumb`, `module_data`) VALUES - (1,1,'civicrm/ajax/api4',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Api4_Permission\";i:1;s:5:\"check\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (1,1,'civicrm/ajax/api4',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Api4_Page_AJAX\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), (2,1,'civicrm/api4',NULL,'CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Api4_Page_Api4Explorer\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (3,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:{}'), - (4,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:{}'), - (5,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:{}'), - (6,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:{}'), - (7,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:{}'), - (8,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:{}'), - (9,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:{}'), - (10,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:{}'), - (11,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:{}'), - (12,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:{}'), - (13,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:{}'), - (14,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:{}'), - (15,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:{}'), - (16,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:{}'), - (17,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\";}'), - (18,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:{}'), - (19,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:{}'), - (20,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:{}'), - (21,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\";}'), - (22,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:{}'), - (23,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:{}'), - (24,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:{}'), - (25,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:{}'), - (26,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\";}'), - (27,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:{}'), - (28,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:{}'), - (29,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:{}'), - (30,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:{}'), - (31,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:{}'), - (32,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:{}'), - (33,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:{}'), - (34,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:{}'), - (35,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:{}'), - (36,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:{}'), - (37,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:{}'), - (38,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:{}'), - (39,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:{}'), - (40,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:{}'), - (41,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:{}'), - (42,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:{}'), - (43,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:{}'), - (44,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:{}'), - (45,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:{}'), - (46,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:{}'), - (47,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:{}'), - (48,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:{}'), - (49,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:{}'), - (50,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:{}'), - (51,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:{}'), - (52,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:{}'), - (53,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:{}'), - (54,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:{}'), - (55,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:{}'), - (56,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:{}'), - (57,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:{}'), - (58,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:{}'), - (59,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:{}'), - (60,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:{}'), - (61,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:{}'), - (62,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:{}'), - (63,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:{}'), - (64,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:{}'), - (65,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:{}'), - (66,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:{}'), - (67,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:{}'), - (68,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:{}'), - (69,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:{}'), - (70,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:{}'), - (71,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:{}'), - (72,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:{}'), - (73,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:{}'), - (74,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:{}'), - (75,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:{}'), - (76,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:{}'), - (77,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:{}'), - (78,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:{}'), - (79,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\";}'), - (80,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:{}'), - (81,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:{}'), - (82,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:{}'), - (83,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\";}'), - (84,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:{}'), - (85,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:{}'), - (86,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:{}'), - (87,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:{}'), - (88,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:{}'), - (89,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:{}'), - (90,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:{}'), - (91,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (92,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (93,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (94,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), - (95,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (96,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (97,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (98,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (99,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (100,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (101,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (102,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), - (103,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (104,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:{}'), - (105,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (106,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), - (107,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), - (108,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:{}'), - (109,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:{}'), - (110,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:18:\"Administer CiviCRM\";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\";}'), - (111,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:18:\"Administer CiviCRM\";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:{}'), - (112,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:18:\"Administer CiviCRM\";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:{}'), - (113,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:18:\"Administer CiviCRM\";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:{}'), - (114,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:18:\"Administer CiviCRM\";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:{}'), - (115,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:18:\"Administer CiviCRM\";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:{}'), - (116,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:18:\"Administer CiviCRM\";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:{}'), - (117,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:18:\"Administer CiviCRM\";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:{}'), - (118,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:18:\"Administer CiviCRM\";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:{}'), - (119,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:18:\"Administer CiviCRM\";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:{}'), - (120,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:18:\"Administer CiviCRM\";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\";}'), - (121,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:18:\"Administer CiviCRM\";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:{}'), - (122,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:18:\"Administer CiviCRM\";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:{}'), - (123,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:18:\"Administer CiviCRM\";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:{}'), - (124,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:18:\"Administer CiviCRM\";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:{}'), - (125,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:18:\"Administer CiviCRM\";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:{}'), - (126,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:18:\"Administer CiviCRM\";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:{}'), - (127,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:18:\"Administer CiviCRM\";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:{}'), - (128,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:18:\"Administer CiviCRM\";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\";}'), - (129,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:18:\"Administer CiviCRM\";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\";}'), - (130,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:18:\"Administer CiviCRM\";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:{}'), - (131,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:18:\"Administer CiviCRM\";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\";}'), - (132,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:18:\"Administer CiviCRM\";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:{}'), - (133,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:18:\"Administer CiviCRM\";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\";}'), - (134,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:18:\"Administer CiviCRM\";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\";}'), - (135,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:18:\"Administer CiviCRM\";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\";}'), - (136,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:18:\"Administer CiviCRM\";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\";}'), - (137,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:18:\"Administer CiviCRM\";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:{}'), - (138,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:18:\"Administer CiviCRM\";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\";}'), - (139,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:18:\"Administer CiviCRM\";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\";}'), - (140,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:18:\"Administer CiviCRM\";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\";}'), - (141,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:18:\"Administer CiviCRM\";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\";}'), - (142,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:18:\"Administer CiviCRM\";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\";}'), - (143,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:18:\"Administer CiviCRM\";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\";}'), - (144,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:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (145,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:18:\"Administer CiviCRM\";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\";}'), - (146,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:18:\"Administer CiviCRM\";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\";}'), - (147,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:18:\"Administer CiviCRM\";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\";}'), - (148,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:18:\"Administer CiviCRM\";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\";}'), - (149,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:18:\"Administer CiviCRM\";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\";}'), - (150,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:18:\"Administer CiviCRM\";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\";}'), - (151,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:18:\"Administer CiviCRM\";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\";}'), - (152,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:18:\"Administer CiviCRM\";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\";}'), - (153,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:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (154,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:18:\"Administer CiviCRM\";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\";}'), - (155,1,'civicrm/admin/labelFormats',NULL,'Label 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:18:\"Administer CiviCRM\";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:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), - (156,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:18:\"Administer CiviCRM\";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\";}'), - (157,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:18:\"Administer CiviCRM\";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\";}'), - (158,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:18:\"Administer CiviCRM\";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\";}'), - (159,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:18:\"Administer CiviCRM\";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\";}'), - (160,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:18:\"Administer CiviCRM\";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\";}'), - (161,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:18:\"Administer CiviCRM\";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\";}'), - (162,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:18:\"Administer CiviCRM\";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\";}'), - (163,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:18:\"Administer CiviCRM\";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\";}'), - (164,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:18:\"Administer CiviCRM\";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\";}'), - (165,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:18:\"Administer CiviCRM\";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\";}'), - (166,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:18:\"Administer CiviCRM\";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.\";}'), - (167,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:18:\"Administer CiviCRM\";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\";}'), - (168,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:18:\"Administer CiviCRM\";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\";}'), - (169,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:18:\"Administer CiviCRM\";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\";}'), - (170,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:18:\"Administer CiviCRM\";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\";}'), - (171,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:18:\"Administer CiviCRM\";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:{}'), - (172,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:18:\"Administer CiviCRM\";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\";}'), - (173,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:18:\"Administer CiviCRM\";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\";}'), - (174,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:18:\"Administer CiviCRM\";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:{}'), - (175,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:18:\"Administer CiviCRM\";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\";}'), - (176,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:18:\"Administer CiviCRM\";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\";}'), - (177,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:18:\"Administer CiviCRM\";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\";}'), - (178,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:18:\"Administer CiviCRM\";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\";}'), - (179,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:18:\"Administer CiviCRM\";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\";}'), - (180,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:18:\"Administer CiviCRM\";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\";}'), - (181,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:18:\"Administer CiviCRM\";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\";}'), - (182,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:18:\"Administer CiviCRM\";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\";}'), - (183,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:18:\"Administer CiviCRM\";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\";}'), - (184,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:18:\"Administer CiviCRM\";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\";}'), - (185,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:18:\"Administer CiviCRM\";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\";}'), - (186,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:18:\"Administer CiviCRM\";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\";}'), - (187,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:18:\"Administer CiviCRM\";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\";}'), - (188,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:18:\"Administer CiviCRM\";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\";}'), - (189,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:18:\"Administer CiviCRM\";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\";}'), - (190,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:18:\"Administer CiviCRM\";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.\";}'), - (191,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:18:\"Administer CiviCRM\";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\";}'), - (192,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:18:\"Administer CiviCRM\";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\";}'), - (193,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:18:\"Administer CiviCRM\";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\";}'), - (194,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:18:\"Administer CiviCRM\";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\";}'), - (195,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:18:\"Administer CiviCRM\";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\";}'), - (196,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:18:\"Administer CiviCRM\";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\";}'), - (197,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;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:{}'), - (198,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:{}'), - (199,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:{}'), - (200,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:{}'), - (201,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:18:\"Administer CiviCRM\";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\";}'), - (202,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:18:\"Administer CiviCRM\";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.\";}'), - (203,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:18:\"Administer CiviCRM\";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:{}'), - (204,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:18:\"Administer CiviCRM\";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:{}'), - (205,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:{}'), - (206,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:{}'), - (207,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:18:\"Administer CiviCRM\";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\";}'), - (208,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:{}'), - (209,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:{}'), - (210,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:18:\"Administer CiviCRM\";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\";}'), - (211,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:18:\"Administer CiviCRM\";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:{}'), - (212,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (213,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (214,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), - (215,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_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_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (216,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s: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:18:\"Administer CiviCRM\";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:0:{}'), - (217,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (218,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;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:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (219,1,'civicrm/acl/basic',NULL,'ACL','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_ACL_Page_ACLBasic\";',NULL,'a:2:{i:0;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:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (220,1,'civicrm/file',NULL,'Browse Uploaded files','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\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (221,1,'civicrm/file/delete',NULL,'Delete 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:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (222,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'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:{}'), - (223,1,'civicrm/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_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_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'), - (224,1,'civicrm/i18n',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:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), - (225,1,'civicrm/ajax/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:{}'), - (226,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:{}'), - (227,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:{}'), - (228,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:{}'), - (229,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:{}'), - (230,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:{}'), - (231,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:{}'), - (232,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:{}'), - (233,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:{}'), - (234,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:{}'), - (235,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:{}'), - (236,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:{}'), - (237,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:{}'), - (238,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:{}'), - (239,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:{}'), - (240,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:{}'), - (241,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:{}'), - (242,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:{}'), - (243,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:{}'), - (244,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:{}'), - (245,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:{}'), - (246,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:{}'), - (247,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:{}'), - (248,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:{}'), - (249,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:{}'), - (250,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:{}'), - (251,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:{}'), - (252,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:{}'), - (253,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:{}'), - (254,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:{}'), - (255,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:{}'), - (256,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:{}'), - (257,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:{}'), - (258,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:{}'), - (259,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:{}'), - (260,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:{}'), - (261,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:{}'), - (262,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:{}'), - (263,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\";}'), - (264,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\";}'), - (265,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:{}'), - (266,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:{}'), - (267,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:{}'), - (268,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:{}'), - (269,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:{}'), - (270,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:{}'), - (271,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:18:\"Administer CiviCRM\";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\";}'), - (272,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:18:\"Administer CiviCRM\";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\";}'), - (273,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:18:\"Administer CiviCRM\";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\";}'), - (274,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:18:\"Administer CiviCRM\";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\";}'), - (275,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:18:\"Administer CiviCRM\";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\";}'), - (276,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:18:\"Administer CiviCRM\";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\";}'), - (277,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:18:\"Administer CiviCRM\";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\";}'), - (278,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:{}'), - (279,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:{}'), - (280,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:{}'), - (281,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:{}'), - (282,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:{}'), - (283,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:{}'), - (284,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:{}'), - (285,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:{}'), - (286,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:{}'), - (287,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:{}'), - (288,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:{}'), - (289,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:{}'), - (290,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:{}'), - (291,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:{}'), - (292,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:{}'), - (293,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:{}'), - (294,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:{}'), - (295,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:{}'), - (296,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:{}'), - (297,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:{}'), - (298,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:{}'), - (299,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:{}'), - (300,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:{}'), - (301,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\";}'), - (302,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\";}'), - (303,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\";}'), - (304,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:{}'), - (305,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:18:\"Administer CiviCRM\";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\";}'), - (306,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:18:\"Administer CiviCRM\";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:{}'), - (307,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:18:\"Administer CiviCRM\";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:{}'), - (308,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:18:\"Administer CiviCRM\";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:{}'), - (309,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:18:\"Administer CiviCRM\";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:{}'), - (310,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:18:\"Administer CiviCRM\";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:{}'), - (311,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:18:\"Administer CiviCRM\";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:{}'), - (312,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:18:\"Administer CiviCRM\";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:{}'), - (313,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:18:\"Administer CiviCRM\";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:{}'), - (314,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:18:\"Administer CiviCRM\";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:{}'), - (315,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:18:\"Administer CiviCRM\";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:{}'), - (316,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:18:\"Administer CiviCRM\";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\";}'), - (317,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:18:\"Administer CiviCRM\";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\";}'), - (318,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:18:\"Administer CiviCRM\";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:{}'), - (319,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\";}'), - (320,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:18:\"Administer CiviCRM\";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\";}'), - (321,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:18:\"Administer CiviCRM\";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:{}'), - (322,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:18:\"Administer CiviCRM\";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\";}'), - (323,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:18:\"Administer CiviCRM\";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\";}'), - (324,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:18:\"Administer CiviCRM\";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\";}'), - (325,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:{}'), - (326,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:{}'), - (327,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:{}'), - (328,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:{}'), - (329,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:{}'), - (330,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:{}'), - (331,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:{}'), - (332,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:{}'), - (333,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:{}'), - (334,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:{}'), - (335,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:{}'), - (336,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:{}'), - (337,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:{}'), - (338,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:18:\"Administer CiviCRM\";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:{}'), - (339,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:{}'), - (340,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:{}'), - (341,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:{}'), - (342,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:{}'), - (343,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\";}'), - (344,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:18:\"Administer CiviCRM\";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\";}'), - (345,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\";}'), - (346,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\";}'), - (347,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:{}'), - (348,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:{}'), - (349,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:{}'), - (350,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:{}'), - (351,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:{}'), - (352,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:18:\"Administer CiviCRM\";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:{}'), - (353,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:{}'), - (354,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\";}'), - (355,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\";}'), - (356,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:18:\"Administer CiviCRM\";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\";}'), - (357,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:18:\"Administer CiviCRM\";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\";}'), - (358,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:{}'), - (359,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:{}'), - (360,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:{}'), - (361,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:{}'), - (362,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:{}'), - (363,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:18:\"Administer CiviCRM\";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:{}'), - (364,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\";}'), - (365,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:18:\"Administer CiviCRM\";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\";}'), - (366,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:18:\"Administer CiviCRM\";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\";}'), - (367,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:18:\"Administer CiviCRM\";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\";}'), - (368,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:18:\"Administer CiviCRM\";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:32:\"Configure email account setting.\";s:10:\"adminGroup\";s:8:\"CiviMail\";}'), - (369,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:{}'), - (370,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:{}'), - (371,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:{}'), - (372,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:{}'), - (373,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:{}'), - (374,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:{}'), - (375,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:{}'), - (376,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:{}'), - (377,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:{}'), - (378,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:{}'), - (379,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:{}'), - (380,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:{}'), - (381,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:{}'), - (382,1,'civicrm/mailing/queue',NULL,'Sending Mail','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: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,690,1,0,0,'a:0:{}'), - (383,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:{}'), - (384,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:{}'), - (385,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:{}'), - (386,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:{}'), - (387,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:{}'), - (388,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:{}'), - (389,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:{}'), - (390,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:{}'), - (391,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:{}'), - (392,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\";}'), - (393,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:{}'), - (394,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:{}'), - (395,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\";}'), - (396,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:{}'), - (397,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:{}'), - (398,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\";}'), - (399,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\";}'), - (400,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:{}'), - (401,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:{}'), - (402,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:{}'), - (403,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:{}'), - (404,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:{}'), - (405,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:{}'), - (406,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:{}'), - (407,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:{}'), - (408,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:{}'), - (409,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:18:\"Administer CiviCRM\";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\";}'), - (410,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:18:\"Administer CiviCRM\";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\";}'), - (411,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:18:\"Administer CiviCRM\";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\";}'), - (412,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:18:\"Administer CiviCRM\";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\";}'), - (413,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:18:\"Administer CiviCRM\";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\";}'), - (414,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:{}'), - (415,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:{}'), - (416,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:{}'), - (417,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:{}'), - (418,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:{}'), - (419,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:{}'), - (420,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:{}'), - (421,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\";}'), - (422,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:{}'), - (423,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:{}'), - (424,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:{}'), - (425,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:18:\"Administer CiviCRM\";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.\";}'), - (426,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:{}'), - (427,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:18:\"Administer CiviCRM\";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\";}'), - (428,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:18:\"Administer CiviCRM\";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\";}'), - (429,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:18:\"Administer CiviCRM\";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\";}'), - (430,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\";}'), - (431,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\";}'), - (432,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\";}'), - (433,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\";}'), - (434,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:18:\"Administer CiviCRM\";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\";}'), - (435,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:18:\"Administer CiviCRM\";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\";}'), - (436,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:18:\"Administer CiviCRM\";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\";}'), - (437,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:18:\"Administer CiviCRM\";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\";}'), - (438,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\";}'), - (439,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\";}'), - (440,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:{}'), - (441,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:{}'), - (442,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:{}'), - (443,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:{}'), - (444,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:{}'), - (445,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:{}'), - (446,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:{}'), - (447,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:{}'), - (448,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:{}'), - (449,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:{}'), - (450,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:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), - (451,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:{}'), - (452,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:{}'), - (453,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:{}'), - (454,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:{}'), - (455,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:{}'), - (456,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:{}'), - (457,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:{}'), - (458,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:{}'), - (459,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:18:\"Administer CiviCRM\";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\";}'), - (460,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:26:\"Customize Data and Screens\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:19:{s:13:\"{weight}.Tags\";a:6:{s:5:\"title\";s:4:\"Tags\";s:4:\"desc\";s:158:\"Tags are useful for segmenting the contacts in your database into categories (e.g. Staff Member, Donor, Volunteer, etc.). Create and edit available tags here.\";s:2:\"id\";s:4:\"Tags\";s:3:\"url\";s:20:\"/civicrm/tag?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:20:\"{weight}.Custom Data\";a:6:{s:5:\"title\";s:11:\"Custom Data\";s:4:\"desc\";s:109:\"Configure custom fields to collect and store custom data which is not included in the standard CiviCRM forms.\";s:2:\"id\";s:10:\"CustomData\";s:3:\"url\";s:35:\"/civicrm/admin/custom/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:17:\"{weight}.Profiles\";a:6:{s:5:\"title\";s:8:\"Profiles\";s:4:\"desc\";s:151:\"Profiles allow you to aggregate groups of fields and include them in your site as input forms, contact display pages, and search and listings features.\";s:2:\"id\";s:8:\"Profiles\";s:3:\"url\";s:31:\"/civicrm/admin/uf/group?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Activity Types\";a:6:{s:5:\"title\";s:14:\"Activity Types\";s:4:\"desc\";s:155:\"CiviCRM has several built-in activity types (meetings, phone calls, emails sent). Track other types of interactions by creating custom activity types here.\";s:2:\"id\";s:13:\"ActivityTypes\";s:3:\"url\";s:44:\"/civicrm/admin/options/activity_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Relationship Types\";a:6:{s:5:\"title\";s:18:\"Relationship Types\";s:4:\"desc\";s:148:\"Contacts can be linked to each other through Relationships (e.g. Spouse, Employer, etc.). Define the types of relationships you want to record here.\";s:2:\"id\";s:17:\"RelationshipTypes\";s:3:\"url\";s:30:\"/civicrm/admin/reltype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Contact Types\";a:6:{s:5:\"title\";s:13:\"Contact Types\";s:4:\"desc\";N;s:2:\"id\";s:12:\"ContactTypes\";s:3:\"url\";s:38:\"/civicrm/admin/options/subtype?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:23:\"{weight}.Gender Options\";a:6:{s:5:\"title\";s:14:\"Gender Options\";s:4:\"desc\";s:79:\"Options for assigning gender to individual contacts (e.g. Male, Female, Other).\";s:2:\"id\";s:13:\"GenderOptions\";s:3:\"url\";s:37:\"/civicrm/admin/options/gender?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Prefixes (Ms, Mr...)\";a:6:{s:5:\"title\";s:31:\"Individual Prefixes (Ms, Mr...)\";s:4:\"desc\";s:66:\"Options for individual contact prefixes (e.g. Ms., Mr., Dr. etc.).\";s:2:\"id\";s:27:\"IndividualPrefixes_Ms_Mr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_prefix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:40:\"{weight}.Individual Suffixes (Jr, Sr...)\";a:6:{s:5:\"title\";s:31:\"Individual Suffixes (Jr, Sr...)\";s:4:\"desc\";s:61:\"Options for individual contact suffixes (e.g. Jr., Sr. etc.).\";s:2:\"id\";s:27:\"IndividualSuffixes_Jr_Sr...\";s:3:\"url\";s:48:\"/civicrm/admin/options/individual_suffix?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:39:\"{weight}.Location Types (Home, Work...)\";a:6:{s:5:\"title\";s:30:\"Location Types (Home, Work...)\";s:4:\"desc\";s:94:\"Options for categorizing contact addresses and phone numbers (e.g. Home, Work, Billing, etc.).\";s:2:\"id\";s:26:\"LocationTypes_Home_Work...\";s:3:\"url\";s:35:\"/civicrm/admin/locationType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Website Types\";a:6:{s:5:\"title\";s:13:\"Website Types\";s:4:\"desc\";s:48:\"Options for assigning website types to contacts.\";s:2:\"id\";s:12:\"WebsiteTypes\";s:3:\"url\";s:43:\"/civicrm/admin/options/website_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:35:\"{weight}.Instant Messenger Services\";a:6:{s:5:\"title\";s:26:\"Instant Messenger Services\";s:4:\"desc\";s:79:\"List of IM services which can be used when recording screen-names for contacts.\";s:2:\"id\";s:24:\"InstantMessengerServices\";s:3:\"url\";s:56:\"/civicrm/admin/options/instant_messenger_service?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Mobile Phone Providers\";a:6:{s:5:\"title\";s:22:\"Mobile Phone Providers\";s:4:\"desc\";s:90:\"List of mobile phone providers which can be assigned when recording contact phone numbers.\";s:2:\"id\";s:20:\"MobilePhoneProviders\";s:3:\"url\";s:46:\"/civicrm/admin/options/mobile_provider?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Phone Type\";a:6:{s:5:\"title\";s:10:\"Phone Type\";s:4:\"desc\";s:80:\"Options for assigning phone type to contacts (e.g Phone,\n Mobile, Fax, Pager)\";s:2:\"id\";s:9:\"PhoneType\";s:3:\"url\";s:41:\"/civicrm/admin/options/phone_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:28:\"{weight}.Display Preferences\";a:6:{s:5:\"title\";s:19:\"Display Preferences\";s:4:\"desc\";N;s:2:\"id\";s:18:\"DisplayPreferences\";s:3:\"url\";s:50:\"/civicrm/admin/setting/preferences/display?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Search Preferences\";a:6:{s:5:\"title\";s:18:\"Search Preferences\";s:4:\"desc\";N;s:2:\"id\";s:17:\"SearchPreferences\";s:3:\"url\";s:37:\"/civicrm/admin/setting/search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Navigation Menu\";a:6:{s:5:\"title\";s:15:\"Navigation Menu\";s:4:\"desc\";s:79:\"Add or remove menu items, and modify the order of items on the navigation menu.\";s:2:\"id\";s:14:\"NavigationMenu\";s:3:\"url\";s:27:\"/civicrm/admin/menu?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Word Replacements\";a:6:{s:5:\"title\";s:17:\"Word Replacements\";s:4:\"desc\";s:18:\"Word Replacements.\";s:2:\"id\";s:16:\"WordReplacements\";s:3:\"url\";s:47:\"/civicrm/admin/options/wordreplacements?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:31:\"{weight}.Manage Custom Searches\";a:6:{s:5:\"title\";s:22:\"Manage Custom Searches\";s:4:\"desc\";s:225:\"Developers and accidental techies with a bit of PHP and SQL knowledge can create new search forms to handle specific search and reporting needs which aren\'t covered by the built-in Advanced Search and Search Builder features.\";s:2:\"id\";s:20:\"ManageCustomSearches\";s:3:\"url\";s:44:\"/civicrm/admin/options/custom_search?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{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: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: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: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:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";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:32:\"Configure email account setting.\";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: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:{}'); + (3,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:{}'), + (4,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:{}'), + (5,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:{}'), + (6,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:{}'), + (7,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:{}'), + (8,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:{}'), + (9,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:{}'), + (10,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:{}'), + (11,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:{}'), + (12,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:{}'), + (13,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:{}'), + (14,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:{}'), + (15,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:{}'), + (16,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:{}'), + (17,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:{}'), + (18,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:{}'), + (19,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:{}'), + (20,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:{}'), + (21,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:{}'), + (22,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:{}'), + (23,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:{}'), + (24,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:{}'), + (25,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:{}'), + (26,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:{}'), + (27,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:{}'), + (28,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:{}'), + (29,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:{}'), + (30,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:{}'), + (31,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:{}'), + (32,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:{}'), + (33,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:{}'), + (34,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:{}'), + (35,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:{}'), + (36,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:{}'), + (37,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:{}'), + (38,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:{}'), + (39,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:{}'), + (40,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:{}'), + (41,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:{}'), + (42,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:{}'), + (43,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:{}'), + (44,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:{}'), + (45,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:{}'), + (46,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:{}'), + (47,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:{}'), + (48,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:{}'), + (49,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:{}'), + (50,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:{}'), + (51,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:{}'), + (52,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:{}'), + (53,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:{}'), + (54,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:{}'), + (55,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\";}'), + (56,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:{}'), + (57,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:{}'), + (58,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:{}'), + (59,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\";}'), + (60,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:{}'), + (61,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:{}'), + (62,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:{}'), + (63,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:{}'), + (64,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:{}'), + (65,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:{}'), + (66,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:{}'), + (67,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:18:\"Administer CiviCRM\";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\";}'), + (68,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:18:\"Administer CiviCRM\";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:{}'), + (69,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:18:\"Administer CiviCRM\";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:{}'), + (70,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:18:\"Administer CiviCRM\";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:{}'), + (71,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:18:\"Administer CiviCRM\";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:{}'), + (72,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:18:\"Administer CiviCRM\";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:{}'), + (73,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:18:\"Administer CiviCRM\";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:{}'), + (74,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:18:\"Administer CiviCRM\";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:{}'), + (75,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:18:\"Administer CiviCRM\";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:{}'), + (76,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:18:\"Administer CiviCRM\";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:{}'), + (77,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:18:\"Administer CiviCRM\";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\";}'), + (78,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:18:\"Administer CiviCRM\";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:{}'), + (79,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:18:\"Administer CiviCRM\";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:{}'), + (80,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:18:\"Administer CiviCRM\";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:{}'), + (81,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:18:\"Administer CiviCRM\";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:{}'), + (82,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:18:\"Administer CiviCRM\";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:{}'), + (83,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:18:\"Administer CiviCRM\";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:{}'), + (84,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:18:\"Administer CiviCRM\";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:{}'), + (85,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:18:\"Administer CiviCRM\";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\";}'), + (86,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:18:\"Administer CiviCRM\";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\";}'), + (87,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:18:\"Administer CiviCRM\";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:{}'), + (88,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:18:\"Administer CiviCRM\";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\";}'), + (89,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:18:\"Administer CiviCRM\";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:{}'), + (90,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:18:\"Administer CiviCRM\";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\";}'), + (91,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:18:\"Administer CiviCRM\";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\";}'), + (92,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:18:\"Administer CiviCRM\";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\";}'), + (93,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:18:\"Administer CiviCRM\";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\";}'), + (94,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:18:\"Administer CiviCRM\";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:{}'), + (95,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:18:\"Administer CiviCRM\";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\";}'), + (96,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:18:\"Administer CiviCRM\";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\";}'), + (97,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:18:\"Administer CiviCRM\";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\";}'), + (98,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:18:\"Administer CiviCRM\";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\";}'), + (99,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:18:\"Administer CiviCRM\";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\";}'), + (100,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:18:\"Administer CiviCRM\";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\";}'), + (101,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:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (102,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:18:\"Administer CiviCRM\";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\";}'), + (103,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:18:\"Administer CiviCRM\";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\";}'), + (104,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:18:\"Administer CiviCRM\";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\";}'), + (105,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:18:\"Administer CiviCRM\";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\";}'), + (106,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:18:\"Administer CiviCRM\";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\";}'), + (107,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:18:\"Administer CiviCRM\";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\";}'), + (108,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:18:\"Administer CiviCRM\";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\";}'), + (109,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:18:\"Administer CiviCRM\";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\";}'), + (110,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:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (111,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:18:\"Administer CiviCRM\";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\";}'), + (112,1,'civicrm/admin/labelFormats',NULL,'Label 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:18:\"Administer CiviCRM\";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:67:\"Configure Label Formats that are used when creating mailing labels.\";s:10:\"adminGroup\";s:14:\"Communications\";}'), + (113,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:18:\"Administer CiviCRM\";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\";}'), + (114,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:18:\"Administer CiviCRM\";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\";}'), + (115,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:18:\"Administer CiviCRM\";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\";}'), + (116,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:18:\"Administer CiviCRM\";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\";}'), + (117,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:18:\"Administer CiviCRM\";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\";}'), + (118,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:18:\"Administer CiviCRM\";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\";}'), + (119,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:18:\"Administer CiviCRM\";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\";}'), + (120,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:18:\"Administer CiviCRM\";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\";}'), + (121,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:18:\"Administer CiviCRM\";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\";}'), + (122,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:18:\"Administer CiviCRM\";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\";}'), + (123,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:18:\"Administer CiviCRM\";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.\";}'), + (124,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:18:\"Administer CiviCRM\";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\";}'), + (125,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:18:\"Administer CiviCRM\";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\";}'), + (126,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:18:\"Administer CiviCRM\";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\";}'), + (127,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:18:\"Administer CiviCRM\";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\";}'), + (128,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:18:\"Administer CiviCRM\";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:{}'), + (129,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:18:\"Administer CiviCRM\";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\";}'), + (130,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:18:\"Administer CiviCRM\";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\";}'), + (131,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:18:\"Administer CiviCRM\";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:{}'), + (132,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:18:\"Administer CiviCRM\";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\";}'), + (133,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:18:\"Administer CiviCRM\";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\";}'), + (134,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:18:\"Administer CiviCRM\";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\";}'), + (135,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:18:\"Administer CiviCRM\";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\";}'), + (136,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:18:\"Administer CiviCRM\";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\";}'), + (137,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:18:\"Administer CiviCRM\";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\";}'), + (138,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:18:\"Administer CiviCRM\";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\";}'), + (139,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:18:\"Administer CiviCRM\";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\";}'), + (140,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:18:\"Administer CiviCRM\";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\";}'), + (141,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:18:\"Administer CiviCRM\";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\";}'), + (142,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:18:\"Administer CiviCRM\";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\";}'), + (143,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:18:\"Administer CiviCRM\";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\";}'), + (144,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:18:\"Administer CiviCRM\";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\";}'), + (145,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:18:\"Administer CiviCRM\";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\";}'), + (146,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:18:\"Administer CiviCRM\";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\";}'), + (147,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:18:\"Administer CiviCRM\";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.\";}'), + (148,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:18:\"Administer CiviCRM\";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\";}'), + (149,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:18:\"Administer CiviCRM\";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\";}'), + (150,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:18:\"Administer CiviCRM\";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\";}'), + (151,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:18:\"Administer CiviCRM\";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\";}'), + (152,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:18:\"Administer CiviCRM\";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\";}'), + (153,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:18:\"Administer CiviCRM\";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\";}'), + (154,1,'civicrm/admin',NULL,'Administer CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;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:{}'), + (155,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:{}'), + (156,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:{}'), + (157,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:{}'), + (158,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:18:\"Administer CiviCRM\";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\";}'), + (159,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:18:\"Administer CiviCRM\";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.\";}'), + (160,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:18:\"Administer CiviCRM\";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:{}'), + (161,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:18:\"Administer CiviCRM\";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:{}'), + (162,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:{}'), + (163,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:{}'), + (164,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:18:\"Administer CiviCRM\";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\";}'), + (165,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:{}'), + (166,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:{}'), + (167,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:18:\"Administer CiviCRM\";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\";}'), + (168,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:18:\"Administer CiviCRM\";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:{}'), + (169,1,'civicrm/pcp',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Form_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (170,1,'civicrm/pcp/campaign',NULL,'Setup a Personal Campaign Page - Account Information','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:22:\"CRM_PCP_Controller_PCP\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (171,1,'civicrm/pcp/info',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:20:\"CRM_PCP_Page_PCPInfo\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (172,1,'civicrm/admin/pcp','context=contribute','Personal Campaign Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_PCP_Page_PCP\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,362,1,0,0,'a:2:{s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (173,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:{}'), + (174,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:{}'), + (175,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:{}'), + (176,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:{}'), + (177,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:{}'), + (178,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:{}'), + (179,1,'civicrm/upgrade',NULL,'Upgrade CiviCRM','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Upgrade_Page_Upgrade\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (180,1,'civicrm/export',NULL,'Download Errors','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (181,1,'civicrm/export/contact',NULL,'Export Contacts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:21:\"CRM_Export_BAO_Export\";i:1;s:6:\"invoke\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,0,1,0,0,'a:0:{}'), + (182,1,'civicrm/export/standalone',NULL,'Export','a:2:{i:0;s:19:\"CRM_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_Export_Controller_Standalone\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Download Errors\";s:3:\"url\";s:23:\"/civicrm/export?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (183,1,'civicrm/admin/options/acl_role',NULL,'ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s: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:18:\"Administer CiviCRM\";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:0:{}'), + (184,1,'civicrm/acl',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Page_ACL\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (185,1,'civicrm/acl/edit',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;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:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (186,1,'civicrm/acl/delete',NULL,'Manage ACLs','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:16:\"CRM_ACL_Form_ACL\";',NULL,'a:2:{i:0;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:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (187,1,'civicrm/acl/entityrole',NULL,'Assign Users to ACL Roles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_ACL_Page_EntityRole\";',NULL,'a:2:{i:0;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:\"Manage ACLs\";s:3:\"url\";s:20:\"/civicrm/acl?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (188,1,'civicrm/file',NULL,'Browse Uploaded files','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\";}','s:18:\"CRM_Core_Page_File\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (189,1,'civicrm/file/delete',NULL,'Delete 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:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:17:\"CRM_Core_BAO_File\";i:1;s:16:\"deleteAttachment\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:21:\"Browse Uploaded files\";s:3:\"url\";s:21:\"/civicrm/file?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (190,1,'civicrm/friend',NULL,'Tell a Friend','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:15:\"CRM_Friend_Form\";',NULL,'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/logout',NULL,'Log out','a:2:{i:0;s:19:\"CRM_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_Utils_System\";i:1;s:6:\"logout\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,9999,1,1,0,'a:0:{}'), + (192,1,'civicrm/i18n',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:17:\"translate CiviCRM\";}i:1;s:3:\"and\";}','s:18:\"CRM_Core_I18n_Form\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (193,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:{}'), + (194,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:{}'), + (195,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:{}'), + (196,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:{}'), + (197,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:{}'), + (198,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:{}'), + (199,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:{}'), + (200,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:{}'), + (201,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:{}'), + (202,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:{}'), + (203,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:{}'), + (204,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:{}'), + (205,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:{}'), + (206,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:{}'), + (207,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:{}'), + (208,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:{}'), + (209,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:{}'), + (210,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:{}'), + (211,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:{}'), + (212,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:{}'), + (213,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:{}'), + (214,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:{}'), + (215,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:{}'), + (216,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:{}'), + (217,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:{}'), + (218,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:{}'), + (219,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:{}'), + (220,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:{}'), + (221,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:{}'), + (222,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:{}'), + (223,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:{}'), + (224,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:{}'), + (225,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:{}'), + (226,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:{}'), + (227,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:{}'), + (228,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:{}'), + (229,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:{}'), + (230,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:{}'), + (231,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:{}'), + (232,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:{}'), + (233,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:{}'), + (234,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:{}'), + (235,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:{}'), + (236,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:{}'), + (237,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:{}'), + (238,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:{}'), + (239,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:{}'), + (240,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:{}'), + (241,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\";}'), + (242,1,'civicrm/profile',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (243,1,'civicrm/profile/create',NULL,'CiviCRM Profile Create','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:23:\"CRM_Profile_Page_Router\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,0,1,0,0,'a:0:{}'), + (244,1,'civicrm/profile/view',NULL,NULL,'s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:21:\"CRM_Profile_Page_View\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,1,1,0,1,1,0,0,'a:0:{}'), + (245,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:{}'), + (246,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:{}'), + (247,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\";}'), + (248,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:{}'), + (249,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:{}'), + (250,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:{}'), + (251,1,'civicrm/activity','action=add&context=standalone','New Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Activity_Form_Activity\";','s:14:\"attachUpload=1\";','a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (252,1,'civicrm/activity/view',NULL,'View Activity','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Form_ActivityView\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (253,1,'civicrm/ajax/activity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:15:\"getCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (254,1,'civicrm/ajax/globalrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseGlobalRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (255,1,'civicrm/ajax/clientrelationships',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:26:\"getCaseClientRelationships\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (256,1,'civicrm/ajax/caseroles',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:12:\"getCaseRoles\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (257,1,'civicrm/ajax/contactactivity',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:18:\"getContactActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (258,1,'civicrm/ajax/activity/convert',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:22:\"CRM_Activity_Page_AJAX\";i:1;s:21:\"convertToCaseActivity\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,3,0,'a:0:{}'), + (259,1,'civicrm/activity/search',NULL,'Find Activities','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:30:\"CRM_Activity_Controller_Search\";','s:14:\"attachUpload=1\";','a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:12:\"New Activity\";s:3:\"url\";s:63:\"/civicrm/activity?reset=1&action=add&context=standalone\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (260,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\";}'), + (261,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:{}'), + (262,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:{}'), + (263,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:{}'), + (264,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:{}'), + (265,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:{}'), + (266,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:{}'), + (267,1,'civicrm/event',NULL,'CiviEvent Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,1,1,0,1,0,800,1,1,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (268,1,'civicrm/participant/add','action=add','Register New Participant','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:18:\"CRM_Event_Page_Tab\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:9:\"CiviEvent\";}'), + (269,1,'civicrm/event/info',NULL,'Event Information','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:24:\"CRM_Event_Page_EventInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,1,1,0,0,'a:0:{}'), + (270,1,'civicrm/event/register',NULL,'Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Controller_Registration\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (271,1,'civicrm/event/confirm',NULL,'Confirm Event Registration','s:1:\"1\";','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:46:\"CRM_Event_Form_Registration_ParticipantConfirm\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,1,1,1,0,0,'a:0:{}'), + (272,1,'civicrm/event/ical',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','a:2:{i:0;s:19:\"CRM_Event_ICalendar\";i:1;s:3:\"run\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (273,1,'civicrm/event/list',NULL,'Current and Upcoming Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:15:\"view event info\";}i:1;s:3:\"and\";}','s:19:\"CRM_Event_Page_List\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (274,1,'civicrm/event/participant',NULL,'Event Participants List','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:23:\"view event participants\";}i:1;s:3:\"and\";}','s:33:\"CRM_Event_Page_ParticipantListing\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:19:\"CiviEvent Dashboard\";s:3:\"url\";s:22:\"/civicrm/event?reset=1\";}}',NULL,NULL,1,1,1,1,0,0,1,0,0,'a:0:{}'), + (275,1,'civicrm/admin/event',NULL,'Manage Events','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:14:\"access CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:26:\"CRM_Event_Page_ManageEvent\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:136:\"Create and edit event configuration including times, locations, online registration forms, and fees. Links for iCal and RSS syndication.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (276,1,'civicrm/admin/eventTemplate',NULL,'Event Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:28:\"CRM_Admin_Page_EventTemplate\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,375,1,0,0,'a:2:{s:4:\"desc\";s:115:\"Administrators can create Event Templates - which are basically master event records pre-filled with default values\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (277,1,'civicrm/admin/options/event_type',NULL,'Event Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,385,1,0,0,'a:2:{s:4:\"desc\";s:143:\"Use Event Types to categorize your events. Event feeds can be filtered by Event Type and participant searches can use Event Type as a criteria.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (278,1,'civicrm/admin/participant_status',NULL,'Participant Status','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:36:\"CRM_Admin_Page_ParticipantStatusType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,390,1,0,0,'a:2:{s:4:\"desc\";s:154:\"Define statuses for event participants here (e.g. Registered, Attended, Cancelled...). You can then assign statuses and search for participants by status.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (279,1,'civicrm/admin/options/participant_role',NULL,'Participant Role','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:16:\"access CiviEvent\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:138:\"Define participant roles for events here (e.g. Attendee, Host, Speaker...). You can then assign roles and search for participants by role.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (280,1,'civicrm/admin/options/participant_listing',NULL,'Participant Listing Templates','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,398,1,0,0,'a:2:{s:4:\"desc\";s:48:\"Template to control participant listing display.\";s:10:\"adminGroup\";s:9:\"CiviEvent\";}'), + (281,1,'civicrm/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:18:\"Administer CiviCRM\";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\";}'), + (282,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:{}'), + (283,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:{}'), + (284,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:{}'), + (285,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:{}'), + (286,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:{}'), + (287,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:{}'), + (288,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:{}'), + (289,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:{}'), + (290,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:{}'), + (291,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:{}'), + (292,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:{}'), + (293,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:{}'), + (294,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:{}'), + (295,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:{}'), + (296,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:{}'), + (297,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:{}'), + (298,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:{}'), + (299,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:{}'), + (300,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:{}'), + (301,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:{}'), + (302,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:18:\"Administer CiviCRM\";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:{}'), + (303,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:{}'), + (304,1,'civicrm/contribute',NULL,'CiviContribute Dashboard','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:29:\"CRM_Contribute_Page_DashBoard\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,500,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (305,1,'civicrm/contribute/add','action=add','New Contribution','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (306,1,'civicrm/contribute/chart',NULL,'Contribution Summary - Chart View','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_ContributionCharts\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (307,1,'civicrm/contribute/transact',NULL,'CiviContribute','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Controller_Contribution\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,1,0,1,0,0,'a:0:{}'), + (308,1,'civicrm/admin/contribute',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,360,1,0,0,'a:2:{s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (309,1,'civicrm/admin/contribute/settings',NULL,'Title and Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_Settings\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,400,1,0,0,'a:0:{}'), + (310,1,'civicrm/admin/contribute/amount',NULL,'Contribution Amounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Amount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,410,1,0,0,'a:0:{}'), + (311,1,'civicrm/admin/contribute/membership',NULL,'Membership Section','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:31:\"CRM_Member_Form_MembershipBlock\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,420,1,0,0,'a:0:{}'), + (312,1,'civicrm/admin/contribute/custom',NULL,'Include Profiles','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Custom\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (313,1,'civicrm/admin/contribute/thankyou',NULL,'Thank-you and Receipting','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Form_ContributionPage_ThankYou\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,430,1,0,0,'a:0:{}'), + (314,1,'civicrm/admin/contribute/friend',NULL,'Tell a Friend','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:26:\"CRM_Friend_Form_Contribute\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,440,1,0,0,'a:0:{}'), + (315,1,'civicrm/admin/contribute/widget',NULL,'Configure Widget','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_ContributionPage_Widget\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,460,1,0,0,'a:0:{}'), + (316,1,'civicrm/admin/contribute/premium',NULL,'Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:44:\"CRM_Contribute_Form_ContributionPage_Premium\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,470,1,0,0,'a:0:{}'), + (317,1,'civicrm/admin/contribute/addProductToPage',NULL,'Add Products to This Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:47:\"CRM_Contribute_Form_ContributionPage_AddProduct\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,480,1,0,0,'a:0:{}'), + (318,1,'civicrm/admin/contribute/add','action=add','New Contribution Page','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:42:\"CRM_Contribute_Controller_ContributionPage\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (319,1,'civicrm/admin/contribute/managePremiums',NULL,'Manage Premiums','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Page_ManagePremiums\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,365,1,0,0,'a:2:{s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (320,1,'civicrm/admin/financial/financialType',NULL,'Financial Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Page_FinancialType\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,580,1,0,0,'a:2:{s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (321,1,'civicrm/admin/financial/financialType/edit',NULL,'Edit Financial Type','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:32:\"CRM_Financial_Form_FinancialType\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (322,1,'civicrm/payment','action=add','New Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Form_AdditionalPayment\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (323,1,'civicrm/admin/financial/financialAccount',NULL,'Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_FinancialAccount\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,370,1,0,0,'a:2:{s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (324,1,'civicrm/admin/financial/financialAccount/edit',NULL,'Edit Financial Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Form_FinancialAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:18:\"Financial Accounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (325,1,'civicrm/admin/options/payment_instrument',NULL,'Payment Methods','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,380,1,0,0,'a:2:{s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (326,1,'civicrm/admin/options/accept_creditcard',NULL,'Accepted Credit Cards','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,395,1,0,0,'a:2:{s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (327,1,'civicrm/admin/options/soft_credit_type',NULL,'Soft Credit Types','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:22:\"CRM_Admin_Page_Options\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:13:\"Option Groups\";s:3:\"url\";s:30:\"/civicrm/admin/options?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (328,1,'civicrm/contact/view/contribution',NULL,'Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:23:\"CRM_Contribute_Page_Tab\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (329,1,'civicrm/contact/view/contributionrecur',NULL,'Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:37:\"CRM_Contribute_Page_ContributionRecur\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (330,1,'civicrm/contact/view/contribution/additionalinfo',NULL,'Additional Info','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:14:\"access CiviCRM\";i:1;s:15:\"edit my contact\";i:2;s:15:\"view my contact\";}i:1;s:2:\"or\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:15:\"Contact Summary\";s:3:\"url\";s:45:\"/civicrm/contact/view?reset=1&cid=%%cid%%\";}i:2;a:2:{s:5:\"title\";s:13:\"Contributions\";s:3:\"url\";s:42:\"/civicrm/contact/view/contribution?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (331,1,'civicrm/contribute/search',NULL,'Find Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Controller_Search\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,510,1,1,0,'a:0:{}'), + (332,1,'civicrm/contribute/searchBatch',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:37:\"CRM_Contribute_Controller_SearchBatch\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,588,1,1,0,'a:0:{}'), + (333,1,'civicrm/contribute/manage',NULL,'Manage Contribution Pages','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:18:\"administer CiviCRM\";i:1;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:36:\"CRM_Contribute_Page_ContributionPage\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,530,1,1,0,'a:0:{}'), + (334,1,'civicrm/contribute/additionalinfo',NULL,'AdditionalInfo Form','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:34:\"CRM_Contribute_Form_AdditionalInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,0,1,0,0,'a:0:{}'), + (335,1,'civicrm/ajax/permlocation',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','a:2:{i:0;s:27:\"CRM_Core_Page_AJAX_Location\";i:1;s:23:\"getPermissionedLocation\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (336,1,'civicrm/contribute/unsubscribe',NULL,'Cancel Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_CancelSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (337,1,'civicrm/contribute/onbehalf',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:43:\"CRM_Contribute_Form_Contribution_OnBehalfOf\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (338,1,'civicrm/contribute/updatebilling',NULL,'Update Billing Details','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:33:\"CRM_Contribute_Form_UpdateBilling\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (339,1,'civicrm/contribute/updaterecur',NULL,'Update Subscription','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Form_UpdateSubscription\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (340,1,'civicrm/contribute/subscriptionstatus',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:25:\"make online contributions\";}i:1;s:3:\"and\";}','s:38:\"CRM_Contribute_Page_SubscriptionStatus\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (341,1,'civicrm/admin/financial/financialType/accounts',NULL,'Financial Type Accounts','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:3:{i:0;s:25:\"administer CiviCRM system\";i:1;s:23:\"administer CiviCRM data\";i:2;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:39:\"CRM_Financial_Page_FinancialTypeAccount\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}i:2;a:2:{s:5:\"title\";s:15:\"Financial Types\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,581,1,0,0,'a:0:{}'), + (342,1,'civicrm/financial/batch',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:33:\"CRM_Financial_Page_FinancialBatch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,585,1,0,0,'a:0:{}'), + (343,1,'civicrm/financial/financialbatches',NULL,'Accounting Batches','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:24:\"CRM_Financial_Page_Batch\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,586,1,0,0,'a:0:{}'), + (344,1,'civicrm/batchtransaction',NULL,'Accounting Batch','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','s:35:\"CRM_Financial_Page_BatchTransaction\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,600,1,0,0,'a:0:{}'), + (345,1,'civicrm/financial/batch/export',NULL,'Accounting Batch Export','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:19:\"create manual batch\";}i:1;s:3:\"and\";}','s:25:\"CRM_Financial_Form_Export\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:16:\"Accounting Batch\";s:3:\"url\";s:32:\"/civicrm/financial/batch?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,610,1,0,0,'a:0:{}'), + (346,1,'civicrm/payment/view','action=view','View Payment','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:31:\"CRM_Contribute_Page_PaymentInfo\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:11:\"New Payment\";s:3:\"url\";s:39:\"/civicrm/payment?reset=1&action=add\";}}',NULL,NULL,2,1,0,1,0,1,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (347,1,'civicrm/admin/setting/preferences/contribute',NULL,'CiviContribute Component Settings','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:2:{i:0;s:21:\"access CiviContribute\";i:1;s:18:\"administer CiviCRM\";}i:1;s:3:\"and\";}','s:37:\"CRM_Admin_Form_Preferences_Contribute\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:2:{s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:10:\"adminGroup\";s:14:\"CiviContribute\";}'), + (348,1,'civicrm/contribute/invoice',NULL,'PDF Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','a:2:{i:0;s:32:\"CRM_Contribute_Form_Task_Invoice\";i:1;s:11:\"getPrintPDF\";}',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,620,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (349,1,'civicrm/contribute/invoice/email',NULL,'Email Invoice','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:20:\"checkDownloadInvoice\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:32:\"CRM_Contribute_Form_Task_Invoice\";',NULL,'a:3:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}i:2;a:2:{s:5:\"title\";s:11:\"PDF Invoice\";s:3:\"url\";s:35:\"/civicrm/contribute/invoice?reset=1\";}}',NULL,NULL,2,1,0,1,0,630,1,1,0,'a:1:{s:9:\"component\";s:14:\"CiviContribute\";}'), + (350,1,'civicrm/ajax/softcontributionlist',NULL,NULL,'a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:14:\"access CiviCRM\";}i:1;s:3:\"and\";}','a:2:{i:0;s:24:\"CRM_Contribute_Page_AJAX\";i:1;s:23:\"getSoftContributionRows\";}',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (351,1,'civicrm/contribute/contributionrecur-payments',NULL,'Recurring Contribution\'s Payments','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:45:\"CRM_Contribute_Page_ContributionRecurPayments\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (352,1,'civicrm/membership/recurring-contributions',NULL,'Membership Recurring Contributions','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:38:\"CRM_Member_Page_RecurringContributions\";',NULL,'a:1:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}}',NULL,NULL,NULL,1,0,1,0,1,1,0,0,'a:0:{}'), + (353,1,'civicrm/contribute/widget',NULL,'CiviContribute','s:1:\"1\";','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:26:\"CRM_Contribute_Page_Widget\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,1,1,0,0,1,0,0,'a:0:{}'), + (354,1,'civicrm/contribute/task',NULL,'Contribution Task','a:2:{i:0;s:19:\"CRM_Core_Permission\";i:1;s:9:\"checkMenu\";}','a:2:{i:0;a:1:{i:0;s:21:\"access CiviContribute\";}i:1;s:3:\"and\";}','s:30:\"CRM_Contribute_Controller_Task\";',NULL,'a:2:{i:0;a:2:{s:5:\"title\";s:7:\"CiviCRM\";s:3:\"url\";s:16:\"/civicrm?reset=1\";}i:1;a:2:{s:5:\"title\";s:24:\"CiviContribute Dashboard\";s:3:\"url\";s:27:\"/civicrm/contribute?reset=1\";}}',NULL,NULL,2,1,0,1,0,1,1,0,0,'a:0:{}'), + (355,1,'civicrm/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\";}'), + (356,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\";}'), + (357,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:18:\"Administer CiviCRM\";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\";}'), + (358,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:18:\"Administer CiviCRM\";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\";}'), + (359,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:{}'), + (360,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:{}'), + (361,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:{}'), + (362,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:{}'), + (363,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:{}'), + (364,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:18:\"Administer CiviCRM\";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:{}'), + (365,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\";}'), + (366,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:18:\"Administer CiviCRM\";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\";}'), + (367,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:18:\"Administer CiviCRM\";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\";}'), + (368,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:18:\"Administer CiviCRM\";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\";}'), + (369,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:18:\"Administer CiviCRM\";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\";}'), + (370,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:18:\"Administer CiviCRM\";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:{}'), + (371,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:{}'), + (372,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:{}'), + (373,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:{}'), + (374,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:{}'), + (375,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:{}'), + (376,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:{}'), + (377,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:{}'), + (378,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:{}'), + (379,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:{}'), + (380,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:{}'), + (381,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:{}'), + (382,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:{}'), + (383,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:{}'), + (384,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:{}'), + (385,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:{}'), + (386,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:{}'), + (387,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:{}'), + (388,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:{}'), + (389,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:{}'), + (390,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:{}'), + (391,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:{}'), + (392,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:{}'), + (393,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\";}'), + (394,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:{}'), + (395,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:{}'), + (396,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\";}'), + (397,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:{}'), + (398,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:{}'), + (399,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\";}'), + (400,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\";}'), + (401,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:{}'), + (402,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:{}'), + (403,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:{}'), + (404,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:{}'), + (405,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:{}'), + (406,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:{}'), + (407,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:{}'), + (408,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:{}'), + (409,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:{}'), + (410,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:18:\"Administer CiviCRM\";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\";}'), + (411,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:18:\"Administer CiviCRM\";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\";}'), + (412,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:18:\"Administer CiviCRM\";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\";}'), + (413,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:18:\"Administer CiviCRM\";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\";}'), + (414,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:18:\"Administer CiviCRM\";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\";}'), + (415,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:{}'), + (416,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:{}'), + (417,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:{}'), + (418,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:{}'), + (419,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:{}'), + (420,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:{}'), + (421,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:{}'), + (422,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\";}'), + (423,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:{}'), + (424,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:{}'), + (425,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:{}'), + (426,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:18:\"Administer CiviCRM\";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.\";}'), + (427,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:{}'), + (428,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:18:\"Administer CiviCRM\";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\";}'), + (429,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:18:\"Administer CiviCRM\";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\";}'), + (430,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:18:\"Administer CiviCRM\";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\";}'), + (431,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\";}'), + (432,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\";}'), + (433,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\";}'), + (434,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\";}'), + (435,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:18:\"Administer CiviCRM\";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\";}'), + (436,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:18:\"Administer CiviCRM\";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\";}'), + (437,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:18:\"Administer CiviCRM\";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\";}'), + (438,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:18:\"Administer CiviCRM\";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\";}'), + (439,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\";}'), + (440,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\";}'), + (441,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:{}'), + (442,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:{}'), + (443,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:{}'), + (444,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:{}'), + (445,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:{}'), + (446,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:{}'), + (447,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:{}'), + (448,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:{}'), + (449,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:{}'), + (450,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:{}'), + (451,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:18:\"Administer CiviCRM\";s:3:\"url\";s:22:\"/civicrm/admin?reset=1\";}}',NULL,NULL,NULL,1,0,1,1,1,1,0,0,'a:0:{}'), + (452,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:{}'), + (453,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:{}'), + (454,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:{}'), + (455,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:{}'), + (456,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:{}'), + (457,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:{}'), + (458,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:{}'), + (459,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:{}'), + (460,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:18:\"Administer CiviCRM\";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\";}'), + (461,1,'admin',NULL,NULL,NULL,NULL,NULL,NULL,'a:15:{s:6:\"Manage\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{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: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: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:22:\"{weight}.Label Formats\";a:6:{s:5:\"title\";s:13:\"Label Formats\";s:4:\"desc\";s:67:\"Configure Label Formats that are used when creating mailing labels.\";s:2:\"id\";s:12:\"LabelFormats\";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:12:\"Option Lists\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:20:\"{weight}.Grant Types\";a:6:{s:5:\"title\";s:11:\"Grant Types\";s:4:\"desc\";s:148:\"List of types which can be assigned to Grants. (Enable CiviGrant from Administer > System Settings > Enable Components if you want to track grants.)\";s:2:\"id\";s:10:\"GrantTypes\";s:3:\"url\";s:41:\"/civicrm/admin/options/grant_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:9:\"Customize\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:1:{s:19:\"{weight}.Price Sets\";a:6:{s:5:\"title\";s:10:\"Price Sets\";s:4:\"desc\";s:205:\"Price sets allow you to offer multiple options with associated fees (e.g. pre-conference workshops, additional meals, etc.). Configure Price Sets for events which need more than a single set of fee levels.\";s:2:\"id\";s:9:\"PriceSets\";s:3:\"url\";s:28:\"/civicrm/admin/price?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:14:\"CiviContribute\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:9:{s:32:\"{weight}.Personal Campaign Pages\";a:6:{s:5:\"title\";s:23:\"Personal Campaign Pages\";s:4:\"desc\";s:49:\"View and manage existing personal campaign pages.\";s:2:\"id\";s:21:\"PersonalCampaignPages\";s:3:\"url\";s:49:\"/civicrm/admin/pcp?context=contribute&reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:34:\"{weight}.Manage Contribution Pages\";a:6:{s:5:\"title\";s:25:\"Manage Contribution Pages\";s:4:\"desc\";s:242:\"CiviContribute allows you to create and maintain any number of Online Contribution Pages. You can create different pages for different programs or campaigns - and customize text, amounts, types of information collected from contributors, etc.\";s:2:\"id\";s:23:\"ManageContributionPages\";s:3:\"url\";s:33:\"/civicrm/admin/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Manage Premiums\";a:6:{s:5:\"title\";s:15:\"Manage Premiums\";s:4:\"desc\";s:175:\"CiviContribute allows you to configure any number of Premiums which can be offered to contributors as incentives / thank-you gifts. Define the premiums you want to offer here.\";s:2:\"id\";s:14:\"ManagePremiums\";s:3:\"url\";s:48:\"/civicrm/admin/contribute/managePremiums?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Financial Types\";a:6:{s:5:\"title\";s:15:\"Financial Types\";s:4:\"desc\";s:64:\"Formerly civicrm_contribution_type merged into this table in 4.1\";s:2:\"id\";s:14:\"FinancialTypes\";s:3:\"url\";s:46:\"/civicrm/admin/financial/financialType?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:27:\"{weight}.Financial Accounts\";a:6:{s:5:\"title\";s:18:\"Financial Accounts\";s:4:\"desc\";s:128:\"Financial types are used to categorize contributions for reporting and accounting purposes. These are also referred to as Funds.\";s:2:\"id\";s:17:\"FinancialAccounts\";s:3:\"url\";s:49:\"/civicrm/admin/financial/financialAccount?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Payment Methods\";a:6:{s:5:\"title\";s:15:\"Payment Methods\";s:4:\"desc\";s:224:\"You may choose to record the payment instrument used for each contribution. Common payment methods are installed by default (e.g. Check, Cash, Credit Card...). If your site requires additional payment methods, add them here.\";s:2:\"id\";s:14:\"PaymentMethods\";s:3:\"url\";s:49:\"/civicrm/admin/options/payment_instrument?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:30:\"{weight}.Accepted Credit Cards\";a:6:{s:5:\"title\";s:21:\"Accepted Credit Cards\";s:4:\"desc\";s:94:\"Credit card options that will be offered to contributors using your Online Contribution pages.\";s:2:\"id\";s:19:\"AcceptedCreditCards\";s:3:\"url\";s:48:\"/civicrm/admin/options/accept_creditcard?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Soft Credit Types\";a:6:{s:5:\"title\";s:17:\"Soft Credit Types\";s:4:\"desc\";s:86:\"Soft Credit Types that will be offered to contributors during soft credit contribution\";s:2:\"id\";s:15:\"SoftCreditTypes\";s:3:\"url\";s:47:\"/civicrm/admin/options/soft_credit_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:42:\"{weight}.CiviContribute Component Settings\";a:6:{s:5:\"title\";s:33:\"CiviContribute Component Settings\";s:4:\"desc\";s:42:\"Configure global CiviContribute behaviors.\";s:2:\"id\";s:31:\"CiviContributeComponentSettings\";s:3:\"url\";s:53:\"/civicrm/admin/setting/preferences/contribute?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:8:\"CiviCase\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:5:{s:26:\"{weight}.CiviCase Settings\";a:6:{s:5:\"title\";s:17:\"CiviCase Settings\";s:4:\"desc\";N;s:2:\"id\";s:16:\"CiviCaseSettings\";s:3:\"url\";s:35:\"/civicrm/admin/setting/case?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:19:\"{weight}.Case Types\";a:6:{s:5:\"title\";s:10:\"Case Types\";s:4:\"desc\";s:137:\"List of types which can be assigned to Cases. (Enable the Cases tab from System Settings - Enable Components if you want to track cases.)\";s:2:\"id\";s:9:\"CaseTypes\";s:3:\"url\";s:40:\"/civicrm/admin/options/case_type?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Redaction Rules\";a:6:{s:5:\"title\";s:15:\"Redaction Rules\";s:4:\"desc\";s:223:\"List of rules which can be applied to user input strings so that the redacted output can be recognized as repeated instances of the same string or can be identified as a \"semantic type of the data element\" within case data.\";s:2:\"id\";s:14:\"RedactionRules\";s:3:\"url\";s:45:\"/civicrm/admin/options/redaction_rule?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:22:\"{weight}.Case Statuses\";a:6:{s:5:\"title\";s:13:\"Case Statuses\";s:4:\"desc\";s:48:\"List of statuses that can be assigned to a case.\";s:2:\"id\";s:12:\"CaseStatuses\";s:3:\"url\";s:42:\"/civicrm/admin/options/case_status?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:26:\"{weight}.Encounter Mediums\";a:6:{s:5:\"title\";s:17:\"Encounter Mediums\";s:4:\"desc\";s:26:\"List of encounter mediums.\";s:2:\"id\";s:16:\"EncounterMediums\";s:3:\"url\";s:47:\"/civicrm/admin/options/encounter_medium?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}s:10:\"CiviReport\";a:2:{s:12:\"component_id\";N;s:6:\"fields\";a:3:{s:40:\"{weight}.Create New Report from Template\";a:6:{s:5:\"title\";s:31:\"Create New Report from Template\";s:4:\"desc\";s:49:\"Component wise listing of all available templates\";s:2:\"id\";s:27:\"CreateNewReportfromTemplate\";s:3:\"url\";s:43:\"/civicrm/admin/report/template/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:25:\"{weight}.Manage Templates\";a:6:{s:5:\"title\";s:16:\"Manage Templates\";s:4:\"desc\";s:45:\"Browse, Edit and Delete the Report templates.\";s:2:\"id\";s:15:\"ManageTemplates\";s:3:\"url\";s:53:\"/civicrm/admin/report/options/report_template?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}s:24:\"{weight}.Reports Listing\";a:6:{s:5:\"title\";s:15:\"Reports Listing\";s:4:\"desc\";s:60:\"Browse existing report, change report criteria and settings.\";s:2:\"id\";s:14:\"ReportsListing\";s:3:\"url\";s:34:\"/civicrm/admin/report/list?reset=1\";s:4:\"icon\";N;s:5:\"extra\";N;}}}}',NULL,NULL,NULL,1,0,1,1,1,1,1,0,'a:0:{}'); /*!40000 ALTER TABLE `civicrm_menu` ENABLE KEYS */; UNLOCK TABLES; @@ -5383,70 +5313,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,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 !empty($formValues.receipt_text)}\n{$formValues.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}{/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} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\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 {if !empty($formValues.receipt_text)}\n <p>{$formValues.receipt_text|htmlize}</p>\n {else}\n <p>{ts}Below you will find a receipt 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 <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 {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.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 {/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,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 !empty($formValues.receipt_text)}\n{$formValues.receipt_text}\n{else}{ts}Below you will find a receipt for this contribution.{/ts}{/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} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency}\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 {if !empty($formValues.receipt_text)}\n <p>{$formValues.receipt_text|htmlize}</p>\n {else}\n <p>{ts}Below you will find a receipt 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 <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 {$formValues.total_amount-$totalTaxAmount|crmMoney:\'{contribution.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 {/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,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 !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,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 !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,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 <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 <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.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{else}\n{ts}No{/ts} {$taxTerm}: {$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 {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\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,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.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{else}\n{ts}No{/ts} {$taxTerm}: {$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 {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\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,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 !empty($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 !empty($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|boolean}{/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 !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\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($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 !empty($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 !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{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 !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:$currency|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:$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 !empty($dataArray)}\n{if isset($totalAmount) and isset($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{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\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 isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($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 !empty($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 !empty($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|boolean}{/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 !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 !empty($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 title=$event.title pageURL=$eventUrl}\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 !empty($event.is_monetary) and empty($isRequireApproval)}\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 !empty($isPrimary)}\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} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n </td>\n </tr>\n {/if}\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 !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 {$tdfirstStyle}>\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 {$tdStyle} align=\"middle\">\n {$line.qty}\n </td>\n <td {$tdStyle}>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if !empty($dataArray)}\n <td {$tdStyle}>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td {$tdStyle}>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td {$tdStyle}>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\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 !empty($individual)}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if isset($totalAmount) and isset($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 {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\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 isset($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 !empty($isPrimary)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {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,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 !empty($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 !empty($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|boolean}{/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 !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\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($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 !empty($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 !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{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 !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:$currency|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:$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 !empty($dataArray)}\n{if isset($totalAmount) and isset($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{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\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 isset($totalTaxAmount)}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n{if !empty($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 !empty($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 !empty($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|boolean}{/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 !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 !empty($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 title=$event.title pageURL=$eventUrl}\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 !empty($event.is_monetary) and empty($isRequireApproval)}\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 !empty($isPrimary)}\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} {if !empty($part.$priceset)}{$part.$priceset.info}{/if}\n </td>\n </tr>\n {/if}\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 !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 {$tdfirstStyle}>\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 {$tdStyle} align=\"middle\">\n {$line.qty}\n </td>\n <td {$tdStyle}>\n {$line.unit_price|crmMoney:$currency}\n </td>\n {if !empty($dataArray)}\n <td {$tdStyle}>\n {$line.unit_price*$line.qty|crmMoney}\n </td>\n {if $line.tax_rate || $line.tax_amount != \"\"}\n <td {$tdStyle}>\n {$line.tax_rate|string_format:\"%.2f\"}%\n </td>\n <td {$tdStyle}>\n {$line.tax_amount|crmMoney}\n </td>\n {else}\n <td></td>\n <td></td>\n {/if}\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 !empty($individual)}\n <tr {$participantTotal}>\n <td colspan=3>{ts}Participant Total{/ts}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td>\n <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td>\n </tr>\n {/if}\n </table>\n </td>\n </tr>\n {/if}\n {/foreach}\n {if !empty($dataArray)}\n {if isset($totalAmount) and isset($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 {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\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 isset($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 !empty($isPrimary)}\n <tr>\n <td {$labelStyle}>\n {ts}Total Amount{/ts}\n </td>\n <td {$valueStyle}>\n {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {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,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{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,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{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,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 {$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','{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{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" 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 {$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','{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{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" 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), + (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,814,'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,814,'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,815,'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,815,'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,816,'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,816,'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,817,'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,817,'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,818,'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,818,'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,819,'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,819,'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,820,'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,820,'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,821,'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,821,'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,822,'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,822,'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,823,'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,823,'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,824,'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,824,'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,825,'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,825,'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,826,'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,826,'pcp_owner_notify',0,1,0,NULL), + (27,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n {if $paymentsComplete}\n <p>{ts}Thank you for completing this contribution.{/ts}</p>\n {/if}\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney:$currency}\n </td>\n </tr>\n {else}\n <tr>\n <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n {if !empty($paidBy)}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n <tr>\n <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n </tr>\n {if $totalAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Fee{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $totalPaid}\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $amountOwed}\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney:$currency}\n </td> {* This will be zero after final payment. *}\n </tr>\n {/if}\n </table>\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !empty($billingName) || !empty($address)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if !empty($billingName)}{$billingName}{/if}<br />\n {if !empty($address)}{$address|nl2br}{/if}\n </td>\n </tr>\n {/if}\n {if !empty($credit_card_number)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $component eq \'event\'}\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if !empty($event.participant_role)}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n </table>\n </td>\n </tr>\n\n </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',1,0,0,NULL), + (28,'Additional Payment Receipt or Refund Notification','{if $isRefund}{ts}Refund Notification{/ts}{else}{ts}Payment Receipt{/ts}{/if}{if $component eq \'event\'} - {$event.title}{/if} - {contact.display_name}\n','{if $emailGreeting}{$emailGreeting},\n{/if}\n\n{if $isRefund}\n{ts}A refund has been issued based on changes in your registration selections.{/ts}\n{else}\n{ts}Below you will find a receipt for this payment.{/ts}\n{/if}\n{if $paymentsComplete}\n{ts}Thank you for completing this payment.{/ts}\n{/if}\n\n{if $isRefund}\n===============================================================================\n\n{ts}Refund Details{/ts}\n\n===============================================================================\n{ts}This Refund Amount{/ts}: {$refundAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n\n{else}\n===============================================================================\n\n{ts}Payment Details{/ts}\n\n===============================================================================\n{ts}This Payment Amount{/ts}: {$paymentAmount|crmMoney:$currency}\n------------------------------------------------------------------------------------\n{/if}\n{if $receive_date}\n{ts}Transaction Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n{/if}\n{if !empty($paidBy)}\n{ts}Paid By{/ts}: {$paidBy}\n{/if}\n{if !empty($checkNumber)}\n{ts}Check Number{/ts}: {$checkNumber}\n{/if}\n\n===============================================================================\n\n{ts}Contribution Details{/ts}\n\n===============================================================================\n{if $totalAmount}\n{ts}Total Fee{/ts}: {$totalAmount|crmMoney:$currency}\n{/if}\n{if $totalPaid}\n{ts}Total Paid{/ts}: {$totalPaid|crmMoney:$currency}\n{/if}\n{if $amountOwed}\n{ts}Balance Owed{/ts}: {$amountOwed|crmMoney:$currency} {* This will be zero after final payment. *}\n{/if}\n\n\n{if !empty($billingName) || !empty($address)}\n\n===============================================================================\n\n{ts}Billing Name and Address{/ts}\n\n===============================================================================\n{if !empty($billingName)}\n{$billingName}\n{/if}\n{if !empty($address)}\n{$address}\n{/if}\n{/if}\n\n{if !empty($credit_card_number)}\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===============================================================================\n\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n{if $component eq \'event\'}\n===============================================================================\n\n{ts}Event Information and Location{/ts}\n\n===============================================================================\n\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{if !empty($event.participant_role)}\n{ts}Participant Role{/ts}: {$event.participant_role}\n{/if}\n\n{if !empty($isShowLocation)}\n{$location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n{/foreach}\n{foreach from=$location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n{/if}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n{capture assign=emptyBlockStyle }style=\"padding: 10px; border-bottom: 1px solid #999;background-color: #f7f7f7;\"{/capture}\n{capture assign=emptyBlockValueStyle }style=\"padding: 10px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $isRefund}\n <p>{ts}A refund has been issued based on changes in your registration selections.{/ts}</p>\n {else}\n <p>{ts}Below you will find a receipt for this payment.{/ts}</p>\n {if $paymentsComplete}\n <p>{ts}Thank you for completing this contribution.{/ts}</p>\n {/if}\n {/if}\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if $isRefund}\n <tr>\n <th {$headerStyle}>{ts}Refund Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Refund Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$refundAmount|crmMoney:$currency}\n </td>\n </tr>\n {else}\n <tr>\n <th {$headerStyle}>{ts}Payment Details{/ts}</th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}This Payment Amount{/ts}\n </td>\n <td {$valueStyle}>\n {$paymentAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $receive_date}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction Date{/ts}\n </td>\n <td {$valueStyle}>\n {$receive_date|crmDate}\n </td>\n </tr>\n {/if}\n {if !empty($trxn_id)}\n <tr>\n <td {$labelStyle}>\n {ts}Transaction #{/ts}\n </td>\n <td {$valueStyle}>\n {$trxn_id}\n </td>\n </tr>\n {/if}\n {if !empty($paidBy)}\n <tr>\n <td {$labelStyle}>\n {ts}Paid By{/ts}\n </td>\n <td {$valueStyle}>\n {$paidBy}\n </td>\n </tr>\n {/if}\n {if !empty($checkNumber)}\n <tr>\n <td {$labelStyle}>\n {ts}Check Number{/ts}\n </td>\n <td {$valueStyle}>\n {$checkNumber}\n </td>\n </tr>\n {/if}\n\n <tr>\n <th {$headerStyle}>{ts}Contribution Details{/ts}</th>\n </tr>\n {if $totalAmount}\n <tr>\n <td {$labelStyle}>\n {ts}Total Fee{/ts}\n </td>\n <td {$valueStyle}>\n {$totalAmount|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $totalPaid}\n <tr>\n <td {$labelStyle}>\n {ts}Total Paid{/ts}\n </td>\n <td {$valueStyle}>\n {$totalPaid|crmMoney:$currency}\n </td>\n </tr>\n {/if}\n {if $amountOwed}\n <tr>\n <td {$labelStyle}>\n {ts}Balance Owed{/ts}\n </td>\n <td {$valueStyle}>\n {$amountOwed|crmMoney:$currency}\n </td> {* This will be zero after final payment. *}\n </tr>\n {/if}\n </table>\n\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n {if !empty($billingName) || !empty($address)}\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {if !empty($billingName)}{$billingName}{/if}<br />\n {if !empty($address)}{$address|nl2br}{/if}\n </td>\n </tr>\n {/if}\n {if !empty($credit_card_number)}\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires:{/ts} {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n </td>\n </tr>\n {/if}\n {if $component eq \'event\'}\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"%Y%m%d\" == $event.event_start_date|crmDate:\"%Y%m%d\"}{$event.event_end_date|crmDate:0:1}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n\n {if !empty($event.participant_role)}\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}\n </td>\n <td {$valueStyle}>\n {$event.participant_role}\n </td>\n </tr>\n {/if}\n\n {if !empty($isShowLocation)}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($location.phone.1.phone) || !empty($location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}\n {$phone.phone_type_display}\n {else}\n {ts}Phone{/ts}\n {/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone} {if $phone.phone_ext} {ts}ext.{/ts} {$phone.phone_ext}{/if}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if} {*phone block close*}\n {/if}\n </table>\n </td>\n </tr>\n\n </table>\n\n </body>\n</html>\n',1,827,'payment_or_refund_notification',0,1,0,NULL), + (29,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={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,828,'event_offline_receipt',1,0,0,NULL), + (30,'Events - Registration Confirmation and Receipt (off-line)','{ts}Event Confirmation{/ts} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={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,828,'event_offline_receipt',0,1,0,NULL), + (31,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={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|boolean}{/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|boolean}{/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,829,'event_online_receipt',1,0,0,NULL), + (32,'Events - Registration Confirmation and Receipt (on-line)','{if !empty($isOnWaitlist)}{ts}Wait List Confirmation{/ts}{elseif !empty($isRequireApproval)}{ts}Registration Request Confirmation{/ts}{else}{ts}Registration Confirmation{/ts}{/if} - {event.title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($event.confirm_email_text) AND (empty($isOnWaitlist) AND empty($isRequireApproval))}\n{$event.confirm_email_text}\n\n{else}\n {ts}Thank you for your registration.{/ts}\n {if $participant_status}{ts 1=$participant_status}This is a confirmation that your registration has been received and your status has been updated to %1.{/ts}\n {else}{if !empty($isOnWaitlist)}{ts}This is a confirmation that your registration has been received and your status has been updated to waitlisted.{/ts}{else}{ts}This is a confirmation that your registration has been received and your status has been updated to registered.{/ts}{/if}\n {/if}\n{/if}\n\n{if !empty($isOnWaitlist)}\n==========================================================={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|boolean}{/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|boolean}{/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,829,'event_online_receipt',0,1,0,NULL), + (33,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $is_pay_later}\n <p>\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n </p>\n {else}\n <p>\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n </p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p>\n {/if}\n\n <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$billing_name}<br />\n {$billing_street_address}<br />\n {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n <br/>\n {$email}\n </td>\n </tr>\n </table>\n{/if}\n{if $credit_card_type}\n <p> </p>\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n </td>\n </tr>\n </table>\n{/if}\n{if !empty($source)}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"700\">\n <thead>\n <tr>\n{if $line_items}\n <th style=\"text-align: left;\">\n Event\n </th>\n <th style=\"text-align: left;\">\n Participants\n </th>\n{/if}\n <th style=\"text-align: left;\">\n Price\n </th>\n <th style=\"text-align: left;\">\n Total\n </th>\n </tr>\n </thead>\n <tbody>\n {foreach from=$line_items item=line_item}\n <tr>\n <td style=\"width: 220px\">\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}<br /><br />\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n </td>\n <td style=\"width: 180px\">\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:<br/>\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n </td>\n <td style=\"width: 100px\">\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n <td style=\"width: 100px\">\n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {/foreach}\n </tbody>\n <tfoot>\n {if $discounts}\n <tr>\n <td>\n </td>\n <td>\n </td>\n <td>\n Subtotal:\n </td>\n <td>\n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {foreach from=$discounts key=myId item=i}\n <tr>\n <td>\n {$i.title}\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n -{$i.amount}\n </td>\n </tr>\n {/foreach}\n {/if}\n <tr>\n{if $line_items}\n <td>\n </td>\n <td>\n </td>\n{/if}\n <td>\n <strong>Total:</strong>\n </td>\n <td>\n <strong> {$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n </td>\n </tr>\n </tfoot>\n </table>\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n </body>\n</html>\n',1,830,'event_registration_receipt',1,0,0,NULL), + (34,'Events - Receipt only','Receipt for {if $events_in_cart} Event Registration{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $is_pay_later}\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n{else}\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n{/if}\n\n{if $is_pay_later}\n {$pay_later_receipt}\n{/if}\n\n Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:\n\n{if $billing_name}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billing_name}\n\n{$billing_street_address}\n\n{$billing_city}, {$billing_state} {$billing_postal_code}\n\n{$email}\n{/if}\n\n{if !empty($source)}\n{$source}\n{/if}\n\n\n{foreach from=$line_items item=line_item}\n{$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})\n{if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n{$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n\n Quantity: {$line_item.num_participants}\n\n{if $line_item.num_participants > 0}\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\n{if $line_item.num_waiting_participants > 0}\n Waitlisted:\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}\n {/foreach}\n{/if}\nCost: {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\nTotal For This Event: {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n\n{/foreach}\n\n{if $discounts}\nSubtotal: {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n--------------------------------------\nDiscounts\n{foreach from=$discounts key=myId item=i}\n {$i.title}: -{$i.amount|crmMoney:$currency|string_format:\"%10s\"}\n{/foreach}\n{/if}\n======================================\nTotal: {$total|crmMoney:$currency|string_format:\"%10s\"}\n\n{if $credit_card_type}\n===========================================================\n{ts}Payment Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n{/if}\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n </head>\n <body>\n {capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n {capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n {capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n {if $is_pay_later}\n <p>\n This is being sent to you as an acknowledgement that you have registered one or more members for the following workshop, event or purchase. Please note, however, that the status of your payment is pending, and the registration for this event will not be completed until your payment is received.\n </p>\n {else}\n <p>\n This is being sent to you as a {if !empty($is_refund)}confirmation of refund{else}receipt of payment made{/if} for the following workshop, event registration or purchase.\n </p>\n {/if}\n\n {if $is_pay_later}\n <p>{$pay_later_receipt}</p>\n {/if}\n\n <p>Your order number is #{$transaction_id}. {if !empty($line_items) && empty($is_refund)} Information about the workshops will be sent separately to each participant.{/if}\n Here\'s a summary of your transaction placed on {$transaction_date|crmDate:\"%D %I:%M %p %Z\"}:</p>\n\n{if $billing_name}\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$billing_name}<br />\n {$billing_street_address}<br />\n {$billing_city}, {$billing_state} {$billing_postal_code}<br/>\n <br/>\n {$email}\n </td>\n </tr>\n </table>\n{/if}\n{if $credit_card_type}\n <p> </p>\n <table class=\"billing-info\">\n <tr>\n <th style=\"text-align: left;\">\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date.M}/{$credit_card_exp_date.Y}\n </td>\n </tr>\n </table>\n{/if}\n{if !empty($source)}\n <p> </p>\n {$source}\n{/if}\n <p> </p>\n <table width=\"700\">\n <thead>\n <tr>\n{if $line_items}\n <th style=\"text-align: left;\">\n Event\n </th>\n <th style=\"text-align: left;\">\n Participants\n </th>\n{/if}\n <th style=\"text-align: left;\">\n Price\n </th>\n <th style=\"text-align: left;\">\n Total\n </th>\n </tr>\n </thead>\n <tbody>\n {foreach from=$line_items item=line_item}\n <tr>\n <td style=\"width: 220px\">\n {$line_item.event->title} ({$line_item.event->start_date|crmDate:\"%D\"})<br />\n {if $line_item.event->is_show_location}\n {$line_item.location.address.1.display|nl2br}\n {/if}{*End of isShowLocation condition*}<br /><br />\n {$line_item.event->start_date|crmDate:\"%D %I:%M %p\"} - {$line_item.event->end_date|crmDate:\"%I:%M %p\"}\n </td>\n <td style=\"width: 180px\">\n {$line_item.num_participants}\n {if $line_item.num_participants > 0}\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n {if $line_item.num_waiting_participants > 0}\n Waitlisted:<br/>\n <div class=\"participants\" style=\"padding-left: 10px;\">\n {foreach from=$line_item.waiting_participants item=participant}\n {$participant.display_name}<br />\n {/foreach}\n </div>\n {/if}\n </td>\n <td style=\"width: 100px\">\n {$line_item.cost|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n <td style=\"width: 100px\">\n {$line_item.amount|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {/foreach}\n </tbody>\n <tfoot>\n {if $discounts}\n <tr>\n <td>\n </td>\n <td>\n </td>\n <td>\n Subtotal:\n </td>\n <td>\n {$sub_total|crmMoney:$currency|string_format:\"%10s\"}\n </td>\n </tr>\n {foreach from=$discounts key=myId item=i}\n <tr>\n <td>\n {$i.title}\n </td>\n <td>\n </td>\n <td>\n </td>\n <td>\n -{$i.amount}\n </td>\n </tr>\n {/foreach}\n {/if}\n <tr>\n{if $line_items}\n <td>\n </td>\n <td>\n </td>\n{/if}\n <td>\n <strong>Total:</strong>\n </td>\n <td>\n <strong> {$total|crmMoney:$currency|string_format:\"%10s\"}</strong>\n </td>\n </tr>\n </tfoot>\n </table>\n\n If you have questions about the status of your registration or purchase please feel free to contact us.\n </body>\n</html>\n',1,830,'event_registration_receipt',0,1,0,NULL), + (35,'Events - Registration Cancellation Notice','{ts 1=$event.event_title}Event Registration Cancelled for %1{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts}Your Event Registration has been cancelled.{/ts}\n\n\n===========================================================\n{ts}Event Information and Location{/ts}\n\n===========================================================\n{$event.event_title}\n{$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n\n{ts}Participant Role{/ts}: {participant.role_id:label}\n\n{if $isShowLocation}\n{$event.location.address.1.display|strip_tags:false}\n{/if}{*End of isShowLocation condition*}\n\n{if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n\n{ts}Event Contacts:{/ts}\n{foreach from=$event.location.phone item=phone}\n{if $phone.phone}\n\n{if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}: {$phone.phone}{/if}\n{/foreach}\n{foreach from=$event.location.email item=eventEmail}\n{if $eventEmail.email}\n\n{ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach}\n{/if}\n\n{if \'{contact.email}\'}\n\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{contact.email}\n{/if}\n\n{if !empty(\'{participant.register_date}\')}\n{ts}Registration Date{/ts}: {participant.register_date}\n{/if}\n\n{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts}Your Event Registration has been cancelled.{/ts}</p>\n </td>\n </tr>\n <tr>\n <td>\n <table style=\"border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse; width:100%;\">\n <tr>\n <th {$headerStyle}>\n {ts}Event Information and Location{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.event_title}<br />\n {$event.event_start_date|crmDate}{if $event.event_end_date}-{if $event.event_end_date|crmDate:\"shortdate\" == $event.event_start_date|crmDate:\"shortdate\"}{$event.event_end_date|crmDate:\"Time\"}{else}{$event.event_end_date|crmDate}{/if}{/if}\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Participant Role{/ts}:\n </td>\n <td {$valueStyle}>\n {participant.role_id:label}\n </td>\n </tr>\n\n {if $isShowLocation}\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$event.location.address.1.display|nl2br}\n </td>\n </tr>\n {/if}\n\n {if !empty($event.location.phone.1.phone) || !empty($event.location.email.1.email)}\n <tr>\n <td colspan=\"2\" {$labelStyle}>\n {ts}Event Contacts:{/ts}\n </td>\n </tr>\n {foreach from=$event.location.phone item=phone}\n {if $phone.phone}\n <tr>\n <td {$labelStyle}>\n {if $phone.phone_type}{$phone.phone_type_display}{else}{ts}Phone{/ts}{/if}\n </td>\n <td {$valueStyle}>\n {$phone.phone}\n </td>\n </tr>\n {/if}\n {/foreach}\n {foreach from=$event.location.email item=eventEmail}\n {if $eventEmail.email}\n <tr>\n <td {$labelStyle}>\n {ts}Email{/ts}\n </td>\n <td {$valueStyle}>\n {$eventEmail.email}\n </td>\n </tr>\n {/if}\n {/foreach}\n {/if}\n\n {if \'{contact.email}\'}\n <tr>\n <th {$headerStyle}>\n {ts}Registered Email{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {contact.email}\n </td>\n </tr>\n {/if}\n\n {if !empty(\'{participant.register_date}\')}\n <tr>\n <td {$labelStyle}>\n {ts}Registration Date{/ts}\n </td>\n <td {$valueStyle}>\n {participant.register_date}\n </td>\n </tr>\n {/if}\n\n </table>\n </td>\n </tr>\n\n <tr>\n <td>\n <p>{ts 1=\'{domain.phone}\' 2=\'{domain.email}\'}Please contact us at %1 or send email to %2 if you have questions.{/ts}</p>\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,831,'participant_cancelled',1,0,0,NULL), + (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,831,'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,832,'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,832,'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,833,'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,833,'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,834,'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,834,'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,835,'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,835,'friend',0,1,0,NULL), + (45,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total+$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,836,'membership_offline_receipt',1,0,0,NULL), + (46,'Memberships - Signup and Renewal Receipts (off-line)','{if $receiptType EQ \'membership signup\'}\n{ts}Membership Confirmation and Receipt{/ts}\n{elseif $receiptType EQ \'membership renewal\'}\n{ts}Membership Renewal Confirmation and Receipt{/ts}\n{/if} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{if $receipt_text}\n{$receipt_text}\n{else}{ts}Thank you for this contribution.{/ts}{/if}\n\n{if !$isShowLineItems}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {membership.membership_type_id:name}\n{/if}\n{if \'{membership.status_id:name}\' !== \'Cancelled\'}\n{if !$isShowLineItems}\n{ts}Membership Start Date{/ts}: {membership.start_date|crmDate:\"Full\"}\n{ts}Membership Expiration Date{/ts}: {membership.end_date|crmDate:\"Full\"}\n{/if}\n\n{if {contribution.total_amount|boolean}}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if {contribution.financial_type_id|boolean}}\n{ts}Financial Type{/ts}: {contribution.financial_type_id:label}\n{/if}\n{if $isShowLineItems}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if $isShowTax && \'{contribution.tax_amount|boolean}\'}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$lineItems item=line}\n{line.title} {$line.line_total|crmMoney|string_format:\"%10s\"} {if $isShowTax && {contribution.tax_amount|boolean}} {$line.unit_price*$line.qty|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:\'{contribution.currency}\'|string_format:\"%10s\"} {else} {/if} {$line.line_total+$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,836,'membership_offline_receipt',0,1,0,NULL), + (47,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{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,837,'membership_online_receipt',1,0,0,NULL), + (48,'Memberships - Receipt (on-line)','{if \'{contribution.contribution_status_id:name}\' === \'Pending\'}{ts}Invoice{/ts}{else}{ts}Receipt{/ts}{/if} - {$title} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n{if !empty($receipt_text)}\n{$receipt_text}\n{/if}\n{if $is_pay_later}\n\n===========================================================\n{$pay_later_receipt}\n===========================================================\n{/if}\n\n{if $membership_assign && !$useForMember}\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Type{/ts}: {$membership_name}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n{/if}\n{if $amount}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{if !$useForMember && isset($membership_amount) && !empty($is_quick_config)}\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{if $amount && !$is_separate_payment }\n{ts}Contribution Amount{/ts}: {$amount|crmMoney}\n-------------------------------------------\n{ts}Total{/ts}: {$amount+$membership_amount|crmMoney}\n{/if}\n{elseif !$useForMember && !empty($lineItem) and !empty($priceSetID) & empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n---------------------------------------------------------\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_qty}{ts}Qty{/ts}{/capture}\n{capture assign=ts_each}{ts}Each{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_qty|string_format:\"%5s\"} {$ts_each|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"}\n----------------------------------------------------------\n{foreach from=$value item=line}\n{$line.description|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.qty|string_format:\"%5s\"} {$line.unit_price|crmMoney|string_format:\"%10s\"} {$line.line_total|crmMoney|string_format:\"%10s\"}\n{/foreach}\n{/foreach}\n\n{ts}Total Amount{/ts}: {$amount|crmMoney}\n{else}\n{if $useForMember && $lineItem && empty($is_quick_config)}\n{foreach from=$lineItem item=value key=priceset}\n{capture assign=ts_item}{ts}Item{/ts}{/capture}\n{capture assign=ts_total}{ts}Fee{/ts}{/capture}\n{if !empty($dataArray)}\n{capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture}\n{capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture}\n{capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture}\n{capture assign=ts_total}{ts}Total{/ts}{/capture}\n{/if}\n{capture assign=ts_start_date}{ts}Membership Start Date{/ts}{/capture}\n{capture assign=ts_end_date}{ts}Membership Expiration Date{/ts}{/capture}\n{$ts_item|string_format:\"%-30s\"} {$ts_total|string_format:\"%10s\"} {if !empty($dataArray)} {$ts_subtotal|string_format:\"%10s\"} {$ts_taxRate|string_format:\"%10s\"} {$ts_taxAmount|string_format:\"%10s\"} {$ts_total|string_format:\"%10s\"} {/if} {$ts_start_date|string_format:\"%20s\"} {$ts_end_date|string_format:\"%20s\"}\n--------------------------------------------------------------------------------------------------\n\n{foreach from=$value item=line}\n{capture assign=ts_item}{if $line.html_type eq \'Text\'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:\"...\"|string_format:\"%-30s\"} {$line.line_total|crmMoney|string_format:\"%10s\"} {if !empty($dataArray)} {$line.unit_price*$line.qty|crmMoney:$currency|string_format:\"%10s\"} {if $line.tax_rate || $line.tax_amount != \"\"} {$line.tax_rate|string_format:\"%.2f\"} % {$line.tax_amount|crmMoney:$currency|string_format:\"%10s\"} {else} {/if} {$line.line_total+$line.tax_amount|crmMoney|string_format:\"%10s\"} {/if} {$line.start_date|string_format:\"%20s\"} {$line.end_date|string_format:\"%20s\"}\n{/foreach}\n{/foreach}\n\n{if !empty($dataArray)}\n{ts}Amount before Tax:{/ts} {$amount-$totalTaxAmount|crmMoney:$currency}\n\n{foreach from=$dataArray item=value key=priceset}\n{if $priceset || $priceset == 0}\n{$taxTerm} {$priceset|string_format:\"%.2f\"}%: {$value|crmMoney:$currency}\n{else}\n{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency}\n{/if}\n{/foreach}\n{/if}\n--------------------------------------------------------------------------------------------------\n{/if}\n\n{if $totalTaxAmount}\n{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency}\n{/if}\n\n{ts}Amount{/ts}: {$amount|crmMoney} {if isset($amount_level) } - {$amount_level} {/if}\n{/if}\n{elseif isset($membership_amount)}\n===========================================================\n{ts}Membership Fee{/ts}\n\n===========================================================\n{ts 1=$membership_name}%1 Membership{/ts}: {$membership_amount|crmMoney}\n{/if}\n\n{if !empty($receive_date)}\n\n{ts}Date{/ts}: {$receive_date|crmDate}\n{/if}\n{if !empty($is_monetary) and !empty($trxn_id)}\n{ts}Transaction #{/ts}: {$trxn_id}\n\n{/if}\n{if !empty($membership_trx_id)}\n{ts}Membership Transaction #{/ts}: {$membership_trx_id}\n\n{/if}\n{if !empty($is_recur)}\n{ts}This membership will be renewed automatically.{/ts}\n{if $cancelSubscriptionUrl}\n\n{ts 1=$cancelSubscriptionUrl}You can cancel the auto-renewal option by visiting this web page: %1.{/ts}\n\n{/if}\n\n{if $updateSubscriptionBillingUrl}\n\n{ts 1=$updateSubscriptionBillingUrl}You can update billing details for this automatically renewed membership by <a href=\"%1\">visiting this web page</a>.{/ts}\n{/if}\n{/if}\n\n{if $honor_block_is_active }\n===========================================================\n{$soft_credit_type}\n===========================================================\n{foreach from=$honoreeProfile item=value key=label}\n{$label}: {$value}\n{/foreach}\n\n{/if}\n{if !empty($pcpBlock)}\n===========================================================\n{ts}Personal Campaign Page{/ts}\n\n===========================================================\n{ts}Display In Honor Roll{/ts}: {if $pcp_display_in_roll}{ts}Yes{/ts}{else}{ts}No{/ts}{/if}\n\n{if $pcp_roll_nickname}{ts}Nickname{/ts}: {$pcp_roll_nickname}{/if}\n\n{if $pcp_personal_note}{ts}Personal Note{/ts}: {$pcp_personal_note}{/if}\n\n{/if}\n{if !empty($onBehalfProfile)}\n===========================================================\n{ts}On Behalf Of{/ts}\n\n===========================================================\n{foreach from=$onBehalfProfile item=onBehalfValue key=onBehalfName}\n{$onBehalfName}: {$onBehalfValue}\n{/foreach}\n{/if}\n\n{if !empty($billingName)}\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n{elseif !empty($email)}\n===========================================================\n{ts}Registered Email{/ts}\n\n===========================================================\n{$email}\n{/if} {* End billingName or email *}\n{if !empty($credit_card_type)}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n{/if}\n\n{if !empty($selectPremium)}\n===========================================================\n{ts}Premium Information{/ts}\n\n===========================================================\n{$product_name}\n{if $option}\n{ts}Option{/ts}: {$option}\n{/if}\n{if $sku}\n{ts}SKU{/ts}: {$sku}\n{/if}\n{if $start_date}\n{ts}Start Date{/ts}: {$start_date|crmDate}\n{/if}\n{if $end_date}\n{ts}End Date{/ts}: {$end_date|crmDate}\n{/if}\n{if !empty($contact_email) OR !empty($contact_phone)}\n\n{ts}For information about this premium, contact:{/ts}\n\n{if !empty($contact_email)}\n {$contact_email}\n{/if}\n{if !empty($contact_phone)}\n {$contact_phone}\n{/if}\n{/if}\n{if $is_deductible AND !empty($price)}\n\n{ts 1=$price|crmMoney}The value of this premium is %1. This may affect the amount of the tax deduction you can claim. Consult your tax advisor for more information.{/ts}{/if}\n{/if}\n\n{if !empty($customPre)}\n===========================================================\n{$customPre_grouptitle}\n\n===========================================================\n{foreach from=$customPre item=customValue key=customName}\n{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,837,'membership_online_receipt',0,1,0,NULL), + (49,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Status{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_status}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',1,0,0,NULL), + (50,'Memberships - Auto-renew Cancellation Notification','{ts}Autorenew Membership Cancellation Notification{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}\n\n===========================================================\n{ts}Membership Information{/ts}\n\n===========================================================\n{ts}Membership Status{/ts}: {$membership_status}\n{if $mem_start_date}{ts}Membership Start Date{/ts}: {$mem_start_date|crmDate}\n{/if}\n{if $mem_end_date}{ts}Membership Expiration Date{/ts}: {$mem_end_date|crmDate}\n{/if}\n\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}The automatic renewal of your %1 membership has been cancelled as requested. This does not affect the status of your membership - you will receive a separate notification when your membership is up for renewal.{/ts}</p>\n\n </td>\n </tr>\n </table>\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n\n <tr>\n <th {$headerStyle}>\n {ts}Membership Information{/ts}\n </th>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts}Membership Status{/ts}\n </td>\n <td {$valueStyle}>\n {$membership_status}\n </td>\n </tr>\n {if $mem_start_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Start Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_start_date|crmDate}\n </td>\n </tr>\n {/if}\n {if $mem_end_date}\n <tr>\n <td {$labelStyle}>\n {ts}Membership Expiration Date{/ts}\n </td>\n <td {$valueStyle}>\n {$mem_end_date|crmDate}\n </td>\n </tr>\n {/if}\n\n </table>\n\n</body>\n</html>\n',1,838,'membership_autorenew_cancelled',0,1,0,NULL), + (51,'Memberships - Auto-renew Billing Updates','{ts}Membership Autorenewal Billing Updates{/ts} - {contact.display_name}\n','{assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}{$greeting},{/if}\n\n{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}\n\n===========================================================\n{ts}Billing Name and Address{/ts}\n\n===========================================================\n{$billingName}\n{$address}\n\n{$email}\n\n===========================================================\n{ts}Credit Card Information{/ts}\n\n===========================================================\n{$credit_card_type}\n{$credit_card_number}\n{ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}\n\n\n{ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n','<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n <title></title>\n</head>\n<body>\n\n{capture assign=headerStyle}colspan=\"2\" style=\"text-align: left; padding: 4px; border-bottom: 1px solid #999; background-color: #eee;\"{/capture}\n{capture assign=labelStyle }style=\"padding: 4px; border-bottom: 1px solid #999; background-color: #f7f7f7;\"{/capture}\n{capture assign=valueStyle }style=\"padding: 4px; border-bottom: 1px solid #999;\"{/capture}\n\n <table id=\"crm-event_receipt\" style=\"font-family: Arial, Verdana, sans-serif; text-align: left; width:100%; max-width:700px; padding:0; margin:0; border:0px;\">\n\n <!-- BEGIN HEADER -->\n <!-- You can add table row(s) here with logo or other header elements -->\n <!-- END HEADER -->\n\n <!-- BEGIN CONTENT -->\n\n <tr>\n <td>\n {assign var=\"greeting\" value=\"{contact.email_greeting_display}\"}{if $greeting}<p>{$greeting},</p>{/if}\n <p>{ts 1=$membershipType}Billing details for your automatically renewed %1 membership have been updated.{/ts}</p>\n </td>\n </tr>\n <tr>\n </table>\n\n <table style=\"width:100%; max-width:500px; border: 1px solid #999; margin: 1em 0em 1em; border-collapse: collapse;\">\n <tr>\n <th {$headerStyle}>\n {ts}Billing Name and Address{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$billingName}<br />\n {$address|nl2br}<br />\n {$email}\n </td>\n </tr>\n <tr>\n <th {$headerStyle}>\n {ts}Credit Card Information{/ts}\n </th>\n </tr>\n <tr>\n <td colspan=\"2\" {$valueStyle}>\n {$credit_card_type}<br />\n {$credit_card_number}<br />\n {ts}Expires{/ts}: {$credit_card_exp_date|truncate:7:\'\'|crmDate}<br />\n </td>\n </tr>\n <tr>\n <td {$labelStyle}>\n {ts 1=$receipt_from_email}If you have questions please contact us at %1{/ts}\n </td>\n </tr>\n\n </table>\n\n</body>\n</html>\n',1,839,'membership_autorenew_billing',1,0,0,NULL), + (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,839,'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,840,'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,840,'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,841,'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,841,'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,842,'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,842,'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,843,'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,843,'uf_notify',0,1,0,NULL), + (61,'Petition - signature added','Thank you for signing {$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','{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{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,844,'petition_sign',1,0,0,NULL), + (62,'Petition - signature added','Thank you for signing {$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','{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{include file=\"CRM/Campaign/Page/Petition/SocialNetwork.tpl\" petition_id=$survey_id noscript=true emailMode=true}\n',1,844,'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,845,'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,845,'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); @@ -5721,26 +5651,26 @@ UNLOCK TABLES; LOCK TABLES `civicrm_note` WRITE; /*!40000 ALTER TABLE `civicrm_note` DISABLE KEYS */; INSERT INTO `civicrm_note` (`id`, `entity_table`, `entity_id`, `note`, `contact_id`, `note_date`, `created_date`, `modified_date`, `subject`, `privacy`) VALUES - (1,'civicrm_contact',160,'Contact the Commissioner of Charities',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-02-25 06:34:24',NULL,'0'), - (2,'civicrm_contact',144,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-05-31 07:25:24',NULL,'0'), - (3,'civicrm_contact',71,'Send reminder for annual dinner',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-09-17 00:07:29',NULL,'0'), - (4,'civicrm_contact',101,'Chart out route map for next 10k run',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-07-10 07:55:25',NULL,'0'), - (5,'civicrm_contact',201,'Arrange for cricket match with Sunil Gavaskar',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-10-24 00:54:58',NULL,'0'), - (6,'civicrm_contact',33,'Organize the Terry Fox run',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-11-02 02:09:13',NULL,'0'), - (7,'civicrm_contact',158,'Send reminder for annual dinner',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-12-28 07:34:09',NULL,'0'), - (8,'civicrm_contact',166,'Arrange for cricket match with Sunil Gavaskar',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-11-13 17:49:30',NULL,'0'), - (9,'civicrm_contact',109,'Organize the Terry Fox run',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-06-02 14:53:43',NULL,'0'), - (10,'civicrm_contact',125,'Chart out route map for next 10k run',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-04-14 03:38:15',NULL,'0'), - (11,'civicrm_contact',158,'Connect for presentation',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-11-05 14:43:12',NULL,'0'), - (12,'civicrm_contact',150,'Get the registration done for NGO status',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-01-15 05:00:20',NULL,'0'), - (13,'civicrm_contact',183,'Connect for presentation',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-04-02 09:30:01',NULL,'0'), - (14,'civicrm_contact',127,'Send reminder for annual dinner',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-01-27 11:38:47',NULL,'0'), - (15,'civicrm_contact',117,'Reminder screening of \"Black\" on next Friday',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-08-16 01:23:31',NULL,'0'), - (16,'civicrm_contact',39,'Reminder screening of \"Black\" on next Friday',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-04-05 00:10:34',NULL,'0'), - (17,'civicrm_contact',102,'Chart out route map for next 10k run',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-12-05 12:26:17',NULL,'0'), - (18,'civicrm_contact',57,'Arrange collection of funds from members',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2022-09-04 06:10:16',NULL,'0'), - (19,'civicrm_contact',123,'Get the registration done for NGO status',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-03-16 20:58:02',NULL,'0'), - (20,'civicrm_contact',126,'Arrange collection of funds from members',1,'2023-06-09 21:52:21','2023-06-09 21:52:21','2023-03-17 21:38:22',NULL,'0'); + (1,'civicrm_contact',58,'Arrange for cricket match with Sunil Gavaskar',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-02-25 08:08:24',NULL,'0'), + (2,'civicrm_contact',18,'Contact the Commissioner of Charities',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-08-22 12:57:29',NULL,'0'), + (3,'civicrm_contact',73,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-12-10 08:53:53',NULL,'0'), + (4,'civicrm_contact',82,'Arrange for cricket match with Sunil Gavaskar',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-05-09 19:41:31',NULL,'0'), + (5,'civicrm_contact',3,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-04-26 03:35:17',NULL,'0'), + (6,'civicrm_contact',173,'Organize the Terry Fox run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-02-06 00:45:44',NULL,'0'), + (7,'civicrm_contact',195,'Chart out route map for next 10k run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-04-19 23:14:48',NULL,'0'), + (8,'civicrm_contact',54,'Arrange for cricket match with Sunil Gavaskar',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-10-15 23:24:17',NULL,'0'), + (9,'civicrm_contact',137,'Get the registration done for NGO status',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-12-23 13:43:44',NULL,'0'), + (10,'civicrm_contact',35,'Arrange collection of funds from members',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-08-04 04:44:37',NULL,'0'), + (11,'civicrm_contact',68,'Chart out route map for next 10k run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-09-06 12:03:40',NULL,'0'), + (12,'civicrm_contact',152,'Reminder screening of \"Black\" on next Friday',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-06-25 06:06:28',NULL,'0'), + (13,'civicrm_contact',191,'Chart out route map for next 10k run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-02-11 20:16:22',NULL,'0'), + (14,'civicrm_contact',11,'Send newsletter for April 2005',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-02-08 20:48:18',NULL,'0'), + (15,'civicrm_contact',9,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-11-21 15:52:24',NULL,'0'), + (16,'civicrm_contact',28,'Connect for presentation',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-11-30 09:43:02',NULL,'0'), + (17,'civicrm_contact',181,'Get the registration done for NGO status',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-07-02 06:28:38',NULL,'0'), + (18,'civicrm_contact',158,'Connect for presentation',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-06-11 20:42:11',NULL,'0'), + (19,'civicrm_contact',193,'Arrange collection of funds from members',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2023-02-08 18:27:42',NULL,'0'), + (20,'civicrm_contact',42,'Invite members for the Steve Prefontaine 10k dream run',1,'2023-08-02 20:53:40','2023-08-02 20:53:40','2022-11-14 04:24:43',NULL,'0'); /*!40000 ALTER TABLE `civicrm_note` ENABLE KEYS */; UNLOCK TABLES; @@ -5950,792 +5880,793 @@ INSERT INTO `civicrm_option_value` (`id`, `option_group_id`, `label`, `value`, ` (81,7,'V','6','V',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), (82,7,'VI','7','VI',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), (83,7,'VII','8','VII',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (84,8,'Administrator','1','Admin',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), - (85,8,'Authenticated','2','Auth',NULL,0,0,2,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','55','Interview',NULL,0,NULL,55,'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,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL); + (84,8,'Everyone','0','Everyone',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (85,8,'Administrator','1','Admin',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (86,8,'Authenticated','2','Auth',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (87,9,'Visa','1','Visa',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (88,9,'MasterCard','2','MasterCard',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (89,9,'Amex','3','Amex',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (90,9,'Discover','4','Discover',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (91,10,'Credit Card','1','Credit Card',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (92,10,'Debit Card','2','Debit Card',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (93,10,'Cash','3','Cash',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (94,10,'Check','4','Check',NULL,0,1,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (95,10,'EFT','5','EFT',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (96,11,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (97,11,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (98,11,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (99,11,'Failed','4','Failed',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (100,11,'Refunded','7','Refunded',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (101,11,'Partially paid','8','Partially paid',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (102,11,'Pending refund','9','Pending refund',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (103,11,'Chargeback','10','Chargeback',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (104,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), + (105,12,'Waiting Review','1','Waiting Review',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (106,12,'Approved','2','Approved',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (107,12,'Not Approved','3','Not Approved',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (108,13,'Owner chooses whether to receive notifications','1','owner_chooses',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (109,13,'Notifications are sent to ALL owners','2','all_owners',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (110,13,'Notifications are NOT available','3','no_notifications',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (111,14,'Attendee','1','Attendee',NULL,1,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (112,14,'Volunteer','2','Volunteer',NULL,1,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (113,14,'Host','3','Host',NULL,1,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (114,14,'Speaker','4','Speaker',NULL,1,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (115,15,'Conference','1','Conference',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (116,15,'Exhibition','2','Exhibition',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (117,15,'Fundraiser','3','Fundraiser',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (118,15,'Meeting','4','Meeting',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (119,15,'Performance','5','Performance',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (120,15,'Workshop','6','Workshop',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (121,16,'Activities','1','activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (122,16,'Relationships','2','rel',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (123,16,'Groups','3','group',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (124,16,'Notes','4','note',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (125,16,'Tags','5','tag',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (126,16,'Change Log','6','log',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (127,16,'Contributions','7','CiviContribute',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (128,16,'Memberships','8','CiviMember',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (129,16,'Events','9','CiviEvent',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (130,16,'Cases','10','CiviCase',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (131,16,'Pledges','13','CiviPledge',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (132,16,'Mailings','14','CiviMail',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (133,17,'Show Smart Groups on Demand','1','showondemand',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (134,17,'Always Show Smart Groups','2','alwaysshow',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (135,17,'Hide Smart Groups','3','hide',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (136,18,'Custom Data','1','CustomData',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (137,18,'Address','2','Address',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (138,18,'Communication Preferences','3','CommunicationPreferences',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (139,18,'Notes','4','Notes',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (140,18,'Demographics','5','Demographics',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (141,18,'Tags and Groups','6','TagsAndGroups',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (142,18,'Email','7','Email',NULL,1,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (143,18,'Phone','8','Phone',NULL,1,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (144,18,'Instant Messenger','9','IM',NULL,1,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (145,18,'Open ID','10','OpenID',NULL,1,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (146,18,'Website','11','Website',NULL,1,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (147,18,'Prefix','12','Prefix',NULL,2,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (148,18,'Formal Title','13','Formal Title',NULL,2,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (149,18,'First Name','14','First Name',NULL,2,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (150,18,'Middle Name','15','Middle Name',NULL,2,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (151,18,'Last Name','16','Last Name',NULL,2,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (152,18,'Suffix','17','Suffix',NULL,2,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (153,19,'Address Fields','1','location',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (154,19,'Custom Fields','2','custom',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (155,19,'Activities','3','activity',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (156,19,'Relationships','4','relationship',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (157,19,'Notes','5','notes',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (158,19,'Change Log','6','changeLog',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (159,19,'Contributions','7','CiviContribute',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (160,19,'Memberships','8','CiviMember',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (161,19,'Events','9','CiviEvent',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (162,19,'Cases','10','CiviCase',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (163,19,'Demographics','13','demographics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (164,19,'Pledges','15','CiviPledge',NULL,0,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (165,19,'Contact Type','16','contactType',NULL,0,0,18,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (166,19,'Groups','17','groups',NULL,0,0,19,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (167,19,'Tags','18','tags',NULL,0,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (168,19,'Mailing','19','CiviMail',NULL,0,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (169,20,'Groups','1','Groups',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (170,20,'Contributions','2','CiviContribute',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (171,20,'Memberships','3','CiviMember',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (172,20,'Events','4','CiviEvent',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (173,20,'My Contacts / Organizations','5','Permissioned Orgs',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (174,20,'Pledges','7','CiviPledge',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (175,20,'Personal Campaign Pages','8','PCP',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (176,20,'Assigned Activities','9','Assigned Activities',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (177,20,'Invoices / Credit Notes','10','Invoices / Credit Notes',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (178,21,'Street Address','1','street_address',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (179,21,'Supplemental Address 1','2','supplemental_address_1',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (180,21,'Supplemental Address 2','3','supplemental_address_2',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (181,21,'Supplemental Address 3','4','supplemental_address_3',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (182,21,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (183,21,'Postal Code','6','postal_code',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (184,21,'Postal Code Suffix','7','postal_code_suffix',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (185,21,'County','8','county',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (186,21,'State/Province','9','state_province',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (187,21,'Country','10','country',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (188,21,'Latitude','11','geo_code_1',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (189,21,'Longitude','12','geo_code_2',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (190,21,'Address Name','13','address_name',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (191,21,'Street Address Parsing','14','street_address_parsing',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (192,22,'Access Control','1','Access Control',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (193,22,'Mailing List','2','Mailing List',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (194,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), + (195,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), + (196,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), + (197,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), + (198,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), + (199,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), + (200,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), + (201,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), + (202,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), + (203,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), + (204,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), + (205,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), + (206,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), + (207,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), + (208,24,'Scheduled','1','Scheduled',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (209,24,'Completed','2','Completed',NULL,1,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (210,24,'Cancelled','3','Cancelled',NULL,2,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (211,24,'Left Message','4','Left Message',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (212,24,'Unreachable','5','Unreachable',NULL,2,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (213,24,'Not Required','6','Not Required',NULL,2,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (214,24,'Available','7','Available',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (215,24,'No-show','8','No_show',NULL,2,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (216,26,'Ongoing','1','Open','Opened',0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (217,26,'Resolved','2','Closed','Closed',0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (218,26,'Urgent','3','Urgent','Opened',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (219,27,'Name Only','1','Name Only',NULL,0,0,1,'CRM_Event_Page_ParticipantListing_Name',0,1,1,NULL,NULL,NULL,NULL,NULL), + (220,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), + (221,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), + (222,28,'jpg','1','jpg',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (223,28,'jpeg','2','jpeg',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (224,28,'png','3','png',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (225,28,'gif','4','gif',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (226,28,'txt','5','txt',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (227,28,'pdf','6','pdf',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (228,28,'doc','7','doc',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (229,28,'xls','8','xls',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (230,28,'rtf','9','rtf',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (231,28,'csv','10','csv',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (232,28,'ppt','11','ppt',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (233,28,'docx','12','docx',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (234,28,'xlsx','13','xlsx',NULL,0,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (235,28,'odt','14','odt',NULL,0,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (236,28,'ics','15','ics',NULL,0,0,15,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (237,28,'pptx','16','pptx',NULL,0,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (238,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), + (239,30,'Search Builder','1','Search Builder',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (240,30,'Import Contact','2','Import Contact',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (241,30,'Import Activity','3','Import Activity',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (242,30,'Import Contribution','4','Import Contribution',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (243,30,'Import Membership','5','Import Membership',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (244,30,'Import Participant','6','Import Participant',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (245,30,'Export Contact','7','Export Contact',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (246,30,'Export Contribution','8','Export Contribution',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (247,30,'Export Membership','9','Export Membership',NULL,0,0,9,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (248,30,'Export Participant','10','Export Participant',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (249,30,'Export Pledge','11','Export Pledge',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (250,30,'Export Case','12','Export Case',NULL,0,0,12,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (251,30,'Export Activity','14','Export Activity',NULL,0,0,14,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (252,31,'Textarea','1','Textarea',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (253,31,'CKEditor 4','2','CKEditor',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (254,32,'day','day','day',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (255,32,'week','week','week',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (256,32,'month','month','month',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (257,32,'year','year','year',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (258,33,'Phone','1','Phone',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (259,33,'Mobile','2','Mobile',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (260,33,'Fax','3','Fax',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (261,33,'Pager','4','Pager',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (262,33,'Voicemail','5','Voicemail',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (263,34,'Participants (Role)','1','ParticipantRole','role_id',0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (264,34,'Participants (Event Name)','2','ParticipantEventName','event_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (265,34,'Participants (Event Type)','3','ParticipantEventType','event_id.event_type_id',0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (266,35,'Public','1','public',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (267,35,'Admin','2','admin',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (268,36,'IMAP','1','IMAP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (269,36,'Maildir','2','Maildir',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (270,36,'POP3','3','POP3',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (271,36,'Localdir','4','Localdir',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (272,37,'Urgent','1','Urgent',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (273,37,'Normal','2','Normal',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (274,37,'Low','3','Low',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (275,38,'Vancouver','city_','city_',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (276,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), + (277,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), + (278,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), + (279,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), + (280,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), + (281,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), + (282,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), + (283,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), + (284,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), + (285,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), + (286,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), + (287,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), + (288,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), + (289,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), + (290,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), + (291,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), + (292,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), + (293,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), + (294,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), + (295,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), + (296,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), + (297,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), + (298,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), + (299,39,'Relationship Report','contact/relationship','CRM_Report_Form_Contact_Relationship',NULL,0,0,23,'Relationship Report',0,0,1,NULL,NULL,NULL,NULL,NULL), + (300,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), + (301,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), + (302,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), + (303,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), + (304,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), + (305,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), + (306,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), + (307,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), + (308,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), + (309,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), + (310,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), + (311,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), + (312,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), + (313,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), + (314,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), + (315,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), + (316,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), + (317,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), + (318,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), + (319,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), + (320,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), + (321,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), + (322,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), + (323,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), + (324,40,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (325,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), + (326,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), + (327,40,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (328,40,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (329,41,'Dear {contact.first_name}','1','Dear {contact.first_name}',NULL,1,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (330,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), + (331,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), + (332,41,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (333,41,'Dear {contact.household_name}','5','Dear {contact.household_name}',NULL,2,1,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (334,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), + (335,42,'{contact.household_name}','2','{contact.household_name}',NULL,2,1,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (336,42,'{contact.organization_name}','3','{contact.organization_name}',NULL,3,1,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (337,42,'Customized','4','Customized',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (338,43,'Email Address','2','email',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (339,43,'Phone','3','phone',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (340,43,'Street Address','4','street_address',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (341,43,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (342,43,'State/Province','6','state_province',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (343,43,'Country','7','country',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (344,43,'Postal Code','8','postal_code',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (345,44,'Email Address','2','email',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (346,44,'Phone','3','phone',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (347,44,'Street Address','4','street_address',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (348,44,'City','5','city',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (349,44,'State/Province','6','state_province',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (350,44,'Country','7','country',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (351,44,'Postal Code','8','postal_code',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (352,45,'Work','1','Work',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (353,45,'Main','2','Main',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (354,45,'Facebook','3','Facebook',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (355,45,'Instagram','5','Instagram',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (356,45,'LinkedIn','6','LinkedIn',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (357,45,'MySpace','7','MySpace',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (358,45,'Pinterest','8','Pinterest',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (359,45,'SnapChat','9','SnapChat',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (360,45,'Tumblr','10','Tumblr',NULL,0,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (361,45,'Twitter','11','Twitter',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (362,45,'Vine','12','Vine ',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (363,46,'Contacts','civicrm_contact','Contact',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (364,46,'Activities','civicrm_activity','Activity',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (365,46,'Cases','civicrm_case','Case',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (366,46,'Attachments','civicrm_file','File',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (367,47,'Contacts','civicrm_contact','Contact',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (368,47,'Relationships','civicrm_relationship','Relationship',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (369,47,'Participants','civicrm_participant','Participant',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (370,47,'Contributions','civicrm_contribution','Contribution',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (371,48,'USD ($)','USD','USD',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (372,48,'CAD ($)','CAD','CAD',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (373,48,'EUR (€)','EUR','EUR',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (374,48,'GBP (£)','GBP','GBP',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (375,48,'JPY (Â¥)','JPY','JPY',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (376,49,'Name Only','1','CRM_Event_Badge_Simple',NULL,0,0,1,'Simple Event Name Badge',0,1,1,NULL,NULL,NULL,NULL,NULL), + (377,49,'Name Tent','2','CRM_Event_Badge_NameTent',NULL,0,0,2,'Name Tent',0,1,1,NULL,NULL,NULL,NULL,NULL), + (378,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), + (379,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), + (380,50,'None','0','None',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (381,50,'Author Only','1','Author Only',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (382,51,'Direct Mail','1','Direct Mail',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (383,51,'Referral Program','2','Referral Program',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (384,51,'Constituent Engagement','3','Constituent Engagement',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (385,52,'Planned','1','Planned',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (386,52,'In Progress','2','In Progress',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (387,52,'Completed','3','Completed',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (388,52,'Cancelled','4','Cancelled',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (389,54,'Approved','1','Approved',NULL,0,1,1,NULL,0,1,1,4,1,NULL,NULL,NULL), + (390,54,'Rejected','2','Rejected',NULL,0,0,2,NULL,0,1,1,4,1,NULL,NULL,NULL), + (391,54,'None','3','None',NULL,0,0,3,NULL,0,1,1,4,1,NULL,NULL,NULL), + (392,55,'1','1','1',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (393,55,'2','2','2',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (394,55,'3','3','3',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (395,55,'4','4','4',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (396,55,'5','5','5',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (397,56,'Survey','Survey','civicrm_survey',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (398,56,'Cases','Case','civicrm_case','case_type_id',0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (399,57,'Letter','{\"metric\":\"in\",\"width\":8.5,\"height\":11}','letter',NULL,NULL,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (400,57,'Legal','{\"metric\":\"in\",\"width\":8.5,\"height\":14}','legal',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (401,57,'Ledger','{\"metric\":\"in\",\"width\":17,\"height\":11}','ledger',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (402,57,'Tabloid','{\"metric\":\"in\",\"width\":11,\"height\":17}','tabloid',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (403,57,'Executive','{\"metric\":\"in\",\"width\":7.25,\"height\":10.5}','executive',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (404,57,'Folio','{\"metric\":\"in\",\"width\":8.5,\"height\":13}','folio',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (405,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), + (406,57,'Envelope #10','{\"metric\":\"pt\",\"width\":684,\"height\":297}','envelope-10',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (407,57,'Envelope #11','{\"metric\":\"pt\",\"width\":747,\"height\":324}','envelope-11',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (408,57,'Envelope #12','{\"metric\":\"pt\",\"width\":792,\"height\":342}','envelope-12',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (409,57,'Envelope #14','{\"metric\":\"pt\",\"width\":828,\"height\":360}','envelope-14',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (410,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), + (411,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), + (412,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), + (413,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), + (414,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), + (415,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), + (416,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), + (417,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), + (418,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), + (419,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), + (420,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), + (421,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), + (422,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), + (423,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), + (424,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), + (425,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), + (426,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), + (427,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), + (428,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), + (429,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), + (430,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), + (431,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), + (432,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), + (433,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), + (434,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), + (435,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), + (436,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), + (437,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), + (438,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), + (439,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), + (440,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), + (441,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), + (442,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), + (443,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), + (444,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), + (445,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), + (446,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), + (447,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), + (448,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), + (449,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), + (450,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), + (451,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), + (452,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), + (453,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), + (454,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), + (455,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), + (456,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), + (457,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), + (458,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), + (459,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), + (460,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), + (461,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), + (462,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), + (463,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), + (464,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), + (465,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), + (466,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), + (467,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), + (468,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), + (469,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), + (470,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), + (471,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), + (472,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), + (473,60,'Activity Assignees','1','Activity Assignees',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (474,60,'Activity Source','2','Activity Source',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (475,60,'Activity Targets','3','Activity Targets',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (476,61,'Income Account is','1','Income Account is',NULL,0,1,1,'Income Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (477,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), + (478,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), + (479,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), + (480,61,'Expense Account is','5','Expense Account is',NULL,0,0,5,'Expense Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (481,61,'Asset Account is','6','Asset Account is',NULL,0,0,6,'Asset Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (482,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), + (483,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), + (484,61,'Discounts Account is','9','Discounts Account is',NULL,0,0,9,'Discounts Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (485,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), + (486,61,'Chargeback Account is','11','Chargeback Account is',NULL,0,0,11,'Chargeback Account is',0,1,1,2,NULL,NULL,NULL,NULL), + (487,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), + (488,62,'Participant Role','1','participant_role',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (489,63,'Morning Sessions','1','Morning Sessions',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (490,63,'Evening Sessions','2','Evening Sessions',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (491,64,'Contribution','1','Contribution',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (492,64,'Membership','2','Membership',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (493,64,'Pledge Payment','3','Pledge Payment',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (494,65,'Manual Batch','1','Manual Batch',NULL,0,0,1,'Manual Batch',0,1,1,2,NULL,NULL,NULL,NULL), + (495,65,'Automatic Batch','2','Automatic Batch',NULL,0,0,2,'Automatic Batch',0,1,1,2,NULL,NULL,NULL,NULL), + (496,66,'Open','1','Open',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (497,66,'Closed','2','Closed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (498,66,'Data Entry','3','Data Entry',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (499,66,'Reopened','4','Reopened',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (500,66,'Exported','5','Exported',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (501,67,'http','1','http',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (502,67,'xml','2','xml',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (503,67,'smtp','3','smtp',NULL,NULL,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (504,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), + (505,69,'Auto-renew Memberships Only','2','Auto-renew Memberships Only',NULL,0,NULL,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (506,69,'Reminder for Both','3','Reminder for Both',NULL,0,NULL,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (507,70,'Asset','1','Asset',NULL,0,0,1,'Things you own',0,1,1,2,NULL,NULL,NULL,NULL), + (508,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), + (509,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), + (510,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), + (511,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), + (512,71,'Paid','1','Paid',NULL,0,0,1,'Paid',0,1,1,2,NULL,NULL,NULL,NULL), + (513,71,'Unpaid','3','Unpaid',NULL,0,0,1,'Unpaid',0,1,1,2,NULL,NULL,NULL,NULL), + (514,71,'Partially paid','2','Partially paid',NULL,0,0,2,'Partially paid',0,1,1,2,NULL,NULL,NULL,NULL), + (515,72,'Event Badge','1','Event Badge',NULL,0,NULL,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (516,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), + (517,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), + (518,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), + (519,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), + (520,74,'Formal','1','formal',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (521,74,'Familiar','2','familiar',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (522,75,'Email','Email','Email',NULL,0,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (523,75,'SMS','SMS','SMS',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (524,75,'User Preference','User_Preference','User Preference',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (525,76,'Actual date only','1','Actual date only',NULL,NULL,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (526,76,'Each anniversary','2','Each anniversary',NULL,NULL,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (527,77,'Default','1','default',NULL,NULL,1,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (528,77,'CiviMail','2','civimail',NULL,NULL,0,2,NULL,0,1,1,4,NULL,NULL,NULL,NULL), + (529,77,'CiviEvent','3','civievent',NULL,NULL,0,3,NULL,0,1,1,1,NULL,NULL,NULL,NULL), + (530,78,'Today','this.day','this.day',NULL,NULL,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (531,78,'This week','this.week','this.week',NULL,NULL,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (532,78,'This calendar month','this.month','this.month',NULL,NULL,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (533,78,'This quarter','this.quarter','this.quarter',NULL,NULL,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (534,78,'This fiscal year','this.fiscal_year','this.fiscal_year',NULL,NULL,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (535,78,'This calendar year','this.year','this.year',NULL,NULL,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (536,78,'Yesterday','previous.day','previous.day',NULL,NULL,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (537,78,'Previous week','previous.week','previous.week',NULL,NULL,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (538,78,'Previous calendar month','previous.month','previous.month',NULL,NULL,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (539,78,'Previous quarter','previous.quarter','previous.quarter',NULL,NULL,0,10,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (540,78,'Previous fiscal year','previous.fiscal_year','previous.fiscal_year',NULL,NULL,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (541,78,'Previous calendar year','previous.year','previous.year',NULL,NULL,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (542,78,'Last 7 days including today','ending.week','ending.week',NULL,NULL,0,13,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (543,78,'Last 30 days including today','ending_30.day','ending.month',NULL,NULL,0,14,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (544,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), + (545,78,'Last 90 days including today','ending_90.day','ending.quarter',NULL,NULL,0,16,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (546,78,'Last 12 months including today','ending.year','ending.year',NULL,NULL,0,17,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (547,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), + (548,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), + (549,78,'Tomorrow','starting.day','starting.day',NULL,NULL,0,20,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (550,78,'Next week','next.week','next.week',NULL,NULL,0,21,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (551,78,'Next calendar month','next.month','next.month',NULL,NULL,0,22,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (552,78,'Next quarter','next.quarter','next.quarter',NULL,NULL,0,23,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (553,78,'Next fiscal year','next.fiscal_year','next.fiscal_year',NULL,NULL,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (554,78,'Next calendar year','next.year','next.year',NULL,NULL,0,25,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (555,78,'Next 7 days including today','starting.week','starting.week',NULL,NULL,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (556,78,'Next 30 days including today','starting.month','starting.month',NULL,NULL,0,27,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (557,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), + (558,78,'Next 90 days including today','starting.quarter','starting.quarter',NULL,NULL,0,29,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (559,78,'Next 12 months including today','starting.year','starting.year',NULL,NULL,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (560,78,'Current week to-date','current.week','current.week',NULL,NULL,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (561,78,'Current calendar month to-date','current.month','current.month',NULL,NULL,0,32,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (562,78,'Current quarter to-date','current.quarter','current.quarter',NULL,NULL,0,33,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (563,78,'Current calendar year to-date','current.year','current.year',NULL,NULL,0,34,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (564,78,'To end of yesterday','earlier.day','earlier.day',NULL,NULL,0,35,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (565,78,'To end of previous week','earlier.week','earlier.week',NULL,NULL,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (566,78,'To end of previous calendar month','earlier.month','earlier.month',NULL,NULL,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (567,78,'To end of previous quarter','earlier.quarter','earlier.quarter',NULL,NULL,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (568,78,'To end of previous calendar year','earlier.year','earlier.year',NULL,NULL,0,39,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (569,78,'From start of current day','greater.day','greater.day',NULL,NULL,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (570,78,'From start of current week','greater.week','greater.week',NULL,NULL,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (571,78,'From start of current calendar month','greater.month','greater.month',NULL,NULL,0,42,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (572,78,'From start of current quarter','greater.quarter','greater.quarter',NULL,NULL,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (573,78,'From start of current calendar year','greater.year','greater.year',NULL,NULL,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (574,78,'To end of current week','less.week','less.week',NULL,NULL,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (575,78,'To end of current calendar month','less.month','less.month',NULL,NULL,0,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (576,78,'To end of current quarter','less.quarter','less.quarter',NULL,NULL,0,47,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (577,78,'To end of current calendar year','less.year','less.year',NULL,NULL,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (578,78,'Previous 2 days','previous_2.day','previous_2.day',NULL,NULL,0,49,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (579,78,'Previous 2 weeks','previous_2.week','previous_2.week',NULL,NULL,0,50,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (580,78,'Previous 2 calendar months','previous_2.month','previous_2.month',NULL,NULL,0,51,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (581,78,'Previous 2 quarters','previous_2.quarter','previous_2.quarter',NULL,NULL,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (582,78,'Previous 2 calendar years','previous_2.year','previous_2.year',NULL,NULL,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (583,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), + (584,78,'Day prior to yesterday','previous_before.day','previous_before.day',NULL,NULL,0,55,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (585,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), + (586,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), + (587,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), + (588,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), + (589,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), + (590,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), + (591,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), + (592,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), + (593,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), + (594,79,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (595,79,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (596,79,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (597,79,'In Progress','5','In Progress',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (598,79,'Overdue','6','Overdue',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (599,80,'Completed','1','Completed',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (600,80,'Pending','2','Pending',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (601,80,'Cancelled','3','Cancelled',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (602,80,'Failed','4','Failed',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (603,80,'In Progress','5','In Progress',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (604,80,'Overdue','6','Overdue',NULL,0,0,6,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (605,80,'Processing','7','Processing',NULL,0,0,7,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (606,80,'Failing','8','Failing',NULL,0,0,8,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (607,81,'Production','Production','Production',NULL,NULL,1,1,'Production Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), + (608,81,'Staging','Staging','Staging',NULL,NULL,0,2,'Staging Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), + (609,81,'Development','Development','Development',NULL,NULL,0,3,'Development Environment',0,1,1,NULL,NULL,NULL,NULL,NULL), + (610,82,'None','1','NONE',NULL,0,1,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (611,82,'By relationship to case client','2','BY_RELATIONSHIP',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (612,82,'Specific contact','3','SPECIFIC_CONTACT',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (613,82,'User creating the case','4','USER_CREATING_THE_CASE',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (614,83,'Financial Transactions','civicrm_financial_trxn','civicrm_financial_trxn',NULL,0,1,1,NULL,0,0,1,2,NULL,NULL,NULL,NULL), + (615,85,'Abkhaz','ab','ab_GE',NULL,0,0,1,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (616,85,'Afar','aa','aa_ET',NULL,0,0,2,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (617,85,'Afrikaans','af','af_ZA',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (618,85,'Akan','ak','ak_GH',NULL,0,0,4,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (619,85,'Albanian','sq','sq_AL',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (620,85,'Amharic','am','am_ET',NULL,0,0,6,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (621,85,'Arabic','ar','ar_EG',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (622,85,'Aragonese','an','an_ES',NULL,0,0,8,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (623,85,'Armenian','hy','hy_AM',NULL,0,0,9,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (624,85,'Assamese','as','as_IN',NULL,0,0,10,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (625,85,'Avaric','av','av_RU',NULL,0,0,11,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (626,85,'Avestan','ae','ae_XX',NULL,0,0,12,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (627,85,'Aymara','ay','ay_BO',NULL,0,0,13,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (628,85,'Azerbaijani','az','az_AZ',NULL,0,0,14,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (629,85,'Bambara','bm','bm_ML',NULL,0,0,15,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (630,85,'Bashkir','ba','ba_RU',NULL,0,0,16,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (631,85,'Basque','eu','eu_ES',NULL,0,0,17,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (632,85,'Belarusian','be','be_BY',NULL,0,0,18,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (633,85,'Bengali','bn','bn_BD',NULL,0,0,19,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (634,85,'Bihari','bh','bh_IN',NULL,0,0,20,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (635,85,'Bislama','bi','bi_VU',NULL,0,0,21,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (636,85,'Bosnian','bs','bs_BA',NULL,0,0,22,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (637,85,'Breton','br','br_FR',NULL,0,0,23,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (638,85,'Bulgarian','bg','bg_BG',NULL,0,0,24,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (639,85,'Burmese','my','my_MM',NULL,0,0,25,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (640,85,'Catalan; Valencian','ca','ca_ES',NULL,0,0,26,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (641,85,'Chamorro','ch','ch_GU',NULL,0,0,27,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (642,85,'Chechen','ce','ce_RU',NULL,0,0,28,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (643,85,'Chichewa; Chewa; Nyanja','ny','ny_MW',NULL,0,0,29,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (644,85,'Chinese (China)','zh','zh_CN',NULL,0,0,30,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (645,85,'Chinese (Taiwan)','zh','zh_TW',NULL,0,0,31,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (646,85,'Chuvash','cv','cv_RU',NULL,0,0,32,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (647,85,'Cornish','kw','kw_GB',NULL,0,0,33,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (648,85,'Corsican','co','co_FR',NULL,0,0,34,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (649,85,'Cree','cr','cr_CA',NULL,0,0,35,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (650,85,'Croatian','hr','hr_HR',NULL,0,0,36,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (651,85,'Czech','cs','cs_CZ',NULL,0,0,37,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (652,85,'Danish','da','da_DK',NULL,0,0,38,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (653,85,'Divehi; Dhivehi; Maldivian;','dv','dv_MV',NULL,0,0,39,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (654,85,'Dutch (Netherlands)','nl','nl_NL',NULL,0,0,40,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (655,85,'Dutch (Belgium)','nl','nl_BE',NULL,0,0,41,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (656,85,'Dzongkha','dz','dz_BT',NULL,0,0,42,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (657,85,'English (Australia)','en','en_AU',NULL,0,0,43,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (658,85,'English (Canada)','en','en_CA',NULL,0,0,44,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (659,85,'English (United Kingdom)','en','en_GB',NULL,0,0,45,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (660,85,'English (United States)','en','en_US',NULL,0,1,46,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (661,85,'Esperanto','eo','eo_XX',NULL,0,0,47,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (662,85,'Estonian','et','et_EE',NULL,0,0,48,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (663,85,'Ewe','ee','ee_GH',NULL,0,0,49,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (664,85,'Faroese','fo','fo_FO',NULL,0,0,50,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (665,85,'Fijian','fj','fj_FJ',NULL,0,0,51,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (666,85,'Finnish','fi','fi_FI',NULL,0,0,52,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (667,85,'French (Canada)','fr','fr_CA',NULL,0,0,53,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (668,85,'French (France)','fr','fr_FR',NULL,0,0,54,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (669,85,'Fula; Fulah; Pulaar; Pular','ff','ff_SN',NULL,0,0,55,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (670,85,'Galician','gl','gl_ES',NULL,0,0,56,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (671,85,'Georgian','ka','ka_GE',NULL,0,0,57,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (672,85,'German','de','de_DE',NULL,0,0,58,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (673,85,'German (Swiss)','de','de_CH',NULL,0,0,59,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (674,85,'Greek, Modern','el','el_GR',NULL,0,0,60,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (675,85,'GuaraniÂ','gn','gn_PY',NULL,0,0,61,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (676,85,'Gujarati','gu','gu_IN',NULL,0,0,62,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (677,85,'Haitian; Haitian Creole','ht','ht_HT',NULL,0,0,63,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (678,85,'Hausa','ha','ha_NG',NULL,0,0,64,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (679,85,'Hebrew (modern)','he','he_IL',NULL,0,0,65,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (680,85,'Herero','hz','hz_NA',NULL,0,0,66,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (681,85,'Hindi','hi','hi_IN',NULL,0,0,67,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (682,85,'Hiri Motu','ho','ho_PG',NULL,0,0,68,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (683,85,'Hungarian','hu','hu_HU',NULL,0,0,69,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (684,85,'Interlingua','ia','ia_XX',NULL,0,0,70,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (685,85,'Indonesian','id','id_ID',NULL,0,0,71,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (686,85,'Interlingue','ie','ie_XX',NULL,0,0,72,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (687,85,'Irish','ga','ga_IE',NULL,0,0,73,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (688,85,'Igbo','ig','ig_NG',NULL,0,0,74,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (689,85,'Inupiaq','ik','ik_US',NULL,0,0,75,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (690,85,'Ido','io','io_XX',NULL,0,0,76,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (691,85,'Icelandic','is','is_IS',NULL,0,0,77,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (692,85,'Italian','it','it_IT',NULL,0,0,78,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (693,85,'Inuktitut','iu','iu_CA',NULL,0,0,79,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (694,85,'Japanese','ja','ja_JP',NULL,0,0,80,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (695,85,'Javanese','jv','jv_ID',NULL,0,0,81,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (696,85,'Kalaallisut, Greenlandic','kl','kl_GL',NULL,0,0,82,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (697,85,'Kannada','kn','kn_IN',NULL,0,0,83,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (698,85,'Kanuri','kr','kr_NE',NULL,0,0,84,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (699,85,'Kashmiri','ks','ks_IN',NULL,0,0,85,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (700,85,'Kazakh','kk','kk_KZ',NULL,0,0,86,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (701,85,'Khmer','km','km_KH',NULL,0,0,87,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (702,85,'Kikuyu, Gikuyu','ki','ki_KE',NULL,0,0,88,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (703,85,'Kinyarwanda','rw','rw_RW',NULL,0,0,89,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (704,85,'Kirghiz, Kyrgyz','ky','ky_KG',NULL,0,0,90,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (705,85,'Komi','kv','kv_RU',NULL,0,0,91,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (706,85,'Kongo','kg','kg_CD',NULL,0,0,92,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (707,85,'Korean','ko','ko_KR',NULL,0,0,93,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (708,85,'Kurdish','ku','ku_IQ',NULL,0,0,94,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (709,85,'Kwanyama, Kuanyama','kj','kj_NA',NULL,0,0,95,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (710,85,'Latin','la','la_VA',NULL,0,0,96,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (711,85,'Luxembourgish, Letzeburgesch','lb','lb_LU',NULL,0,0,97,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (712,85,'Luganda','lg','lg_UG',NULL,0,0,98,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (713,85,'Limburgish, Limburgan, Limburger','li','li_NL',NULL,0,0,99,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (714,85,'Lingala','ln','ln_CD',NULL,0,0,100,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (715,85,'Lao','lo','lo_LA',NULL,0,0,101,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (716,85,'Lithuanian','lt','lt_LT',NULL,0,0,102,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (717,85,'Luba-Katanga','lu','lu_CD',NULL,0,0,103,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (718,85,'Latvian','lv','lv_LV',NULL,0,0,104,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (719,85,'Manx','gv','gv_IM',NULL,0,0,105,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (720,85,'Macedonian','mk','mk_MK',NULL,0,0,106,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (721,85,'Malagasy','mg','mg_MG',NULL,0,0,107,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (722,85,'Malay','ms','ms_MY',NULL,0,0,108,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (723,85,'Malayalam','ml','ml_IN',NULL,0,0,109,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (724,85,'Maltese','mt','mt_MT',NULL,0,0,110,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (725,85,'MÄori','mi','mi_NZ',NULL,0,0,111,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (726,85,'Marathi','mr','mr_IN',NULL,0,0,112,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (727,85,'Marshallese','mh','mh_MH',NULL,0,0,113,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (728,85,'Mongolian','mn','mn_MN',NULL,0,0,114,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (729,85,'Nauru','na','na_NR',NULL,0,0,115,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (730,85,'Navajo, Navaho','nv','nv_US',NULL,0,0,116,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (731,85,'Norwegian BokmÃ¥l','nb','nb_NO',NULL,0,0,117,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (732,85,'North Ndebele','nd','nd_ZW',NULL,0,0,118,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (733,85,'Nepali','ne','ne_NP',NULL,0,0,119,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (734,85,'Ndonga','ng','ng_NA',NULL,0,0,120,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (735,85,'Norwegian Nynorsk','nn','nn_NO',NULL,0,0,121,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (736,85,'Norwegian','no','no_NO',NULL,0,0,122,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (737,85,'Nuosu','ii','ii_CN',NULL,0,0,123,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (738,85,'South Ndebele','nr','nr_ZA',NULL,0,0,124,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (739,85,'Occitan (after 1500)','oc','oc_FR',NULL,0,0,125,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (740,85,'Ojibwa','oj','oj_CA',NULL,0,0,126,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (741,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), + (742,85,'Oromo','om','om_ET',NULL,0,0,128,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (743,85,'Oriya','or','or_IN',NULL,0,0,129,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (744,85,'Ossetian, Ossetic','os','os_GE',NULL,0,0,130,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (745,85,'Panjabi, Punjabi','pa','pa_IN',NULL,0,0,131,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (746,85,'Pali','pi','pi_KH',NULL,0,0,132,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (747,85,'Persian (Iran)','fa','fa_IR',NULL,0,0,133,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (748,85,'Polish','pl','pl_PL',NULL,0,0,134,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (749,85,'Pashto, Pushto','ps','ps_AF',NULL,0,0,135,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (750,85,'Portuguese (Brazil)','pt','pt_BR',NULL,0,0,136,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (751,85,'Portuguese (Portugal)','pt','pt_PT',NULL,0,0,137,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (752,85,'Quechua','qu','qu_PE',NULL,0,0,138,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (753,85,'Romansh','rm','rm_CH',NULL,0,0,139,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (754,85,'Kirundi','rn','rn_BI',NULL,0,0,140,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (755,85,'Romanian, Moldavian, Moldovan','ro','ro_RO',NULL,0,0,141,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (756,85,'Russian','ru','ru_RU',NULL,0,0,142,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (757,85,'Sanskrit','sa','sa_IN',NULL,0,0,143,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (758,85,'Sardinian','sc','sc_IT',NULL,0,0,144,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (759,85,'Sindhi','sd','sd_IN',NULL,0,0,145,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (760,85,'Northern Sami','se','se_NO',NULL,0,0,146,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (761,85,'Samoan','sm','sm_WS',NULL,0,0,147,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (762,85,'Sango','sg','sg_CF',NULL,0,0,148,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (763,85,'Serbian','sr','sr_RS',NULL,0,0,149,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (764,85,'Scottish Gaelic; Gaelic','gd','gd_GB',NULL,0,0,150,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (765,85,'Shona','sn','sn_ZW',NULL,0,0,151,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (766,85,'Sinhala, Sinhalese','si','si_LK',NULL,0,0,152,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (767,85,'Slovak','sk','sk_SK',NULL,0,0,153,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (768,85,'Slovene','sl','sl_SI',NULL,0,0,154,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (769,85,'Somali','so','so_SO',NULL,0,0,155,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (770,85,'Southern Sotho','st','st_ZA',NULL,0,0,156,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (771,85,'Spanish; Castilian (Spain)','es','es_ES',NULL,0,0,157,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (772,85,'Spanish; Castilian (Mexico)','es','es_MX',NULL,0,0,158,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (773,85,'Spanish; Castilian (Puerto Rico)','es','es_PR',NULL,0,0,159,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (774,85,'Sundanese','su','su_ID',NULL,0,0,160,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (775,85,'Swahili','sw','sw_TZ',NULL,0,0,161,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (776,85,'Swati','ss','ss_ZA',NULL,0,0,162,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (777,85,'Swedish','sv','sv_SE',NULL,0,0,163,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (778,85,'Tamil','ta','ta_IN',NULL,0,0,164,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (779,85,'Telugu','te','te_IN',NULL,0,0,165,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (780,85,'Tajik','tg','tg_TJ',NULL,0,0,166,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (781,85,'Thai','th','th_TH',NULL,0,0,167,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (782,85,'Tigrinya','ti','ti_ET',NULL,0,0,168,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (783,85,'Tibetan Standard, Tibetan, Central','bo','bo_CN',NULL,0,0,169,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (784,85,'Turkmen','tk','tk_TM',NULL,0,0,170,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (785,85,'Tagalog','tl','tl_PH',NULL,0,0,171,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (786,85,'Tswana','tn','tn_ZA',NULL,0,0,172,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (787,85,'Tonga (Tonga Islands)','to','to_TO',NULL,0,0,173,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (788,85,'Turkish','tr','tr_TR',NULL,0,0,174,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (789,85,'Tsonga','ts','ts_ZA',NULL,0,0,175,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (790,85,'Tatar','tt','tt_RU',NULL,0,0,176,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (791,85,'Twi','tw','tw_GH',NULL,0,0,177,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (792,85,'Tahitian','ty','ty_PF',NULL,0,0,178,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (793,85,'Uighur, Uyghur','ug','ug_CN',NULL,0,0,179,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (794,85,'Ukrainian','uk','uk_UA',NULL,0,0,180,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (795,85,'Urdu','ur','ur_PK',NULL,0,0,181,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (796,85,'Uzbek','uz','uz_UZ',NULL,0,0,182,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (797,85,'Venda','ve','ve_ZA',NULL,0,0,183,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (798,85,'Vietnamese','vi','vi_VN',NULL,0,0,184,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (799,85,'Volapük','vo','vo_XX',NULL,0,0,185,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (800,85,'Walloon','wa','wa_BE',NULL,0,0,186,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (801,85,'Welsh','cy','cy_GB',NULL,0,0,187,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (802,85,'Wolof','wo','wo_SN',NULL,0,0,188,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (803,85,'Western Frisian','fy','fy_NL',NULL,0,0,189,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (804,85,'Xhosa','xh','xh_ZA',NULL,0,0,190,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (805,85,'Yiddish','yi','yi_US',NULL,0,0,191,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (806,85,'Yoruba','yo','yo_NG',NULL,0,0,192,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (807,85,'Zhuang, Chuang','za','za_CN',NULL,0,0,193,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (808,85,'Zulu','zu','zu_ZA',NULL,0,0,194,NULL,0,0,0,NULL,NULL,NULL,NULL,NULL), + (809,86,'In Person','1','in_person',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (810,86,'Phone','2','phone',NULL,0,1,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (811,86,'Email','3','email',NULL,0,0,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (812,86,'Fax','4','fax',NULL,0,0,4,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (813,86,'Letter Mail','5','letter_mail',NULL,0,0,5,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (814,87,'Cases - Send Copy of an Activity','1','case_activity',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (815,88,'Contributions - Duplicate Organization Alert','1','contribution_dupalert',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (816,88,'Contributions - Receipt (off-line)','2','contribution_offline_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (817,88,'Contributions - Receipt (on-line)','3','contribution_online_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (818,88,'Contributions - Invoice','4','contribution_invoice_receipt',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (819,88,'Contributions - Recurring Start and End Notification','5','contribution_recurring_notify',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (820,88,'Contributions - Recurring Cancellation Notification','6','contribution_recurring_cancelled',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (821,88,'Contributions - Recurring Billing Updates','7','contribution_recurring_billing',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (822,88,'Contributions - Recurring Updates','8','contribution_recurring_edit',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (823,88,'Personal Campaign Pages - Admin Notification','9','pcp_notify',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (824,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), + (825,88,'Personal Campaign Pages - Supporter Welcome','11','pcp_supporter_notify',NULL,0,0,11,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (826,88,'Personal Campaign Pages - Owner Notification','12','pcp_owner_notify',NULL,0,0,12,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (827,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), + (828,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), + (829,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), + (830,89,'Events - Receipt only','3','event_registration_receipt',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (831,89,'Events - Registration Cancellation Notice','4','participant_cancelled',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (832,89,'Events - Registration Confirmation Invite','5','participant_confirm',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (833,89,'Events - Pending Registration Expiration Notice','6','participant_expired',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (834,89,'Events - Registration Transferred Notice','7','participant_transferred',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (835,90,'Tell-a-Friend Email','1','friend',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (836,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), + (837,91,'Memberships - Receipt (on-line)','2','membership_online_receipt',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (838,91,'Memberships - Auto-renew Cancellation Notification','3','membership_autorenew_cancelled',NULL,0,0,3,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (839,91,'Memberships - Auto-renew Billing Updates','4','membership_autorenew_billing',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (840,92,'Test-drive - Receipt Header','1','test_preview',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (841,93,'Pledges - Acknowledgement','1','pledge_acknowledge',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (842,93,'Pledges - Payment Reminder','2','pledge_reminder',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (843,94,'Profiles - Admin Notification','1','uf_notify',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (844,95,'Petition - signature added','1','petition_sign',NULL,0,0,1,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (845,95,'Petition - need verification','2','petition_confirmation_needed',NULL,0,0,2,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (846,96,'In Honor of','1','in_honor_of',NULL,0,0,1,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (847,96,'In Memory of','2','in_memory_of',NULL,0,0,2,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (848,96,'Solicited','3','solicited',NULL,0,1,3,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (849,96,'Household','4','household',NULL,0,0,4,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (850,96,'Workplace Giving','5','workplace',NULL,0,0,5,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (851,96,'Foundation Affiliate','6','foundation_affiliate',NULL,0,0,6,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (852,96,'3rd-party Service','7','3rd-party_service',NULL,0,0,7,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (853,96,'Donor-advised Fund','8','donor-advised_fund',NULL,0,0,8,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (854,96,'Matched Gift','9','matched_gift',NULL,0,0,9,NULL,0,0,1,NULL,NULL,NULL,NULL,NULL), + (855,96,'Personal Campaign Page','10','pcp',NULL,0,0,10,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (856,96,'Gift','11','gift',NULL,0,0,11,NULL,0,1,1,NULL,NULL,NULL,NULL,NULL), + (857,97,'Contacts','Contact','Contact',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (858,97,'Relationships','Relationship','Relationship',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (859,97,'Activities','Activity','Activity',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (860,97,'Notes','Note','Note',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (861,97,'Groups','Group','Group',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (862,97,'Cases','Case','Case',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (863,97,'Contributions','Contribution','Contribution',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (864,97,'Participants','Participant','Participant',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (865,97,'Memberships','Membership','Membership',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (866,97,'Pledges','Pledge','Pledge',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (867,97,'Events','Event','Event',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (868,97,'Campaigns','Campaign','Campaign',NULL,NULL,0,1,'',0,1,1,NULL,NULL,NULL,NULL,NULL), + (869,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), + (870,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; @@ -6746,56 +6677,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant` WRITE; /*!40000 ALTER TABLE `civicrm_participant` DISABLE KEYS */; INSERT INTO `civicrm_participant` (`id`, `contact_id`, `event_id`, `status_id`, `role_id`, `register_date`, `source`, `fee_level`, `is_test`, `is_pay_later`, `fee_amount`, `registered_by_id`, `discount_id`, `fee_currency`, `campaign_id`, `discount_amount`, `cart_id`, `must_wait`, `transferred_to_contact_id`, `created_id`) VALUES - (1,149,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,99,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,200,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,114,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,165,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,83,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,32,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,84,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,173,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,7,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,46,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,144,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,24,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,73,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,199,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,67,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,184,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,175,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,96,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,60,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,142,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,127,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,52,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,86,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,157,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,93,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,30,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,90,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,187,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,57,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,132,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,115,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,28,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,71,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,136,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,55,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,137,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,72,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,148,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,25,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,34,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,182,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,50,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,181,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,89,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,1,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,110,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,75,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,202,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,164,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,1,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,167,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,64,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,181,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,100,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,152,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,198,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,141,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,119,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,96,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,154,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,132,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,147,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,187,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,34,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,41,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,80,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,131,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,87,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,20,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,124,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,26,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,93,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,171,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,31,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,61,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,73,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,35,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,117,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,160,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,75,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,173,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,8,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,139,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,116,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,106,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,199,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,111,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,135,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,18,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,103,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,94,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,158,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,5,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,183,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,118,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,72,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,97,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,161,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,179,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; @@ -6806,56 +6737,56 @@ UNLOCK TABLES; LOCK TABLES `civicrm_participant_payment` WRITE; /*!40000 ALTER TABLE `civicrm_participant_payment` DISABLE KEYS */; INSERT INTO `civicrm_participant_payment` (`id`, `participant_id`, `contribution_id`) VALUES - (38,1,63), - (27,2,64), - (49,3,65), - (29,4,66), - (41,5,67), - (20,6,68), + (1,1,63), + (2,2,64), + (3,3,65), + (4,4,66), + (5,5,67), + (6,6,68), (7,7,69), - (21,8,70), - (42,9,71), - (2,10,72), - (9,11,73), - (36,12,74), - (3,13,75), - (18,14,76), - (48,15,77), - (15,16,78), - (46,17,79), - (43,18,80), - (26,19,81), - (14,20,82), - (35,21,83), - (31,22,84), - (11,23,85), - (22,24,86), - (39,25,87), - (25,26,88), - (6,27,89), - (24,28,90), - (47,29,91), - (13,30,92), - (32,31,93), - (30,32,94), - (5,33,95), - (16,34,96), - (33,35,97), - (12,36,98), - (34,37,99), - (17,38,100), - (37,39,101), - (4,40,102), - (8,41,103), - (45,42,104), - (10,43,105), + (8,8,70), + (9,9,71), + (10,10,72), + (11,11,73), + (12,12,74), + (13,13,75), + (14,14,76), + (15,15,77), + (16,16,78), + (17,17,79), + (18,18,80), + (19,19,81), + (20,20,82), + (21,21,83), + (22,22,84), + (23,23,85), + (24,24,86), + (25,25,87), + (26,26,88), + (27,27,89), + (28,28,90), + (29,29,91), + (30,30,92), + (31,31,93), + (32,32,94), + (33,33,95), + (34,34,96), + (35,35,97), + (36,36,98), + (37,37,99), + (38,38,100), + (39,39,101), + (40,40,102), + (41,41,103), + (42,42,104), + (43,43,105), (44,44,106), - (23,45,107), - (1,46,108), - (28,47,109), - (19,48,110), - (50,49,111), - (40,50,112); + (45,45,107), + (46,46,108), + (47,47,109), + (48,48,110), + (49,49,111), + (50,50,112); /*!40000 ALTER TABLE `civicrm_participant_payment` ENABLE KEYS */; UNLOCK TABLES; @@ -6928,7 +6859,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_pcp` WRITE; /*!40000 ALTER TABLE `civicrm_pcp` DISABLE KEYS */; INSERT INTO `civicrm_pcp` (`id`, `contact_id`, `status_id`, `title`, `intro_text`, `page_text`, `donate_link_text`, `page_id`, `page_type`, `pcp_block_id`, `is_thermometer`, `is_honor_roll`, `goal_amount`, `currency`, `is_active`, `is_notify`) VALUES - (1,56,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,38,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; @@ -6950,178 +6881,167 @@ 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,156,1,1,0,NULL,'(511) 487-4264',NULL,'5114874264',1), - (2,156,1,0,0,NULL,'839-2311',NULL,'8392311',1), - (3,146,1,1,0,NULL,'545-2493',NULL,'5452493',2), - (4,56,1,1,0,NULL,'(346) 572-7403',NULL,'3465727403',2), - (5,56,1,0,0,NULL,'292-1078',NULL,'2921078',1), - (6,21,1,1,0,NULL,'707-1064',NULL,'7071064',2), - (7,21,1,0,0,NULL,'(536) 488-1418',NULL,'5364881418',2), - (8,195,1,1,0,NULL,'475-4383',NULL,'4754383',1), - (9,115,1,1,0,NULL,'343-8550',NULL,'3438550',1), - (10,152,1,1,0,NULL,'(614) 691-3568',NULL,'6146913568',2), - (11,152,1,0,0,NULL,'475-3953',NULL,'4753953',1), - (12,51,1,1,0,NULL,'726-4072',NULL,'7264072',2), - (13,138,1,1,0,NULL,'(225) 254-5965',NULL,'2252545965',2), - (14,71,1,1,0,NULL,'587-2663',NULL,'5872663',2), - (15,110,1,1,0,NULL,'549-2705',NULL,'5492705',1), - (16,110,1,0,0,NULL,'767-9918',NULL,'7679918',1), - (17,4,1,1,0,NULL,'(862) 612-1460',NULL,'8626121460',2), - (18,150,1,1,0,NULL,'246-3270',NULL,'2463270',2), - (19,161,1,1,0,NULL,'313-2007',NULL,'3132007',2), - (20,161,1,0,0,NULL,'895-3444',NULL,'8953444',1), - (21,153,1,1,0,NULL,'712-8264',NULL,'7128264',1), - (22,153,1,0,0,NULL,'(763) 670-1777',NULL,'7636701777',2), - (23,135,1,1,0,NULL,'(298) 358-6369',NULL,'2983586369',2), - (24,52,1,1,0,NULL,'(217) 274-4789',NULL,'2172744789',1), - (25,52,1,0,0,NULL,'888-1460',NULL,'8881460',1), - (26,177,1,1,0,NULL,'883-3935',NULL,'8833935',1), - (27,177,1,0,0,NULL,'(213) 661-6905',NULL,'2136616905',1), - (28,81,1,1,0,NULL,'532-3282',NULL,'5323282',2), - (29,81,1,0,0,NULL,'(790) 769-2387',NULL,'7907692387',1), - (30,167,1,1,0,NULL,'745-1118',NULL,'7451118',1), - (31,28,1,1,0,NULL,'(228) 623-2111',NULL,'2286232111',2), - (32,28,1,0,0,NULL,'701-1891',NULL,'7011891',1), - (33,133,1,1,0,NULL,'815-9735',NULL,'8159735',1), - (34,79,1,1,0,NULL,'(293) 729-9107',NULL,'2937299107',2), - (35,79,1,0,0,NULL,'657-3497',NULL,'6573497',1), - (36,134,1,1,0,NULL,'(413) 536-7402',NULL,'4135367402',2), - (37,134,1,0,0,NULL,'590-1027',NULL,'5901027',2), - (38,183,1,1,0,NULL,'874-6501',NULL,'8746501',1), - (39,170,1,1,0,NULL,'583-5314',NULL,'5835314',1), - (40,170,1,0,0,NULL,'(734) 466-5206',NULL,'7344665206',1), - (41,77,1,1,0,NULL,'509-9597',NULL,'5099597',1), - (42,77,1,0,0,NULL,'(653) 692-9627',NULL,'6536929627',2), - (43,108,1,1,0,NULL,'(227) 312-1488',NULL,'2273121488',2), - (44,72,1,1,0,NULL,'(216) 496-4096',NULL,'2164964096',1), - (45,123,1,1,0,NULL,'(412) 539-4330',NULL,'4125394330',2), - (46,100,1,1,0,NULL,'(284) 322-2182',NULL,'2843222182',2), - (47,25,1,1,0,NULL,'605-6529',NULL,'6056529',2), - (48,25,1,0,0,NULL,'204-3984',NULL,'2043984',1), - (49,27,1,1,0,NULL,'676-3024',NULL,'6763024',1), - (50,27,1,0,0,NULL,'(842) 448-4029',NULL,'8424484029',2), - (51,76,1,1,0,NULL,'(715) 725-1858',NULL,'7157251858',2), - (52,76,1,0,0,NULL,'(289) 804-7582',NULL,'2898047582',2), - (53,201,1,1,0,NULL,'717-8654',NULL,'7178654',2), - (54,114,1,1,0,NULL,'(425) 756-5325',NULL,'4257565325',1), - (55,92,1,1,0,NULL,'(204) 280-7996',NULL,'2042807996',2), - (56,190,1,1,0,NULL,'(735) 724-1758',NULL,'7357241758',2), - (57,184,1,1,0,NULL,'(784) 455-6091',NULL,'7844556091',1), - (58,26,1,1,0,NULL,'650-1433',NULL,'6501433',1), - (59,26,1,0,0,NULL,'468-6455',NULL,'4686455',1), - (60,141,1,1,0,NULL,'(435) 345-1000',NULL,'4353451000',1), - (61,141,1,0,0,NULL,'(349) 837-5744',NULL,'3498375744',1), - (62,97,1,1,0,NULL,'312-6016',NULL,'3126016',2), - (63,55,1,1,0,NULL,'424-3068',NULL,'4243068',1), - (64,55,1,0,0,NULL,'576-4769',NULL,'5764769',1), - (65,12,1,1,0,NULL,'438-4480',NULL,'4384480',1), - (66,73,1,1,0,NULL,'(643) 558-1445',NULL,'6435581445',2), - (67,66,1,1,0,NULL,'(690) 550-6186',NULL,'6905506186',2), - (68,66,1,0,0,NULL,'522-4236',NULL,'5224236',2), - (69,168,1,1,0,NULL,'(353) 649-7283',NULL,'3536497283',1), - (70,98,1,1,0,NULL,'(857) 735-6628',NULL,'8577356628',1), - (71,87,1,1,0,NULL,'436-3341',NULL,'4363341',2), - (72,87,1,0,0,NULL,'695-6252',NULL,'6956252',1), - (73,65,1,1,0,NULL,'829-2696',NULL,'8292696',1), - (74,144,1,1,0,NULL,'270-8556',NULL,'2708556',1), - (75,90,1,1,0,NULL,'(805) 762-2855',NULL,'8057622855',1), - (76,164,1,1,0,NULL,'585-9694',NULL,'5859694',1), - (77,164,1,0,0,NULL,'545-7506',NULL,'5457506',1), - (78,61,1,1,0,NULL,'(666) 569-8885',NULL,'6665698885',1), - (79,61,1,0,0,NULL,'452-2617',NULL,'4522617',1), - (80,169,1,1,0,NULL,'(256) 798-8912',NULL,'2567988912',1), - (81,169,1,0,0,NULL,'(469) 769-7924',NULL,'4697697924',1), - (82,35,1,1,0,NULL,'(260) 700-2223',NULL,'2607002223',2), - (83,82,1,1,0,NULL,'(892) 271-7205',NULL,'8922717205',1), - (84,82,1,0,0,NULL,'(228) 220-8252',NULL,'2282208252',1), - (85,93,1,1,0,NULL,'(451) 615-8150',NULL,'4516158150',1), - (86,93,1,0,0,NULL,'(386) 605-9030',NULL,'3866059030',2), - (87,64,1,1,0,NULL,'(846) 617-4558',NULL,'8466174558',1), - (88,59,1,1,0,NULL,'716-5464',NULL,'7165464',1), - (89,59,1,0,0,NULL,'(384) 348-3582',NULL,'3843483582',1), - (90,69,1,1,0,NULL,'(461) 589-5486',NULL,'4615895486',1), - (91,189,1,1,0,NULL,'465-4515',NULL,'4654515',2), - (92,189,1,0,0,NULL,'(443) 884-2637',NULL,'4438842637',1), - (93,178,1,1,0,NULL,'(642) 381-5932',NULL,'6423815932',1), - (94,178,1,0,0,NULL,'842-5491',NULL,'8425491',1), - (95,57,1,1,0,NULL,'869-4424',NULL,'8694424',2), - (96,57,1,0,0,NULL,'(235) 822-2326',NULL,'2358222326',2), - (97,85,1,1,0,NULL,'(487) 695-5515',NULL,'4876955515',2), - (98,23,1,1,0,NULL,'360-1572',NULL,'3601572',1), - (99,41,1,1,0,NULL,'248-2060',NULL,'2482060',1), - (100,140,1,1,0,NULL,'374-3754',NULL,'3743754',2), - (101,140,1,0,0,NULL,'695-6875',NULL,'6956875',1), - (102,2,1,1,0,NULL,'556-4752',NULL,'5564752',1), - (103,2,1,0,0,NULL,'(708) 616-4531',NULL,'7086164531',2), - (104,162,1,1,0,NULL,'588-7383',NULL,'5887383',2), - (105,47,1,1,0,NULL,'231-6313',NULL,'2316313',2), - (106,47,1,0,0,NULL,'667-2159',NULL,'6672159',2), - (107,103,1,1,0,NULL,'(747) 203-6110',NULL,'7472036110',2), - (108,112,1,1,0,NULL,'(669) 840-5369',NULL,'6698405369',2), - (109,112,1,0,0,NULL,'(522) 410-4451',NULL,'5224104451',1), - (110,155,1,1,0,NULL,'(338) 540-4978',NULL,'3385404978',2), - (111,193,1,1,0,NULL,'386-1971',NULL,'3861971',2), - (112,193,1,0,0,NULL,'(751) 541-6254',NULL,'7515416254',2), - (113,58,1,1,0,NULL,'693-4968',NULL,'6934968',1), - (114,58,1,0,0,NULL,'318-7957',NULL,'3187957',1), - (115,15,1,1,0,NULL,'(583) 661-6348',NULL,'5836616348',1), - (116,186,1,1,0,NULL,'(523) 445-4769',NULL,'5234454769',1), - (117,188,1,1,0,NULL,'(812) 209-4787',NULL,'8122094787',1), - (118,22,1,1,0,NULL,'(480) 304-9734',NULL,'4803049734',2), - (119,22,1,0,0,NULL,'(299) 577-5813',NULL,'2995775813',1), - (120,137,1,1,0,NULL,'(763) 665-2436',NULL,'7636652436',1), - (121,137,1,0,0,NULL,'(440) 356-7493',NULL,'4403567493',2), - (122,45,1,1,0,NULL,'877-3268',NULL,'8773268',1), - (123,145,1,1,0,NULL,'(629) 658-9270',NULL,'6296589270',2), - (124,145,1,0,0,NULL,'295-7330',NULL,'2957330',2), - (125,159,1,1,0,NULL,'(650) 272-8505',NULL,'6502728505',1), - (126,143,1,1,0,NULL,'444-6349',NULL,'4446349',2), - (127,143,1,0,0,NULL,'598-4930',NULL,'5984930',2), - (128,116,1,1,0,NULL,'(495) 789-9591',NULL,'4957899591',2), - (129,116,1,0,0,NULL,'282-1447',NULL,'2821447',1), - (130,148,1,1,0,NULL,'298-9387',NULL,'2989387',2), - (131,192,1,1,0,NULL,'(297) 705-4073',NULL,'2977054073',2), - (132,192,1,0,0,NULL,'(532) 750-1512',NULL,'5327501512',2), - (133,68,1,1,0,NULL,'(370) 754-9450',NULL,'3707549450',1), - (134,68,1,0,0,NULL,'537-1493',NULL,'5371493',1), - (135,139,1,1,0,NULL,'376-7152',NULL,'3767152',2), - (136,158,1,1,0,NULL,'865-2378',NULL,'8652378',1), - (137,158,1,0,0,NULL,'549-4474',NULL,'5494474',1), - (138,128,1,1,0,NULL,'426-3189',NULL,'4263189',1), - (139,63,1,1,0,NULL,'(496) 893-8197',NULL,'4968938197',1), - (140,63,1,0,0,NULL,'369-9464',NULL,'3699464',1), - (141,113,1,1,0,NULL,'(332) 619-2065',NULL,'3326192065',2), - (142,119,1,1,0,NULL,'836-8152',NULL,'8368152',2), - (143,119,1,0,0,NULL,'(568) 317-7980',NULL,'5683177980',1), - (144,74,1,1,0,NULL,'(804) 611-4573',NULL,'8046114573',2), - (145,32,1,1,0,NULL,'(472) 224-6491',NULL,'4722246491',2), - (146,32,1,0,0,NULL,'214-8652',NULL,'2148652',2), - (147,185,1,1,0,NULL,'(574) 833-6728',NULL,'5748336728',2), - (148,185,1,0,0,NULL,'347-3554',NULL,'3473554',1), - (149,180,1,1,0,NULL,'740-6741',NULL,'7406741',2), - (150,54,1,1,0,NULL,'(889) 670-6717',NULL,'8896706717',1), - (151,198,1,1,0,NULL,'(487) 594-1206',NULL,'4875941206',2), - (152,198,1,0,0,NULL,'477-4238',NULL,'4774238',2), - (153,132,1,1,0,NULL,'479-4361',NULL,'4794361',2), - (154,29,1,1,0,NULL,'(528) 331-7313',NULL,'5283317313',1), - (155,42,1,1,0,NULL,'(464) 873-6850',NULL,'4648736850',1), - (156,154,1,1,0,NULL,'(633) 691-3225',NULL,'6336913225',2), - (157,154,1,0,0,NULL,'838-7435',NULL,'8387435',1), - (158,96,1,1,0,NULL,'485-7455',NULL,'4857455',1), - (159,96,1,0,0,NULL,'(400) 411-4775',NULL,'4004114775',1), - (160,199,1,1,0,NULL,'(239) 713-3083',NULL,'2397133083',1), - (161,199,1,0,0,NULL,'700-4612',NULL,'7004612',1), - (162,48,1,1,0,NULL,'557-3111',NULL,'5573111',1), - (163,14,1,1,0,NULL,'(230) 269-7976',NULL,'2302697976',1), - (164,14,1,0,0,NULL,'(840) 366-9756',NULL,'8403669756',1), - (165,160,1,1,0,NULL,'(454) 425-5993',NULL,'4544255993',2), - (166,182,1,1,0,NULL,'(863) 654-3247',NULL,'8636543247',2), - (167,182,1,0,0,NULL,'711-2793',NULL,'7112793',1), - (168,131,1,1,0,NULL,'301-8569',NULL,'3018569',1), - (169,131,1,0,0,NULL,'489-2562',NULL,'4892562',2), - (170,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), - (171,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), - (172,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); + (1,29,1,1,0,NULL,'(291) 418-2590',NULL,'2914182590',2), + (2,38,1,1,0,NULL,'503-5129',NULL,'5035129',1), + (3,100,1,1,0,NULL,'533-3983',NULL,'5333983',1), + (4,182,1,1,0,NULL,'(225) 545-3523',NULL,'2255453523',2), + (5,92,1,1,0,NULL,'(775) 393-2095',NULL,'7753932095',2), + (6,92,1,0,0,NULL,'814-5108',NULL,'8145108',1), + (7,172,1,1,0,NULL,'746-4180',NULL,'7464180',2), + (8,172,1,0,0,NULL,'457-4474',NULL,'4574474',2), + (9,98,1,1,0,NULL,'(647) 419-2408',NULL,'6474192408',1), + (10,98,1,0,0,NULL,'345-9902',NULL,'3459902',2), + (11,200,1,1,0,NULL,'(277) 312-4360',NULL,'2773124360',2), + (12,31,1,1,0,NULL,'408-8496',NULL,'4088496',2), + (13,31,1,0,0,NULL,'(496) 244-8515',NULL,'4962448515',1), + (14,105,1,1,0,NULL,'282-2250',NULL,'2822250',1), + (15,6,1,1,0,NULL,'376-6782',NULL,'3766782',1), + (16,6,1,0,0,NULL,'(286) 781-2457',NULL,'2867812457',2), + (17,19,1,1,0,NULL,'556-4408',NULL,'5564408',1), + (18,19,1,0,0,NULL,'(681) 831-6499',NULL,'6818316499',1), + (19,115,1,1,0,NULL,'616-8870',NULL,'6168870',2), + (20,115,1,0,0,NULL,'(774) 844-1923',NULL,'7748441923',1), + (21,47,1,1,0,NULL,'514-6728',NULL,'5146728',1), + (22,47,1,0,0,NULL,'448-5220',NULL,'4485220',2), + (23,10,1,1,0,NULL,'(263) 630-4391',NULL,'2636304391',2), + (24,44,1,1,0,NULL,'626-7153',NULL,'6267153',1), + (25,44,1,0,0,NULL,'(448) 426-1574',NULL,'4484261574',2), + (26,152,1,1,0,NULL,'(568) 297-8223',NULL,'5682978223',1), + (27,152,1,0,0,NULL,'843-9317',NULL,'8439317',1), + (28,56,1,1,0,NULL,'(429) 829-7880',NULL,'4298297880',2), + (29,130,1,1,0,NULL,'473-1468',NULL,'4731468',1), + (30,130,1,0,0,NULL,'(863) 315-2643',NULL,'8633152643',2), + (31,169,1,1,0,NULL,'(752) 563-7732',NULL,'7525637732',2), + (32,101,1,1,0,NULL,'(692) 831-9285',NULL,'6928319285',1), + (33,201,1,1,0,NULL,'606-6110',NULL,'6066110',2), + (34,201,1,0,0,NULL,'718-1981',NULL,'7181981',1), + (35,104,1,1,0,NULL,'204-8691',NULL,'2048691',2), + (36,104,1,0,0,NULL,'(396) 342-7049',NULL,'3963427049',2), + (37,137,1,1,0,NULL,'553-5186',NULL,'5535186',1), + (38,75,1,1,0,NULL,'(308) 478-1495',NULL,'3084781495',1), + (39,187,1,1,0,NULL,'809-6282',NULL,'8096282',2), + (40,114,1,1,0,NULL,'(536) 730-5721',NULL,'5367305721',1), + (41,129,1,1,0,NULL,'592-1624',NULL,'5921624',2), + (42,41,1,1,0,NULL,'(802) 776-7364',NULL,'8027767364',2), + (43,41,1,0,0,NULL,'231-2577',NULL,'2312577',2), + (44,23,1,1,0,NULL,'(461) 563-1217',NULL,'4615631217',1), + (45,23,1,0,0,NULL,'(760) 670-3496',NULL,'7606703496',1), + (46,136,1,1,0,NULL,'(294) 370-5019',NULL,'2943705019',2), + (47,74,1,1,0,NULL,'(472) 442-8026',NULL,'4724428026',1), + (48,186,1,1,0,NULL,'899-4717',NULL,'8994717',2), + (49,186,1,0,0,NULL,'(740) 512-9804',NULL,'7405129804',1), + (50,84,1,1,0,NULL,'(254) 205-5104',NULL,'2542055104',2), + (51,164,1,1,0,NULL,'624-4259',NULL,'6244259',2), + (52,81,1,1,0,NULL,'398-6299',NULL,'3986299',1), + (53,81,1,0,0,NULL,'(278) 790-7412',NULL,'2787907412',1), + (54,20,1,1,0,NULL,'742-9626',NULL,'7429626',2), + (55,20,1,0,0,NULL,'(845) 676-5609',NULL,'8456765609',2), + (56,132,1,1,0,NULL,'(297) 546-6793',NULL,'2975466793',1), + (57,139,1,1,0,NULL,'(788) 431-3241',NULL,'7884313241',1), + (58,79,1,1,0,NULL,'(735) 343-3186',NULL,'7353433186',2), + (59,113,1,1,0,NULL,'(503) 803-5407',NULL,'5038035407',1), + (60,113,1,0,0,NULL,'(594) 624-7956',NULL,'5946247956',1), + (61,118,1,1,0,NULL,'(785) 603-1579',NULL,'7856031579',1), + (62,118,1,0,0,NULL,'(840) 638-8400',NULL,'8406388400',2), + (63,26,1,1,0,NULL,'(861) 543-4753',NULL,'8615434753',1), + (64,26,1,0,0,NULL,'(561) 572-5828',NULL,'5615725828',1), + (65,134,1,1,0,NULL,'(274) 220-3392',NULL,'2742203392',2), + (66,134,1,0,0,NULL,'494-1664',NULL,'4941664',1), + (67,3,1,1,0,NULL,'(296) 283-1272',NULL,'2962831272',2), + (68,3,1,0,0,NULL,'(594) 515-1573',NULL,'5945151573',1), + (69,90,1,1,0,NULL,'887-6488',NULL,'8876488',2), + (70,77,1,1,0,NULL,'(441) 894-9798',NULL,'4418949798',2), + (71,83,1,1,0,NULL,'832-2041',NULL,'8322041',1), + (72,83,1,0,0,NULL,'395-6794',NULL,'3956794',1), + (73,171,1,1,0,NULL,'817-7864',NULL,'8177864',2), + (74,171,1,0,0,NULL,'840-3146',NULL,'8403146',1), + (75,73,1,1,0,NULL,'223-2998',NULL,'2232998',1), + (76,170,1,1,0,NULL,'(321) 438-1397',NULL,'3214381397',2), + (77,25,1,1,0,NULL,'(837) 774-1530',NULL,'8377741530',1), + (78,37,1,1,0,NULL,'(243) 551-1373',NULL,'2435511373',1), + (79,108,1,1,0,NULL,'(210) 870-9293',NULL,'2108709293',1), + (80,95,1,1,0,NULL,'884-5120',NULL,'8845120',2), + (81,158,1,1,0,NULL,'(532) 304-4063',NULL,'5323044063',2), + (82,131,1,1,0,NULL,'418-4345',NULL,'4184345',1), + (83,131,1,0,0,NULL,'800-4836',NULL,'8004836',2), + (84,197,1,1,0,NULL,'268-5787',NULL,'2685787',2), + (85,163,1,1,0,NULL,'(674) 613-4324',NULL,'6746134324',1), + (86,65,1,1,0,NULL,'(518) 417-6555',NULL,'5184176555',1), + (87,165,1,1,0,NULL,'(523) 839-7965',NULL,'5238397965',2), + (88,46,1,1,0,NULL,'(347) 383-1522',NULL,'3473831522',2), + (89,102,1,1,0,NULL,'620-2398',NULL,'6202398',2), + (90,102,1,0,0,NULL,'808-9504',NULL,'8089504',1), + (91,166,1,1,0,NULL,'727-4416',NULL,'7274416',1), + (92,72,1,1,0,NULL,'(784) 371-1345',NULL,'7843711345',2), + (93,72,1,0,0,NULL,'(889) 862-3416',NULL,'8898623416',2), + (94,2,1,1,0,NULL,'(444) 220-1214',NULL,'4442201214',2), + (95,2,1,0,0,NULL,'(671) 779-3996',NULL,'6717793996',1), + (96,66,1,1,0,NULL,'418-4859',NULL,'4184859',2), + (97,140,1,1,0,NULL,'(581) 334-6971',NULL,'5813346971',1), + (98,147,1,1,0,NULL,'676-6881',NULL,'6766881',1), + (99,147,1,0,0,NULL,'(273) 800-2313',NULL,'2738002313',2), + (100,190,1,1,0,NULL,'(774) 528-6303',NULL,'7745286303',2), + (101,199,1,1,0,NULL,'523-8182',NULL,'5238182',2), + (102,133,1,1,0,NULL,'(546) 255-7012',NULL,'5462557012',2), + (103,133,1,0,0,NULL,'(479) 290-2447',NULL,'4792902447',1), + (104,69,1,1,0,NULL,'880-4033',NULL,'8804033',2), + (105,69,1,0,0,NULL,'577-8346',NULL,'5778346',1), + (106,8,1,1,0,NULL,'(763) 574-4141',NULL,'7635744141',2), + (107,8,1,0,0,NULL,'415-8359',NULL,'4158359',1), + (108,191,1,1,0,NULL,'366-3790',NULL,'3663790',1), + (109,191,1,0,0,NULL,'257-4887',NULL,'2574887',1), + (110,32,1,1,0,NULL,'(409) 554-1558',NULL,'4095541558',2), + (111,9,1,1,0,NULL,'(534) 545-3524',NULL,'5345453524',2), + (112,9,1,0,0,NULL,'(350) 785-2751',NULL,'3507852751',1), + (113,33,1,1,0,NULL,'206-6984',NULL,'2066984',2), + (114,161,1,1,0,NULL,'(376) 345-7018',NULL,'3763457018',2), + (115,59,1,1,0,NULL,'(447) 331-4723',NULL,'4473314723',1), + (116,11,1,1,0,NULL,'(832) 746-3552',NULL,'8327463552',1), + (117,86,1,1,0,NULL,'(447) 588-8114',NULL,'4475888114',2), + (118,176,1,1,0,NULL,'(214) 255-3789',NULL,'2142553789',2), + (119,176,1,0,0,NULL,'(213) 302-5449',NULL,'2133025449',1), + (120,111,1,1,0,NULL,'331-9893',NULL,'3319893',2), + (121,111,1,0,0,NULL,'763-9869',NULL,'7639869',2), + (122,55,1,1,0,NULL,'(416) 608-7577',NULL,'4166087577',2), + (123,125,1,1,0,NULL,'(850) 595-1565',NULL,'8505951565',1), + (124,125,1,0,0,NULL,'(498) 631-3591',NULL,'4986313591',1), + (125,120,1,1,0,NULL,'786-6062',NULL,'7866062',2), + (126,120,1,0,0,NULL,'(421) 233-6609',NULL,'4212336609',1), + (127,180,1,1,0,NULL,'533-3744',NULL,'5333744',1), + (128,116,1,1,0,NULL,'895-7752',NULL,'8957752',1), + (129,97,1,1,0,NULL,'(509) 486-3021',NULL,'5094863021',1), + (130,97,1,0,0,NULL,'(633) 535-7457',NULL,'6335357457',2), + (131,143,1,1,0,NULL,'(790) 409-6631',NULL,'7904096631',2), + (132,143,1,0,0,NULL,'(217) 414-2957',NULL,'2174142957',2), + (133,175,1,1,0,NULL,'786-7637',NULL,'7867637',1), + (134,58,1,1,0,NULL,'762-2691',NULL,'7622691',2), + (135,58,1,0,0,NULL,'(324) 447-8181',NULL,'3244478181',1), + (136,173,1,1,0,NULL,'(576) 241-1190',NULL,'5762411190',2), + (137,173,1,0,0,NULL,'721-3847',NULL,'7213847',2), + (138,121,1,1,0,NULL,'(671) 735-5528',NULL,'6717355528',2), + (139,121,1,0,0,NULL,'310-5932',NULL,'3105932',1), + (140,53,1,1,0,NULL,'(500) 614-3349',NULL,'5006143349',2), + (141,103,1,1,0,NULL,'633-5027',NULL,'6335027',2), + (142,103,1,0,0,NULL,'868-7440',NULL,'8687440',1), + (143,181,1,1,0,NULL,'(725) 470-8044',NULL,'7254708044',2), + (144,57,1,1,0,NULL,'832-6270',NULL,'8326270',1), + (145,57,1,0,0,NULL,'(652) 606-4198',NULL,'6526064198',1), + (146,146,1,1,0,NULL,'361-1533',NULL,'3611533',2), + (147,146,1,0,0,NULL,'(575) 697-7173',NULL,'5756977173',2), + (148,183,1,1,0,NULL,'(649) 511-1488',NULL,'6495111488',1), + (149,183,1,0,0,NULL,'(857) 647-4393',NULL,'8576474393',1), + (150,178,1,1,0,NULL,'850-4776',NULL,'8504776',2), + (151,178,1,0,0,NULL,'785-1862',NULL,'7851862',1), + (152,162,1,1,0,NULL,'634-1517',NULL,'6341517',2), + (153,27,1,1,0,NULL,'(640) 618-8925',NULL,'6406188925',2), + (154,27,1,0,0,NULL,'(617) 201-7271',NULL,'6172017271',1), + (155,194,1,1,0,NULL,'(759) 777-8470',NULL,'7597778470',2), + (156,194,1,0,0,NULL,'(699) 315-6565',NULL,'6993156565',1), + (157,155,1,1,0,NULL,'(896) 238-1454',NULL,'8962381454',1), + (158,155,1,0,0,NULL,'(715) 711-9406',NULL,'7157119406',2), + (159,NULL,1,0,0,NULL,'204 222-1000',NULL,'2042221000',1), + (160,NULL,1,0,0,NULL,'204 223-1000',NULL,'2042231000',1), + (161,NULL,1,0,0,NULL,'303 323-1000',NULL,'3033231000',1); /*!40000 ALTER TABLE `civicrm_phone` ENABLE KEYS */; UNLOCK TABLES; @@ -7356,219 +7276,222 @@ 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,178,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (2,16,69,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (3,178,189,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (4,16,189,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (5,16,178,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (6,189,105,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (7,178,105,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (8,16,105,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (9,69,105,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (10,189,69,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (11,85,57,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (12,107,57,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (13,85,94,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (14,107,94,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (15,107,85,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (16,94,17,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (17,85,17,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (18,107,17,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (19,57,17,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (20,94,57,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (21,140,23,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (22,34,23,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (23,140,41,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (24,34,41,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (25,34,140,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (26,41,36,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (27,140,36,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (28,34,36,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (29,23,36,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (30,41,23,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (31,62,5,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (32,2,5,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (33,62,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (34,2,13,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (35,2,62,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (36,13,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (37,62,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (38,2,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (39,5,149,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:20','2023-06-09 21:52:20'), - (40,13,5,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (41,46,162,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (42,103,162,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (43,46,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (44,103,47,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (45,103,46,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (46,47,129,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (47,46,129,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (48,103,129,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (49,162,129,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (50,47,162,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (51,112,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (52,151,118,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (53,112,24,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (54,151,24,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (55,151,112,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (56,24,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (57,112,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (58,151,3,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (59,118,3,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (60,24,118,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (61,193,70,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (62,9,70,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (63,193,155,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (64,9,155,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (65,9,193,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (66,155,19,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (67,193,19,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (68,9,19,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (69,70,19,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (70,155,70,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (71,186,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (72,188,58,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (73,186,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (74,188,15,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (75,188,186,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (76,15,165,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (77,186,165,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (78,188,165,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (79,58,165,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (80,15,58,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (81,45,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (82,145,22,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (83,45,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (84,145,137,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (85,145,45,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (86,137,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (87,45,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (88,145,43,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (89,22,43,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (90,137,22,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (91,116,159,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (92,83,159,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (93,116,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (94,83,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (95,83,116,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (96,143,122,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (97,116,122,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (98,83,122,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (99,159,122,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (100,143,159,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (101,192,148,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (102,68,148,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (103,192,130,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (104,68,130,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (105,68,192,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (106,130,126,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (107,192,126,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (108,68,126,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (109,148,126,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (110,130,148,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (111,158,139,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (112,136,139,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (113,158,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (114,136,18,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (115,136,158,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (116,18,86,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (117,158,86,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (118,136,86,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (119,139,86,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (120,18,139,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (121,63,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (122,194,128,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (123,63,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (124,194,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (125,194,63,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (126,40,176,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (127,63,176,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (128,194,176,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (129,128,176,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (130,40,128,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (131,157,113,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (132,197,113,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (133,157,119,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (134,197,119,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (135,197,157,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (136,119,187,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (137,157,187,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (138,197,187,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (139,113,187,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (140,119,113,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (141,74,20,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (142,32,20,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (143,74,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (144,32,67,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (145,32,74,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (146,67,174,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (147,74,174,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (148,32,174,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (149,20,174,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (150,67,20,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (151,180,120,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (152,54,120,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (153,180,185,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (154,54,185,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (155,54,180,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (156,185,84,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (157,180,84,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (158,54,84,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (159,120,84,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (160,185,120,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (161,29,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (162,7,198,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (163,29,132,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (164,7,132,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (165,7,29,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (166,132,109,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (167,29,109,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (168,7,109,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (169,198,109,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (170,132,198,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (171,154,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (172,96,42,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (173,154,39,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (174,96,39,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (175,96,154,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (176,39,78,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (177,154,78,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (178,96,78,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (179,42,78,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (180,39,42,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (181,48,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (182,14,6,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (183,48,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (184,14,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (185,14,48,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (186,199,38,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (187,48,38,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (188,14,38,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (189,6,38,7,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (190,199,6,2,NULL,NULL,0,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (191,30,160,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (192,131,160,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (193,30,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (194,131,182,1,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (195,131,30,4,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (196,182,121,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (197,30,121,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (198,131,121,8,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (199,160,121,7,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (200,182,160,2,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (201,169,8,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (202,39,11,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (203,136,37,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (204,100,88,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (205,198,89,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (206,94,95,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (207,16,117,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (208,143,125,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (209,157,127,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (210,167,173,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (211,77,179,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (212,128,181,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'), - (213,111,191,5,NULL,NULL,1,NULL,0,0,NULL,'2023-06-09 21:52:21','2023-06-09 21:52:21'); + (1,95,108,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (2,158,108,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (3,95,185,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (4,158,185,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (5,158,95,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (6,185,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (7,95,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (8,158,149,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (9,108,149,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (10,185,108,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (11,163,131,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (12,65,131,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (13,163,197,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (14,65,197,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (15,65,163,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (16,197,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (17,163,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (18,65,151,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (19,131,151,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (20,197,131,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (21,102,165,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (22,179,165,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (23,102,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (24,179,46,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (25,179,102,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (26,46,109,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (27,102,109,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (28,179,109,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (29,165,109,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (30,46,165,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (31,34,166,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (32,2,166,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (33,34,72,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (34,2,72,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (35,2,34,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (36,72,127,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (37,34,127,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (38,2,127,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (39,166,127,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (40,72,166,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (41,22,66,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (42,153,66,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (43,22,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (44,153,140,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (45,153,22,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (46,140,12,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (47,22,12,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (48,153,12,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (49,66,12,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (50,140,66,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (51,107,147,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (52,190,147,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (53,107,60,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (54,190,60,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (55,190,107,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (56,60,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (57,107,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (58,190,124,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (59,147,124,7,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (60,60,147,2,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (61,160,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (62,133,40,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (63,160,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (64,133,199,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (65,133,160,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (66,199,30,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (67,160,30,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (68,133,30,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (69,40,30,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (70,199,40,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (71,69,17,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (72,8,17,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (73,69,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (74,8,145,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (75,8,69,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (76,145,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (77,69,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (78,8,51,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (79,17,51,7,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (80,145,17,2,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (81,126,191,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (82,9,191,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (83,126,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (84,9,32,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:38','2023-08-02 20:53:38'), + (85,9,126,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (86,32,50,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (87,126,50,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (88,9,50,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (89,191,50,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (90,32,191,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (91,59,33,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (92,144,33,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (93,59,161,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (94,144,161,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (95,144,59,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (96,161,42,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (97,59,42,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (98,144,42,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (99,33,42,7,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (100,161,33,2,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (101,106,188,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (102,86,188,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (103,106,11,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (104,86,11,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (105,86,106,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (106,11,112,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (107,106,112,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (108,86,112,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (109,188,112,7,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (110,11,188,2,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (111,193,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (112,55,176,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (113,193,111,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (114,55,111,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (115,55,193,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (116,111,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (117,193,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (118,55,138,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (119,176,138,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (120,111,176,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (121,125,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (122,96,80,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (123,125,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (124,96,7,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (125,96,125,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (126,7,91,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (127,125,91,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (128,96,91,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (129,80,91,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (130,7,80,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (131,180,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (132,116,184,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (133,180,120,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (134,116,120,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (135,116,180,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (136,120,87,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (137,180,87,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (138,116,87,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (139,184,87,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (140,120,184,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (141,175,97,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (142,58,97,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (143,175,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (144,58,143,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (145,58,175,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (146,143,63,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (147,175,63,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (148,58,63,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (149,97,63,7,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (150,143,97,2,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (151,121,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (152,53,173,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (153,121,70,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (154,53,70,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (155,53,121,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (156,70,192,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (157,121,192,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (158,53,192,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (159,173,192,7,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (160,70,173,2,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (161,103,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (162,181,36,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (163,103,123,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (164,181,123,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (165,181,103,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (166,123,85,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (167,103,85,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (168,181,85,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (169,36,85,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (170,123,36,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (171,146,57,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (172,24,57,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (173,146,168,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (174,24,168,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (175,24,146,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (176,168,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (177,146,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (178,24,167,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (179,57,167,7,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (180,168,57,2,NULL,NULL,0,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (181,45,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (182,141,183,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (183,45,178,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (184,141,178,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (185,141,45,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (186,178,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (187,45,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (188,141,52,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (189,183,52,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (190,178,183,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (191,194,162,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (192,155,162,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (193,194,27,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (194,155,27,1,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (195,155,194,4,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (196,27,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (197,194,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (198,155,156,8,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (199,162,156,7,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (200,27,162,2,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (201,131,13,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (202,186,16,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (203,133,28,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (204,20,39,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (205,159,43,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (206,201,49,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (207,41,54,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (208,27,68,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (209,11,76,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (210,115,78,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (211,153,82,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (212,199,122,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (213,103,142,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (214,134,157,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (215,37,174,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'), + (216,66,195,5,NULL,NULL,1,NULL,0,0,NULL,'2023-08-02 20:53:39','2023-08-02 20:53:39'); /*!40000 ALTER TABLE `civicrm_relationship` ENABLE KEYS */; UNLOCK TABLES; @@ -7579,432 +7502,438 @@ 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',178,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (2,1,1,'b_a',69,'Parent of',178,'Child of',1,NULL,NULL,NULL), - (3,2,1,'a_b',16,'Child of',69,'Parent of',1,NULL,NULL,NULL), - (4,2,1,'b_a',69,'Parent of',16,'Child of',1,NULL,NULL,NULL), - (5,3,1,'a_b',178,'Child of',189,'Parent of',1,NULL,NULL,NULL), - (6,3,1,'b_a',189,'Parent of',178,'Child of',1,NULL,NULL,NULL), - (7,4,1,'a_b',16,'Child of',189,'Parent of',1,NULL,NULL,NULL), - (8,4,1,'b_a',189,'Parent of',16,'Child of',1,NULL,NULL,NULL), - (9,5,4,'a_b',16,'Sibling of',178,'Sibling of',1,NULL,NULL,NULL), - (10,5,4,'b_a',178,'Sibling of',16,'Sibling of',1,NULL,NULL,NULL), - (11,6,8,'a_b',189,'Household Member of',105,'Household Member is',1,NULL,NULL,NULL), - (12,6,8,'b_a',105,'Household Member is',189,'Household Member of',1,NULL,NULL,NULL), - (13,7,8,'a_b',178,'Household Member of',105,'Household Member is',1,NULL,NULL,NULL), - (14,7,8,'b_a',105,'Household Member is',178,'Household Member of',1,NULL,NULL,NULL), - (15,8,8,'a_b',16,'Household Member of',105,'Household Member is',1,NULL,NULL,NULL), - (16,8,8,'b_a',105,'Household Member is',16,'Household Member of',1,NULL,NULL,NULL), - (17,9,7,'a_b',69,'Head of Household for',105,'Head of Household is',1,NULL,NULL,NULL), - (18,9,7,'b_a',105,'Head of Household is',69,'Head of Household for',1,NULL,NULL,NULL), - (19,10,2,'a_b',189,'Spouse of',69,'Spouse of',1,NULL,NULL,NULL), - (20,10,2,'b_a',69,'Spouse of',189,'Spouse of',1,NULL,NULL,NULL), - (21,11,1,'a_b',85,'Child of',57,'Parent of',1,NULL,NULL,NULL), - (22,11,1,'b_a',57,'Parent of',85,'Child of',1,NULL,NULL,NULL), - (23,12,1,'a_b',107,'Child of',57,'Parent of',1,NULL,NULL,NULL), - (24,12,1,'b_a',57,'Parent of',107,'Child of',1,NULL,NULL,NULL), - (25,13,1,'a_b',85,'Child of',94,'Parent of',1,NULL,NULL,NULL), - (26,13,1,'b_a',94,'Parent of',85,'Child of',1,NULL,NULL,NULL), - (27,14,1,'a_b',107,'Child of',94,'Parent of',1,NULL,NULL,NULL), - (28,14,1,'b_a',94,'Parent of',107,'Child of',1,NULL,NULL,NULL), - (29,15,4,'a_b',107,'Sibling of',85,'Sibling of',1,NULL,NULL,NULL), - (30,15,4,'b_a',85,'Sibling of',107,'Sibling of',1,NULL,NULL,NULL), - (31,16,8,'a_b',94,'Household Member of',17,'Household Member is',1,NULL,NULL,NULL), - (32,16,8,'b_a',17,'Household Member is',94,'Household Member of',1,NULL,NULL,NULL), - (33,17,8,'a_b',85,'Household Member of',17,'Household Member is',1,NULL,NULL,NULL), - (34,17,8,'b_a',17,'Household Member is',85,'Household Member of',1,NULL,NULL,NULL), - (35,18,8,'a_b',107,'Household Member of',17,'Household Member is',1,NULL,NULL,NULL), - (36,18,8,'b_a',17,'Household Member is',107,'Household Member of',1,NULL,NULL,NULL), - (37,19,7,'a_b',57,'Head of Household for',17,'Head of Household is',0,NULL,NULL,NULL), - (38,19,7,'b_a',17,'Head of Household is',57,'Head of Household for',0,NULL,NULL,NULL), - (39,20,2,'a_b',94,'Spouse of',57,'Spouse of',0,NULL,NULL,NULL), - (40,20,2,'b_a',57,'Spouse of',94,'Spouse of',0,NULL,NULL,NULL), - (41,21,1,'a_b',140,'Child of',23,'Parent of',1,NULL,NULL,NULL), - (42,21,1,'b_a',23,'Parent of',140,'Child of',1,NULL,NULL,NULL), - (43,22,1,'a_b',34,'Child of',23,'Parent of',1,NULL,NULL,NULL), - (44,22,1,'b_a',23,'Parent of',34,'Child of',1,NULL,NULL,NULL), - (45,23,1,'a_b',140,'Child of',41,'Parent of',1,NULL,NULL,NULL), - (46,23,1,'b_a',41,'Parent of',140,'Child of',1,NULL,NULL,NULL), - (47,24,1,'a_b',34,'Child of',41,'Parent of',1,NULL,NULL,NULL), - (48,24,1,'b_a',41,'Parent of',34,'Child of',1,NULL,NULL,NULL), - (49,25,4,'a_b',34,'Sibling of',140,'Sibling of',1,NULL,NULL,NULL), - (50,25,4,'b_a',140,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL), - (51,26,8,'a_b',41,'Household Member of',36,'Household Member is',1,NULL,NULL,NULL), - (52,26,8,'b_a',36,'Household Member is',41,'Household Member of',1,NULL,NULL,NULL), - (53,27,8,'a_b',140,'Household Member of',36,'Household Member is',1,NULL,NULL,NULL), - (54,27,8,'b_a',36,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL), - (55,28,8,'a_b',34,'Household Member of',36,'Household Member is',1,NULL,NULL,NULL), - (56,28,8,'b_a',36,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL), - (57,29,7,'a_b',23,'Head of Household for',36,'Head of Household is',0,NULL,NULL,NULL), - (58,29,7,'b_a',36,'Head of Household is',23,'Head of Household for',0,NULL,NULL,NULL), - (59,30,2,'a_b',41,'Spouse of',23,'Spouse of',0,NULL,NULL,NULL), - (60,30,2,'b_a',23,'Spouse of',41,'Spouse of',0,NULL,NULL,NULL), - (61,31,1,'a_b',62,'Child of',5,'Parent of',1,NULL,NULL,NULL), - (62,31,1,'b_a',5,'Parent of',62,'Child of',1,NULL,NULL,NULL), - (63,32,1,'a_b',2,'Child of',5,'Parent of',1,NULL,NULL,NULL), - (64,32,1,'b_a',5,'Parent of',2,'Child of',1,NULL,NULL,NULL), - (65,33,1,'a_b',62,'Child of',13,'Parent of',1,NULL,NULL,NULL), - (66,33,1,'b_a',13,'Parent of',62,'Child of',1,NULL,NULL,NULL), - (67,34,1,'a_b',2,'Child of',13,'Parent of',1,NULL,NULL,NULL), - (68,34,1,'b_a',13,'Parent of',2,'Child of',1,NULL,NULL,NULL), - (69,35,4,'a_b',2,'Sibling of',62,'Sibling of',1,NULL,NULL,NULL), - (70,35,4,'b_a',62,'Sibling of',2,'Sibling of',1,NULL,NULL,NULL), - (71,36,8,'a_b',13,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), - (72,36,8,'b_a',149,'Household Member is',13,'Household Member of',1,NULL,NULL,NULL), - (73,37,8,'a_b',62,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), - (74,37,8,'b_a',149,'Household Member is',62,'Household Member of',1,NULL,NULL,NULL), - (75,38,8,'a_b',2,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), - (76,38,8,'b_a',149,'Household Member is',2,'Household Member of',1,NULL,NULL,NULL), - (77,39,7,'a_b',5,'Head of Household for',149,'Head of Household is',1,NULL,NULL,NULL), - (78,39,7,'b_a',149,'Head of Household is',5,'Head of Household for',1,NULL,NULL,NULL), - (79,40,2,'a_b',13,'Spouse of',5,'Spouse of',1,NULL,NULL,NULL), - (80,40,2,'b_a',5,'Spouse of',13,'Spouse of',1,NULL,NULL,NULL), - (81,41,1,'a_b',46,'Child of',162,'Parent of',1,NULL,NULL,NULL), - (82,41,1,'b_a',162,'Parent of',46,'Child of',1,NULL,NULL,NULL), - (83,42,1,'a_b',103,'Child of',162,'Parent of',1,NULL,NULL,NULL), - (84,42,1,'b_a',162,'Parent of',103,'Child of',1,NULL,NULL,NULL), - (85,43,1,'a_b',46,'Child of',47,'Parent of',1,NULL,NULL,NULL), - (86,43,1,'b_a',47,'Parent of',46,'Child of',1,NULL,NULL,NULL), - (87,44,1,'a_b',103,'Child of',47,'Parent of',1,NULL,NULL,NULL), - (88,44,1,'b_a',47,'Parent of',103,'Child of',1,NULL,NULL,NULL), - (89,45,4,'a_b',103,'Sibling of',46,'Sibling of',1,NULL,NULL,NULL), - (90,45,4,'b_a',46,'Sibling of',103,'Sibling of',1,NULL,NULL,NULL), - (91,46,8,'a_b',47,'Household Member of',129,'Household Member is',1,NULL,NULL,NULL), - (92,46,8,'b_a',129,'Household Member is',47,'Household Member of',1,NULL,NULL,NULL), - (93,47,8,'a_b',46,'Household Member of',129,'Household Member is',1,NULL,NULL,NULL), - (94,47,8,'b_a',129,'Household Member is',46,'Household Member of',1,NULL,NULL,NULL), - (95,48,8,'a_b',103,'Household Member of',129,'Household Member is',1,NULL,NULL,NULL), - (96,48,8,'b_a',129,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL), - (97,49,7,'a_b',162,'Head of Household for',129,'Head of Household is',0,NULL,NULL,NULL), - (98,49,7,'b_a',129,'Head of Household is',162,'Head of Household for',0,NULL,NULL,NULL), - (99,50,2,'a_b',47,'Spouse of',162,'Spouse of',0,NULL,NULL,NULL), - (100,50,2,'b_a',162,'Spouse of',47,'Spouse of',0,NULL,NULL,NULL), - (101,51,1,'a_b',112,'Child of',118,'Parent of',1,NULL,NULL,NULL), - (102,51,1,'b_a',118,'Parent of',112,'Child of',1,NULL,NULL,NULL), - (103,52,1,'a_b',151,'Child of',118,'Parent of',1,NULL,NULL,NULL), - (104,52,1,'b_a',118,'Parent of',151,'Child of',1,NULL,NULL,NULL), - (105,53,1,'a_b',112,'Child of',24,'Parent of',1,NULL,NULL,NULL), - (106,53,1,'b_a',24,'Parent of',112,'Child of',1,NULL,NULL,NULL), - (107,54,1,'a_b',151,'Child of',24,'Parent of',1,NULL,NULL,NULL), - (108,54,1,'b_a',24,'Parent of',151,'Child of',1,NULL,NULL,NULL), - (109,55,4,'a_b',151,'Sibling of',112,'Sibling of',1,NULL,NULL,NULL), - (110,55,4,'b_a',112,'Sibling of',151,'Sibling of',1,NULL,NULL,NULL), - (111,56,8,'a_b',24,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), - (112,56,8,'b_a',3,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL), - (113,57,8,'a_b',112,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), - (114,57,8,'b_a',3,'Household Member is',112,'Household Member of',1,NULL,NULL,NULL), - (115,58,8,'a_b',151,'Household Member of',3,'Household Member is',1,NULL,NULL,NULL), - (116,58,8,'b_a',3,'Household Member is',151,'Household Member of',1,NULL,NULL,NULL), - (117,59,7,'a_b',118,'Head of Household for',3,'Head of Household is',1,NULL,NULL,NULL), - (118,59,7,'b_a',3,'Head of Household is',118,'Head of Household for',1,NULL,NULL,NULL), - (119,60,2,'a_b',24,'Spouse of',118,'Spouse of',1,NULL,NULL,NULL), - (120,60,2,'b_a',118,'Spouse of',24,'Spouse of',1,NULL,NULL,NULL), - (121,61,1,'a_b',193,'Child of',70,'Parent of',1,NULL,NULL,NULL), - (122,61,1,'b_a',70,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (123,62,1,'a_b',9,'Child of',70,'Parent of',1,NULL,NULL,NULL), - (124,62,1,'b_a',70,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (125,63,1,'a_b',193,'Child of',155,'Parent of',1,NULL,NULL,NULL), - (126,63,1,'b_a',155,'Parent of',193,'Child of',1,NULL,NULL,NULL), - (127,64,1,'a_b',9,'Child of',155,'Parent of',1,NULL,NULL,NULL), - (128,64,1,'b_a',155,'Parent of',9,'Child of',1,NULL,NULL,NULL), - (129,65,4,'a_b',9,'Sibling of',193,'Sibling of',1,NULL,NULL,NULL), - (130,65,4,'b_a',193,'Sibling of',9,'Sibling of',1,NULL,NULL,NULL), - (131,66,8,'a_b',155,'Household Member of',19,'Household Member is',1,NULL,NULL,NULL), - (132,66,8,'b_a',19,'Household Member is',155,'Household Member of',1,NULL,NULL,NULL), - (133,67,8,'a_b',193,'Household Member of',19,'Household Member is',1,NULL,NULL,NULL), - (134,67,8,'b_a',19,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), - (135,68,8,'a_b',9,'Household Member of',19,'Household Member is',1,NULL,NULL,NULL), - (136,68,8,'b_a',19,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL), - (137,69,7,'a_b',70,'Head of Household for',19,'Head of Household is',1,NULL,NULL,NULL), - (138,69,7,'b_a',19,'Head of Household is',70,'Head of Household for',1,NULL,NULL,NULL), - (139,70,2,'a_b',155,'Spouse of',70,'Spouse of',1,NULL,NULL,NULL), - (140,70,2,'b_a',70,'Spouse of',155,'Spouse of',1,NULL,NULL,NULL), - (141,71,1,'a_b',186,'Child of',58,'Parent of',1,NULL,NULL,NULL), - (142,71,1,'b_a',58,'Parent of',186,'Child of',1,NULL,NULL,NULL), - (143,72,1,'a_b',188,'Child of',58,'Parent of',1,NULL,NULL,NULL), - (144,72,1,'b_a',58,'Parent of',188,'Child of',1,NULL,NULL,NULL), - (145,73,1,'a_b',186,'Child of',15,'Parent of',1,NULL,NULL,NULL), - (146,73,1,'b_a',15,'Parent of',186,'Child of',1,NULL,NULL,NULL), - (147,74,1,'a_b',188,'Child of',15,'Parent of',1,NULL,NULL,NULL), - (148,74,1,'b_a',15,'Parent of',188,'Child of',1,NULL,NULL,NULL), - (149,75,4,'a_b',188,'Sibling of',186,'Sibling of',1,NULL,NULL,NULL), - (150,75,4,'b_a',186,'Sibling of',188,'Sibling of',1,NULL,NULL,NULL), - (151,76,8,'a_b',15,'Household Member of',165,'Household Member is',1,NULL,NULL,NULL), - (152,76,8,'b_a',165,'Household Member is',15,'Household Member of',1,NULL,NULL,NULL), - (153,77,8,'a_b',186,'Household Member of',165,'Household Member is',1,NULL,NULL,NULL), - (154,77,8,'b_a',165,'Household Member is',186,'Household Member of',1,NULL,NULL,NULL), - (155,78,8,'a_b',188,'Household Member of',165,'Household Member is',1,NULL,NULL,NULL), - (156,78,8,'b_a',165,'Household Member is',188,'Household Member of',1,NULL,NULL,NULL), - (157,79,7,'a_b',58,'Head of Household for',165,'Head of Household is',0,NULL,NULL,NULL), - (158,79,7,'b_a',165,'Head of Household is',58,'Head of Household for',0,NULL,NULL,NULL), - (159,80,2,'a_b',15,'Spouse of',58,'Spouse of',0,NULL,NULL,NULL), - (160,80,2,'b_a',58,'Spouse of',15,'Spouse of',0,NULL,NULL,NULL), - (161,81,1,'a_b',45,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (162,81,1,'b_a',22,'Parent of',45,'Child of',1,NULL,NULL,NULL), - (163,82,1,'a_b',145,'Child of',22,'Parent of',1,NULL,NULL,NULL), - (164,82,1,'b_a',22,'Parent of',145,'Child of',1,NULL,NULL,NULL), - (165,83,1,'a_b',45,'Child of',137,'Parent of',1,NULL,NULL,NULL), - (166,83,1,'b_a',137,'Parent of',45,'Child of',1,NULL,NULL,NULL), - (167,84,1,'a_b',145,'Child of',137,'Parent of',1,NULL,NULL,NULL), - (168,84,1,'b_a',137,'Parent of',145,'Child of',1,NULL,NULL,NULL), - (169,85,4,'a_b',145,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL), - (170,85,4,'b_a',45,'Sibling of',145,'Sibling of',1,NULL,NULL,NULL), - (171,86,8,'a_b',137,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), - (172,86,8,'b_a',43,'Household Member is',137,'Household Member of',1,NULL,NULL,NULL), - (173,87,8,'a_b',45,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), - (174,87,8,'b_a',43,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL), - (175,88,8,'a_b',145,'Household Member of',43,'Household Member is',1,NULL,NULL,NULL), - (176,88,8,'b_a',43,'Household Member is',145,'Household Member of',1,NULL,NULL,NULL), - (177,89,7,'a_b',22,'Head of Household for',43,'Head of Household is',0,NULL,NULL,NULL), - (178,89,7,'b_a',43,'Head of Household is',22,'Head of Household for',0,NULL,NULL,NULL), - (179,90,2,'a_b',137,'Spouse of',22,'Spouse of',0,NULL,NULL,NULL), - (180,90,2,'b_a',22,'Spouse of',137,'Spouse of',0,NULL,NULL,NULL), - (181,91,1,'a_b',116,'Child of',159,'Parent of',1,NULL,NULL,NULL), - (182,91,1,'b_a',159,'Parent of',116,'Child of',1,NULL,NULL,NULL), - (183,92,1,'a_b',83,'Child of',159,'Parent of',1,NULL,NULL,NULL), - (184,92,1,'b_a',159,'Parent of',83,'Child of',1,NULL,NULL,NULL), - (185,93,1,'a_b',116,'Child of',143,'Parent of',1,NULL,NULL,NULL), - (186,93,1,'b_a',143,'Parent of',116,'Child of',1,NULL,NULL,NULL), - (187,94,1,'a_b',83,'Child of',143,'Parent of',1,NULL,NULL,NULL), - (188,94,1,'b_a',143,'Parent of',83,'Child of',1,NULL,NULL,NULL), - (189,95,4,'a_b',83,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL), - (190,95,4,'b_a',116,'Sibling of',83,'Sibling of',1,NULL,NULL,NULL), - (191,96,8,'a_b',143,'Household Member of',122,'Household Member is',1,NULL,NULL,NULL), - (192,96,8,'b_a',122,'Household Member is',143,'Household Member of',1,NULL,NULL,NULL), - (193,97,8,'a_b',116,'Household Member of',122,'Household Member is',1,NULL,NULL,NULL), - (194,97,8,'b_a',122,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL), - (195,98,8,'a_b',83,'Household Member of',122,'Household Member is',1,NULL,NULL,NULL), - (196,98,8,'b_a',122,'Household Member is',83,'Household Member of',1,NULL,NULL,NULL), - (197,99,7,'a_b',159,'Head of Household for',122,'Head of Household is',0,NULL,NULL,NULL), - (198,99,7,'b_a',122,'Head of Household is',159,'Head of Household for',0,NULL,NULL,NULL), - (199,100,2,'a_b',143,'Spouse of',159,'Spouse of',0,NULL,NULL,NULL), - (200,100,2,'b_a',159,'Spouse of',143,'Spouse of',0,NULL,NULL,NULL), - (201,101,1,'a_b',192,'Child of',148,'Parent of',1,NULL,NULL,NULL), - (202,101,1,'b_a',148,'Parent of',192,'Child of',1,NULL,NULL,NULL), - (203,102,1,'a_b',68,'Child of',148,'Parent of',1,NULL,NULL,NULL), - (204,102,1,'b_a',148,'Parent of',68,'Child of',1,NULL,NULL,NULL), - (205,103,1,'a_b',192,'Child of',130,'Parent of',1,NULL,NULL,NULL), - (206,103,1,'b_a',130,'Parent of',192,'Child of',1,NULL,NULL,NULL), - (207,104,1,'a_b',68,'Child of',130,'Parent of',1,NULL,NULL,NULL), - (208,104,1,'b_a',130,'Parent of',68,'Child of',1,NULL,NULL,NULL), - (209,105,4,'a_b',68,'Sibling of',192,'Sibling of',1,NULL,NULL,NULL), - (210,105,4,'b_a',192,'Sibling of',68,'Sibling of',1,NULL,NULL,NULL), - (211,106,8,'a_b',130,'Household Member of',126,'Household Member is',1,NULL,NULL,NULL), - (212,106,8,'b_a',126,'Household Member is',130,'Household Member of',1,NULL,NULL,NULL), - (213,107,8,'a_b',192,'Household Member of',126,'Household Member is',1,NULL,NULL,NULL), - (214,107,8,'b_a',126,'Household Member is',192,'Household Member of',1,NULL,NULL,NULL), - (215,108,8,'a_b',68,'Household Member of',126,'Household Member is',1,NULL,NULL,NULL), - (216,108,8,'b_a',126,'Household Member is',68,'Household Member of',1,NULL,NULL,NULL), - (217,109,7,'a_b',148,'Head of Household for',126,'Head of Household is',0,NULL,NULL,NULL), - (218,109,7,'b_a',126,'Head of Household is',148,'Head of Household for',0,NULL,NULL,NULL), - (219,110,2,'a_b',130,'Spouse of',148,'Spouse of',0,NULL,NULL,NULL), - (220,110,2,'b_a',148,'Spouse of',130,'Spouse of',0,NULL,NULL,NULL), - (221,111,1,'a_b',158,'Child of',139,'Parent of',1,NULL,NULL,NULL), - (222,111,1,'b_a',139,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (223,112,1,'a_b',136,'Child of',139,'Parent of',1,NULL,NULL,NULL), - (224,112,1,'b_a',139,'Parent of',136,'Child of',1,NULL,NULL,NULL), - (225,113,1,'a_b',158,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (226,113,1,'b_a',18,'Parent of',158,'Child of',1,NULL,NULL,NULL), - (227,114,1,'a_b',136,'Child of',18,'Parent of',1,NULL,NULL,NULL), - (228,114,1,'b_a',18,'Parent of',136,'Child of',1,NULL,NULL,NULL), - (229,115,4,'a_b',136,'Sibling of',158,'Sibling of',1,NULL,NULL,NULL), - (230,115,4,'b_a',158,'Sibling of',136,'Sibling of',1,NULL,NULL,NULL), - (231,116,8,'a_b',18,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL), - (232,116,8,'b_a',86,'Household Member is',18,'Household Member of',1,NULL,NULL,NULL), - (233,117,8,'a_b',158,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL), - (234,117,8,'b_a',86,'Household Member is',158,'Household Member of',1,NULL,NULL,NULL), - (235,118,8,'a_b',136,'Household Member of',86,'Household Member is',1,NULL,NULL,NULL), - (236,118,8,'b_a',86,'Household Member is',136,'Household Member of',1,NULL,NULL,NULL), - (237,119,7,'a_b',139,'Head of Household for',86,'Head of Household is',0,NULL,NULL,NULL), - (238,119,7,'b_a',86,'Head of Household is',139,'Head of Household for',0,NULL,NULL,NULL), - (239,120,2,'a_b',18,'Spouse of',139,'Spouse of',0,NULL,NULL,NULL), - (240,120,2,'b_a',139,'Spouse of',18,'Spouse of',0,NULL,NULL,NULL), - (241,121,1,'a_b',63,'Child of',128,'Parent of',1,NULL,NULL,NULL), - (242,121,1,'b_a',128,'Parent of',63,'Child of',1,NULL,NULL,NULL), - (243,122,1,'a_b',194,'Child of',128,'Parent of',1,NULL,NULL,NULL), - (244,122,1,'b_a',128,'Parent of',194,'Child of',1,NULL,NULL,NULL), - (245,123,1,'a_b',63,'Child of',40,'Parent of',1,NULL,NULL,NULL), - (246,123,1,'b_a',40,'Parent of',63,'Child of',1,NULL,NULL,NULL), - (247,124,1,'a_b',194,'Child of',40,'Parent of',1,NULL,NULL,NULL), - (248,124,1,'b_a',40,'Parent of',194,'Child of',1,NULL,NULL,NULL), - (249,125,4,'a_b',194,'Sibling of',63,'Sibling of',1,NULL,NULL,NULL), - (250,125,4,'b_a',63,'Sibling of',194,'Sibling of',1,NULL,NULL,NULL), - (251,126,8,'a_b',40,'Household Member of',176,'Household Member is',1,NULL,NULL,NULL), - (252,126,8,'b_a',176,'Household Member is',40,'Household Member of',1,NULL,NULL,NULL), - (253,127,8,'a_b',63,'Household Member of',176,'Household Member is',1,NULL,NULL,NULL), - (254,127,8,'b_a',176,'Household Member is',63,'Household Member of',1,NULL,NULL,NULL), - (255,128,8,'a_b',194,'Household Member of',176,'Household Member is',1,NULL,NULL,NULL), - (256,128,8,'b_a',176,'Household Member is',194,'Household Member of',1,NULL,NULL,NULL), - (257,129,7,'a_b',128,'Head of Household for',176,'Head of Household is',1,NULL,NULL,NULL), - (258,129,7,'b_a',176,'Head of Household is',128,'Head of Household for',1,NULL,NULL,NULL), - (259,130,2,'a_b',40,'Spouse of',128,'Spouse of',1,NULL,NULL,NULL), - (260,130,2,'b_a',128,'Spouse of',40,'Spouse of',1,NULL,NULL,NULL), - (261,131,1,'a_b',157,'Child of',113,'Parent of',1,NULL,NULL,NULL), - (262,131,1,'b_a',113,'Parent of',157,'Child of',1,NULL,NULL,NULL), - (263,132,1,'a_b',197,'Child of',113,'Parent of',1,NULL,NULL,NULL), - (264,132,1,'b_a',113,'Parent of',197,'Child of',1,NULL,NULL,NULL), - (265,133,1,'a_b',157,'Child of',119,'Parent of',1,NULL,NULL,NULL), - (266,133,1,'b_a',119,'Parent of',157,'Child of',1,NULL,NULL,NULL), - (267,134,1,'a_b',197,'Child of',119,'Parent of',1,NULL,NULL,NULL), - (268,134,1,'b_a',119,'Parent of',197,'Child of',1,NULL,NULL,NULL), - (269,135,4,'a_b',197,'Sibling of',157,'Sibling of',1,NULL,NULL,NULL), - (270,135,4,'b_a',157,'Sibling of',197,'Sibling of',1,NULL,NULL,NULL), - (271,136,8,'a_b',119,'Household Member of',187,'Household Member is',1,NULL,NULL,NULL), - (272,136,8,'b_a',187,'Household Member is',119,'Household Member of',1,NULL,NULL,NULL), - (273,137,8,'a_b',157,'Household Member of',187,'Household Member is',1,NULL,NULL,NULL), - (274,137,8,'b_a',187,'Household Member is',157,'Household Member of',1,NULL,NULL,NULL), - (275,138,8,'a_b',197,'Household Member of',187,'Household Member is',1,NULL,NULL,NULL), - (276,138,8,'b_a',187,'Household Member is',197,'Household Member of',1,NULL,NULL,NULL), - (277,139,7,'a_b',113,'Head of Household for',187,'Head of Household is',0,NULL,NULL,NULL), - (278,139,7,'b_a',187,'Head of Household is',113,'Head of Household for',0,NULL,NULL,NULL), - (279,140,2,'a_b',119,'Spouse of',113,'Spouse of',0,NULL,NULL,NULL), - (280,140,2,'b_a',113,'Spouse of',119,'Spouse of',0,NULL,NULL,NULL), - (281,141,1,'a_b',74,'Child of',20,'Parent of',1,NULL,NULL,NULL), - (282,141,1,'b_a',20,'Parent of',74,'Child of',1,NULL,NULL,NULL), - (283,142,1,'a_b',32,'Child of',20,'Parent of',1,NULL,NULL,NULL), - (284,142,1,'b_a',20,'Parent of',32,'Child of',1,NULL,NULL,NULL), - (285,143,1,'a_b',74,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (286,143,1,'b_a',67,'Parent of',74,'Child of',1,NULL,NULL,NULL), - (287,144,1,'a_b',32,'Child of',67,'Parent of',1,NULL,NULL,NULL), - (288,144,1,'b_a',67,'Parent of',32,'Child of',1,NULL,NULL,NULL), - (289,145,4,'a_b',32,'Sibling of',74,'Sibling of',1,NULL,NULL,NULL), - (290,145,4,'b_a',74,'Sibling of',32,'Sibling of',1,NULL,NULL,NULL), - (291,146,8,'a_b',67,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL), - (292,146,8,'b_a',174,'Household Member is',67,'Household Member of',1,NULL,NULL,NULL), - (293,147,8,'a_b',74,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL), - (294,147,8,'b_a',174,'Household Member is',74,'Household Member of',1,NULL,NULL,NULL), - (295,148,8,'a_b',32,'Household Member of',174,'Household Member is',1,NULL,NULL,NULL), - (296,148,8,'b_a',174,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL), - (297,149,7,'a_b',20,'Head of Household for',174,'Head of Household is',1,NULL,NULL,NULL), - (298,149,7,'b_a',174,'Head of Household is',20,'Head of Household for',1,NULL,NULL,NULL), - (299,150,2,'a_b',67,'Spouse of',20,'Spouse of',1,NULL,NULL,NULL), - (300,150,2,'b_a',20,'Spouse of',67,'Spouse of',1,NULL,NULL,NULL), - (301,151,1,'a_b',180,'Child of',120,'Parent of',1,NULL,NULL,NULL), - (302,151,1,'b_a',120,'Parent of',180,'Child of',1,NULL,NULL,NULL), - (303,152,1,'a_b',54,'Child of',120,'Parent of',1,NULL,NULL,NULL), - (304,152,1,'b_a',120,'Parent of',54,'Child of',1,NULL,NULL,NULL), - (305,153,1,'a_b',180,'Child of',185,'Parent of',1,NULL,NULL,NULL), - (306,153,1,'b_a',185,'Parent of',180,'Child of',1,NULL,NULL,NULL), - (307,154,1,'a_b',54,'Child of',185,'Parent of',1,NULL,NULL,NULL), - (308,154,1,'b_a',185,'Parent of',54,'Child of',1,NULL,NULL,NULL), - (309,155,4,'a_b',54,'Sibling of',180,'Sibling of',1,NULL,NULL,NULL), - (310,155,4,'b_a',180,'Sibling of',54,'Sibling of',1,NULL,NULL,NULL), - (311,156,8,'a_b',185,'Household Member of',84,'Household Member is',1,NULL,NULL,NULL), - (312,156,8,'b_a',84,'Household Member is',185,'Household Member of',1,NULL,NULL,NULL), - (313,157,8,'a_b',180,'Household Member of',84,'Household Member is',1,NULL,NULL,NULL), - (314,157,8,'b_a',84,'Household Member is',180,'Household Member of',1,NULL,NULL,NULL), - (315,158,8,'a_b',54,'Household Member of',84,'Household Member is',1,NULL,NULL,NULL), - (316,158,8,'b_a',84,'Household Member is',54,'Household Member of',1,NULL,NULL,NULL), - (317,159,7,'a_b',120,'Head of Household for',84,'Head of Household is',1,NULL,NULL,NULL), - (318,159,7,'b_a',84,'Head of Household is',120,'Head of Household for',1,NULL,NULL,NULL), - (319,160,2,'a_b',185,'Spouse of',120,'Spouse of',1,NULL,NULL,NULL), - (320,160,2,'b_a',120,'Spouse of',185,'Spouse of',1,NULL,NULL,NULL), - (321,161,1,'a_b',29,'Child of',198,'Parent of',1,NULL,NULL,NULL), - (322,161,1,'b_a',198,'Parent of',29,'Child of',1,NULL,NULL,NULL), - (323,162,1,'a_b',7,'Child of',198,'Parent of',1,NULL,NULL,NULL), - (324,162,1,'b_a',198,'Parent of',7,'Child of',1,NULL,NULL,NULL), - (325,163,1,'a_b',29,'Child of',132,'Parent of',1,NULL,NULL,NULL), - (326,163,1,'b_a',132,'Parent of',29,'Child of',1,NULL,NULL,NULL), - (327,164,1,'a_b',7,'Child of',132,'Parent of',1,NULL,NULL,NULL), - (328,164,1,'b_a',132,'Parent of',7,'Child of',1,NULL,NULL,NULL), - (329,165,4,'a_b',7,'Sibling of',29,'Sibling of',1,NULL,NULL,NULL), - (330,165,4,'b_a',29,'Sibling of',7,'Sibling of',1,NULL,NULL,NULL), - (331,166,8,'a_b',132,'Household Member of',109,'Household Member is',1,NULL,NULL,NULL), - (332,166,8,'b_a',109,'Household Member is',132,'Household Member of',1,NULL,NULL,NULL), - (333,167,8,'a_b',29,'Household Member of',109,'Household Member is',1,NULL,NULL,NULL), - (334,167,8,'b_a',109,'Household Member is',29,'Household Member of',1,NULL,NULL,NULL), - (335,168,8,'a_b',7,'Household Member of',109,'Household Member is',1,NULL,NULL,NULL), - (336,168,8,'b_a',109,'Household Member is',7,'Household Member of',1,NULL,NULL,NULL), - (337,169,7,'a_b',198,'Head of Household for',109,'Head of Household is',1,NULL,NULL,NULL), - (338,169,7,'b_a',109,'Head of Household is',198,'Head of Household for',1,NULL,NULL,NULL), - (339,170,2,'a_b',132,'Spouse of',198,'Spouse of',1,NULL,NULL,NULL), - (340,170,2,'b_a',198,'Spouse of',132,'Spouse of',1,NULL,NULL,NULL), - (341,171,1,'a_b',154,'Child of',42,'Parent of',1,NULL,NULL,NULL), - (342,171,1,'b_a',42,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (343,172,1,'a_b',96,'Child of',42,'Parent of',1,NULL,NULL,NULL), - (344,172,1,'b_a',42,'Parent of',96,'Child of',1,NULL,NULL,NULL), - (345,173,1,'a_b',154,'Child of',39,'Parent of',1,NULL,NULL,NULL), - (346,173,1,'b_a',39,'Parent of',154,'Child of',1,NULL,NULL,NULL), - (347,174,1,'a_b',96,'Child of',39,'Parent of',1,NULL,NULL,NULL), - (348,174,1,'b_a',39,'Parent of',96,'Child of',1,NULL,NULL,NULL), - (349,175,4,'a_b',96,'Sibling of',154,'Sibling of',1,NULL,NULL,NULL), - (350,175,4,'b_a',154,'Sibling of',96,'Sibling of',1,NULL,NULL,NULL), - (351,176,8,'a_b',39,'Household Member of',78,'Household Member is',1,NULL,NULL,NULL), - (352,176,8,'b_a',78,'Household Member is',39,'Household Member of',1,NULL,NULL,NULL), - (353,177,8,'a_b',154,'Household Member of',78,'Household Member is',1,NULL,NULL,NULL), - (354,177,8,'b_a',78,'Household Member is',154,'Household Member of',1,NULL,NULL,NULL), - (355,178,8,'a_b',96,'Household Member of',78,'Household Member is',1,NULL,NULL,NULL), - (356,178,8,'b_a',78,'Household Member is',96,'Household Member of',1,NULL,NULL,NULL), - (357,179,7,'a_b',42,'Head of Household for',78,'Head of Household is',1,NULL,NULL,NULL), - (358,179,7,'b_a',78,'Head of Household is',42,'Head of Household for',1,NULL,NULL,NULL), - (359,180,2,'a_b',39,'Spouse of',42,'Spouse of',1,NULL,NULL,NULL), - (360,180,2,'b_a',42,'Spouse of',39,'Spouse of',1,NULL,NULL,NULL), - (361,181,1,'a_b',48,'Child of',6,'Parent of',1,NULL,NULL,NULL), - (362,181,1,'b_a',6,'Parent of',48,'Child of',1,NULL,NULL,NULL), - (363,182,1,'a_b',14,'Child of',6,'Parent of',1,NULL,NULL,NULL), - (364,182,1,'b_a',6,'Parent of',14,'Child of',1,NULL,NULL,NULL), - (365,183,1,'a_b',48,'Child of',199,'Parent of',1,NULL,NULL,NULL), - (366,183,1,'b_a',199,'Parent of',48,'Child of',1,NULL,NULL,NULL), - (367,184,1,'a_b',14,'Child of',199,'Parent of',1,NULL,NULL,NULL), - (368,184,1,'b_a',199,'Parent of',14,'Child of',1,NULL,NULL,NULL), - (369,185,4,'a_b',14,'Sibling of',48,'Sibling of',1,NULL,NULL,NULL), - (370,185,4,'b_a',48,'Sibling of',14,'Sibling of',1,NULL,NULL,NULL), - (371,186,8,'a_b',199,'Household Member of',38,'Household Member is',1,NULL,NULL,NULL), - (372,186,8,'b_a',38,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL), - (373,187,8,'a_b',48,'Household Member of',38,'Household Member is',1,NULL,NULL,NULL), - (374,187,8,'b_a',38,'Household Member is',48,'Household Member of',1,NULL,NULL,NULL), - (375,188,8,'a_b',14,'Household Member of',38,'Household Member is',1,NULL,NULL,NULL), - (376,188,8,'b_a',38,'Household Member is',14,'Household Member of',1,NULL,NULL,NULL), - (377,189,7,'a_b',6,'Head of Household for',38,'Head of Household is',0,NULL,NULL,NULL), - (378,189,7,'b_a',38,'Head of Household is',6,'Head of Household for',0,NULL,NULL,NULL), - (379,190,2,'a_b',199,'Spouse of',6,'Spouse of',0,NULL,NULL,NULL), - (380,190,2,'b_a',6,'Spouse of',199,'Spouse of',0,NULL,NULL,NULL), - (381,191,1,'a_b',30,'Child of',160,'Parent of',1,NULL,NULL,NULL), - (382,191,1,'b_a',160,'Parent of',30,'Child of',1,NULL,NULL,NULL), - (383,192,1,'a_b',131,'Child of',160,'Parent of',1,NULL,NULL,NULL), - (384,192,1,'b_a',160,'Parent of',131,'Child of',1,NULL,NULL,NULL), - (385,193,1,'a_b',30,'Child of',182,'Parent of',1,NULL,NULL,NULL), - (386,193,1,'b_a',182,'Parent of',30,'Child of',1,NULL,NULL,NULL), - (387,194,1,'a_b',131,'Child of',182,'Parent of',1,NULL,NULL,NULL), - (388,194,1,'b_a',182,'Parent of',131,'Child of',1,NULL,NULL,NULL), - (389,195,4,'a_b',131,'Sibling of',30,'Sibling of',1,NULL,NULL,NULL), - (390,195,4,'b_a',30,'Sibling of',131,'Sibling of',1,NULL,NULL,NULL), - (391,196,8,'a_b',182,'Household Member of',121,'Household Member is',1,NULL,NULL,NULL), - (392,196,8,'b_a',121,'Household Member is',182,'Household Member of',1,NULL,NULL,NULL), - (393,197,8,'a_b',30,'Household Member of',121,'Household Member is',1,NULL,NULL,NULL), - (394,197,8,'b_a',121,'Household Member is',30,'Household Member of',1,NULL,NULL,NULL), - (395,198,8,'a_b',131,'Household Member of',121,'Household Member is',1,NULL,NULL,NULL), - (396,198,8,'b_a',121,'Household Member is',131,'Household Member of',1,NULL,NULL,NULL), - (397,199,7,'a_b',160,'Head of Household for',121,'Head of Household is',1,NULL,NULL,NULL), - (398,199,7,'b_a',121,'Head of Household is',160,'Head of Household for',1,NULL,NULL,NULL), - (399,200,2,'a_b',182,'Spouse of',160,'Spouse of',1,NULL,NULL,NULL), - (400,200,2,'b_a',160,'Spouse of',182,'Spouse of',1,NULL,NULL,NULL), - (401,201,5,'a_b',169,'Employee of',8,'Employer of',1,NULL,NULL,NULL), - (402,201,5,'b_a',8,'Employer of',169,'Employee of',1,NULL,NULL,NULL), - (403,202,5,'a_b',39,'Employee of',11,'Employer of',1,NULL,NULL,NULL), - (404,202,5,'b_a',11,'Employer of',39,'Employee of',1,NULL,NULL,NULL), - (405,203,5,'a_b',136,'Employee of',37,'Employer of',1,NULL,NULL,NULL), - (406,203,5,'b_a',37,'Employer of',136,'Employee of',1,NULL,NULL,NULL), - (407,204,5,'a_b',100,'Employee of',88,'Employer of',1,NULL,NULL,NULL), - (408,204,5,'b_a',88,'Employer of',100,'Employee of',1,NULL,NULL,NULL), - (409,205,5,'a_b',198,'Employee of',89,'Employer of',1,NULL,NULL,NULL), - (410,205,5,'b_a',89,'Employer of',198,'Employee of',1,NULL,NULL,NULL), - (411,206,5,'a_b',94,'Employee of',95,'Employer of',1,NULL,NULL,NULL), - (412,206,5,'b_a',95,'Employer of',94,'Employee of',1,NULL,NULL,NULL), - (413,207,5,'a_b',16,'Employee of',117,'Employer of',1,NULL,NULL,NULL), - (414,207,5,'b_a',117,'Employer of',16,'Employee of',1,NULL,NULL,NULL), - (415,208,5,'a_b',143,'Employee of',125,'Employer of',1,NULL,NULL,NULL), - (416,208,5,'b_a',125,'Employer of',143,'Employee of',1,NULL,NULL,NULL), - (417,209,5,'a_b',157,'Employee of',127,'Employer of',1,NULL,NULL,NULL), - (418,209,5,'b_a',127,'Employer of',157,'Employee of',1,NULL,NULL,NULL), - (419,210,5,'a_b',167,'Employee of',173,'Employer of',1,NULL,NULL,NULL), - (420,210,5,'b_a',173,'Employer of',167,'Employee of',1,NULL,NULL,NULL), - (421,211,5,'a_b',77,'Employee of',179,'Employer of',1,NULL,NULL,NULL), - (422,211,5,'b_a',179,'Employer of',77,'Employee of',1,NULL,NULL,NULL), - (423,212,5,'a_b',128,'Employee of',181,'Employer of',1,NULL,NULL,NULL), - (424,212,5,'b_a',181,'Employer of',128,'Employee of',1,NULL,NULL,NULL), - (425,213,5,'a_b',111,'Employee of',191,'Employer of',1,NULL,NULL,NULL), - (426,213,5,'b_a',191,'Employer of',111,'Employee of',1,NULL,NULL,NULL); + (1,1,1,'a_b',95,'Child of',108,'Parent of',1,NULL,NULL,NULL), + (2,1,1,'b_a',108,'Parent of',95,'Child of',1,NULL,NULL,NULL), + (3,2,1,'a_b',158,'Child of',108,'Parent of',1,NULL,NULL,NULL), + (4,2,1,'b_a',108,'Parent of',158,'Child of',1,NULL,NULL,NULL), + (5,3,1,'a_b',95,'Child of',185,'Parent of',1,NULL,NULL,NULL), + (6,3,1,'b_a',185,'Parent of',95,'Child of',1,NULL,NULL,NULL), + (7,4,1,'a_b',158,'Child of',185,'Parent of',1,NULL,NULL,NULL), + (8,4,1,'b_a',185,'Parent of',158,'Child of',1,NULL,NULL,NULL), + (9,5,4,'a_b',158,'Sibling of',95,'Sibling of',1,NULL,NULL,NULL), + (10,5,4,'b_a',95,'Sibling of',158,'Sibling of',1,NULL,NULL,NULL), + (11,6,8,'a_b',185,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), + (12,6,8,'b_a',149,'Household Member is',185,'Household Member of',1,NULL,NULL,NULL), + (13,7,8,'a_b',95,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), + (14,7,8,'b_a',149,'Household Member is',95,'Household Member of',1,NULL,NULL,NULL), + (15,8,8,'a_b',158,'Household Member of',149,'Household Member is',1,NULL,NULL,NULL), + (16,8,8,'b_a',149,'Household Member is',158,'Household Member of',1,NULL,NULL,NULL), + (17,9,7,'a_b',108,'Head of Household for',149,'Head of Household is',1,NULL,NULL,NULL), + (18,9,7,'b_a',149,'Head of Household is',108,'Head of Household for',1,NULL,NULL,NULL), + (19,10,2,'a_b',185,'Spouse of',108,'Spouse of',1,NULL,NULL,NULL), + (20,10,2,'b_a',108,'Spouse of',185,'Spouse of',1,NULL,NULL,NULL), + (21,11,1,'a_b',163,'Child of',131,'Parent of',1,NULL,NULL,NULL), + (22,11,1,'b_a',131,'Parent of',163,'Child of',1,NULL,NULL,NULL), + (23,12,1,'a_b',65,'Child of',131,'Parent of',1,NULL,NULL,NULL), + (24,12,1,'b_a',131,'Parent of',65,'Child of',1,NULL,NULL,NULL), + (25,13,1,'a_b',163,'Child of',197,'Parent of',1,NULL,NULL,NULL), + (26,13,1,'b_a',197,'Parent of',163,'Child of',1,NULL,NULL,NULL), + (27,14,1,'a_b',65,'Child of',197,'Parent of',1,NULL,NULL,NULL), + (28,14,1,'b_a',197,'Parent of',65,'Child of',1,NULL,NULL,NULL), + (29,15,4,'a_b',65,'Sibling of',163,'Sibling of',1,NULL,NULL,NULL), + (30,15,4,'b_a',163,'Sibling of',65,'Sibling of',1,NULL,NULL,NULL), + (31,16,8,'a_b',197,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL), + (32,16,8,'b_a',151,'Household Member is',197,'Household Member of',1,NULL,NULL,NULL), + (33,17,8,'a_b',163,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL), + (34,17,8,'b_a',151,'Household Member is',163,'Household Member of',1,NULL,NULL,NULL), + (35,18,8,'a_b',65,'Household Member of',151,'Household Member is',1,NULL,NULL,NULL), + (36,18,8,'b_a',151,'Household Member is',65,'Household Member of',1,NULL,NULL,NULL), + (37,19,7,'a_b',131,'Head of Household for',151,'Head of Household is',1,NULL,NULL,NULL), + (38,19,7,'b_a',151,'Head of Household is',131,'Head of Household for',1,NULL,NULL,NULL), + (39,20,2,'a_b',197,'Spouse of',131,'Spouse of',1,NULL,NULL,NULL), + (40,20,2,'b_a',131,'Spouse of',197,'Spouse of',1,NULL,NULL,NULL), + (41,21,1,'a_b',102,'Child of',165,'Parent of',1,NULL,NULL,NULL), + (42,21,1,'b_a',165,'Parent of',102,'Child of',1,NULL,NULL,NULL), + (43,22,1,'a_b',179,'Child of',165,'Parent of',1,NULL,NULL,NULL), + (44,22,1,'b_a',165,'Parent of',179,'Child of',1,NULL,NULL,NULL), + (45,23,1,'a_b',102,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (46,23,1,'b_a',46,'Parent of',102,'Child of',1,NULL,NULL,NULL), + (47,24,1,'a_b',179,'Child of',46,'Parent of',1,NULL,NULL,NULL), + (48,24,1,'b_a',46,'Parent of',179,'Child of',1,NULL,NULL,NULL), + (49,25,4,'a_b',179,'Sibling of',102,'Sibling of',1,NULL,NULL,NULL), + (50,25,4,'b_a',102,'Sibling of',179,'Sibling of',1,NULL,NULL,NULL), + (51,26,8,'a_b',46,'Household Member of',109,'Household Member is',1,NULL,NULL,NULL), + (52,26,8,'b_a',109,'Household Member is',46,'Household Member of',1,NULL,NULL,NULL), + (53,27,8,'a_b',102,'Household Member of',109,'Household Member is',1,NULL,NULL,NULL), + (54,27,8,'b_a',109,'Household Member is',102,'Household Member of',1,NULL,NULL,NULL), + (55,28,8,'a_b',179,'Household Member of',109,'Household Member is',1,NULL,NULL,NULL), + (56,28,8,'b_a',109,'Household Member is',179,'Household Member of',1,NULL,NULL,NULL), + (57,29,7,'a_b',165,'Head of Household for',109,'Head of Household is',1,NULL,NULL,NULL), + (58,29,7,'b_a',109,'Head of Household is',165,'Head of Household for',1,NULL,NULL,NULL), + (59,30,2,'a_b',46,'Spouse of',165,'Spouse of',1,NULL,NULL,NULL), + (60,30,2,'b_a',165,'Spouse of',46,'Spouse of',1,NULL,NULL,NULL), + (61,31,1,'a_b',34,'Child of',166,'Parent of',1,NULL,NULL,NULL), + (62,31,1,'b_a',166,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (63,32,1,'a_b',2,'Child of',166,'Parent of',1,NULL,NULL,NULL), + (64,32,1,'b_a',166,'Parent of',2,'Child of',1,NULL,NULL,NULL), + (65,33,1,'a_b',34,'Child of',72,'Parent of',1,NULL,NULL,NULL), + (66,33,1,'b_a',72,'Parent of',34,'Child of',1,NULL,NULL,NULL), + (67,34,1,'a_b',2,'Child of',72,'Parent of',1,NULL,NULL,NULL), + (68,34,1,'b_a',72,'Parent of',2,'Child of',1,NULL,NULL,NULL), + (69,35,4,'a_b',2,'Sibling of',34,'Sibling of',1,NULL,NULL,NULL), + (70,35,4,'b_a',34,'Sibling of',2,'Sibling of',1,NULL,NULL,NULL), + (71,36,8,'a_b',72,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL), + (72,36,8,'b_a',127,'Household Member is',72,'Household Member of',1,NULL,NULL,NULL), + (73,37,8,'a_b',34,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL), + (74,37,8,'b_a',127,'Household Member is',34,'Household Member of',1,NULL,NULL,NULL), + (75,38,8,'a_b',2,'Household Member of',127,'Household Member is',1,NULL,NULL,NULL), + (76,38,8,'b_a',127,'Household Member is',2,'Household Member of',1,NULL,NULL,NULL), + (77,39,7,'a_b',166,'Head of Household for',127,'Head of Household is',1,NULL,NULL,NULL), + (78,39,7,'b_a',127,'Head of Household is',166,'Head of Household for',1,NULL,NULL,NULL), + (79,40,2,'a_b',72,'Spouse of',166,'Spouse of',1,NULL,NULL,NULL), + (80,40,2,'b_a',166,'Spouse of',72,'Spouse of',1,NULL,NULL,NULL), + (81,41,1,'a_b',22,'Child of',66,'Parent of',1,NULL,NULL,NULL), + (82,41,1,'b_a',66,'Parent of',22,'Child of',1,NULL,NULL,NULL), + (83,42,1,'a_b',153,'Child of',66,'Parent of',1,NULL,NULL,NULL), + (84,42,1,'b_a',66,'Parent of',153,'Child of',1,NULL,NULL,NULL), + (85,43,1,'a_b',22,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (86,43,1,'b_a',140,'Parent of',22,'Child of',1,NULL,NULL,NULL), + (87,44,1,'a_b',153,'Child of',140,'Parent of',1,NULL,NULL,NULL), + (88,44,1,'b_a',140,'Parent of',153,'Child of',1,NULL,NULL,NULL), + (89,45,4,'a_b',153,'Sibling of',22,'Sibling of',1,NULL,NULL,NULL), + (90,45,4,'b_a',22,'Sibling of',153,'Sibling of',1,NULL,NULL,NULL), + (91,46,8,'a_b',140,'Household Member of',12,'Household Member is',1,NULL,NULL,NULL), + (92,46,8,'b_a',12,'Household Member is',140,'Household Member of',1,NULL,NULL,NULL), + (93,47,8,'a_b',22,'Household Member of',12,'Household Member is',1,NULL,NULL,NULL), + (94,47,8,'b_a',12,'Household Member is',22,'Household Member of',1,NULL,NULL,NULL), + (95,48,8,'a_b',153,'Household Member of',12,'Household Member is',1,NULL,NULL,NULL), + (96,48,8,'b_a',12,'Household Member is',153,'Household Member of',1,NULL,NULL,NULL), + (97,49,7,'a_b',66,'Head of Household for',12,'Head of Household is',1,NULL,NULL,NULL), + (98,49,7,'b_a',12,'Head of Household is',66,'Head of Household for',1,NULL,NULL,NULL), + (99,50,2,'a_b',140,'Spouse of',66,'Spouse of',1,NULL,NULL,NULL), + (100,50,2,'b_a',66,'Spouse of',140,'Spouse of',1,NULL,NULL,NULL), + (101,51,1,'a_b',107,'Child of',147,'Parent of',1,NULL,NULL,NULL), + (102,51,1,'b_a',147,'Parent of',107,'Child of',1,NULL,NULL,NULL), + (103,52,1,'a_b',190,'Child of',147,'Parent of',1,NULL,NULL,NULL), + (104,52,1,'b_a',147,'Parent of',190,'Child of',1,NULL,NULL,NULL), + (105,53,1,'a_b',107,'Child of',60,'Parent of',1,NULL,NULL,NULL), + (106,53,1,'b_a',60,'Parent of',107,'Child of',1,NULL,NULL,NULL), + (107,54,1,'a_b',190,'Child of',60,'Parent of',1,NULL,NULL,NULL), + (108,54,1,'b_a',60,'Parent of',190,'Child of',1,NULL,NULL,NULL), + (109,55,4,'a_b',190,'Sibling of',107,'Sibling of',1,NULL,NULL,NULL), + (110,55,4,'b_a',107,'Sibling of',190,'Sibling of',1,NULL,NULL,NULL), + (111,56,8,'a_b',60,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), + (112,56,8,'b_a',124,'Household Member is',60,'Household Member of',1,NULL,NULL,NULL), + (113,57,8,'a_b',107,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), + (114,57,8,'b_a',124,'Household Member is',107,'Household Member of',1,NULL,NULL,NULL), + (115,58,8,'a_b',190,'Household Member of',124,'Household Member is',1,NULL,NULL,NULL), + (116,58,8,'b_a',124,'Household Member is',190,'Household Member of',1,NULL,NULL,NULL), + (117,59,7,'a_b',147,'Head of Household for',124,'Head of Household is',0,NULL,NULL,NULL), + (118,59,7,'b_a',124,'Head of Household is',147,'Head of Household for',0,NULL,NULL,NULL), + (119,60,2,'a_b',60,'Spouse of',147,'Spouse of',0,NULL,NULL,NULL), + (120,60,2,'b_a',147,'Spouse of',60,'Spouse of',0,NULL,NULL,NULL), + (121,61,1,'a_b',160,'Child of',40,'Parent of',1,NULL,NULL,NULL), + (122,61,1,'b_a',40,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (123,62,1,'a_b',133,'Child of',40,'Parent of',1,NULL,NULL,NULL), + (124,62,1,'b_a',40,'Parent of',133,'Child of',1,NULL,NULL,NULL), + (125,63,1,'a_b',160,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (126,63,1,'b_a',199,'Parent of',160,'Child of',1,NULL,NULL,NULL), + (127,64,1,'a_b',133,'Child of',199,'Parent of',1,NULL,NULL,NULL), + (128,64,1,'b_a',199,'Parent of',133,'Child of',1,NULL,NULL,NULL), + (129,65,4,'a_b',133,'Sibling of',160,'Sibling of',1,NULL,NULL,NULL), + (130,65,4,'b_a',160,'Sibling of',133,'Sibling of',1,NULL,NULL,NULL), + (131,66,8,'a_b',199,'Household Member of',30,'Household Member is',1,NULL,NULL,NULL), + (132,66,8,'b_a',30,'Household Member is',199,'Household Member of',1,NULL,NULL,NULL), + (133,67,8,'a_b',160,'Household Member of',30,'Household Member is',1,NULL,NULL,NULL), + (134,67,8,'b_a',30,'Household Member is',160,'Household Member of',1,NULL,NULL,NULL), + (135,68,8,'a_b',133,'Household Member of',30,'Household Member is',1,NULL,NULL,NULL), + (136,68,8,'b_a',30,'Household Member is',133,'Household Member of',1,NULL,NULL,NULL), + (137,69,7,'a_b',40,'Head of Household for',30,'Head of Household is',1,NULL,NULL,NULL), + (138,69,7,'b_a',30,'Head of Household is',40,'Head of Household for',1,NULL,NULL,NULL), + (139,70,2,'a_b',199,'Spouse of',40,'Spouse of',1,NULL,NULL,NULL), + (140,70,2,'b_a',40,'Spouse of',199,'Spouse of',1,NULL,NULL,NULL), + (141,71,1,'a_b',69,'Child of',17,'Parent of',1,NULL,NULL,NULL), + (142,71,1,'b_a',17,'Parent of',69,'Child of',1,NULL,NULL,NULL), + (143,72,1,'a_b',8,'Child of',17,'Parent of',1,NULL,NULL,NULL), + (144,72,1,'b_a',17,'Parent of',8,'Child of',1,NULL,NULL,NULL), + (145,73,1,'a_b',69,'Child of',145,'Parent of',1,NULL,NULL,NULL), + (146,73,1,'b_a',145,'Parent of',69,'Child of',1,NULL,NULL,NULL), + (147,74,1,'a_b',8,'Child of',145,'Parent of',1,NULL,NULL,NULL), + (148,74,1,'b_a',145,'Parent of',8,'Child of',1,NULL,NULL,NULL), + (149,75,4,'a_b',8,'Sibling of',69,'Sibling of',1,NULL,NULL,NULL), + (150,75,4,'b_a',69,'Sibling of',8,'Sibling of',1,NULL,NULL,NULL), + (151,76,8,'a_b',145,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (152,76,8,'b_a',51,'Household Member is',145,'Household Member of',1,NULL,NULL,NULL), + (153,77,8,'a_b',69,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (154,77,8,'b_a',51,'Household Member is',69,'Household Member of',1,NULL,NULL,NULL), + (155,78,8,'a_b',8,'Household Member of',51,'Household Member is',1,NULL,NULL,NULL), + (156,78,8,'b_a',51,'Household Member is',8,'Household Member of',1,NULL,NULL,NULL), + (157,79,7,'a_b',17,'Head of Household for',51,'Head of Household is',0,NULL,NULL,NULL), + (158,79,7,'b_a',51,'Head of Household is',17,'Head of Household for',0,NULL,NULL,NULL), + (159,80,2,'a_b',145,'Spouse of',17,'Spouse of',0,NULL,NULL,NULL), + (160,80,2,'b_a',17,'Spouse of',145,'Spouse of',0,NULL,NULL,NULL), + (161,81,1,'a_b',126,'Child of',191,'Parent of',1,NULL,NULL,NULL), + (162,81,1,'b_a',191,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (163,82,1,'a_b',9,'Child of',191,'Parent of',1,NULL,NULL,NULL), + (164,82,1,'b_a',191,'Parent of',9,'Child of',1,NULL,NULL,NULL), + (165,83,1,'a_b',126,'Child of',32,'Parent of',1,NULL,NULL,NULL), + (166,83,1,'b_a',32,'Parent of',126,'Child of',1,NULL,NULL,NULL), + (167,84,1,'a_b',9,'Child of',32,'Parent of',1,NULL,NULL,NULL), + (168,84,1,'b_a',32,'Parent of',9,'Child of',1,NULL,NULL,NULL), + (169,85,4,'a_b',9,'Sibling of',126,'Sibling of',1,NULL,NULL,NULL), + (170,85,4,'b_a',126,'Sibling of',9,'Sibling of',1,NULL,NULL,NULL), + (171,86,8,'a_b',32,'Household Member of',50,'Household Member is',1,NULL,NULL,NULL), + (172,86,8,'b_a',50,'Household Member is',32,'Household Member of',1,NULL,NULL,NULL), + (173,87,8,'a_b',126,'Household Member of',50,'Household Member is',1,NULL,NULL,NULL), + (174,87,8,'b_a',50,'Household Member is',126,'Household Member of',1,NULL,NULL,NULL), + (175,88,8,'a_b',9,'Household Member of',50,'Household Member is',1,NULL,NULL,NULL), + (176,88,8,'b_a',50,'Household Member is',9,'Household Member of',1,NULL,NULL,NULL), + (177,89,7,'a_b',191,'Head of Household for',50,'Head of Household is',1,NULL,NULL,NULL), + (178,89,7,'b_a',50,'Head of Household is',191,'Head of Household for',1,NULL,NULL,NULL), + (179,90,2,'a_b',32,'Spouse of',191,'Spouse of',1,NULL,NULL,NULL), + (180,90,2,'b_a',191,'Spouse of',32,'Spouse of',1,NULL,NULL,NULL), + (181,91,1,'a_b',59,'Child of',33,'Parent of',1,NULL,NULL,NULL), + (182,91,1,'b_a',33,'Parent of',59,'Child of',1,NULL,NULL,NULL), + (183,92,1,'a_b',144,'Child of',33,'Parent of',1,NULL,NULL,NULL), + (184,92,1,'b_a',33,'Parent of',144,'Child of',1,NULL,NULL,NULL), + (185,93,1,'a_b',59,'Child of',161,'Parent of',1,NULL,NULL,NULL), + (186,93,1,'b_a',161,'Parent of',59,'Child of',1,NULL,NULL,NULL), + (187,94,1,'a_b',144,'Child of',161,'Parent of',1,NULL,NULL,NULL), + (188,94,1,'b_a',161,'Parent of',144,'Child of',1,NULL,NULL,NULL), + (189,95,4,'a_b',144,'Sibling of',59,'Sibling of',1,NULL,NULL,NULL), + (190,95,4,'b_a',59,'Sibling of',144,'Sibling of',1,NULL,NULL,NULL), + (191,96,8,'a_b',161,'Household Member of',42,'Household Member is',1,NULL,NULL,NULL), + (192,96,8,'b_a',42,'Household Member is',161,'Household Member of',1,NULL,NULL,NULL), + (193,97,8,'a_b',59,'Household Member of',42,'Household Member is',1,NULL,NULL,NULL), + (194,97,8,'b_a',42,'Household Member is',59,'Household Member of',1,NULL,NULL,NULL), + (195,98,8,'a_b',144,'Household Member of',42,'Household Member is',1,NULL,NULL,NULL), + (196,98,8,'b_a',42,'Household Member is',144,'Household Member of',1,NULL,NULL,NULL), + (197,99,7,'a_b',33,'Head of Household for',42,'Head of Household is',0,NULL,NULL,NULL), + (198,99,7,'b_a',42,'Head of Household is',33,'Head of Household for',0,NULL,NULL,NULL), + (199,100,2,'a_b',161,'Spouse of',33,'Spouse of',0,NULL,NULL,NULL), + (200,100,2,'b_a',33,'Spouse of',161,'Spouse of',0,NULL,NULL,NULL), + (201,101,1,'a_b',106,'Child of',188,'Parent of',1,NULL,NULL,NULL), + (202,101,1,'b_a',188,'Parent of',106,'Child of',1,NULL,NULL,NULL), + (203,102,1,'a_b',86,'Child of',188,'Parent of',1,NULL,NULL,NULL), + (204,102,1,'b_a',188,'Parent of',86,'Child of',1,NULL,NULL,NULL), + (205,103,1,'a_b',106,'Child of',11,'Parent of',1,NULL,NULL,NULL), + (206,103,1,'b_a',11,'Parent of',106,'Child of',1,NULL,NULL,NULL), + (207,104,1,'a_b',86,'Child of',11,'Parent of',1,NULL,NULL,NULL), + (208,104,1,'b_a',11,'Parent of',86,'Child of',1,NULL,NULL,NULL), + (209,105,4,'a_b',86,'Sibling of',106,'Sibling of',1,NULL,NULL,NULL), + (210,105,4,'b_a',106,'Sibling of',86,'Sibling of',1,NULL,NULL,NULL), + (211,106,8,'a_b',11,'Household Member of',112,'Household Member is',1,NULL,NULL,NULL), + (212,106,8,'b_a',112,'Household Member is',11,'Household Member of',1,NULL,NULL,NULL), + (213,107,8,'a_b',106,'Household Member of',112,'Household Member is',1,NULL,NULL,NULL), + (214,107,8,'b_a',112,'Household Member is',106,'Household Member of',1,NULL,NULL,NULL), + (215,108,8,'a_b',86,'Household Member of',112,'Household Member is',1,NULL,NULL,NULL), + (216,108,8,'b_a',112,'Household Member is',86,'Household Member of',1,NULL,NULL,NULL), + (217,109,7,'a_b',188,'Head of Household for',112,'Head of Household is',0,NULL,NULL,NULL), + (218,109,7,'b_a',112,'Head of Household is',188,'Head of Household for',0,NULL,NULL,NULL), + (219,110,2,'a_b',11,'Spouse of',188,'Spouse of',0,NULL,NULL,NULL), + (220,110,2,'b_a',188,'Spouse of',11,'Spouse of',0,NULL,NULL,NULL), + (221,111,1,'a_b',193,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (222,111,1,'b_a',176,'Parent of',193,'Child of',1,NULL,NULL,NULL), + (223,112,1,'a_b',55,'Child of',176,'Parent of',1,NULL,NULL,NULL), + (224,112,1,'b_a',176,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (225,113,1,'a_b',193,'Child of',111,'Parent of',1,NULL,NULL,NULL), + (226,113,1,'b_a',111,'Parent of',193,'Child of',1,NULL,NULL,NULL), + (227,114,1,'a_b',55,'Child of',111,'Parent of',1,NULL,NULL,NULL), + (228,114,1,'b_a',111,'Parent of',55,'Child of',1,NULL,NULL,NULL), + (229,115,4,'a_b',55,'Sibling of',193,'Sibling of',1,NULL,NULL,NULL), + (230,115,4,'b_a',193,'Sibling of',55,'Sibling of',1,NULL,NULL,NULL), + (231,116,8,'a_b',111,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL), + (232,116,8,'b_a',138,'Household Member is',111,'Household Member of',1,NULL,NULL,NULL), + (233,117,8,'a_b',193,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL), + (234,117,8,'b_a',138,'Household Member is',193,'Household Member of',1,NULL,NULL,NULL), + (235,118,8,'a_b',55,'Household Member of',138,'Household Member is',1,NULL,NULL,NULL), + (236,118,8,'b_a',138,'Household Member is',55,'Household Member of',1,NULL,NULL,NULL), + (237,119,7,'a_b',176,'Head of Household for',138,'Head of Household is',1,NULL,NULL,NULL), + (238,119,7,'b_a',138,'Head of Household is',176,'Head of Household for',1,NULL,NULL,NULL), + (239,120,2,'a_b',111,'Spouse of',176,'Spouse of',1,NULL,NULL,NULL), + (240,120,2,'b_a',176,'Spouse of',111,'Spouse of',1,NULL,NULL,NULL), + (241,121,1,'a_b',125,'Child of',80,'Parent of',1,NULL,NULL,NULL), + (242,121,1,'b_a',80,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (243,122,1,'a_b',96,'Child of',80,'Parent of',1,NULL,NULL,NULL), + (244,122,1,'b_a',80,'Parent of',96,'Child of',1,NULL,NULL,NULL), + (245,123,1,'a_b',125,'Child of',7,'Parent of',1,NULL,NULL,NULL), + (246,123,1,'b_a',7,'Parent of',125,'Child of',1,NULL,NULL,NULL), + (247,124,1,'a_b',96,'Child of',7,'Parent of',1,NULL,NULL,NULL), + (248,124,1,'b_a',7,'Parent of',96,'Child of',1,NULL,NULL,NULL), + (249,125,4,'a_b',96,'Sibling of',125,'Sibling of',1,NULL,NULL,NULL), + (250,125,4,'b_a',125,'Sibling of',96,'Sibling of',1,NULL,NULL,NULL), + (251,126,8,'a_b',7,'Household Member of',91,'Household Member is',1,NULL,NULL,NULL), + (252,126,8,'b_a',91,'Household Member is',7,'Household Member of',1,NULL,NULL,NULL), + (253,127,8,'a_b',125,'Household Member of',91,'Household Member is',1,NULL,NULL,NULL), + (254,127,8,'b_a',91,'Household Member is',125,'Household Member of',1,NULL,NULL,NULL), + (255,128,8,'a_b',96,'Household Member of',91,'Household Member is',1,NULL,NULL,NULL), + (256,128,8,'b_a',91,'Household Member is',96,'Household Member of',1,NULL,NULL,NULL), + (257,129,7,'a_b',80,'Head of Household for',91,'Head of Household is',1,NULL,NULL,NULL), + (258,129,7,'b_a',91,'Head of Household is',80,'Head of Household for',1,NULL,NULL,NULL), + (259,130,2,'a_b',7,'Spouse of',80,'Spouse of',1,NULL,NULL,NULL), + (260,130,2,'b_a',80,'Spouse of',7,'Spouse of',1,NULL,NULL,NULL), + (261,131,1,'a_b',180,'Child of',184,'Parent of',1,NULL,NULL,NULL), + (262,131,1,'b_a',184,'Parent of',180,'Child of',1,NULL,NULL,NULL), + (263,132,1,'a_b',116,'Child of',184,'Parent of',1,NULL,NULL,NULL), + (264,132,1,'b_a',184,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (265,133,1,'a_b',180,'Child of',120,'Parent of',1,NULL,NULL,NULL), + (266,133,1,'b_a',120,'Parent of',180,'Child of',1,NULL,NULL,NULL), + (267,134,1,'a_b',116,'Child of',120,'Parent of',1,NULL,NULL,NULL), + (268,134,1,'b_a',120,'Parent of',116,'Child of',1,NULL,NULL,NULL), + (269,135,4,'a_b',116,'Sibling of',180,'Sibling of',1,NULL,NULL,NULL), + (270,135,4,'b_a',180,'Sibling of',116,'Sibling of',1,NULL,NULL,NULL), + (271,136,8,'a_b',120,'Household Member of',87,'Household Member is',1,NULL,NULL,NULL), + (272,136,8,'b_a',87,'Household Member is',120,'Household Member of',1,NULL,NULL,NULL), + (273,137,8,'a_b',180,'Household Member of',87,'Household Member is',1,NULL,NULL,NULL), + (274,137,8,'b_a',87,'Household Member is',180,'Household Member of',1,NULL,NULL,NULL), + (275,138,8,'a_b',116,'Household Member of',87,'Household Member is',1,NULL,NULL,NULL), + (276,138,8,'b_a',87,'Household Member is',116,'Household Member of',1,NULL,NULL,NULL), + (277,139,7,'a_b',184,'Head of Household for',87,'Head of Household is',1,NULL,NULL,NULL), + (278,139,7,'b_a',87,'Head of Household is',184,'Head of Household for',1,NULL,NULL,NULL), + (279,140,2,'a_b',120,'Spouse of',184,'Spouse of',1,NULL,NULL,NULL), + (280,140,2,'b_a',184,'Spouse of',120,'Spouse of',1,NULL,NULL,NULL), + (281,141,1,'a_b',175,'Child of',97,'Parent of',1,NULL,NULL,NULL), + (282,141,1,'b_a',97,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (283,142,1,'a_b',58,'Child of',97,'Parent of',1,NULL,NULL,NULL), + (284,142,1,'b_a',97,'Parent of',58,'Child of',1,NULL,NULL,NULL), + (285,143,1,'a_b',175,'Child of',143,'Parent of',1,NULL,NULL,NULL), + (286,143,1,'b_a',143,'Parent of',175,'Child of',1,NULL,NULL,NULL), + (287,144,1,'a_b',58,'Child of',143,'Parent of',1,NULL,NULL,NULL), + (288,144,1,'b_a',143,'Parent of',58,'Child of',1,NULL,NULL,NULL), + (289,145,4,'a_b',58,'Sibling of',175,'Sibling of',1,NULL,NULL,NULL), + (290,145,4,'b_a',175,'Sibling of',58,'Sibling of',1,NULL,NULL,NULL), + (291,146,8,'a_b',143,'Household Member of',63,'Household Member is',1,NULL,NULL,NULL), + (292,146,8,'b_a',63,'Household Member is',143,'Household Member of',1,NULL,NULL,NULL), + (293,147,8,'a_b',175,'Household Member of',63,'Household Member is',1,NULL,NULL,NULL), + (294,147,8,'b_a',63,'Household Member is',175,'Household Member of',1,NULL,NULL,NULL), + (295,148,8,'a_b',58,'Household Member of',63,'Household Member is',1,NULL,NULL,NULL), + (296,148,8,'b_a',63,'Household Member is',58,'Household Member of',1,NULL,NULL,NULL), + (297,149,7,'a_b',97,'Head of Household for',63,'Head of Household is',0,NULL,NULL,NULL), + (298,149,7,'b_a',63,'Head of Household is',97,'Head of Household for',0,NULL,NULL,NULL), + (299,150,2,'a_b',143,'Spouse of',97,'Spouse of',0,NULL,NULL,NULL), + (300,150,2,'b_a',97,'Spouse of',143,'Spouse of',0,NULL,NULL,NULL), + (301,151,1,'a_b',121,'Child of',173,'Parent of',1,NULL,NULL,NULL), + (302,151,1,'b_a',173,'Parent of',121,'Child of',1,NULL,NULL,NULL), + (303,152,1,'a_b',53,'Child of',173,'Parent of',1,NULL,NULL,NULL), + (304,152,1,'b_a',173,'Parent of',53,'Child of',1,NULL,NULL,NULL), + (305,153,1,'a_b',121,'Child of',70,'Parent of',1,NULL,NULL,NULL), + (306,153,1,'b_a',70,'Parent of',121,'Child of',1,NULL,NULL,NULL), + (307,154,1,'a_b',53,'Child of',70,'Parent of',1,NULL,NULL,NULL), + (308,154,1,'b_a',70,'Parent of',53,'Child of',1,NULL,NULL,NULL), + (309,155,4,'a_b',53,'Sibling of',121,'Sibling of',1,NULL,NULL,NULL), + (310,155,4,'b_a',121,'Sibling of',53,'Sibling of',1,NULL,NULL,NULL), + (311,156,8,'a_b',70,'Household Member of',192,'Household Member is',1,NULL,NULL,NULL), + (312,156,8,'b_a',192,'Household Member is',70,'Household Member of',1,NULL,NULL,NULL), + (313,157,8,'a_b',121,'Household Member of',192,'Household Member is',1,NULL,NULL,NULL), + (314,157,8,'b_a',192,'Household Member is',121,'Household Member of',1,NULL,NULL,NULL), + (315,158,8,'a_b',53,'Household Member of',192,'Household Member is',1,NULL,NULL,NULL), + (316,158,8,'b_a',192,'Household Member is',53,'Household Member of',1,NULL,NULL,NULL), + (317,159,7,'a_b',173,'Head of Household for',192,'Head of Household is',0,NULL,NULL,NULL), + (318,159,7,'b_a',192,'Head of Household is',173,'Head of Household for',0,NULL,NULL,NULL), + (319,160,2,'a_b',70,'Spouse of',173,'Spouse of',0,NULL,NULL,NULL), + (320,160,2,'b_a',173,'Spouse of',70,'Spouse of',0,NULL,NULL,NULL), + (321,161,1,'a_b',103,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (322,161,1,'b_a',36,'Parent of',103,'Child of',1,NULL,NULL,NULL), + (323,162,1,'a_b',181,'Child of',36,'Parent of',1,NULL,NULL,NULL), + (324,162,1,'b_a',36,'Parent of',181,'Child of',1,NULL,NULL,NULL), + (325,163,1,'a_b',103,'Child of',123,'Parent of',1,NULL,NULL,NULL), + (326,163,1,'b_a',123,'Parent of',103,'Child of',1,NULL,NULL,NULL), + (327,164,1,'a_b',181,'Child of',123,'Parent of',1,NULL,NULL,NULL), + (328,164,1,'b_a',123,'Parent of',181,'Child of',1,NULL,NULL,NULL), + (329,165,4,'a_b',181,'Sibling of',103,'Sibling of',1,NULL,NULL,NULL), + (330,165,4,'b_a',103,'Sibling of',181,'Sibling of',1,NULL,NULL,NULL), + (331,166,8,'a_b',123,'Household Member of',85,'Household Member is',1,NULL,NULL,NULL), + (332,166,8,'b_a',85,'Household Member is',123,'Household Member of',1,NULL,NULL,NULL), + (333,167,8,'a_b',103,'Household Member of',85,'Household Member is',1,NULL,NULL,NULL), + (334,167,8,'b_a',85,'Household Member is',103,'Household Member of',1,NULL,NULL,NULL), + (335,168,8,'a_b',181,'Household Member of',85,'Household Member is',1,NULL,NULL,NULL), + (336,168,8,'b_a',85,'Household Member is',181,'Household Member of',1,NULL,NULL,NULL), + (337,169,7,'a_b',36,'Head of Household for',85,'Head of Household is',1,NULL,NULL,NULL), + (338,169,7,'b_a',85,'Head of Household is',36,'Head of Household for',1,NULL,NULL,NULL), + (339,170,2,'a_b',123,'Spouse of',36,'Spouse of',1,NULL,NULL,NULL), + (340,170,2,'b_a',36,'Spouse of',123,'Spouse of',1,NULL,NULL,NULL), + (341,171,1,'a_b',146,'Child of',57,'Parent of',1,NULL,NULL,NULL), + (342,171,1,'b_a',57,'Parent of',146,'Child of',1,NULL,NULL,NULL), + (343,172,1,'a_b',24,'Child of',57,'Parent of',1,NULL,NULL,NULL), + (344,172,1,'b_a',57,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (345,173,1,'a_b',146,'Child of',168,'Parent of',1,NULL,NULL,NULL), + (346,173,1,'b_a',168,'Parent of',146,'Child of',1,NULL,NULL,NULL), + (347,174,1,'a_b',24,'Child of',168,'Parent of',1,NULL,NULL,NULL), + (348,174,1,'b_a',168,'Parent of',24,'Child of',1,NULL,NULL,NULL), + (349,175,4,'a_b',24,'Sibling of',146,'Sibling of',1,NULL,NULL,NULL), + (350,175,4,'b_a',146,'Sibling of',24,'Sibling of',1,NULL,NULL,NULL), + (351,176,8,'a_b',168,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL), + (352,176,8,'b_a',167,'Household Member is',168,'Household Member of',1,NULL,NULL,NULL), + (353,177,8,'a_b',146,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL), + (354,177,8,'b_a',167,'Household Member is',146,'Household Member of',1,NULL,NULL,NULL), + (355,178,8,'a_b',24,'Household Member of',167,'Household Member is',1,NULL,NULL,NULL), + (356,178,8,'b_a',167,'Household Member is',24,'Household Member of',1,NULL,NULL,NULL), + (357,179,7,'a_b',57,'Head of Household for',167,'Head of Household is',0,NULL,NULL,NULL), + (358,179,7,'b_a',167,'Head of Household is',57,'Head of Household for',0,NULL,NULL,NULL), + (359,180,2,'a_b',168,'Spouse of',57,'Spouse of',0,NULL,NULL,NULL), + (360,180,2,'b_a',57,'Spouse of',168,'Spouse of',0,NULL,NULL,NULL), + (361,181,1,'a_b',45,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (362,181,1,'b_a',183,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (363,182,1,'a_b',141,'Child of',183,'Parent of',1,NULL,NULL,NULL), + (364,182,1,'b_a',183,'Parent of',141,'Child of',1,NULL,NULL,NULL), + (365,183,1,'a_b',45,'Child of',178,'Parent of',1,NULL,NULL,NULL), + (366,183,1,'b_a',178,'Parent of',45,'Child of',1,NULL,NULL,NULL), + (367,184,1,'a_b',141,'Child of',178,'Parent of',1,NULL,NULL,NULL), + (368,184,1,'b_a',178,'Parent of',141,'Child of',1,NULL,NULL,NULL), + (369,185,4,'a_b',141,'Sibling of',45,'Sibling of',1,NULL,NULL,NULL), + (370,185,4,'b_a',45,'Sibling of',141,'Sibling of',1,NULL,NULL,NULL), + (371,186,8,'a_b',178,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), + (372,186,8,'b_a',52,'Household Member is',178,'Household Member of',1,NULL,NULL,NULL), + (373,187,8,'a_b',45,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), + (374,187,8,'b_a',52,'Household Member is',45,'Household Member of',1,NULL,NULL,NULL), + (375,188,8,'a_b',141,'Household Member of',52,'Household Member is',1,NULL,NULL,NULL), + (376,188,8,'b_a',52,'Household Member is',141,'Household Member of',1,NULL,NULL,NULL), + (377,189,7,'a_b',183,'Head of Household for',52,'Head of Household is',1,NULL,NULL,NULL), + (378,189,7,'b_a',52,'Head of Household is',183,'Head of Household for',1,NULL,NULL,NULL), + (379,190,2,'a_b',178,'Spouse of',183,'Spouse of',1,NULL,NULL,NULL), + (380,190,2,'b_a',183,'Spouse of',178,'Spouse of',1,NULL,NULL,NULL), + (381,191,1,'a_b',194,'Child of',162,'Parent of',1,NULL,NULL,NULL), + (382,191,1,'b_a',162,'Parent of',194,'Child of',1,NULL,NULL,NULL), + (383,192,1,'a_b',155,'Child of',162,'Parent of',1,NULL,NULL,NULL), + (384,192,1,'b_a',162,'Parent of',155,'Child of',1,NULL,NULL,NULL), + (385,193,1,'a_b',194,'Child of',27,'Parent of',1,NULL,NULL,NULL), + (386,193,1,'b_a',27,'Parent of',194,'Child of',1,NULL,NULL,NULL), + (387,194,1,'a_b',155,'Child of',27,'Parent of',1,NULL,NULL,NULL), + (388,194,1,'b_a',27,'Parent of',155,'Child of',1,NULL,NULL,NULL), + (389,195,4,'a_b',155,'Sibling of',194,'Sibling of',1,NULL,NULL,NULL), + (390,195,4,'b_a',194,'Sibling of',155,'Sibling of',1,NULL,NULL,NULL), + (391,196,8,'a_b',27,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (392,196,8,'b_a',156,'Household Member is',27,'Household Member of',1,NULL,NULL,NULL), + (393,197,8,'a_b',194,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (394,197,8,'b_a',156,'Household Member is',194,'Household Member of',1,NULL,NULL,NULL), + (395,198,8,'a_b',155,'Household Member of',156,'Household Member is',1,NULL,NULL,NULL), + (396,198,8,'b_a',156,'Household Member is',155,'Household Member of',1,NULL,NULL,NULL), + (397,199,7,'a_b',162,'Head of Household for',156,'Head of Household is',1,NULL,NULL,NULL), + (398,199,7,'b_a',156,'Head of Household is',162,'Head of Household for',1,NULL,NULL,NULL), + (399,200,2,'a_b',27,'Spouse of',162,'Spouse of',1,NULL,NULL,NULL), + (400,200,2,'b_a',162,'Spouse of',27,'Spouse of',1,NULL,NULL,NULL), + (401,201,5,'a_b',131,'Employee of',13,'Employer of',1,NULL,NULL,NULL), + (402,201,5,'b_a',13,'Employer of',131,'Employee of',1,NULL,NULL,NULL), + (403,202,5,'a_b',186,'Employee of',16,'Employer of',1,NULL,NULL,NULL), + (404,202,5,'b_a',16,'Employer of',186,'Employee of',1,NULL,NULL,NULL), + (405,203,5,'a_b',133,'Employee of',28,'Employer of',1,NULL,NULL,NULL), + (406,203,5,'b_a',28,'Employer of',133,'Employee of',1,NULL,NULL,NULL), + (407,204,5,'a_b',20,'Employee of',39,'Employer of',1,NULL,NULL,NULL), + (408,204,5,'b_a',39,'Employer of',20,'Employee of',1,NULL,NULL,NULL), + (409,205,5,'a_b',159,'Employee of',43,'Employer of',1,NULL,NULL,NULL), + (410,205,5,'b_a',43,'Employer of',159,'Employee of',1,NULL,NULL,NULL), + (411,206,5,'a_b',201,'Employee of',49,'Employer of',1,NULL,NULL,NULL), + (412,206,5,'b_a',49,'Employer of',201,'Employee of',1,NULL,NULL,NULL), + (413,207,5,'a_b',41,'Employee of',54,'Employer of',1,NULL,NULL,NULL), + (414,207,5,'b_a',54,'Employer of',41,'Employee of',1,NULL,NULL,NULL), + (415,208,5,'a_b',27,'Employee of',68,'Employer of',1,NULL,NULL,NULL), + (416,208,5,'b_a',68,'Employer of',27,'Employee of',1,NULL,NULL,NULL), + (417,209,5,'a_b',11,'Employee of',76,'Employer of',1,NULL,NULL,NULL), + (418,209,5,'b_a',76,'Employer of',11,'Employee of',1,NULL,NULL,NULL), + (419,210,5,'a_b',115,'Employee of',78,'Employer of',1,NULL,NULL,NULL), + (420,210,5,'b_a',78,'Employer of',115,'Employee of',1,NULL,NULL,NULL), + (421,211,5,'a_b',153,'Employee of',82,'Employer of',1,NULL,NULL,NULL), + (422,211,5,'b_a',82,'Employer of',153,'Employee of',1,NULL,NULL,NULL), + (423,212,5,'a_b',199,'Employee of',122,'Employer of',1,NULL,NULL,NULL), + (424,212,5,'b_a',122,'Employer of',199,'Employee of',1,NULL,NULL,NULL), + (425,213,5,'a_b',103,'Employee of',142,'Employer of',1,NULL,NULL,NULL), + (426,213,5,'b_a',142,'Employer of',103,'Employee of',1,NULL,NULL,NULL), + (427,214,5,'a_b',134,'Employee of',157,'Employer of',1,NULL,NULL,NULL), + (428,214,5,'b_a',157,'Employer of',134,'Employee of',1,NULL,NULL,NULL), + (429,215,5,'a_b',37,'Employee of',174,'Employer of',1,NULL,NULL,NULL), + (430,215,5,'b_a',174,'Employer of',37,'Employee of',1,NULL,NULL,NULL), + (431,216,5,'a_b',66,'Employee of',195,'Employer of',1,NULL,NULL,NULL), + (432,216,5,'b_a',195,'Employer of',66,'Employee of',1,NULL,NULL,NULL); /*!40000 ALTER TABLE `civicrm_relationship_cache` ENABLE KEYS */; UNLOCK TABLES; @@ -12181,90 +12110,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,80,2,'2022-07-04 15:13:28','Email','Added',NULL), - (2,156,2,'2023-05-08 07:45:11','Email','Added',NULL), - (3,146,2,'2022-11-01 22:05:48','Email','Added',NULL), - (4,56,2,'2023-05-03 04:37:19','Admin','Added',NULL), - (5,21,2,'2023-03-07 09:20:36','Admin','Added',NULL), - (6,195,2,'2022-07-26 19:23:53','Email','Added',NULL), - (7,115,2,'2023-03-03 01:40:50','Email','Added',NULL), - (8,152,2,'2023-03-07 04:23:26','Email','Added',NULL), - (9,51,2,'2023-02-20 22:43:51','Email','Added',NULL), - (10,138,2,'2022-09-09 13:05:33','Email','Added',NULL), - (11,71,2,'2023-04-16 20:34:17','Admin','Added',NULL), - (12,110,2,'2023-02-20 23:54:56','Email','Added',NULL), - (13,4,2,'2023-04-16 05:02:47','Admin','Added',NULL), - (14,49,2,'2023-04-06 17:17:28','Admin','Added',NULL), - (15,150,2,'2022-12-03 20:59:15','Admin','Added',NULL), - (16,161,2,'2022-09-27 20:41:11','Admin','Added',NULL), - (17,153,2,'2022-06-22 09:53:51','Admin','Added',NULL), - (18,171,2,'2022-10-09 23:31:32','Email','Added',NULL), - (19,135,2,'2023-04-01 19:06:30','Email','Added',NULL), - (20,52,2,'2023-06-06 12:16:41','Email','Added',NULL), - (21,177,2,'2023-01-10 11:17:42','Email','Added',NULL), - (22,172,2,'2023-03-02 12:25:04','Email','Added',NULL), - (23,81,2,'2022-10-15 12:36:01','Email','Added',NULL), - (24,102,2,'2022-09-01 00:35:01','Email','Added',NULL), - (25,106,2,'2023-02-28 09:21:38','Email','Added',NULL), - (26,167,2,'2023-06-07 10:13:59','Admin','Added',NULL), - (27,28,2,'2022-06-13 10:12:45','Email','Added',NULL), - (28,133,2,'2022-11-11 00:19:42','Admin','Added',NULL), - (29,79,2,'2023-05-26 23:37:33','Admin','Added',NULL), - (30,134,2,'2023-01-08 01:06:34','Admin','Added',NULL), - (31,183,2,'2022-12-30 10:28:25','Email','Added',NULL), - (32,170,2,'2023-03-08 18:31:46','Admin','Added',NULL), - (33,31,2,'2022-09-12 07:33:14','Email','Added',NULL), - (34,53,2,'2022-11-14 20:40:16','Email','Added',NULL), - (35,77,2,'2023-04-28 03:26:40','Email','Added',NULL), - (36,108,2,'2022-11-06 02:12:31','Email','Added',NULL), - (37,72,2,'2023-02-16 10:52:50','Admin','Added',NULL), - (38,123,2,'2022-06-23 20:30:21','Admin','Added',NULL), - (39,100,2,'2022-07-19 09:27:33','Email','Added',NULL), - (40,33,2,'2022-09-03 07:02:28','Email','Added',NULL), - (41,25,2,'2023-01-25 12:37:05','Admin','Added',NULL), - (42,27,2,'2023-02-15 21:04:58','Admin','Added',NULL), - (43,76,2,'2023-04-17 03:58:18','Email','Added',NULL), - (44,201,2,'2023-03-06 23:47:25','Email','Added',NULL), - (45,200,2,'2023-05-11 11:52:01','Email','Added',NULL), - (46,114,2,'2022-06-17 23:02:16','Email','Added',NULL), - (47,92,2,'2022-07-26 12:19:24','Admin','Added',NULL), - (48,190,2,'2022-08-04 13:45:40','Admin','Added',NULL), - (49,184,2,'2023-01-25 13:34:55','Admin','Added',NULL), - (50,163,2,'2023-03-27 00:38:08','Admin','Added',NULL), - (51,91,2,'2022-06-10 23:18:46','Admin','Added',NULL), - (52,26,2,'2022-06-30 03:36:47','Admin','Added',NULL), - (53,141,2,'2023-05-25 07:55:49','Admin','Added',NULL), - (54,97,2,'2023-02-28 11:54:10','Email','Added',NULL), - (55,55,2,'2023-05-29 05:39:16','Admin','Added',NULL), - (56,12,2,'2022-10-21 03:12:14','Admin','Added',NULL), - (57,44,2,'2022-08-19 14:17:29','Email','Added',NULL), - (58,73,2,'2023-03-28 06:32:16','Admin','Added',NULL), - (59,66,2,'2023-04-06 22:54:49','Email','Added',NULL), - (60,75,2,'2022-11-20 13:52:28','Email','Added',NULL), - (61,168,3,'2023-05-19 18:35:46','Email','Added',NULL), - (62,98,3,'2023-02-18 07:02:35','Admin','Added',NULL), - (63,87,3,'2022-12-05 15:14:33','Admin','Added',NULL), - (64,50,3,'2022-12-16 20:38:09','Admin','Added',NULL), - (65,65,3,'2022-10-20 01:06:43','Email','Added',NULL), - (66,144,3,'2023-02-06 05:57:57','Email','Added',NULL), - (67,90,3,'2023-02-23 14:31:17','Admin','Added',NULL), - (68,142,3,'2022-11-13 22:12:30','Admin','Added',NULL), - (69,164,3,'2022-07-08 05:20:14','Admin','Added',NULL), - (70,111,3,'2022-09-19 21:36:41','Email','Added',NULL), - (71,61,3,'2022-07-26 15:23:11','Email','Added',NULL), - (72,99,3,'2023-04-07 16:20:15','Admin','Added',NULL), - (73,104,3,'2022-09-22 05:29:15','Admin','Added',NULL), - (74,169,3,'2023-03-16 05:31:47','Email','Added',NULL), - (75,35,3,'2023-03-14 10:13:14','Email','Added',NULL), - (76,80,4,'2022-11-29 16:14:13','Admin','Added',NULL), - (77,152,4,'2023-01-24 13:08:15','Email','Added',NULL), - (78,150,4,'2022-07-10 18:15:14','Admin','Added',NULL), - (79,172,4,'2023-02-22 05:24:16','Email','Added',NULL), - (80,79,4,'2023-02-26 19:41:27','Admin','Added',NULL), - (81,108,4,'2022-10-07 15:30:35','Email','Added',NULL), - (82,76,4,'2022-09-09 08:46:04','Admin','Added',NULL), - (83,163,4,'2023-05-15 17:35:49','Admin','Added',NULL), - (84,202,4,'2022-12-24 23:05:47','Email','Added',NULL); + (1,29,2,'2022-11-09 07:06:54','Admin','Added',NULL), + (2,154,2,'2023-03-24 03:08:06','Email','Added',NULL), + (3,4,2,'2023-05-22 22:29:35','Email','Added',NULL), + (4,38,2,'2022-11-18 01:47:21','Email','Added',NULL), + (5,100,2,'2022-12-09 21:24:11','Email','Added',NULL), + (6,182,2,'2022-11-23 17:06:45','Admin','Added',NULL), + (7,135,2,'2022-08-04 05:33:43','Email','Added',NULL), + (8,92,2,'2023-02-26 00:39:32','Email','Added',NULL), + (9,172,2,'2023-05-20 22:27:40','Admin','Added',NULL), + (10,99,2,'2022-11-07 10:16:36','Admin','Added',NULL), + (11,98,2,'2022-08-19 13:05:17','Email','Added',NULL), + (12,150,2,'2023-07-10 10:54:12','Admin','Added',NULL), + (13,14,2,'2022-12-28 00:27:59','Admin','Added',NULL), + (14,200,2,'2023-04-05 23:45:55','Email','Added',NULL), + (15,31,2,'2023-05-28 06:36:17','Admin','Added',NULL), + (16,105,2,'2023-01-28 22:21:20','Email','Added',NULL), + (17,6,2,'2023-01-01 23:05:08','Admin','Added',NULL), + (18,19,2,'2023-04-12 07:03:55','Admin','Added',NULL), + (19,115,2,'2023-05-04 03:21:08','Email','Added',NULL), + (20,35,2,'2023-08-02 07:10:56','Admin','Added',NULL), + (21,128,2,'2022-08-20 20:35:47','Email','Added',NULL), + (22,47,2,'2023-04-25 00:01:11','Admin','Added',NULL), + (23,15,2,'2022-12-30 16:49:50','Email','Added',NULL), + (24,10,2,'2023-02-15 11:44:42','Admin','Added',NULL), + (25,44,2,'2022-10-28 11:00:37','Admin','Added',NULL), + (26,61,2,'2023-05-11 11:22:05','Admin','Added',NULL), + (27,152,2,'2022-11-25 17:05:31','Email','Added',NULL), + (28,64,2,'2023-01-27 11:45:03','Email','Added',NULL), + (29,56,2,'2022-12-19 05:57:00','Email','Added',NULL), + (30,130,2,'2022-12-23 14:08:52','Admin','Added',NULL), + (31,169,2,'2023-07-24 02:02:46','Email','Added',NULL), + (32,62,2,'2023-04-04 03:49:18','Email','Added',NULL), + (33,101,2,'2023-06-08 18:41:41','Email','Added',NULL), + (34,201,2,'2023-05-26 10:08:33','Admin','Added',NULL), + (35,93,2,'2022-08-29 05:16:13','Email','Added',NULL), + (36,88,2,'2022-10-27 20:16:09','Email','Added',NULL), + (37,21,2,'2023-07-09 08:42:32','Admin','Added',NULL), + (38,104,2,'2023-02-21 18:46:51','Admin','Added',NULL), + (39,117,2,'2023-01-05 16:03:19','Admin','Added',NULL), + (40,137,2,'2022-12-08 22:31:45','Email','Added',NULL), + (41,75,2,'2023-01-26 00:11:53','Email','Added',NULL), + (42,71,2,'2023-06-09 15:22:39','Admin','Added',NULL), + (43,187,2,'2022-08-24 06:33:49','Email','Added',NULL), + (44,94,2,'2022-10-01 03:51:04','Admin','Added',NULL), + (45,114,2,'2023-06-14 13:39:48','Email','Added',NULL), + (46,129,2,'2023-06-11 07:44:16','Email','Added',NULL), + (47,41,2,'2023-04-14 00:42:34','Admin','Added',NULL), + (48,196,2,'2023-04-14 05:41:24','Admin','Added',NULL), + (49,23,2,'2022-12-22 09:42:41','Email','Added',NULL), + (50,136,2,'2023-07-10 07:12:38','Admin','Added',NULL), + (51,74,2,'2023-06-03 02:21:19','Email','Added',NULL), + (52,18,2,'2023-01-16 21:34:56','Admin','Added',NULL), + (53,186,2,'2023-03-01 06:34:49','Admin','Added',NULL), + (54,84,2,'2023-07-17 10:38:56','Email','Added',NULL), + (55,164,2,'2023-06-16 00:29:59','Admin','Added',NULL), + (56,81,2,'2022-11-29 12:45:55','Admin','Added',NULL), + (57,20,2,'2022-12-02 16:58:55','Admin','Added',NULL), + (58,189,2,'2022-08-15 15:10:54','Email','Added',NULL), + (59,5,2,'2022-10-05 05:23:34','Email','Added',NULL), + (60,132,2,'2023-01-03 18:49:28','Admin','Added',NULL), + (61,139,3,'2023-03-19 05:27:14','Admin','Added',NULL), + (62,119,3,'2023-07-27 08:17:50','Email','Added',NULL), + (63,110,3,'2023-07-03 19:07:36','Admin','Added',NULL), + (64,79,3,'2022-10-02 21:36:37','Admin','Added',NULL), + (65,148,3,'2023-04-25 12:44:27','Email','Added',NULL), + (66,159,3,'2022-10-07 22:29:16','Email','Added',NULL), + (67,113,3,'2022-11-06 05:40:20','Email','Added',NULL), + (68,118,3,'2022-11-25 11:24:39','Admin','Added',NULL), + (69,26,3,'2022-10-11 23:24:13','Admin','Added',NULL), + (70,134,3,'2023-06-29 23:23:14','Email','Added',NULL), + (71,3,3,'2022-10-19 21:39:40','Admin','Added',NULL), + (72,90,3,'2022-11-23 16:10:00','Admin','Added',NULL), + (73,77,3,'2023-07-30 14:00:07','Email','Added',NULL), + (74,177,3,'2022-10-11 05:56:23','Admin','Added',NULL), + (75,83,3,'2022-10-29 21:21:27','Admin','Added',NULL), + (76,29,4,'2023-06-03 15:57:26','Email','Added',NULL), + (77,92,4,'2022-11-10 03:58:12','Admin','Added',NULL), + (78,31,4,'2023-06-01 19:48:10','Admin','Added',NULL), + (79,47,4,'2022-12-19 17:56:24','Email','Added',NULL), + (80,56,4,'2023-06-20 21:07:19','Admin','Added',NULL), + (81,88,4,'2022-12-16 16:28:06','Email','Added',NULL), + (82,187,4,'2023-02-24 21:34:12','Email','Added',NULL), + (83,136,4,'2023-06-16 19:08:34','Email','Added',NULL), + (84,202,4,'2023-04-22 20:19:08','Admin','Added',NULL); /*!40000 ALTER TABLE `civicrm_subscription_history` ENABLE KEYS */; UNLOCK TABLES; @@ -12427,7 +12356,7 @@ UNLOCK TABLES; LOCK TABLES `civicrm_uf_group` WRITE; /*!40000 ALTER TABLE `civicrm_uf_group` DISABLE KEYS */; -INSERT INTO `civicrm_uf_group` (`id`, `is_active`, `group_type`, `title`, `frontend_title`, `description`, `help_pre`, `help_post`, `limit_listings_group_id`, `post_URL`, `add_to_group_id`, `add_captcha`, `is_map`, `is_edit_link`, `is_uf_link`, `is_update_dupe`, `cancel_URL`, `is_cms_user`, `notify`, `is_reserved`, `name`, `created_id`, `created_date`, `is_proximity_search`, `cancel_button_text`, `submit_button_text`, `add_cancel_button`) VALUES +INSERT INTO `civicrm_uf_group` (`id`, `is_active`, `group_type`, `title`, `frontend_title`, `description`, `help_pre`, `help_post`, `limit_listings_group_id`, `post_url`, `add_to_group_id`, `add_captcha`, `is_map`, `is_edit_link`, `is_uf_link`, `is_update_dupe`, `cancel_url`, `is_cms_user`, `notify`, `is_reserved`, `name`, `created_id`, `created_date`, `is_proximity_search`, `cancel_button_text`, `submit_button_text`, `add_cancel_button`) VALUES (1,1,'Individual,Contact','Name and Address',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,0,'name_and_address',NULL,NULL,0,NULL,NULL,1), (2,1,'Individual,Contact','Supporter Profile',NULL,NULL,NULL,'<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>',NULL,NULL,NULL,0,0,0,0,0,NULL,2,NULL,0,'supporter_profile',NULL,NULL,0,NULL,NULL,1), (3,1,'Participant','Participant Status',NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,0,0,0,0,NULL,0,NULL,1,'participant_status',NULL,NULL,0,NULL,NULL,1), @@ -12490,22 +12419,24 @@ 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,191,'http://kermitsustainability.org',1), - (2,101,'http://docolumbiafamily.org',1), - (3,11,'http://maincenter.org',1), - (4,173,'http://vnenvironmentalpartners.org',1), - (5,147,'http://urbanalliance.org',1), - (6,88,'http://maplewellness.org',1), - (7,181,'http://minnesotaeducation.org',1), - (8,125,'http://lcpeacecollective.org',1), - (9,117,'http://pennsylvanialiteracyacademy.org',1), - (10,37,'http://nebraskaactionfund.org',1), - (11,179,'http://baysports.org',1), - (12,166,'http://californialegal.org',1), - (13,60,'http://tennesseepoetry.org',1), - (14,10,'http://progressiveempowerment.org',1), - (15,124,'http://friendssystems.org',1), - (16,175,'http://communityliteracy.org',1); + (1,82,'http://kentuckyfund.org',1), + (2,122,'http://virginiafamilyacademy.org',1), + (3,157,'http://amblerfellowship.org',1), + (4,174,'http://northpointeducation.org',1), + (5,67,'http://unitedartsfund.org',1), + (6,16,'http://localsolutions.org',1), + (7,28,'http://georgiafamily.org',1), + (8,89,'http://localartssystems.org',1), + (9,43,'http://localsports.org',1), + (10,13,'http://unitedempowermentservices.org',1), + (11,39,'http://massachusettsarts.org',1), + (12,195,'http://kclaneshealth.org',1), + (13,198,'http://nebraskamusicnetwork.org',1), + (14,54,'http://ruraleducationalliance.org',1), + (15,76,'http://tylertownpartnership.org',1), + (16,142,'http://iowaservices.org',1), + (17,78,'http://mlkingpoetry.org',1), + (18,49,'http://nyfoodinitiative.org',1); /*!40000 ALTER TABLE `civicrm_website` ENABLE KEYS */; UNLOCK TABLES; @@ -12543,7 +12474,7 @@ UNLOCK TABLES; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on 2023-06-09 14:52:22 +-- Dump completed on 2023-08-02 20:53:45 -- +--------------------------------------------------------------------+ -- | Copyright CiviCRM LLC. All rights reserved. | -- | | diff --git a/civicrm/sql/civicrm_sample.mysql b/civicrm/sql/civicrm_sample.mysql index 4cb2f406b1..0dc8a9c03b 100644 --- a/civicrm/sql/civicrm_sample.mysql +++ b/civicrm/sql/civicrm_sample.mysql @@ -249,76 +249,13 @@ VALUES -- sample acl entries -- Create ACL to edit and view contacts in all groups -INSERT INTO civicrm_acl (name, deny, entity_table, entity_id, operation, object_table, object_id, acl_table, acl_id, is_active) +INSERT INTO civicrm_acl (name, deny, entity_table, entity_id, operation, object_table, object_id, acl_table, acl_id, is_active, priority) VALUES -('Edit All Contacts', 0, 'civicrm_acl_role', 1, 'Edit', 'civicrm_saved_search', 0, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'view event info', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviContribute', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviEvent', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMail', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMember', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviPledge', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer CiviCase', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access my cases and activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access all cases and activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviCase', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviGrant', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access Contact Dashboard', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer Multiple Organizations', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviContribute', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviMail', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviPledge', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviEvent', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviMember', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'translate CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit grants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access uploaded files', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'add contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit all contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit event participants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit groups', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit memberships', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviReport', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access Report Criteria', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer Reports', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'import contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile create', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile edit', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile listings', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile view', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view all activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view all contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view event info', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view event participants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit all events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'view event info', NULL, NULL, NULL, 1); +('Edit All Contacts', 0, 'civicrm_acl_role', 1, 'Edit', 'civicrm_group', 0, NULL, NULL, 1, 1); -- Create default Groups for User Permissioning -INSERT INTO civicrm_group (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `group_type`) VALUES (1, 'Administrators', 'Administrators', 'Contacts in this group are assigned Administrator role permissions.', NULL, NULL, 1, 'User and User Admin Only', '1'); +INSERT INTO civicrm_group (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `group_type`, `frontend_title`) +VALUES (1, 'Administrators', 'Administrators', 'Contacts in this group are assigned Administrator role permissions.', NULL, NULL, 1, 'User and User Admin Only', '1', 'Administrators'); -- Assign above Group (entity) to the Administrator Role INSERT INTO civicrm_acl_entity_role diff --git a/civicrm/templates/CRM/ACL/Form/ACL.tpl b/civicrm/templates/CRM/ACL/Form/ACL.tpl index f27f8974bd..15cefe0ef5 100644 --- a/civicrm/templates/CRM/ACL/Form/ACL.tpl +++ b/civicrm/templates/CRM/ACL/Form/ACL.tpl @@ -32,7 +32,7 @@ <tr class="crm-acl-form-block-operation"> <td class="label">{$form.operation.label}</td> <td>{$form.operation.html}<br /> - <span class="description">{ts}What type of operation (action) is being permitted?{/ts}</span> + <span class="description">{ts}What type of operation (action) is being referenced?{/ts}</span> </td> </tr> <tr class="crm-acl-form-block-object_type"> @@ -45,6 +45,16 @@ <div class="status description">{ts}IMPORTANT: The Drupal permissions for 'access all custom data' and 'profile listings and forms' override and disable specific ACL settings for custom field groups and profiles respectively. Do not enable those Drupal permissions for a Drupal role if you want to use CiviCRM ACL's to control access.{/ts}</div></td> {/if} </tr> + <tr class="crm-acl-form-block-deny"> + <td class="label">{$form.deny.label}</td> + <td>{$form.deny.html}</td> + </tr> + <tr class="crm-acl-form-block-priority"> + <td class="label">{$form.priority.label}</td> + <td>{$form.priority.html}<br /> + <span class="description">{ts}Higher priority ACL rules will override lower priority rules{/ts}</span> + </td> + </tr> </table> <div id="id-group-acl"> <table class="form-layout-compressed"> diff --git a/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl b/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl deleted file mode 100644 index 764ebe85bd..0000000000 --- a/civicrm/templates/CRM/ACL/Form/ACLBasic.tpl +++ /dev/null @@ -1,44 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | 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 | - +--------------------------------------------------------------------+ -*} -{* this template is used for adding/editing ACL *} -<div class="form-item"> -<fieldset><legend>{if $action eq 1}{ts}New ACL{/ts}{elseif $action eq 2}{ts}Edit ACL{/ts}{else}{ts}Delete ACL{/ts}{/if}</legend> - -{if $action eq 8} - <div class="messages status no-popup"> - <dl> - <dt>{icon icon="fa-info-circle"}{/icon}</dt> - <dd> - {ts}WARNING: Delete will remove this permission from the specified ACL Role.{/ts} {ts}Do you want to continue?{/ts} - </dd> - </dl> - </div> -{else} - <dl> - <dt>{$form.entity_id.label}</dt><dd>{$form.entity_id.html}</dd> - <dt> </dt><dd class="description">{ts}Select a Role to assign (grant) this permission to. Select the special role 'Everyone' if you want to grant this permission to ALL users. 'Anyone' includes anonymous (i.e. not logged in) users.{/ts}</dd> - </dl> - <dl> - <dt>{$form.object_table.label}</dt> -<dd> -<table> -<tr><td> -{$form.object_table.html} -</td></tr> -</table> -</dd> - </dl> -{/if} - <dl> - <dt></dt><dd>{$form.buttons.html}</dd> - </dl> -</fieldset> -</div> - diff --git a/civicrm/templates/CRM/ACL/Page/ACL.tpl b/civicrm/templates/CRM/ACL/Page/ACL.tpl index d1e07327ce..c00c3e49d5 100644 --- a/civicrm/templates/CRM/ACL/Page/ACL.tpl +++ b/civicrm/templates/CRM/ACL/Page/ACL.tpl @@ -24,12 +24,14 @@ <table id="options" class="display"> <thead> <tr class="columnheader"> - <th id="sortable">{ts}Role{/ts}</th> + <th>{ts}Role{/ts}</th> <th>{ts}Operation{/ts}</th> <th>{ts}Type of Data{/ts}</th> <th>{ts}Which Data{/ts}</th> <th>{ts}Description{/ts}</th> <th>{ts}Enabled?{/ts}</th> + <th>{ts}Mode{/ts}</th> + <th id="sortable">{ts}Priority{/ts}</th> <th></th> </tr> </thead> @@ -42,6 +44,8 @@ <td class="crm-acl-object" >{$row.object}</td> <td class="crm-acl-name crm-editable" data-field="name">{$row.name}</td> <td class="crm-acl-is_active" id="row_{$aclID}_status">{if $row.is_active eq 1} {ts}Yes{/ts} {else} {ts}No{/ts} {/if}</td> + <td class="crm-acl-deny" id="row_{$aclID}_deny">{if $row.deny}{ts}Deny{/ts}{else}{ts}Allow{/ts}{/if}</td> + <td class="crm-acl-priority" id="row_{$aclID}_priority">{$row.priority}</td> <td>{$row.action|replace:'xx':$aclID}</td> </tr> {/foreach} @@ -51,7 +55,7 @@ {if $action ne 1 and $action ne 2} <div class="action-link"> - {crmButton q="action=add&reset=1" id="newACL" icon="plus-circle"}{ts}Add ACL{/ts}{/crmButton} + {crmButton p="civicrm/acl/edit" q="action=add&reset=1" id="newACL" icon="plus-circle"}{ts}Add ACL{/ts}{/crmButton} </div> {/if} </div> diff --git a/civicrm/templates/CRM/ACL/Page/ACLBasic.tpl b/civicrm/templates/CRM/ACL/Page/ACLBasic.tpl deleted file mode 100644 index f747719e1e..0000000000 --- a/civicrm/templates/CRM/ACL/Page/ACLBasic.tpl +++ /dev/null @@ -1,56 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | 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 | - +--------------------------------------------------------------------+ -*} -{include file="CRM/ACL/Header.tpl" step=3} - -{if $action eq 1 or $action eq 2 or $action eq 8} -<div class="crm-block crm-form-block"> - {include file="CRM/ACL/Form/ACLBasic.tpl"} -</div> -{/if} - -<div class="crm-block crm-content-block"> -{if $rows} -<div id="ltype"> -<p></p> - <div class="form-item"> - {strip} - <table> - <tr class="columnheader"> - <th>{ts}Role{/ts}</th> - <th>{ts}ACL Type(s){/ts}</th> - <th></th> - </tr> - {foreach from=$rows item=row} - <tr class="{cycle values="odd-row,even-row"}{if !empty($row.class)} {$row.class}{/if}{if NOT $row.is_active} disabled{/if}"> - <td>{$row.entity}</td> - <td>{$row.object_table}</td> - <td>{$row.action}</td> - </tr> - {/foreach} - </table> - {/strip} - - {if $action ne 1 and $action ne 2} - <div class="action-link"> - <a href="{crmURL q="action=add&reset=1"}" id="newACL"><i class="crm-i fa-plus-circle" aria-hidden="true"></i> {ts}Add ACL{/ts}</a> - </div> - {/if} - </div> -</div> -{elseif $action ne 1 and $action ne 2 and $action ne 8} - <div class="messages status no-popup"> - <dl> - <dt><img src="{$config->resourceBase}i/Inform.gif" alt="{ts}status{/ts}"/></dt> - {capture assign=crmURL}{crmURL q="action=add&reset=1"}{/capture} - <dd>{ts 1=$crmURL}There are no ACLs entered. You can <a href='%1'>add one</a>.{/ts}</dd> - </dl> - </div> -{/if} -</div> diff --git a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl index 592762f006..e58203ddbb 100644 --- a/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl +++ b/civicrm/templates/CRM/Admin/Form/ScheduleReminders.tpl @@ -122,7 +122,7 @@ <td> {$form.subject.html|crmAddClass:huge} <input class="crm-token-selector big" data-field="subject" /> - {help id="id-token-subject" tplFile=$tplFile isAdmin=$isAdmin file="CRM/Contact/Form/Task/Email.hlp"} + {help id="id-token-subject" file="CRM/Contact/Form/Task/Email.hlp"} </td> </tr> </table> diff --git a/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl b/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl index 21099dd319..5b469501c8 100644 --- a/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl +++ b/civicrm/templates/CRM/Contact/Form/Edit/CommunicationPreferences.tpl @@ -16,28 +16,28 @@ </div><!-- /.crm-accordion-header --> <div id="commPrefs" class="crm-accordion-body"> <table class="form-layout-compressed" > - {if !empty($form.communication_style_id)} - <tr><td colspan='4'> - <span class="label">{$form.communication_style_id.label} {help id="id-communication_style" file="CRM/Contact/Form/Contact.hlp"}</span> - <span class="value">{$form.communication_style_id.html}</span> - </td><tr> + {if array_key_exists('communication_style_id', $form)} + <tr><td colspan='4'> + <span class="label">{$form.communication_style_id.label} {help id="id-communication_style" file="CRM/Contact/Form/Contact.hlp"}</span> + <span class="value">{$form.communication_style_id.html}</span> + </td><tr> {/if} <tr> - {if !empty($form.email_greeting_id)} - <td>{$form.email_greeting_id.label}</td> - {/if} - {if !empty($form.postal_greeting_id)} - <td>{$form.postal_greeting_id.label}</td> - {/if} - {if !empty($form.addressee_id)} - <td>{$form.addressee_id.label}</td> - {/if} - {if !empty($form.email_greeting_id) OR !empty($form.postal_greeting_id) OR !empty($form.addressee_id)} - <td> {help id="id-greeting" file="CRM/Contact/Form/Contact.hlp"}</td> - {/if} + {if array_key_exists('email_greeting_id', $form)} + <td>{$form.email_greeting_id.label}</td> + {/if} + {if array_key_exists('postal_greeting_id', $form)} + <td>{$form.postal_greeting_id.label}</td> + {/if} + {if array_key_exists('addressee_id', $form)} + <td>{$form.addressee_id.label}</td> + {/if} + {if array_key_exists('email_greeting_id', $form) OR array_key_exists('postal_greeting_id', $form) OR array_key_exists('addressee_id', $form)} + <td> {help id="id-greeting" file="CRM/Contact/Form/Contact.hlp"}</td> + {/if} </tr> <tr> - {if !empty($form.email_greeting_id)} + {if array_key_exists('email_greeting_id', $form)} <td> <span id="email_greeting" {if !empty($email_greeting_display) and $action eq 2} class="hiddenElement"{/if}>{$form.email_greeting_id.html|crmAddClass:big}</span> {if !empty($email_greeting_display) and $action eq 2} @@ -47,7 +47,7 @@ {/if} </td> {/if} - {if !empty($form.postal_greeting_id)} + {if array_key_exists('postal_greeting_id', $form)} <td> <span id="postal_greeting" {if !empty($postal_greeting_display) and $action eq 2} class="hiddenElement"{/if}>{$form.postal_greeting_id.html|crmAddClass:big}</span> {if !empty($postal_greeting_display) and $action eq 2} @@ -57,7 +57,7 @@ {/if} </td> {/if} - {if !empty($form.addressee_id)} + {if array_key_exists('addressee_id', $form)} <td> <span id="addressee" {if !empty($addressee_display) and $action eq 2} class="hiddenElement"{/if}>{$form.addressee_id.html|crmAddClass:big}</span> {if !empty($addressee_display) and $action eq 2} @@ -69,26 +69,26 @@ {/if} </tr> <tr id="greetings1" class="hiddenElement"> - {if !empty($form.email_greeting_custom)} - <td><span id="email_greeting_id_label" class="hiddenElement">{$form.email_greeting_custom.label}</span></td> - {/if} - {if !empty($form.postal_greeting_custom)} - <td><span id="postal_greeting_id_label" class="hiddenElement">{$form.postal_greeting_custom.label}</span></td> - {/if} - {if !empty($form.addressee_custom)} - <td><span id="addressee_id_label" class="hiddenElement">{$form.addressee_custom.label}</span></td> - {/if} + {if array_key_exists('email_greeting_custom', $form)} + <td><span id="email_greeting_id_label" class="hiddenElement">{$form.email_greeting_custom.label}</span></td> + {/if} + {if array_key_exists('postal_greeting_custom', $form)} + <td><span id="postal_greeting_id_label" class="hiddenElement">{$form.postal_greeting_custom.label}</span></td> + {/if} + {if array_key_exists('addressee_custom', $form)} + <td><span id="addressee_id_label" class="hiddenElement">{$form.addressee_custom.label}</span></td> + {/if} </tr> <tr id="greetings2" class="hiddenElement"> - {if !empty($form.email_greeting_custom)} - <td><span id="email_greeting_id_html" class="hiddenElement">{$form.email_greeting_custom.html|crmAddClass:big}</span></td> - {/if} - {if !empty($form.postal_greeting_custom)} - <td><span id="postal_greeting_id_html" class="hiddenElement">{$form.postal_greeting_custom.html|crmAddClass:big}</span></td> - {/if} - {if !empty($form.addressee_custom)} - <td><span id="addressee_id_html" class="hiddenElement">{$form.addressee_custom.html|crmAddClass:big}</span></td> - {/if} + {if array_key_exists('email_greeting_custom', $form)} + <td><span id="email_greeting_id_html" class="hiddenElement">{$form.email_greeting_custom.html|crmAddClass:big}</span></td> + {/if} + {if array_key_exists('postal_greeting_custom', $form)} + <td><span id="postal_greeting_id_html" class="hiddenElement">{$form.postal_greeting_custom.html|crmAddClass:big}</span></td> + {/if} + {if array_key_exists('addressee_custom', $form)} + <td><span id="addressee_id_html" class="hiddenElement">{$form.addressee_custom.html|crmAddClass:big}</span></td> + {/if} </tr> <tr> {foreach key=key item=item from=$commPreference} diff --git a/civicrm/templates/CRM/Contact/Form/Search/ResultTasks.tpl b/civicrm/templates/CRM/Contact/Form/Search/ResultTasks.tpl index 567a415f76..e7a9bab83c 100644 --- a/civicrm/templates/CRM/Contact/Form/Search/ResultTasks.tpl +++ b/civicrm/templates/CRM/Contact/Form/Search/ResultTasks.tpl @@ -13,15 +13,11 @@ {elseif $context EQ 'amtg'}{crmURL p='civicrm/contact/search/advanced' q="context=amtg&amtgID=`$group.id`&reset=1&force=1"} {else}{crmURL p='civicrm/contact/search/advanced' q="reset=1"} {/if}{/capture} -{capture assign=searchBuilderURL}{crmURL p='civicrm/contact/search/builder' q="reset=1"}{/capture} <div id="search-status"> <div class="float-right right"> {if $action eq 256} - <a href="{$advSearchURL}"><i class="crm-i fa-chevron-right" aria-hidden="true"></i> {ts}Advanced Search{/ts}</a><br /> - {if $context eq 'search'} {* Only show Search Builder link for basic search. *} - <a href="{$searchBuilderURL}"><i class="crm-i fa-chevron-right" aria-hidden="true"></i> {ts}Search Builder{/ts}</a><br /> - {/if} + <a href="{$advSearchURL}">{ts}Advanced Search{/ts}</a><br /> {if $context eq 'smog'} {help id="id-smog-criteria" group_title=$group.title} {elseif $context eq 'amtg'} @@ -29,10 +25,8 @@ {else} {help id="id-basic-criteria"} {/if} - {elseif $action eq 512} - <a href="{$searchBuilderURL}"><i class="crm-i fa-chevron-right" aria-hidden="true"></i> {ts}Search Builder{/ts}</a><br /> {elseif $action eq 8192} - <a href="{$advSearchURL}"><i class="crm-i fa-chevron-right" aria-hidden="true"></i> {ts}Advanced Search{/ts}</a><br /> + <a href="{$advSearchURL}">{ts}Advanced Search{/ts}</a><br /> {/if} </div> diff --git a/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl b/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl index 644950ab62..98663a6357 100644 --- a/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl +++ b/civicrm/templates/CRM/Contact/Form/Task/EmailCommon.tpl @@ -17,7 +17,7 @@ <div class="crm-accordion-body"> <div class="helpIcon" id="helphtml"> <input class="crm-token-selector big" data-field="html_message" /> - {help id="id-token-html" tplFile=$tplFile isAdmin=$isAdmin file="CRM/Contact/Form/Task/Email.hlp"} + {help id="id-token-html" file="CRM/Contact/Form/Task/Email.hlp"} </div> <div class="clear"></div> <div class='html'> diff --git a/civicrm/templates/CRM/Contact/Import/Form/DataSource.hlp b/civicrm/templates/CRM/Contact/Import/Form/DataSource.hlp index beb310a573..4f83e7d00d 100644 --- a/civicrm/templates/CRM/Contact/Import/Form/DataSource.hlp +++ b/civicrm/templates/CRM/Contact/Import/Form/DataSource.hlp @@ -46,6 +46,9 @@ {ts}<strong>No Duplicate Checking:</strong> Inserts all valid records without comparing them to existing contact records for possible duplicates.{/ts} </li> </ul> + <p> + {ts}You can only match imported data directly to existing Contact IDs in Update, Fill or No Duplicate Checking modes.{/ts} + </p> {/htxt} {htxt id='data-source-selection-title'} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl index 21aa7a9d56..350bdda46e 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution.tpl @@ -22,7 +22,7 @@ {elseif $contactId} {ts 1=$displayName}Use this form to submit a new contribution on behalf of %1.{/ts} {else} - {ts 1=$displayName}Use this form to submit a new contribution.{/ts} + {ts}Use this form to submit a new contribution.{/ts} {/if} {if $contributionMode == 'live'} {ts}<strong>A LIVE transaction will be submitted</strong> using the selected payment processor.{/ts} @@ -103,13 +103,12 @@ <tr id='recurringPaymentBlock'> <td></td> <td> - <strong>{$form.is_recur.html} {ts}every{/ts} - {$form.frequency_interval.html} - {$form.frequency_unit.html} - {ts}for{/ts} - {$form.installments.html} - {$form.installments.label} - </strong> + {$form.is_recur.html} {ts}every{/ts} + {$form.frequency_interval.html} + {$form.frequency_unit.html} + {ts}for{/ts} + {$form.installments.html} + {$form.installments.label} <br /> <span class="description"> {ts}You can leave the number of installments blank if you want to make an open-ended commitment. In either case, you can choose to cancel at any time.{/ts} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl index bff0c22270..3bd4ebf4fd 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Confirm.tpl @@ -26,7 +26,7 @@ <div class="bold pay_later_receipt-section">{$pay_later_receipt}</div> {/if} - {include file="CRM/Contribute/Form/Contribution/MembershipBlock.tpl" context="confirmContribution"} + {include file="CRM/Contribute/Form/Contribution/MembershipBlock.tpl"} {if $amount GTE 0 OR $minimum_fee GTE 0 OR ( $isDisplayLineItems and $lineItem ) } <div class="crm-group amount_display-group"> diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl index d12e534fbc..c847f4ea8e 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/Main.tpl @@ -78,7 +78,7 @@ {if $isShowMembershipBlock && !$ccid} <div class="crm-public-form-item crm-section"> - {include file="CRM/Contribute/Form/Contribution/MembershipBlock.tpl" context="makeContribution"} + {include file="CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl"} </div> {elseif !empty($ccid)} {if $lineItem && $priceSetID && !$is_quick_config} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl new file mode 100644 index 0000000000..414e004e8e --- /dev/null +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/MainMembershipBlock.tpl @@ -0,0 +1,245 @@ +{* + +--------------------------------------------------------------------+ + | 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 | + +--------------------------------------------------------------------+ +*} +<div id="membership" class="crm-group membership-group"> + {if TRUE} + <div id="priceset"> + <fieldset> + {if $renewal_mode} + {if $membershipBlock.renewal_title} + <legend>{$membershipBlock.renewal_title}</legend> + {/if} + {if $membershipBlock.renewal_text} + <div id="membership-intro" class="crm-section membership_renewal_intro-section"> + {$membershipBlock.renewal_text} + </div> + {/if} + {else} + {if $membershipBlock.new_title} + <legend>{$membershipBlock.new_title}</legend> + {/if} + {if $membershipBlock.new_text} + <div id="membership-intro" class="crm-section membership_new_intro-section"> + {$membershipBlock.new_text} + </div> + {/if} + {/if} + {if !empty($membershipTypes)} + {foreach from=$membershipTypes item=row} + {if array_key_exists( 'current_membership', $row )} + <div class='help'> + {* Lifetime memberships have no end-date so current_membership array key exists but is NULL *} + {if $row.current_membership} + {if $row.current_membership|crmDate:"%Y%m%d" LT $smarty.now|crmDate:"%Y%m%d"} + {ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expired on %1.{/ts}<br /> + {else} + {ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expires on %1.{/ts}<br /> + {/if} + {else} + {ts 1=$row.name}Your <strong>%1</strong> membership does not expire (you do not need to renew that membership).{/ts}<br /> + {/if} + </div> + {/if} + {/foreach} + {/if} + + {include file="CRM/Price/Form/PriceSet.tpl" extends="Membership"} + </fieldset> + </div> + {literal} + <script type="text/javascript"> + CRM.$(function($) { + //if price set is set we use below below code to show for showing auto renew + var autoRenewOption = {/literal}'{$autoRenewOption}'{literal}; + var autoRenew = $("#auto_renew_section"); + var autoRenewCheckbox = $("#auto_renew"); + var forceRenew = $("#force_renew"); + autoRenew.hide(); + forceRenew.hide(); + if ( autoRenewOption == 1 ) { + autoRenew.show(); + } else if ( autoRenewOption == 2 ) { + autoRenewCheckbox.prop('checked', true ); + autoRenewCheckbox.attr( 'readonly', true ); + autoRenew.hide(); + forceRenew.show(); + } + }); + </script> + {/literal} + {elseif $membershipBlock and $lineItem and $priceSetID AND !$is_quick_config} + {assign var="totalAmount" value=$amount} + <div class="header-dark"> + {ts}Membership Fee{/ts} + </div> + <div class="display-block"> + {include file="CRM/Price/Page/LineItem.tpl" context="Membership"} + </div> + {elseif $membershipBlock AND !$is_quick_config} + <div id="membership" class="crm-group membership-group"> + <fieldset> + {if $renewal_mode } + {if $membershipBlock.renewal_title} + <legend>{$membershipBlock.renewal_title}</legend> + {/if} + {if $membershipBlock.renewal_text} + <div id="membership-intro" class="crm-section membership_renewal_intro-section"> + <p>{$membershipBlock.renewal_text}</p> + </div> + {/if} + + {else} + {if $membershipBlock.new_title} + <legend>{$membershipBlock.new_title}</legend> + {/if} + {if $membershipBlock.new_text} + <div id="membership-intro" class="crm-section membership_new_intro-section"> + <p>{$membershipBlock.new_text}</p> + </div> + {/if} + {/if} + + </fieldset> + </div> + + {/if}{* membership block end here *} +</div> +{if $membershipBlock AND $is_quick_config} + {strip} + <table id="membership-listings"> + {foreach from=$membershipTypes item=row} + <tr class="odd-row" valign="top"> + {if $showRadio } + {* unreachable - show radio is never true *} + {assign var="pid" value=$row.id} + <td style="width: 1em;">{$form.selectMembership.$pid.html}</td> + {else} + <td> </td> + {/if} + <td style="width: auto;"> + <span class="bold">{$row.name} + {if ($membershipBlock.display_min_fee) AND $row.minimum_fee GT 0 } + {if $is_separate_payment OR ! $form.amount.label} + – {$row.minimum_fee|crmMoney} + {else} + {ts 1=$row.minimum_fee|crmMoney}(contribute at least %1 to be eligible for this membership){/ts} + {/if} + {/if} + </span><br /> + {$row.description} + </td> + + <td style="width: auto;"> + {* Check if there is an existing membership of this type (current_membership NOT empty) and if the end-date is prior to today. *} + {if array_key_exists( 'current_membership', $row)} + {if $row.current_membership} + {if $row.current_membership|crmDate:"%Y%m%d" LT $smarty.now|crmDate:"%Y%m%d"} + <br /><em>{ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expired on %1.{/ts}</em> + {else} + <br /><em>{ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expires on %1.{/ts}</em> + {/if} + {else} + {ts 1=$row.name}Your <strong>%1</strong> membership does not expire (you do not need to renew that membership).{/ts}<br /> + {/if} + {else} + + {/if} + </td> + </tr> + + {/foreach} + {if $form.auto_renew} + <tr id="allow_auto_renew"> + <td style="width: auto;">{$form.auto_renew.html}</td> + <td style="width: auto;"> + {$form.auto_renew.label} + </td> + </tr> + {/if} + {if $showRadio}{* unreachable *} + {if $showRadioNoThanks } {* Provide no-thanks option when Membership signup is not required - per membership block configuration. *} + <tr class="odd-row"> + <td>{$form.selectMembership.no_thanks.html}</td> + <td colspan="2"><strong>{ts}No thank you{/ts}</strong></td> + </tr> + {/if} + {/if} + </table> + {/strip} +{/if} + +{if $membershipBlock} +{literal} + <script type="text/javascript"> + CRM.$(function($) { + showHideAutoRenew( null ); + }); + function showHideAutoRenew( memTypeId ) + { + var priceSetName = "price_"+{/literal}'{$membershipFieldID}'{literal}; + var considerUserInput = {/literal}'{$takeUserSubmittedAutoRenew}'{literal}; + if ( memTypeId ) considerUserInput = false; + if ( !memTypeId ) memTypeId = cj('input:radio[name='+priceSetName+']:checked').attr('membership-type'); + + //does this page has only one membership type. + var singleMembership = {/literal}'{$singleMembership}'{literal}; + if ( !memTypeId && singleMembership ) memTypeId = cj("input:radio[name="+priceSetName+"]").attr('membership-type'); + var renewOptions = {/literal}{$autoRenewMembershipTypeOptions}{literal}; + var currentOption = eval( "renewOptions." + 'autoRenewMembershipType_' + memTypeId ); + var autoRenew = cj('#auto_renew_section'); + var autoRenewC = cj('input[name="auto_renew"]'); + var forceRenew = cj("#force_renew"); + + var readOnly = false; + var isChecked = false; + if ( currentOption == 0 ) { + isChecked = false; + forceRenew.hide(); + autoRenew.hide(); + } + if ( currentOption == 1 ) { + forceRenew.hide(); + autoRenew.show(); + + //uncomment me, if we'd like + //to load auto_renew checked. + //isChecked = true; + } else if ( currentOption == 2 || currentOption == 4) { + autoRenew.hide(); + forceRenew.show(); + isChecked = readOnly = true; + } + + if ( considerUserInput ) isChecked = autoRenew.prop('checked' ); + + //its a normal recur contribution. + if ( cj( "is_recur" ) && + ( cj( 'input:radio[name="is_recur"]:checked').val() == 1 ) ) { + isChecked = false; + autoRenew.hide(); + forceRenew.hide(); + } + + autoRenewC.attr( 'readonly', readOnly ); + autoRenewC.prop('checked', isChecked ); + } + + {/literal}{if $allowAutoRenewMembership}{literal} + CRM.$(function($) { + //keep read only always checked. + cj( "#auto_renew" ).click(function( ) { + if ( cj(this).attr( 'readonly' ) ) { + cj(this).prop('checked', true ); + } + }); + }); + {/literal}{/if}{literal} + </script> +{/literal} +{/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl index aaa68dad04..bf6cc6277f 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/MembershipBlock.tpl @@ -8,132 +8,9 @@ +--------------------------------------------------------------------+ *} <div id="membership" class="crm-group membership-group"> - {if $context EQ "makeContribution"} - <div id="priceset"> - <fieldset> - {if $renewal_mode} - {if $membershipBlock.renewal_title} - <legend>{$membershipBlock.renewal_title}</legend> - {/if} - {if $membershipBlock.renewal_text} - <div id="membership-intro" class="crm-section membership_renewal_intro-section"> - {$membershipBlock.renewal_text} - </div> - {/if} - {else} - {if $membershipBlock.new_title} - <legend>{$membershipBlock.new_title}</legend> - {/if} - {if $membershipBlock.new_text} - <div id="membership-intro" class="crm-section membership_new_intro-section"> - {$membershipBlock.new_text} - </div> - {/if} - {/if} - {if !empty($membershipTypes)} - {foreach from=$membershipTypes item=row} - {if array_key_exists( 'current_membership', $row )} - <div class='help'> - {* Lifetime memberships have no end-date so current_membership array key exists but is NULL *} - {if $row.current_membership} - {if $row.current_membership|crmDate:"%Y%m%d" LT $smarty.now|crmDate:"%Y%m%d"} - {ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expired on %1.{/ts}<br /> - {else} - {ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expires on %1.{/ts}<br /> - {/if} - {else} - {ts 1=$row.name}Your <strong>%1</strong> membership does not expire (you do not need to renew that membership).{/ts}<br /> - {/if} - </div> - {/if} - {/foreach} - {/if} - {include file="CRM/Price/Form/PriceSet.tpl" extends="Membership"} - </fieldset> - </div> - {literal} - <script type="text/javascript"> - CRM.$(function($) { - //if price set is set we use below below code to show for showing auto renew - var autoRenewOption = {/literal}'{$autoRenewOption}'{literal}; - var autoRenew = $("#auto_renew_section"); - var autoRenewCheckbox = $("#auto_renew"); - var forceRenew = $("#force_renew"); - autoRenew.hide(); - forceRenew.hide(); - if ( autoRenewOption == 1 ) { - autoRenew.show(); - } else if ( autoRenewOption == 2 ) { - autoRenewCheckbox.prop('checked', true ); - autoRenewCheckbox.attr( 'readonly', true ); - autoRenew.hide(); - forceRenew.show(); - } - }); - </script> - {/literal} -{elseif $membershipBlock and $lineItem and $priceSetID AND !$is_quick_config} - {assign var="totalAmount" value=$amount} - <div class="header-dark"> - {ts}Membership Fee{/ts} - </div> - <div class="display-block"> - {include file="CRM/Price/Page/LineItem.tpl" context="Membership"} - </div> -{elseif $membershipBlock AND !$is_quick_config} - <div id="membership" class="crm-group membership-group"> - {if $context EQ "makeContribution"} - <fieldset> - {if $renewal_mode } - {if $membershipBlock.renewal_title} - <legend>{$membershipBlock.renewal_title}</legend> - {/if} - {if $membershipBlock.renewal_text} - <div id="membership-intro" class="crm-section membership_renewal_intro-section"> - <p>{$membershipBlock.renewal_text}</p> - </div> - {/if} - - {else} - {if $membershipBlock.new_title} - <legend>{$membershipBlock.new_title}</legend> - {/if} - {if $membershipBlock.new_text} - <div id="membership-intro" class="crm-section membership_new_intro-section"> - <p>{$membershipBlock.new_text}</p> - </div> - {/if} - {/if} - {/if} - {if $context neq "makeContribution" } - <div class="header-dark"> - {if $renewal_mode } - {if $membershipBlock.renewal_title} - {$membershipBlock.renewal_title} - {else} - {ts}Select a Membership Renewal Level{/ts} - {/if} - - {else} - {if $membershipBlock.new_title} - {$membershipBlock.new_title} - {else} - {ts}Select a Membership Level{/ts} - {/if} - {/if} - </div> - {/if} - - {if $context EQ "makeContribution"} - </fieldset> - {/if} - </div> - -{/if}{* membership block end here *} </div> {if $membershipBlock AND $is_quick_config} - {if $context neq "makeContribution" } <div class="header-dark"> {if $renewal_mode } {if $membershipBlock.renewal_title} @@ -149,46 +26,18 @@ {/if} {/if} </div> - {/if} + {strip} <table id="membership-listings"> {foreach from=$membershipTypes item=row} - <tr {if $context EQ "makeContribution"}class="odd-row" {/if}valign="top"> - {if $showRadio } - {* unreachable - show radio is never true *} - {assign var="pid" value=$row.id} - <td style="width: 1em;">{$form.selectMembership.$pid.html}</td> - {else} - <td> </td> - {/if} + <tr valign="top"> <td style="width: auto;"> <span class="bold">{$row.name} - {if ($membershipBlock.display_min_fee AND $context EQ "makeContribution") AND $row.minimum_fee GT 0 } - {if $is_separate_payment OR ! $form.amount.label} - – {$row.minimum_fee|crmMoney} - {else} - {ts 1=$row.minimum_fee|crmMoney}(contribute at least %1 to be eligible for this membership){/ts} - {/if} - {/if} </span><br /> {$row.description} </td> <td style="width: auto;"> - {* Check if there is an existing membership of this type (current_membership NOT empty) and if the end-date is prior to today. *} - {if array_key_exists( 'current_membership', $row ) AND $context EQ "makeContribution" } - {if $row.current_membership} - {if $row.current_membership|crmDate:"%Y%m%d" LT $smarty.now|crmDate:"%Y%m%d"} - <br /><em>{ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expired on %1.{/ts}</em> - {else} - <br /><em>{ts 1=$row.current_membership|crmDate 2=$row.name}Your <strong>%2</strong> membership expires on %1.{/ts}</em> - {/if} - {else} - {ts 1=$row.name}Your <strong>%1</strong> membership does not expire (you do not need to renew that membership).{/ts}<br /> - {/if} - {else} - - {/if} </td> </tr> @@ -201,84 +50,6 @@ </td> </tr> {/if} - {if $showRadio}{* unreachable *} - {if $showRadioNoThanks } {* Provide no-thanks option when Membership signup is not required - per membership block configuration. *} - <tr class="odd-row"> - <td>{$form.selectMembership.no_thanks.html}</td> - <td colspan="2"><strong>{ts}No thank you{/ts}</strong></td> - </tr> - {/if} - {/if} </table> {/strip} {/if} -{* Include JS for auto renew membership if priceset is Quick Config*} -{if $membershipBlock} -{literal} - <script type="text/javascript"> - CRM.$(function($) { - showHideAutoRenew( null ); - }); - function showHideAutoRenew( memTypeId ) - { - var priceSetName = "price_"+{/literal}'{$membershipFieldID}'{literal}; - var considerUserInput = {/literal}'{$takeUserSubmittedAutoRenew}'{literal}; - if ( memTypeId ) considerUserInput = false; - if ( !memTypeId ) memTypeId = cj('input:radio[name='+priceSetName+']:checked').attr('membership-type'); - - //does this page has only one membership type. - var singleMembership = {/literal}'{$singleMembership}'{literal}; - if ( !memTypeId && singleMembership ) memTypeId = cj("input:radio[name="+priceSetName+"]").attr('membership-type'); - var renewOptions = {/literal}{$autoRenewMembershipTypeOptions}{literal}; - var currentOption = eval( "renewOptions." + 'autoRenewMembershipType_' + memTypeId ); - var autoRenew = cj('#auto_renew_section'); - var autoRenewC = cj('input[name="auto_renew"]'); - var forceRenew = cj("#force_renew"); - - var readOnly = false; - var isChecked = false; - if ( currentOption == 0 ) { - isChecked = false; - forceRenew.hide(); - autoRenew.hide(); - } - if ( currentOption == 1 ) { - forceRenew.hide(); - autoRenew.show(); - - //uncomment me, if we'd like - //to load auto_renew checked. - //isChecked = true; - } else if ( currentOption == 2 || currentOption == 4) { - autoRenew.hide(); - forceRenew.show(); - isChecked = readOnly = true; - } - - if ( considerUserInput ) isChecked = autoRenew.prop('checked' ); - - //its a normal recur contribution. - if ( cj( "is_recur" ) && - ( cj( 'input:radio[name="is_recur"]:checked').val() == 1 ) ) { - isChecked = false; - autoRenew.hide(); - forceRenew.hide(); - } - - autoRenewC.attr( 'readonly', readOnly ); - autoRenewC.prop('checked', isChecked ); - } - - {/literal}{if $allowAutoRenewMembership}{literal} - CRM.$(function($) { - //keep read only always checked. - cj( "#auto_renew" ).click(function( ) { - if ( cj(this).attr( 'readonly' ) ) { - cj(this).prop('checked', true ); - } - }); - }); - {/literal}{/if}{literal} - </script> -{/literal} -{/if} diff --git a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl index 697baf22d8..8502f4f293 100644 --- a/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Contribution/ThankYou.tpl @@ -72,7 +72,7 @@ </div> <div class="spacer"></div> - {include file="CRM/Contribute/Form/Contribution/MembershipBlock.tpl" context="thankContribution"} + {include file="CRM/Contribute/Form/Contribution/MembershipBlock.tpl"} {if $amount GTE 0 OR $minimum_fee GTE 0 OR ( $priceSetID and $lineItem ) } <div class="crm-group amount_display-group"> diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.hlp b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.hlp index fd235fe855..9f91f656bd 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.hlp +++ b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.hlp @@ -32,3 +32,7 @@ <p>{ts}You can send your email as a simple text-only message, as an HTML formatted message, or both. Text-only messages are sufficient for most email communication, and some recipients may prefer not to receive HTML formatted messages.{/ts}</p> <p>{ts}HTML messages have more visual impact, allow you to include images, and may be more readable if you are including links to website pages. However, different email programs may interpret HTML formats differently, so use this option cautiously unless you have a template format that has been tested with different web and desktop email programs.{/ts}</p> {/htxt} + +{htxt id="id-email_comment"} +{ts}You can add a message that will appear at the top of the invoice email. This message will be the same for all recipients.{/ts} +{/htxt} diff --git a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl index 208d0a8223..ad8a6d90ef 100644 --- a/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl +++ b/civicrm/templates/CRM/Contribute/Form/Task/Invoice.tpl @@ -16,7 +16,7 @@ {ts}You may choose to email invoice to contributors OR download a PDF file containing one invoice per page to your local computer by clicking <strong>Process Invoice(s)</strong> . Your browser may display the file for you automatically, or you may need to open it for printing using any PDF reader (such as Adobe® Reader).{/ts} </div> {/if} - +<div class="crm-block crm-form-block"> <table class="form-layout-compressed"> {if $selectedOutput ne 'email'} <tr> @@ -41,7 +41,7 @@ </td> </tr> <tr class="crm-email-element"> - <td class="label">{$form.email_comment.label}</td> + <td class="label">{$form.email_comment.label} {help id="id-email_comment"}</td> <td>{$form.email_comment.html}</td> </tr> {if $selectedOutput ne 'email'} @@ -55,6 +55,7 @@ <td>{$form.pdf_format_id.html}</td> </tr> </table> +</div> <div class="spacer"></div> <div class="crm-submit-buttons"> diff --git a/civicrm/templates/CRM/Contribute/Page/ContributionRecurSelector.tpl b/civicrm/templates/CRM/Contribute/Page/ContributionRecurSelector.tpl index 2982db1ba8..1a7f2d2382 100644 --- a/civicrm/templates/CRM/Contribute/Page/ContributionRecurSelector.tpl +++ b/civicrm/templates/CRM/Contribute/Page/ContributionRecurSelector.tpl @@ -13,12 +13,9 @@ <tr class="columnheader"> <th scope="col">{ts}Amount{/ts}</th> <th scope="col">{ts}Frequency{/ts}</th> - <th scope="col"> - {if $recurType EQ 'active'}{ts}Next Scheduled Date{/ts} - {elseif $recurType EQ 'inactive'}{ts}End or Modified Date{/ts} - {else}{ts}Start Date{/ts} - {/if} - </th> + <th scope="col">{ts}Start Date{/ts}</th> + {if $recurType EQ 'active'}<th scope="col">{ts}Next Scheduled Date{/ts}</th>{/if} + {if $recurType EQ 'inactive'}<th scope="col">{ts}End or Modified Date{/ts}</th>{/if} <th scope="col">{ts}Installments{/ts}</th> <th scope="col">{ts}Payment Processor{/ts}</th> <th scope="col">{ts}Status{/ts}</th> @@ -30,16 +27,16 @@ <tr id="contribution_recur-{$row.id}" data-action="cancel" class="crm-entity {cycle values="even-row,odd-row"}{if NOT $row.is_active} disabled{/if}"> <td>{$row.amount|crmMoney:$row.currency}{if $row.is_test} ({ts}test{/ts}){/if}</td> <td>{ts}Every{/ts} {$row.frequency_interval} {$row.frequency_unit} </td> - <td> - {if $recurType EQ 'active'}{$row.next_sched_contribution_date|crmDate} - {elseif $recurType EQ 'inactive'} + <td>{$row.start_date|crmDate}</td> + {if $recurType EQ 'active'}<td>{$row.next_sched_contribution_date|crmDate}</td>{/if} + {if $recurType EQ 'inactive'} + <td> {if $row.cancel_date}{$row.cancel_date|crmDate} {elseif $row.end_date}{$row.end_date|crmDate} {else}{$row.modified_date|crmDate} {/if} - {else}{$row.start_date|crmDate} - {/if} - </td> + </td> + {/if} <td>{$row.installments}</td> <td>{$row.payment_processor}</td> <td>{$row.contribution_status}</td> diff --git a/civicrm/templates/CRM/Core/BillingBlock.tpl b/civicrm/templates/CRM/Core/BillingBlock.tpl index d873f64aa1..3702d00fb3 100644 --- a/civicrm/templates/CRM/Core/BillingBlock.tpl +++ b/civicrm/templates/CRM/Core/BillingBlock.tpl @@ -39,7 +39,7 @@ {/foreach} </div> </fieldset> - {if $paymentAgreementTitle} + {if !$isBackOffice && $paymentAgreementTitle} <div id="payment_notice"> <fieldset class="crm-public-form-item crm-group payment_notice-group"> <legend>{$paymentAgreementTitle}</legend> diff --git a/civicrm/templates/CRM/Core/Form/RecurringEntity.hlp b/civicrm/templates/CRM/Core/Form/RecurringEntity.hlp index 1666b98935..4351268437 100644 --- a/civicrm/templates/CRM/Core/Form/RecurringEntity.hlp +++ b/civicrm/templates/CRM/Core/Form/RecurringEntity.hlp @@ -7,7 +7,7 @@ | and copyright information, see https://civicrm.org/licensing | +--------------------------------------------------------------------+ *} -{capture assign='entityType'}{$params.entityType|lower}{/capture} +{capture assign='entityType'}{if array_key_exists('entityType', $params)}{$params.entityType|lower}{/if}{/capture} {htxt id="id-repeats-title"} {ts}Repeats{/ts} diff --git a/civicrm/templates/CRM/Core/Page/RecurringEntityPreview.tpl b/civicrm/templates/CRM/Core/Page/RecurringEntityPreview.tpl index 9b83796ba9..6983b32c15 100644 --- a/civicrm/templates/CRM/Core/Page/RecurringEntityPreview.tpl +++ b/civicrm/templates/CRM/Core/Page/RecurringEntityPreview.tpl @@ -29,6 +29,7 @@ {/foreach} {/foreach} </tbody> + </table> {/if} <h3> diff --git a/civicrm/templates/CRM/Event/Form/Participant.tpl b/civicrm/templates/CRM/Event/Form/Participant.tpl index 551b745403..af5bdea715 100644 --- a/civicrm/templates/CRM/Event/Form/Participant.tpl +++ b/civicrm/templates/CRM/Event/Form/Participant.tpl @@ -151,7 +151,7 @@ {/if} {*include custom data js file*} - {include file="CRM/common/customData.tpl"} + {include file="CRM/common/customData.tpl" groupID=''} <script type="text/javascript"> {literal} diff --git a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl index ffde1c06b0..660bdd0f66 100644 --- a/civicrm/templates/CRM/Event/Form/Registration/Register.tpl +++ b/civicrm/templates/CRM/Event/Form/Registration/Register.tpl @@ -43,14 +43,14 @@ {/if} {/crmRegion} - {if $event.intro_text} + {if array_key_exists('intro_text', $event)} <div id="intro_text" class="crm-public-form-item crm-section intro_text-section"> <p>{$event.intro_text}</p> </div> {/if} {include file="CRM/common/cidzero.tpl"} - {if $pcpSupporterText} + {if $pcp AND $pcpSupporterText} <div class="crm-public-form-item crm-section pcpSupporterText-section"> <div class="content">{$pcpSupporterText}</div> </div> @@ -132,7 +132,7 @@ </fieldset> {/if} - {if $priceSet} + {if $priceSet && !$showPaymentOnConfirm} {include file='CRM/Core/BillingBlockWrapper.tpl'} {/if} @@ -144,7 +144,7 @@ {include file="CRM/common/formButtons.tpl" location="bottom"} </div> - {if $event.footer_text} + {if array_key_exists('footer_text', $event)} <div id="footer_text" class="crm-public-form-item crm-section event_footer_text-section"> <p>{$event.footer_text}</p> </div> diff --git a/civicrm/templates/CRM/Group/Form/Delete.tpl b/civicrm/templates/CRM/Group/Form/Delete.tpl index 2c4760768d..4043531fea 100644 --- a/civicrm/templates/CRM/Group/Form/Delete.tpl +++ b/civicrm/templates/CRM/Group/Form/Delete.tpl @@ -14,7 +14,7 @@ <div class="messages status no-popup"> <img src="{$config->resourceBase}i/Inform.gif" alt="{ts}status{/ts}"/> {ts 1=$title}Are you sure you want to delete the group %1?{/ts}<br /><br /> - {if $count} + {if $count !== NULL} {ts count=$count plural='This group currently has %count members in it.'}This group currently has one member in it.{/ts} {/if} {ts}Deleting this group will NOT delete the member contact records. However, all contact subscription information and history for this group will be deleted.{/ts} {ts}If this group is used in CiviCRM profiles, those fields will be reset.{/ts} {ts}This action cannot be undone.{/ts} diff --git a/civicrm/templates/CRM/Member/Page/RecurringContributions.tpl b/civicrm/templates/CRM/Member/Page/RecurringContributions.tpl index 326eee90e3..02380e3ef9 100644 --- a/civicrm/templates/CRM/Member/Page/RecurringContributions.tpl +++ b/civicrm/templates/CRM/Member/Page/RecurringContributions.tpl @@ -2,5 +2,5 @@ <div class="solid-border-top"> <br /><label>{ts 1=$displayName}Recurring Contributions{/ts}</label> </div> - {include file="CRM/Contribute/Page/ContributionRecurSelector.tpl" action=16} + {include file="CRM/Contribute/Page/ContributionRecurSelector.tpl" action=16 recurType='both'} {/if} diff --git a/civicrm/templates/CRM/UF/Form/AdvanceSetting.tpl b/civicrm/templates/CRM/UF/Form/AdvanceSetting.tpl index 4ad7d6a6e1..554b3e7691 100644 --- a/civicrm/templates/CRM/UF/Form/AdvanceSetting.tpl +++ b/civicrm/templates/CRM/UF/Form/AdvanceSetting.tpl @@ -29,9 +29,9 @@ <td>{$form.notify.html} {help id='id-notify_email' file="CRM/UF/Form/Group.hlp"}</td> </tr> - <tr class="crm-uf-advancesetting-form-block-post_URL"> - <td class="label">{$form.post_URL.label}</td> - <td>{$form.post_URL.html} {help id='id-post_URL' file="CRM/UF/Form/Group.hlp"}</td> + <tr class="crm-uf-advancesetting-form-block-post_url"> + <td class="label">{$form.post_url.label}</td> + <td>{$form.post_url.html} {help id='id-post_url' file="CRM/UF/Form/Group.hlp"}</td> </tr> <tr class="crm-uf-advancesetting-form-block-add_cancel_button"> @@ -39,9 +39,9 @@ <td>{$form.add_cancel_button.html} {$form.add_cancel_button.label} {help id='id-add_cancel_button' file="CRM/UF/Form/Group.hlp"}</td> </tr> - <tr class="cancel_button_section crm-uf-advancesetting-form-block-cancel_URL"> - <td class="label">{$form.cancel_URL.label}</td> - <td>{$form.cancel_URL.html} {help id='id-cancel_URL' file="CRM/UF/Form/Group.hlp"}</td> + <tr class="cancel_button_section crm-uf-advancesetting-form-block-cancel_url"> + <td class="label">{$form.cancel_url.label}</td> + <td>{$form.cancel_url.html} {help id='id-cancel_url' file="CRM/UF/Form/Group.hlp"}</td> </tr> {foreach from=$advancedFieldsConverted item=fieldName} diff --git a/civicrm/templates/CRM/UF/Form/Group.hlp b/civicrm/templates/CRM/UF/Form/Group.hlp index c0d751b222..caf8ae2bdc 100644 --- a/civicrm/templates/CRM/UF/Form/Group.hlp +++ b/civicrm/templates/CRM/UF/Form/Group.hlp @@ -73,10 +73,10 @@ {ts}If you want member(s) of your organization to receive a notification email whenever this Profile form is used to enter or update contact information, enter one or more email addresses here. Multiple email addresses should be separated by a comma (e.g. jane@example.org, paula@example.org). The first email address listed will be used as the FROM address in the notifications.{/ts} {/htxt} -{htxt id='id-post_URL-title'} +{htxt id='id-post_url-title'} {ts}Redirect{/ts} {/htxt} -{htxt id='id-post_URL'} +{htxt id='id-post_url'} {ts}If you are using this profile as a contact signup or edit form, and want to redirect the user to a static URL after they've submitted the form, you can also use contact tokens in URL - enter the complete URL here. If this field is left blank, the built-in Profile form will be redisplayed with a generic status message - 'Your contact information has been saved.'{/ts} {/htxt} @@ -87,10 +87,10 @@ {ts}Enable/Disable this checkbox to add/remove cancel button on the profile form.{/ts} {/htxt} -{htxt id='id-cancel_URL-title'} +{htxt id='id-cancel_url-title'} {ts}Cancel Redirect{/ts} {/htxt} -{htxt id='id-cancel_URL'} +{htxt id='id-cancel_url'} {ts}If you are using this profile as a contact signup or edit form, and want to redirect the user to a static URL if they click the Cancel button - enter the complete URL here. If this field is left blank, the built-in Profile form will be redisplayed.{/ts} {/htxt} diff --git a/civicrm/templates/CRM/common/civicrm.settings.php.template b/civicrm/templates/CRM/common/civicrm.settings.php.template index ffb2bc2dd5..baf563771b 100644 --- a/civicrm/templates/CRM/common/civicrm.settings.php.template +++ b/civicrm/templates/CRM/common/civicrm.settings.php.template @@ -335,6 +335,12 @@ if (!defined('CIVICRM_CRED_KEYS') ) { // Some old installers may not set a decent value, and this extra complexity is a failsafe. // Feel free to simplify post-install. } +if (!defined('CIVICRM_DEPLOY_ID') ) { + define( '_CIVICRM_DEPLOY_ID', '%%deployID%%'); + define( 'CIVICRM_DEPLOY_ID', _CIVICRM_DEPLOY_ID === '%%' . 'deployID' . '%%' ? '' : _CIVICRM_DEPLOY_ID ); + // Some old installers may not set a decent value, and this extra complexity is a failsafe. + // Feel free to simplify post-install. +} /** * The signing key is used to generate and verify shareable tokens. diff --git a/civicrm/templates/CRM/common/navigation.js.tpl b/civicrm/templates/CRM/common/navigation.js.tpl deleted file mode 100644 index 55594f6b9a..0000000000 --- a/civicrm/templates/CRM/common/navigation.js.tpl +++ /dev/null @@ -1,182 +0,0 @@ -{* - +--------------------------------------------------------------------+ - | 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 | - +--------------------------------------------------------------------+ -*}// http://civicrm.org/licensing -{capture assign=menuMarkup}{strip} - <ul id="civicrm-menu"> - <li id="crm-qsearch" class="menumain"> - <form action="{crmURL p='civicrm/contact/search/advanced' h=0 }" name="search_block" id="id_search_block" method="post"> - <div id="quickSearch"> - <input type="text" class="form-text" id="sort_name_navigation" placeholder="{ts}Contacts{/ts}" name="sort_name" style="width: 6em;" /> - <input type="text" id="sort_contact_id" style="display: none" /> - <input type="hidden" name="hidden_location" value="1" /> - <input type="hidden" name="hidden_custom" value="1" /> - <input type="hidden" name="qfKey" value="" /> - <div style="height:1px; overflow:hidden;"><button type="submit" name="_qf_Advanced_refresh" class="crm-button crm-form-submit default">{ts}Go{/ts}</button></div> - </div> - </form> - <ul> - {foreach from=$quicksearchOptions item="optionLabel" key="optionKey"} - <li><label class="crm-quickSearchField"><input type="radio" {if $optionKey == 'sort_name'}checked="checked"{/if} value="{$optionKey}" name="quickSearchField"> {$optionLabel}</label></li> - {/foreach} - </ul> - </li> - {$navigation} - </ul> -{/strip}{/capture}// <script> Generated {$smarty.now|crmDate:'%d %b %Y %H:%M:%S'} -{literal} -(function($) { - var menuMarkup = {/literal}{$menuMarkup|@json_encode}{literal}; - - //Track Scrolling - if ($('div.sticky-header').length) { - $(window).scroll(function () { - $('div.sticky-header').css({top: $('#civicrm-menu').height() + "px", position: "fixed"}); - }); - } - - if ($('div#toolbar-box div.m').length) { - $('div#toolbar-box div.m').html(menuMarkup); - } - else if ($("#crm-nav-menu-container").length) { - $("#crm-nav-menu-container").html(menuMarkup).css({'padding-bottom': '10px'}); - } - else { - $('body').append(menuMarkup); - } - - // CRM-15493 get the current qfKey - $("input[name=qfKey]", "#quickSearch").val($('#civicrm-navigation-menu').data('qfkey')); - -$('#civicrm-menu').ready(function() { - $('#root-menu-div .outerbox').css({'margin-top': '6px'}); - $('#root-menu-div .menu-ul li').css({'padding-bottom': '2px', 'margin-top': '2px'}); - $("#civicrm-menu >li").each(function(i){ - $(this).attr("tabIndex",i+2); - }); - - $('#sort_name_navigation') - .autocomplete({ - source: function(request, response) { - //start spinning the civi logo - $('.crm-logo-sm').addClass('crm-i fa-spin'); - var - option = $('input[name=quickSearchField]:checked'), - params = { - name: request.term, - field_name: option.val() - }; - CRM.api3('contact', 'getquick', params).done(function(result) { - var ret = []; - if (result.values.length > 0) { - $('#sort_name_navigation').autocomplete('widget').menu('option', 'disabled', false); - $.each(result.values, function(k, v) { - ret.push({value: v.id, label: v.data}); - }); - } else { - $('#sort_name_navigation').autocomplete('widget').menu('option', 'disabled', true); - var label = option.closest('label').text(); - var msg = ts('{/literal}{ts escape='js' 1='%1'}%1 not found.{/ts}'{literal}, {1: label}); - // Remind user they are not searching by contact name (unless they enter a number) - if (params.field_name && !(/[\d].*/.test(params.name))) { - msg += {/literal}' {ts escape='js'}Did you mean to search by Name/Email instead?{/ts}'{literal}; - } - ret.push({value: '0', label: msg}); - } - response(ret); - //stop spinning the civi logo - $('.crm-logo-sm').removeClass('crm-i fa-spin'); - }) - }, - focus: function (event, ui) { - return false; - }, - select: function (event, ui) { - if (ui.item.value > 0) { - document.location = CRM.url('civicrm/contact/view', {reset: 1, cid: ui.item.value}); - } - return false; - }, - create: function() { - // Place menu in front - $(this).autocomplete('widget') - .addClass('crm-quickSearch-results') - .css('z-index', $('#civicrm-menu').css('z-index')); - } - }) - .keydown(function() { - $.Menu.closeAll(); - }) - .on('focus', function() { - setQuickSearchValue(); - if ($(this).attr('style').indexOf('14em') < 0) { - $(this).animate({width: '14em'}); - } - }) - .on('blur', function() { - // Shrink if no input and menu is not open - if (!$(this).val().length && $(this).attr('style').indexOf('6em') < 0 && !$('.crm-quickSearchField:visible', '#root-menu-div').length) { - $(this).animate({width: '6em'}); - } - }); - $('.crm-hidemenu').click(function(e) { - $('#civicrm-menu').slideUp(); - if ($('#crm-notification-container').length) { - var alert = CRM.alert({/literal}'<a href="#" id="crm-restore-menu" style="text-align: center; margin-top: -8px;">{ts escape='js'}Restore CiviCRM Menu{/ts}</a>'{literal}, '', 'none', {expires: 10000}); - $('#crm-restore-menu') - .button({icons: {primary: 'fa-undo'}}) - .click(function(e) { - e.preventDefault(); - alert.close(); - $('#civicrm-menu').slideDown(); - }) - .parent().css('text-align', 'center').find('.ui-button-text').css({'padding-top': '4px', 'padding-bottom': '4px'}) - ; - } - e.preventDefault(); - }); - function setQuickSearchValue() { - var $selection = $('.crm-quickSearchField input:checked'), - label = $selection.parent().text(), - value = $selection.val(); - $('#sort_name_navigation').attr({name: value, placeholder: label}); - } - $('.crm-quickSearchField').click(function() { - setQuickSearchValue(); - $.Menu.closeAll(); - $('#sort_name_navigation').focus().autocomplete("search"); - }); - // Set & retrieve default value - if (window.localStorage) { - $('.crm-quickSearchField').click(function() { - localStorage.quickSearchField = $('input', this).val(); - }); - if (localStorage.quickSearchField) { - $('.crm-quickSearchField input[value=' + localStorage.quickSearchField + ']').prop('checked', true); - } - } - // redirect to view page if there is only one contact - $('#id_search_block').on('submit', function() { - var $menu = $('#sort_name_navigation').autocomplete('widget'); - if ($('li.ui-menu-item', $menu).length === 1) { - var cid = $('li.ui-menu-item', $menu).data('ui-autocomplete-item').value; - if (cid > 0) { - document.location = CRM.url('civicrm/contact/view', {reset: 1, cid: cid}); - return false; - } - } - }); - // Close menu after selecting an item - $('#root-menu-div').on('click', 'a', $.Menu.closeAll); -}); -$('#civicrm-menu').menuBar({arrowClass: 'crm-i fa-caret-right'}); -$('#civicrm-menu').trigger('crmLoad'); -$(window).on("beforeunload", function() { - $('.crm-logo-sm', '#civicrm-menu').addClass('crm-i fa-spin'); -}); -})(CRM.$);{/literal} diff --git a/civicrm/templates/CRM/common/paymentBlock.tpl b/civicrm/templates/CRM/common/paymentBlock.tpl index 95f907cf28..8434b62ad3 100644 --- a/civicrm/templates/CRM/common/paymentBlock.tpl +++ b/civicrm/templates/CRM/common/paymentBlock.tpl @@ -9,6 +9,7 @@ *} {literal} <script type="text/javascript"> +{/literal}{if !$isBackOffice}{literal} /** * Show or hide payment options. * @@ -68,17 +69,18 @@ showHidePayment(isHide); } skipPaymentMethod(); +{/literal}{/if}{literal} CRM.$(function($) { function buildPaymentBlock(type) { var $form = $('#billing-payment-block').closest('form'); {/literal} - {if $contributionPageID} + {if !$isBackOffice && $contributionPageID} {capture assign='contributionPageID'}id={$contributionPageID}&{/capture} {else} - {capture assign='pageID'}{/capture} + {capture assign='contributionPageID'}{/capture} {/if} - {if $custom_pre_id} + {if !$isBackOffice && $custom_pre_id} {capture assign='preProfileID'}pre_profile_id={$custom_pre_id}&{/capture} {else} {capture assign='preProfileID'}{/capture} diff --git a/civicrm/templates/CRM/common/standalone.tpl b/civicrm/templates/CRM/common/standalone.tpl index 0e82a41034..cfff247759 100644 --- a/civicrm/templates/CRM/common/standalone.tpl +++ b/civicrm/templates/CRM/common/standalone.tpl @@ -1,5 +1,5 @@ -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{$config->lcMessages|substr:0:2}"> +<!DOCTYPE html > +<html lang="{$config->lcMessages|substr:0:2}"> <head> <meta http-equiv="Content-Style-Type" content="text/css" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> diff --git a/civicrm/vendor/autoload.php b/civicrm/vendor/autoload.php index f59d37b2fa..2d0cc3165e 100644 --- a/civicrm/vendor/autoload.php +++ b/civicrm/vendor/autoload.php @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b::getLoader(); +return ComposerAutoloaderInit71b9838e6c044eb6c784cc7ca1f0b85d::getLoader(); diff --git a/civicrm/vendor/composer/autoload_real.php b/civicrm/vendor/composer/autoload_real.php index e2ed5939ea..5aec6fdab5 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 ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b +class ComposerAutoloaderInit71b9838e6c044eb6c784cc7ca1f0b85d { private static $loader; @@ -24,9 +24,9 @@ class ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b require __DIR__ . '/platform_check.php'; - spl_autoload_register(array('ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInit71b9838e6c044eb6c784cc7ca1f0b85d', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(\dirname(__FILE__))); - spl_autoload_unregister(array('ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInit71b9838e6c044eb6c784cc7ca1f0b85d', 'loadClassLoader')); $includePaths = require __DIR__ . '/include_paths.php'; $includePaths[] = get_include_path(); @@ -36,7 +36,7 @@ class ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b if ($useStaticLoader) { require __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -57,12 +57,12 @@ class ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b::$files; + $includeFiles = Composer\Autoload\ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire7f1ba51e57274bc8afccdd852fc46a9b($fileIdentifier, $file); + composerRequire71b9838e6c044eb6c784cc7ca1f0b85d($fileIdentifier, $file); } return $loader; @@ -74,7 +74,7 @@ class ComposerAutoloaderInit7f1ba51e57274bc8afccdd852fc46a9b * @param string $file * @return void */ -function composerRequire7f1ba51e57274bc8afccdd852fc46a9b($fileIdentifier, $file) +function composerRequire71b9838e6c044eb6c784cc7ca1f0b85d($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 acd1ea20b3..336118f709 100644 --- a/civicrm/vendor/composer/autoload_static.php +++ b/civicrm/vendor/composer/autoload_static.php @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b +class ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d { public static $files = array ( 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', @@ -729,11 +729,11 @@ class ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b::$prefixDirsPsr4; - $loader->prefixesPsr0 = ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b::$prefixesPsr0; - $loader->fallbackDirsPsr0 = ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b::$fallbackDirsPsr0; - $loader->classMap = ComposerStaticInit7f1ba51e57274bc8afccdd852fc46a9b::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d::$prefixesPsr0; + $loader->fallbackDirsPsr0 = ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d::$fallbackDirsPsr0; + $loader->classMap = ComposerStaticInit71b9838e6c044eb6c784cc7ca1f0b85d::$classMap; }, null, ClassLoader::class); } diff --git a/civicrm/vendor/composer/installed.php b/civicrm/vendor/composer/installed.php index a581171d6c..3642e445dd 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.63.x-dev', - 'version' => '5.63.9999999.9999999-dev', + 'pretty_version' => '5.64.x-dev', + 'version' => '5.64.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '609756834e7520dc43374aa1d30c47d09d080058', + 'reference' => '16df6f2f20637a03b8b885256bb01450c26b4009', 'name' => 'civicrm/civicrm-core', 'dev' => true, ), @@ -38,12 +38,12 @@ 'dev_requirement' => false, ), 'civicrm/civicrm-core' => array( - 'pretty_version' => '5.63.x-dev', - 'version' => '5.63.9999999.9999999-dev', + 'pretty_version' => '5.64.x-dev', + 'version' => '5.64.9999999.9999999-dev', 'type' => 'library', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), - 'reference' => '609756834e7520dc43374aa1d30c47d09d080058', + 'reference' => '16df6f2f20637a03b8b885256bb01450c26b4009', 'dev_requirement' => false, ), 'civicrm/civicrm-cxn-rpc' => array( diff --git a/civicrm/xml/schema/ACL/ACL.xml b/civicrm/xml/schema/ACL/ACL.xml index 326b69372b..a4369a2d71 100644 --- a/civicrm/xml/schema/ACL/ACL.xml +++ b/civicrm/xml/schema/ACL/ACL.xml @@ -6,6 +6,11 @@ <name>civicrm_acl</name> <comment>Access Control List</comment> <add>1.6</add> + <paths> + <add>civicrm/acl/edit?reset=1&action=add</add> + <delete>civicrm/acl/delete?reset=1&action=delete&id=[id]</delete> + <update>civicrm/acl/edit?reset=1&action=edit&id=[id]</update> + </paths> <field> <name>id</name> <title>ACL ID</title> @@ -58,6 +63,9 @@ <type>int unsigned</type> <title>Entity ID</title> <comment>ID of the object possessing this ACL</comment> + <pseudoconstant> + <optionGroupName>acl_role</optionGroupName> + </pseudoconstant> <add>1.6</add> </field> <dynamicForeignKey> @@ -86,6 +94,13 @@ <type>varchar</type> <length>64</length> <comment>The table of the object controlled by this ACL entry</comment> + <html> + <label>Type of Data</label> + <type>Select</type> + </html> + <pseudoconstant> + <callback>CRM_ACL_BAO_ACL::getObjectTableOptions</callback> + </pseudoconstant> <add>1.6</add> </field> <field> @@ -94,6 +109,15 @@ <type>int unsigned</type> <comment>The ID of the object controlled by this ACL entry</comment> <add>1.6</add> + <html> + <label>Which Data</label> + <type>Select</type> + <controlField>object_table</controlField> + </html> + <pseudoconstant> + <callback>CRM_ACL_BAO_ACL::getObjectIdOptions</callback> + <prefetch>false</prefetch> + </pseudoconstant> </field> <field> <name>acl_table</name> @@ -126,4 +150,18 @@ <label>Enabled</label> </html> </field> + <field> + <name>priority</name> + <type>int</type> + <default>0</default> + <required>true</required> + <add>5.64</add> + <html> + <type>Number</type> + </html> + </field> + <index> + <name>index_priority</name> + <fieldName>priority</fieldName> + </index> </table> diff --git a/civicrm/xml/schema/ACL/ACLEntityRole.xml b/civicrm/xml/schema/ACL/ACLEntityRole.xml index 5c651490db..cee9830e0b 100644 --- a/civicrm/xml/schema/ACL/ACLEntityRole.xml +++ b/civicrm/xml/schema/ACL/ACLEntityRole.xml @@ -6,6 +6,13 @@ <name>civicrm_acl_entity_role</name> <comment>Join table for Contacts and Groups to ACL Roles</comment> <add>1.6</add> + <title>ACL Role Assignment</title> + <titlePlural>ACL Role Assignments</titlePlural> + <paths> + <add>civicrm/acl/entityrole?reset=1&action=add</add> + <delete>civicrm/acl/entityrole?reset=1&action=delete&id=[id]</delete> + <update>civicrm/acl/entityrole?reset=1&action=update&id=[id]</update> + </paths> <field> <name>id</name> <type>int unsigned</type> diff --git a/civicrm/xml/schema/Activity/Activity.xml b/civicrm/xml/schema/Activity/Activity.xml index aff1261ef9..bc55111df0 100644 --- a/civicrm/xml/schema/Activity/Activity.xml +++ b/civicrm/xml/schema/Activity/Activity.xml @@ -231,7 +231,7 @@ <table>civicrm_activity</table> <key>id</key> <add>1.1</add> - <onDelete>CASCADE</onDelete> + <onDelete>SET NULL</onDelete> </foreignKey> <field> <name>is_test</name> diff --git a/civicrm/xml/schema/Contribute/Contribution.xml b/civicrm/xml/schema/Contribute/Contribution.xml index 99089cd2fd..3e7428a1ce 100644 --- a/civicrm/xml/schema/Contribute/Contribution.xml +++ b/civicrm/xml/schema/Contribute/Contribution.xml @@ -368,6 +368,7 @@ <readonly>true</readonly> <html> <label>Recurring Contribution</label> + <type>EntityRef</type> </html> <add>1.4</add> </field> diff --git a/civicrm/xml/schema/Core/ActionMapping.xml b/civicrm/xml/schema/Core/ActionMapping.xml index c646932245..a01d9f9b02 100644 --- a/civicrm/xml/schema/Core/ActionMapping.xml +++ b/civicrm/xml/schema/Core/ActionMapping.xml @@ -6,6 +6,7 @@ <name>civicrm_action_mapping</name> <comment>Table to store mapping for the reminder.</comment> <add>3.4</add> + <drop>5.64</drop> <field> <name>id</name> <title>Action Mapping ID</title> diff --git a/civicrm/xml/schema/Core/CustomField.xml b/civicrm/xml/schema/Core/CustomField.xml index c72403eaba..e33c2a71cf 100644 --- a/civicrm/xml/schema/Core/CustomField.xml +++ b/civicrm/xml/schema/Core/CustomField.xml @@ -13,7 +13,7 @@ <update>civicrm/admin/custom/group/field/update?action=update&reset=1&id=[id]&gid=[custom_group_id]</update> <preview>civicrm/admin/custom/group/preview?reset=1&fid=[id]</preview> <delete>civicrm/admin/custom/group/field/delete?reset=1&id=[id]</delete> - <move>civicrm/admin/custom/group/field/move?reset=1&fid=[id]</move> + <detach>civicrm/admin/custom/group/field/move?reset=1&fid=[id]</detach> </paths> <field> <name>id</name> diff --git a/civicrm/xml/schema/Core/CustomGroup.xml b/civicrm/xml/schema/Core/CustomGroup.xml index c1b156b05b..f17c572e15 100644 --- a/civicrm/xml/schema/Core/CustomGroup.xml +++ b/civicrm/xml/schema/Core/CustomGroup.xml @@ -74,7 +74,7 @@ <default>NULL</default> <comment>FK to civicrm_option_value.id (for option group custom_data_type.)</comment> <pseudoconstant> - <optionGroupName>custom_data_type</optionGroupName> + <callback>CRM_Core_BAO_CustomGroup::getExtendsEntityColumnIdOptions</callback> </pseudoconstant> <add>2.2</add> <html> diff --git a/civicrm/xml/schema/Core/Email.xml b/civicrm/xml/schema/Core/Email.xml index f06cfa6ee1..83cf71f429 100644 --- a/civicrm/xml/schema/Core/Email.xml +++ b/civicrm/xml/schema/Core/Email.xml @@ -67,7 +67,7 @@ <type>varchar</type> <length>254</length> <html> - <type>Text</type> + <type>Email</type> <size>30</size> </html> <import>true</import> diff --git a/civicrm/xml/schema/Core/MailSettings.xml b/civicrm/xml/schema/Core/MailSettings.xml index 30b9da7dfb..009c2c6b57 100644 --- a/civicrm/xml/schema/Core/MailSettings.xml +++ b/civicrm/xml/schema/Core/MailSettings.xml @@ -4,6 +4,12 @@ <name>civicrm_mail_settings</name> <comment>Various email accounts for use by CiviMail (and its processor)</comment> <add>2.2</add> + <title>Mail Account</title> + <paths> + <add>civicrm/admin/mailSettings/edit?action=add&reset=1</add> + <update>civicrm/admin/mailSettings/edit?action=update&id=[id]&reset=1</update> + <delete>civicrm/admin/mailSettings/edit?action=delete&id=[id]&reset=1</delete> + </paths> <field> <name>id</name> <title>Mail Settings ID</title> diff --git a/civicrm/xml/schema/Core/PreferencesDate.xml b/civicrm/xml/schema/Core/PreferencesDate.xml index 809d49d71f..6b6439e563 100644 --- a/civicrm/xml/schema/Core/PreferencesDate.xml +++ b/civicrm/xml/schema/Core/PreferencesDate.xml @@ -7,6 +7,10 @@ <comment>Define date preferences for the site</comment> <add>2.0</add> <log>true</log> + <title>Date Preference</title> + <paths> + <update>civicrm/admin/setting/preferences/date?reset=1&action=update&id=[id]</update> + </paths> <field> <name>id</name> <title>Date Preference ID</title> diff --git a/civicrm/xml/schema/Core/UFGroup.xml b/civicrm/xml/schema/Core/UFGroup.xml index 7e1b3599f3..3f7d1aa8b7 100644 --- a/civicrm/xml/schema/Core/UFGroup.xml +++ b/civicrm/xml/schema/Core/UFGroup.xml @@ -133,10 +133,10 @@ <onDelete>SET NULL</onDelete> </foreignKey> <field> - <name>post_URL</name> + <name>post_url</name> <type>varchar</type> <length>255</length> - <comment>Redirect to URL.</comment> + <comment>Redirect to URL on submit.</comment> <html> <label>Post URL</label> </html> @@ -203,11 +203,14 @@ <add>1.7</add> </field> <field> - <name>cancel_URL</name> + <name>cancel_url</name> <title>Profile Cancel URL</title> <type>varchar</type> <length>255</length> - <comment>Redirect to URL when Cancle button clik .</comment> + <comment>Redirect to URL when Cancel button clicked.</comment> + <html> + <label>Cancel URL</label> + </html> <add>1.4</add> </field> <field> diff --git a/civicrm/xml/schema/Event/ParticipantStatusType.xml b/civicrm/xml/schema/Event/ParticipantStatusType.xml index 005dfc5a13..320a1d5b35 100644 --- a/civicrm/xml/schema/Event/ParticipantStatusType.xml +++ b/civicrm/xml/schema/Event/ParticipantStatusType.xml @@ -7,6 +7,11 @@ <add>3.0</add> <log>true</log> <component>CiviEvent</component> + <paths> + <add>civicrm/admin/participant_status?action=add&reset=1</add> + <update>civicrm/admin/participant_status?action=update&id=[id]&reset=1</update> + <delete>civicrm/admin/participant_status?action=delete&id=[id]&reset=1</delete> + </paths> <field> <name>id</name> <title>Participant Status Type ID</title> diff --git a/civicrm/xml/schema/Financial/PaymentProcessorType.xml b/civicrm/xml/schema/Financial/PaymentProcessorType.xml index 149134ea12..8a490436d3 100644 --- a/civicrm/xml/schema/Financial/PaymentProcessorType.xml +++ b/civicrm/xml/schema/Financial/PaymentProcessorType.xml @@ -6,6 +6,11 @@ <name>civicrm_payment_processor_type</name> <add>1.8</add> <component>CiviContribute</component> + <paths> + <add>civicrm/admin/paymentProcessorType?reset=1&action=add</add> + <delete>civicrm/admin/paymentProcessorType?reset=1&action=delete&id=[id]</delete> + <update>civicrm/admin/paymentProcessorType?reset=1&action=update&id=[id]</update> + </paths> <field> <name>id</name> <title>Payment Processor Type ID</title> diff --git a/civicrm/xml/schema/Mailing/MailingComponent.xml b/civicrm/xml/schema/Mailing/MailingComponent.xml index e077a8b98b..7ef2d0e0c8 100644 --- a/civicrm/xml/schema/Mailing/MailingComponent.xml +++ b/civicrm/xml/schema/Mailing/MailingComponent.xml @@ -6,6 +6,10 @@ <name>civicrm_mailing_component</name> <comment>Stores information about the mailing components (header/footer).</comment> <component>CiviMail</component> + <paths> + <add>civicrm/admin/component?action=add&reset=1</add> + <update>civicrm/admin/component?action=update&id=[id]&reset=1</update> + </paths> <field> <name>id</name> <title>Mailing Component ID</title> diff --git a/civicrm/xml/schema/Member/MembershipStatus.xml b/civicrm/xml/schema/Member/MembershipStatus.xml index 8ebc0ac4dc..ee7f1d93c1 100644 --- a/civicrm/xml/schema/Member/MembershipStatus.xml +++ b/civicrm/xml/schema/Member/MembershipStatus.xml @@ -9,6 +9,11 @@ <log>true</log> <component>CiviMember</component> <labelField>label</labelField> + <paths> + <add>civicrm/admin/member/membershipStatus?action=add&reset=1</add> + <update>civicrm/admin/member/membershipStatus?action=update&id=[id]&reset=1</update> + <delete>civicrm/admin/member/membershipStatus?action=delete&id=[id]&reset=1</delete> + </paths> <field> <name>id</name> <title>Membership Status ID</title> diff --git a/civicrm/xml/schema/SMS/Provider.xml b/civicrm/xml/schema/SMS/Provider.xml index f33a94d2ac..ad9e39f81a 100644 --- a/civicrm/xml/schema/SMS/Provider.xml +++ b/civicrm/xml/schema/SMS/Provider.xml @@ -6,6 +6,12 @@ <name>civicrm_sms_provider</name> <comment>Table to add different sms providers </comment> <add>4.2</add> + <paths> + <add>civicrm/admin/sms/provider?reset=1&action=add</add> + <delete>civicrm/admin/sms/provider?reset=1&action=delete&id=[id]</delete> + <update>civicrm/admin/sms/provider?reset=1&action=update&id=[id]</update> + </paths> + <title>SMS Provider</title> <field> <name>id</name> <title>SMS Provider ID</title> diff --git a/civicrm/xml/templates/case_sample.tpl b/civicrm/xml/templates/case_sample.tpl index cdcb7e3f61..297940df3b 100644 --- a/civicrm/xml/templates/case_sample.tpl +++ b/civicrm/xml/templates/case_sample.tpl @@ -84,4 +84,4 @@ SELECT 'Benefits Specialist is', 'Benefits Specialist is', 'Benefits Specialist' -- * -- *******************************************************/ -INSERT INTO `civicrm_group` ( `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `parents`, `children`, `is_hidden` ) (SELECT 'Case_Resources', 'Case Resources', 'Contacts in this group are listed with their phone number and email when viewing case. You also can send copies of case activities to these contacts.', NULL, NULL, 1, 'User and User Admin Only', ' ( `civicrm_group_contact-5`.group_id IN ( 5 ) AND `civicrm_group_contact-5`.status IN ("Added") ) ', 'a:10:{ldelim}s:15:"civicrm_contact";i:1;s:15:"civicrm_address";i:1;s:22:"civicrm_state_province";i:1;s:15:"civicrm_country";i:1;s:13:"civicrm_email";i:1;s:13:"civicrm_phone";i:1;s:10:"civicrm_im";i:1;s:19:"civicrm_worldregion";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";s:6:"gender";i:1;{rdelim}', 'a:2:{ldelim}s:15:"civicrm_contact";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";{rdelim}', '2', NULL, NULL, NULL, 0 FROM dual WHERE NOT EXISTS (SELECT * FROM `civicrm_group` WHERE `name` = 'Case_Resources')); +INSERT INTO `civicrm_group` (`name`, `title`, `frontend_title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `where_clause`, `select_tables`, `where_tables`, `group_type`, `cache_date`, `parents`, `children`, `is_hidden` ) (SELECT 'Case_Resources', 'Case Resources', 'Case Resources', 'Contacts in this group are listed with their phone number and email when viewing case. You also can send copies of case activities to these contacts.', NULL, NULL, 1, 'User and User Admin Only', ' ( `civicrm_group_contact-5`.group_id IN ( 5 ) AND `civicrm_group_contact-5`.status IN ("Added") ) ', 'a:10:{ldelim}s:15:"civicrm_contact";i:1;s:15:"civicrm_address";i:1;s:22:"civicrm_state_province";i:1;s:15:"civicrm_country";i:1;s:13:"civicrm_email";i:1;s:13:"civicrm_phone";i:1;s:10:"civicrm_im";i:1;s:19:"civicrm_worldregion";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";s:6:"gender";i:1;{rdelim}', 'a:2:{ldelim}s:15:"civicrm_contact";i:1;s:25:"`civicrm_group_contact-5`";s:114:" LEFT JOIN civicrm_group_contact `civicrm_group_contact-5` ON contact_a.id = `civicrm_group_contact-5`.contact_id ";{rdelim}', '2', NULL, NULL, NULL, 0 FROM dual WHERE NOT EXISTS (SELECT * FROM `civicrm_group` WHERE `name` = 'Case_Resources')); diff --git a/civicrm/xml/templates/civicrm_acl.tpl b/civicrm/xml/templates/civicrm_acl.tpl index a42b18952c..fb24c2d0ec 100644 --- a/civicrm/xml/templates/civicrm_acl.tpl +++ b/civicrm/xml/templates/civicrm_acl.tpl @@ -12,76 +12,13 @@ -- sample acl entries -- Create ACL to edit and view contacts in all groups -INSERT INTO civicrm_acl (name, deny, entity_table, entity_id, operation, object_table, object_id, acl_table, acl_id, is_active) +INSERT INTO civicrm_acl (name, deny, entity_table, entity_id, operation, object_table, object_id, acl_table, acl_id, is_active, priority) VALUES -('Edit All Contacts', 0, 'civicrm_acl_role', 1, 'Edit', 'civicrm_saved_search', 0, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'view event info', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 0, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviContribute', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviEvent', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMail', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviMember', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviPledge', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer CiviCase', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access my cases and activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access all cases and activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviCase', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviGrant', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access Contact Dashboard', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer Multiple Organizations', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviContribute', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviMail', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviPledge', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviEvent', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'delete in CiviMember', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'translate CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit grants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access uploaded files', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'add contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer CiviCRM', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit all contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit event participants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit groups', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit memberships', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access CiviReport', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'access Report Criteria', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'administer Reports', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'import contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile create', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile edit', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile listings', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'profile view', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view all activities', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view all contacts', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view event info', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'view event participants', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 1, 'All', 'edit all events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'access CiviMail subscribe/unsubscribe pages', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'access all custom data', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'make online contributions', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'make online pledges', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'profile listings and forms', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'register for events', NULL, NULL, NULL, 1), -('Core ACL', 0, 'civicrm_acl_role', 2, 'All', 'view event info', NULL, NULL, NULL, 1); +('Edit All Contacts', 0, 'civicrm_acl_role', 1, 'Edit', 'civicrm_group', 0, NULL, NULL, 1, 1); -- Create default Groups for User Permissioning -INSERT INTO civicrm_group (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `group_type`) VALUES (1, 'Administrators', '{ts escape="sql"}Administrators{/ts}', '{ts escape="sql"}Contacts in this group are assigned Administrator role permissions.{/ts}', NULL, NULL, 1, 'User and User Admin Only', '1'); +INSERT INTO civicrm_group (`id`, `name`, `title`, `description`, `source`, `saved_search_id`, `is_active`, `visibility`, `group_type`, `frontend_title`) +VALUES (1, 'Administrators', '{ts escape="sql"}Administrators{/ts}', '{ts escape="sql"}Contacts in this group are assigned Administrator role permissions.{/ts}', NULL, NULL, 1, 'User and User Admin Only', '1', '{ts escape="sql"}Administrators{/ts}'); -- Assign above Group (entity) to the Administrator Role INSERT INTO civicrm_acl_entity_role diff --git a/civicrm/xml/templates/civicrm_data.tpl b/civicrm/xml/templates/civicrm_data.tpl index 6905e93538..6164992821 100644 --- a/civicrm/xml/templates/civicrm_data.tpl +++ b/civicrm/xml/templates/civicrm_data.tpl @@ -94,7 +94,6 @@ SELECT @domainID := id FROM civicrm_domain where name = 'Default Domain Name'; {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_action_mapping.sqldata.php")->toSQL();{/php} {php}echo (include "sql/civicrm_data/civicrm_contact_type.sqldata.php")->toSQL();{/php} {include file='civicrm_msg_template.tpl'} diff --git a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl index 40a59eaa3c..e32cfcaf38 100644 --- a/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/contribution_invoice_receipt_html.tpl @@ -14,6 +14,11 @@ </table> {/if} <table style="font-family: Arial, Verdana, sans-serif;" width="100%" height="100" border="0" cellpadding="5" cellspacing="0"> + {if $email_comment} + <tr> + <td><font size="1" colspan="3">{$email_comment}</font></td> + </tr> + {/if} <tr> <td width="30%"><b><font size="4" align="center">{ts}INVOICE{/ts}</font></b></td> <td width="50%" valign="bottom"><b><font size="1" align="center">{ts}Invoice Date:{/ts}</font></b></td> 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 f401782dc1..654224447a 100644 --- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_html.tpl @@ -21,11 +21,7 @@ <tr> <td> {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}<p>{$greeting},</p>{/if} - {if !empty($formValues.receipt_text)} - <p>{$formValues.receipt_text|htmlize}</p> - {else} <p>{ts}Below you will find a receipt for this contribution.{/ts}</p> - {/if} </td> </tr> <tr> @@ -113,7 +109,7 @@ {ts} Amount before Tax : {/ts} </td> <td {$valueStyle}> - {$formValues.total_amount-$totalTaxAmount|crmMoney:'{contribution.currency}'} + {contribution.tax_exclusive_amount} </td> </tr> 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 e5692d0642..7f5677af35 100644 --- a/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/contribution_offline_receipt_text.tpl @@ -1,8 +1,6 @@ {assign var="greeting" value="{contact.email_greeting_display}"}{if $greeting}{$greeting},{/if} -{if !empty($formValues.receipt_text)} -{$formValues.receipt_text} -{else}{ts}Below you will find a receipt for this contribution.{/ts}{/if} +{ts}Below you will find a receipt for this contribution.{/ts} =========================================================== {ts}Contribution Information{/ts} @@ -32,7 +30,7 @@ {if $isShowTax && {contribution.tax_amount|boolean}} -{ts}Amount before Tax{/ts} : {$formValues.total_amount-$totalTaxAmount|crmMoney:$currency} +{ts}Amount before Tax{/ts} : {contribution.tax_exclusive_amount} {/if} {foreach from=$taxRateBreakdown item=taxDetail key=taxRate} {if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} : {$taxDetail.amount|crmMoney:'{contribution.currency}'} 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 ce5af95ca6..62887a20d2 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_html.tpl @@ -254,9 +254,6 @@ {if $priceset || $priceset == 0} <td> {$taxTerm} {$priceset|string_format:"%.2f"}%</td> <td> {$value|crmMoney:$currency}</td> - {else} - <td> {ts}No{/ts} {$taxTerm}</td> - <td> {$value|crmMoney:$currency}</td> {/if} </tr> {/foreach} 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 6737e86f96..c6f5a8550b 100644 --- a/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_offline_receipt_text.tpl @@ -129,8 +129,6 @@ {foreach from=$dataArray item=value key=priceset} {if $priceset || $priceset == 0} {$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{else} -{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency} {/if} {/foreach} {/if} diff --git a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl index b0de224f35..df251a602b 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_html.tpl @@ -39,12 +39,12 @@ <p> {if !empty($isOnWaitlist)} <p>{ts}You have been added to the WAIT LIST for this event.{/ts}</p> - {if !empty($isPrimary)} + {if $isPrimary} <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> {/if} {elseif !empty($isRequireApproval)} <p>{ts}Your registration has been submitted.{/ts}</p> - {if !empty($isPrimary)} + {if $isPrimary} <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> {/if} {elseif !empty($is_pay_later) && empty($isAmountzero) && empty($isAdditionalParticipant)} @@ -145,28 +145,28 @@ {/foreach} {/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} + {capture assign=icalFeed}{crmURL p='civicrm/event/ical' q="reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} <a href="{$icalFeed}">{ts}Download iCalendar entry for this event.{/ts}</a> </td> </tr> <tr> <td colspan="2" {$valueStyle}> - {capture assign=gCalendar}{crmURL p='civicrm/event/ical' q="gCalendar=1&reset=1&id=`$event.id`" h=0 a=1 fe=1}{/capture} + {capture assign=gCalendar}{crmURL p='civicrm/event/ical' q="gCalendar=1&reset=1&id={event.id}" h=0 a=1 fe=1}{/capture} <a href="{$gCalendar}">{ts}Add event to Google Calendar{/ts}</a> </td> </tr> {/if} - {if !empty($event.is_share)} - <tr> - <td colspan="2" {$valueStyle}> - {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id=`$event.id`&reset=1" a=true fe=1 h=1}{/capture} - {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl title=$event.title pageURL=$eventUrl} - </td> - </tr> + {if $event.is_share} + <tr> + <td colspan="2" {$valueStyle}> + {capture assign=eventUrl}{crmURL p='civicrm/event/info' q="id={event.id}&reset=1" a=true fe=1 h=1}{/capture} + {include file="CRM/common/SocialNetwork.tpl" emailMode=true url=$eventUrl pageURL=$eventUrl title='{event.title}'} + </td> + </tr> {/if} {if !empty($payer.name)} <tr> @@ -180,111 +180,92 @@ </td> </tr> {/if} - {if !empty($event.is_monetary) and empty($isRequireApproval)} + {if {event.is_monetary|boolean} and empty($isRequireApproval)} <tr> <th {$headerStyle}> - {if !empty($event.fee_label)}{$event.fee_label}{/if} + {event.fee_label} </th> </tr> - {if !empty($lineItem)} - {foreach from=$lineItem item=value key=priceset} - {if $value neq 'skip'} - {if !empty($isPrimary)} - {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} - <tr> - <td colspan="2" {$labelStyle}> - {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if} - </td> - </tr> - {/if} - {/if} - <tr> - <td colspan="2" {$valueStyle}> - <table> + {if $isShowLineItems} + {foreach from=$participants key=index item=participant} + {if $isPrimary || {participant.id} === $participant.id} + {if $isPrimary && $lineItems|@count GT 1} {* Header for multi participant registration cases. *} <tr> - <th>{ts}Item{/ts}</th> - <th>{ts}Qty{/ts}</th> - <th>{ts}Each{/ts}</th> - {if !empty($dataArray)} - <th>{ts}SubTotal{/ts}</th> - <th>{ts}Tax Rate{/ts}</th> - <th>{ts}Tax Amount{/ts}</th> - {/if} - <th>{ts}Total{/ts}</th> - {if !empty($pricesetFieldsCount) }<th>{ts}Total Participants{/ts}</th>{/if} - </tr> - {foreach from=$value item=line} - <tr> - <td {$tdfirstStyle}> - {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} - </td> - <td {$tdStyle} align="middle"> - {$line.qty} + <td colspan="2" {$labelStyle}> + {ts 1=$participant.index}Participant %1{/ts} {$participant.contact.display_name} </td> - <td {$tdStyle}> - {$line.unit_price|crmMoney:$currency} - </td> - {if !empty($dataArray)} - <td {$tdStyle}> - {$line.unit_price*$line.qty|crmMoney} - </td> - {if $line.tax_rate || $line.tax_amount != ""} - <td {$tdStyle}> - {$line.tax_rate|string_format:"%.2f"}% - </td> - <td {$tdStyle}> - {$line.tax_amount|crmMoney} - </td> - {else} - <td></td> - <td></td> - {/if} - {/if} - <td {$tdStyle}> - {$line.line_total+$line.tax_amount|crmMoney:$currency} + </tr> + {/if} + <tr> + <td colspan="2" {$valueStyle}> + <table> + <tr> + <th>{ts}Item{/ts}</th> + <th>{ts}Qty{/ts}</th> + <th>{ts}Each{/ts}</th> + {if $isShowTax && {contribution.tax_amount|boolean}} + <th>{ts}Subtotal{/ts}</th> + <th>{ts}Tax Rate{/ts}</th> + <th>{ts}Tax Amount{/ts}</th> + {/if} + <th>{ts}Total{/ts}</th> + {if !empty($pricesetFieldsCount)}<th>{ts}Total Participants{/ts}</th>{/if} + </tr> + {foreach from=$participant.line_items item=line} + <tr> + <td {$tdfirstStyle}>{$line.title}</td> + <td {$tdStyle} align="middle">{$line.qty}</td> + <td {$tdStyle}>{$line.unit_price|crmMoney:$currency}</td> + {if $line.tax_rate || $line.tax_amount != ""} + <td>{$line.tax_rate|string_format:"%.2f"}%</td> + <td>{$line.tax_amount|crmMoney:$currency}</td> + {else} + <td></td> + <td></td> + {/if} + <td {$tdStyle}> + {$line.line_total+$line.tax_amount|crmMoney:$currency} + </td> + {if !empty($pricesetFieldsCount)}<td {$tdStyle}>{$line.participant_count}</td> {/if} + </tr> + {/foreach} + {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> + </tr> + {/if} + </table> </td> - {if !empty($pricesetFieldsCount) }<td {$tdStyle}>{$line.participant_count}</td> {/if} - </tr> - {/foreach} - {if !empty($individual)} - <tr {$participantTotal}> - <td colspan=3>{ts}Participant Total{/ts}</td> - <td colspan=2>{$individual.$priceset.totalAmtWithTax-$individual.$priceset.totalTaxAmt|crmMoney}</td> - <td colspan=1>{$individual.$priceset.totalTaxAmt|crmMoney}</td> - <td colspan=2>{$individual.$priceset.totalAmtWithTax|crmMoney}</td> - </tr> - {/if} - </table> - </td> - </tr> + </tr> + {/if} + {/foreach} {/if} - {/foreach} - {if !empty($dataArray)} - {if isset($totalAmount) and isset($totalTaxAmount)} - <tr> - <td {$labelStyle}> - {ts} Amount Before Tax: {/ts} - </td> - <td {$valueStyle}> - {$totalAmount-$totalTaxAmount|crmMoney} - </td> + {if $isShowTax && {contribution.tax_amount|boolean}} + <tr> + <td {$labelStyle}> + {ts}Amount Before Tax:{/ts} + </td> + <td {$valueStyle}> + {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if} + </td> </tr> + + {if !$isPrimary} + {* Use the participant specific tax rate breakdown *} + {assign var=taxRateBreakdown value=$participant.tax_rate_breakdown} + {/if} + {foreach from=$taxRateBreakdown item=taxDetail key=taxRate} + <tr> + <td {$labelStyle}>{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if}</td> + <td {$valueStyle}>{$taxDetail.amount|crmMoney:'{contribution.currency}'}</td> + </tr> + {/foreach} {/if} - {foreach from=$dataArray item=value key=priceset} - <tr> - {if $priceset || $priceset == 0} - <td> {$taxTerm} {$priceset|string_format:"%.2f"}%</td> - <td> {$value|crmMoney:$currency}</td> - {else} - <td> {ts}No{/ts} {$taxTerm}</td> - <td> {$value|crmMoney:$currency}</td> - {/if} - </tr> - {/foreach} - {/if} - {/if} {if !empty($amounts) && empty($lineItem)} {foreach from=$amounts item=amnt key=level} @@ -296,23 +277,23 @@ {/foreach} {/if} - {if isset($totalTaxAmount)} + {if $isShowTax && {contribution.tax_amount|boolean}} <tr> <td {$labelStyle}> {ts}Total Tax Amount{/ts} </td> <td {$valueStyle}> - {$totalTaxAmount|crmMoney:$currency} + {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if} </td> </tr> {/if} - {if !empty($isPrimary)} + {if $isPrimary} <tr> <td {$labelStyle}> {ts}Total Amount{/ts} </td> <td {$valueStyle}> - {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} + {contribution.total_amount} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} </td> </tr> {if !empty($pricesetFieldsCount) } @@ -486,7 +467,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 2153d29d15..cc2d528b8a 100644 --- a/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl +++ b/civicrm/xml/templates/message_templates/event_online_receipt_text.tpl @@ -14,7 +14,7 @@ {ts}You have been added to the WAIT LIST for this event.{/ts} -{if !empty($isPrimary)} +{if $isPrimary} {ts}If space becomes available you will receive an email with a link to a web page where you can complete your registration.{/ts} {/if} ==========================================================={if !empty($pricesetFieldsCount)}===================={/if} @@ -24,7 +24,7 @@ {ts}Your registration has been submitted.{/ts} -{if !empty($isPrimary)} +{if $isPrimary} {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} {/if} @@ -74,21 +74,19 @@ {$location.address.1.display|strip_tags:false} {/if}{*End of isShowLocation condition*} -{if !empty($location.phone.1.phone) || !empty($location.email.1.email)} +{if {event.loc_block_id.phone_id.phone|boolean} || {event.loc_block_id.email_id.email|boolean}} {ts}Event Contacts:{/ts} -{foreach from=$location.phone item=phone} -{if $phone.phone} - -{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} -{/foreach} +{if {event.loc_block_id.phone_id.phone|boolean}} + {if {event.loc_block_id.phone_id.phone_type_id|boolean}}{event.loc_block_id.phone_id.phone_type_id:label}{else}{ts}Phone{/ts}{/if} {event.loc_block_id.phone_id.phone} {if {event.loc_block_id.phone_id.phone_ext|boolean}} {ts}ext.{/ts} {event.loc_block_id.phone_id.phone_ext}{/if} +{/if} {foreach from=$location.email item=eventEmail} {if $eventEmail.email} {ts}Email{/ts}: {$eventEmail.email}{/if}{/foreach} {/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} @@ -108,7 +106,7 @@ You were registered by: {$payer.name} {if !empty($lineItem)}{foreach from=$lineItem item=value key=priceset} {if $value neq 'skip'} -{if !empty($isPrimary)} +{if $isPrimary} {if $lineItem|@count GT 1} {* Header for multi participant registration cases. *} {ts 1=$priceset+1}Participant %1{/ts} {if !empty($part.$priceset)}{$part.$priceset.info}{/if} @@ -119,19 +117,19 @@ You were registered by: {$payer.name} {capture assign=ts_item}{ts}Item{/ts}{/capture} {capture assign=ts_qty}{ts}Qty{/ts}{/capture} {capture assign=ts_each}{ts}Each{/ts}{/capture} -{if !empty($dataArray)} +{if $isShowTax && {contribution.tax_amount|boolean}} {capture assign=ts_subtotal}{ts}Subtotal{/ts}{/capture} {capture assign=ts_taxRate}{ts}Tax Rate{/ts}{/capture} {capture assign=ts_taxAmount}{ts}Tax Amount{/ts}{/capture} {/if} {capture assign=ts_total}{ts}Total{/ts}{/capture} {if !empty($pricesetFieldsCount) }{capture assign=ts_participant_total}{ts}Total Participants{/ts}{/capture}{/if} -{$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} +{$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} -----------------------------------------------------------{if !empty($pricesetFieldsCount)}-----------------------------------------------------{/if} {foreach from=$value item=line} {if !empty($pricesetFieldsCount) }{capture assign=ts_participant_count}{$line.participant_count}{/capture}{/if} -{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$currency|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:$currency|string_format:"%10s"}{if !empty($ts_participant_count)}{$ts_participant_count|string_format:"%10s"}{/if} +{capture assign=ts_item}{if $line.html_type eq 'Text'}{$line.label}{else}{$line.field_title} - {$line.label}{/if} {if $line.description} {$line.description}{/if}{/capture}{$ts_item|truncate:30:"..."|string_format:"%-30s"} {$line.qty|string_format:"%5s"} {$line.unit_price|crmMoney:$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} {/foreach} ---------------------------------------------------------------------------------------------------------------- {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} @@ -140,17 +138,11 @@ You were registered by: {$payer.name} {/foreach} {""|string_format:"%120s"} -{if !empty($dataArray)} -{if isset($totalAmount) and isset($totalTaxAmount)} -{ts}Amount before Tax:{/ts} {$totalAmount-$totalTaxAmount|crmMoney:$currency} -{/if} - -{foreach from=$dataArray item=value key=priceset} -{if $priceset || $priceset == 0} -{$taxTerm} {$priceset|string_format:"%.2f"}%: {$value|crmMoney:$currency} -{else} -{ts}No{/ts} {$taxTerm}: {$value|crmMoney:$currency} -{/if} +{if $isShowTax && {contribution.tax_amount|boolean}} +{ts}Amount before Tax:{/ts} {if $isPrimary}{contribution.tax_exclusive_amount}{else}{$participant.totals.total_amount_exclusive|crmMoney}{/if} +{if !$isPrimary}{* Use the participant specific tax rate breakdown *}{assign var=taxRateBreakdown value=$participant.tax_rate_breakdown}{/if} +{foreach from=$taxRateBreakdown item=taxDetail key=taxRate} +{if $taxRate == 0}{ts}No{/ts} {$taxTerm}{else}{$taxTerm} {$taxDetail.percentage}%{/if} {$valueStyle}>{$taxDetail.amount|crmMoney:'{contribution.currency}'} {/foreach} {/if} {/if} @@ -160,10 +152,10 @@ You were registered by: {$payer.name} {/foreach} {/if} -{if isset($totalTaxAmount)} -{ts}Total Tax Amount{/ts}: {$totalTaxAmount|crmMoney:$currency} +{if $isShowTax && {contribution.tax_amount|boolean}} +{ts}Total Tax Amount{/ts}: {if $isPrimary}{contribution.tax_amount}{else}{$participant.totals.tax_amount|crmMoney}{/if} {/if} -{if !empty($isPrimary) } +{if $isPrimary} {ts}Total Amount{/ts}: {if !empty($totalAmount)}{$totalAmount|crmMoney:$currency}{/if} {if !empty($hookDiscount.message)}({$hookDiscount.message}){/if} diff --git a/civicrm/xml/version.xml b/civicrm/xml/version.xml index ec0be5a990..f1903ca5a7 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.63.2</version_no> + <version_no>5.64.0</version_no> </version> diff --git a/wp-cli/civicrm.php b/wp-cli/civicrm.php index 9532e8cb71..c5e5e82a28 100644 --- a/wp-cli/civicrm.php +++ b/wp-cli/civicrm.php @@ -212,19 +212,23 @@ if (!defined('CIVICRM_WPCLI_LOADED')) { civicrm_initialize(); - // CRM-18062: Set CiviCRM timezone if any. - $wp_base_timezone = date_default_timezone_get(); - $wp_user_timezone = $this->getOption('timezone', get_option('timezone_string')); - if ($wp_user_timezone) { - date_default_timezone_set($wp_user_timezone); + /* + * CRM-12523 + * WordPress has it's own timezone calculations. CiviCRM relies on the PHP + * default timezone which WordPress overrides with UTC in wp-settings.php + */ + $original_timezone = date_default_timezone_get(); + $wp_site_timezone = $this->getOption('timezone', $this->getTimeZoneString()); + if ($wp_site_timezone) { + date_default_timezone_set($wp_site_timezone); CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone(); } $result = civicrm_api($entity, $action, $params); - // Restore WordPress's timezone. - if ($wp_base_timezone) { - date_default_timezone_set($wp_base_timezone); + // Restore original timezone. + if ($original_timezone) { + date_default_timezone_set($original_timezone); } switch ($this->getOption('out', 'pretty')) { @@ -246,6 +250,53 @@ if (!defined('CIVICRM_WPCLI_LOADED')) { } + /** + * Returns the timezone string for the current WordPress site. + * + * If a timezone identifier is used, return that. + * If an offset is used, try to build a suitable timezone. + * If all else fails, uses UTC. + * + * @since 5.64 + * + * @return string $tzstring The site timezone string. + */ + private function getTimeZoneString() { + + // Return the timezone string when set. + $tzstring = get_option('timezone_string'); + if (!empty($tzstring)) { + return $tzstring; + } + + /* + * Try and build a deprecated (but currently valid) timezone string + * from the GMT offset value. + * + * Note: manual offsets should be discouraged. WordPress works more + * reliably when setting an actual timezone (e.g. "Europe/London") + * because of support for Daylight Saving changes. + * + * Note: the IANA timezone database that provides PHP's timezone + * support uses (reversed) POSIX style signs. + * + * @see https://www.php.net/manual/en/timezones.others.php + */ + $offset = get_option('gmt_offset'); + if (0 != $offset && floor($offset) == $offset) { + $offset_string = $offset > 0 ? "-$offset" : '+' . abs((int) $offset); + $tzstring = 'Etc/GMT' . $offset_string; + } + + // Default to "UTC" if the timezone string is still empty. + if (empty($tzstring)) { + $tzstring = 'UTC'; + } + + return $tzstring; + + } + /** * Implementation of command 'cache-clear'. * diff --git a/wp-rest/Plugin.php b/wp-rest/Plugin.php index ad11ac8fe4..8c0159de97 100644 --- a/wp-rest/Plugin.php +++ b/wp-rest/Plugin.php @@ -35,7 +35,7 @@ class Plugin { add_filter('rest_pre_dispatch', [$this, 'bootstrap_civi'], 10, 3); - add_filter('rest_post_dispatch', [$this, 'maybe_reset_wp_timezone'], 10, 3); + add_filter('rest_post_dispatch', [$this, 'maybe_reset_php_timezone'], 10, 3); } @@ -53,7 +53,7 @@ class Plugin { if (FALSE !== strpos($request->get_route(), 'civicrm')) { - $this->maybe_set_user_timezone($request); + $this->maybe_set_php_timezone($request); civi_wp()->initialize(); @@ -152,31 +152,30 @@ class Plugin { } /** - * Sets the timezone to the user's timezone when calling the civicrm/v3/rest endpoint. + * Sets the PHP timezone to the timezone of the WordPress site when calling + * the civicrm/v3/rest endpoint. * * @since 5.25 * - * @param WP_REST_Request $request The request + * @param WP_REST_Request $request The request. */ - private function maybe_set_user_timezone($request) { + private function maybe_set_php_timezone($request) { if ($request->get_route() != '/civicrm/v3/rest') { return; } $timezones = [ - 'wp_timezone' => date_default_timezone_get(), - 'user_timezone' => get_option('timezone_string', FALSE), + 'original_timezone' => date_default_timezone_get(), + 'site_timezone' => $this->get_timezone_string(), ]; - // Filter timezones. + // Filter timezones - retrieved in `maybe_reset_php_timezone()` below. add_filter('civi_wp_rest/plugin/timezones', function() use ($timezones) { - return $timezones; - }); - if (empty($timezones['user_timezone'])) { + if (empty($timezones['site_timezone'])) { return; } @@ -185,13 +184,13 @@ class Plugin { * CRM-18062 * CRM-19115 */ - date_default_timezone_set($timezones['user_timezone']); + date_default_timezone_set($timezones['site_timezone']); \CRM_Core_Config::singleton()->userSystem->setMySQLTimeZone(); } /** - * Resets the timezone to the original WordPress timezone after calling the + * Resets the PHP timezone to the original timezone after calling the * civicrm/v3/rest endpoint. * * @since 5.25 @@ -201,25 +200,82 @@ class Plugin { * @param WP_REST_Request $request The request. * @return mixed $result */ - public function maybe_reset_wp_timezone($result, $server, $request) { + public function maybe_reset_php_timezone($result, $server, $request) { if ($request->get_route() != '/civicrm/v3/rest') { return $result; } + /** + * Filters this plugin's timezones. + * + * This is actually just a neat way to retrieve the values assigned to + * the `$timezones` array in `maybe_set_php_timezone()` above. + * + * @since 5.25 + * + * @param null Passes `null` because return will be populated. + */ $timezones = apply_filters('civi_wp_rest/plugin/timezones', NULL); - if (empty($timezones['wp_timezone'])) { + if (empty($timezones['original_timezone'])) { return $result; } - // Reset WordPress timezone. - date_default_timezone_set($timezones['wp_timezone']); + // Reset original timezone. + date_default_timezone_set($timezones['original_timezone']); return $result; } + /** + * Returns the timezone string for the current site. + * + * If a timezone identifier is used, return that. + * If an offset is used, try to build a suitable timezone. + * If all else fails, uses UTC. + * + * @since 5.64 + * + * @return string $tzstring The site timezone string. + */ + private function get_timezone_string() { + + // Return the timezone string when set. + $tzstring = get_option('timezone_string'); + if (!empty($tzstring)) { + return $tzstring; + } + + /* + * Try and build a deprecated (but currently valid) timezone string + * from the GMT offset value. + * + * Note: manual offsets should be discouraged. WordPress works more + * reliably when setting an actual timezone (e.g. "Europe/London") + * because of support for Daylight Saving changes. + * + * Note: the IANA timezone database that provides PHP's timezone + * support uses (reversed) POSIX style signs. + * + * @see https://www.php.net/manual/en/timezones.others.php + */ + $offset = get_option('gmt_offset'); + if (0 != $offset && floor($offset) == $offset) { + $offset_string = $offset > 0 ? "-$offset" : '+' . absint($offset); + $tzstring = 'Etc/GMT' . $offset_string; + } + + // Default to "UTC" if the timezone string is still empty. + if (empty($tzstring)) { + $tzstring = 'UTC'; + } + + return $tzstring; + + } + /** * Performs the necessary checks and data retrieval to login a WordPress user. * -- GitLab